From b2263ee35a72b3a3ebaa01cee4504106bc9e0ddc Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Fri, 29 Sep 2023 15:55:22 +0200 Subject: [PATCH 001/108] boojum integration --- .github/workflows/build-core-template.yml | 2 +- .prettierignore | 3 + Cargo.lock | 335 +- contracts | 2 +- .../system-constants-generator/src/utils.rs | 2 +- core/lib/config/src/configs/contracts.rs | 12 +- core/lib/config/src/constants/contracts.rs | 2 +- core/lib/config/src/constants/ethereum.rs | 4 +- core/lib/contracts/src/lib.rs | 7 +- ...m_logs_and_compressed_state_diffs.down.sql | 5 + ...tem_logs_and_compressed_state_diffs.up.sql | 6 + ...19154048_boojum-block-commitments.down.sql | 7 + ...0919154048_boojum-block-commitments.up.sql | 7 + core/lib/dal/sqlx-data.json | 5647 +++++++++-------- core/lib/dal/src/blocks_dal.rs | 60 +- core/lib/dal/src/models/storage_block.rs | 45 + core/lib/dal/src/storage_logs_dedup_dal.rs | 13 + core/lib/merkle_tree/Cargo.toml | 1 + core/lib/merkle_tree/src/domain.rs | 75 +- core/lib/mini_merkle_tree/src/lib.rs | 10 +- .../src/glue/types/vm/vm_block_result.rs | 32 +- .../src/glue/types/vm/vm_execution_result.rs | 26 +- .../types/vm/vm_partial_execution_result.rs | 11 +- .../lib/prover_utils/src/gcs_proof_fetcher.rs | 15 +- core/lib/state/Cargo.toml | 3 + core/lib/state/src/in_memory.rs | 27 +- core/lib/state/src/lib.rs | 3 + core/lib/state/src/postgres/mod.rs | 10 + core/lib/state/src/rocksdb/mod.rs | 101 +- core/lib/state/src/shadow_storage.rs | 15 + core/lib/state/src/storage_view.rs | 8 + core/lib/state/src/witness.rs | 5 + core/lib/types/src/aggregated_operations.rs | 2 +- core/lib/types/src/block.rs | 11 + core/lib/types/src/commitment.rs | 152 +- core/lib/types/src/event.rs | 154 +- core/lib/types/src/fee.rs | 3 +- core/lib/types/src/l2_to_l1_log.rs | 11 + core/lib/types/src/protocol_version.rs | 98 +- core/lib/types/src/storage/writes.rs | 71 - .../types/src/storage/writes/compression.rs | 435 ++ core/lib/types/src/storage/writes/mod.rs | 459 ++ core/lib/types/src/system_contracts.rs | 16 +- core/lib/types/src/tx/tx_execution_info.rs | 22 +- core/lib/vm/src/bootloader_state/snapshot.rs | 2 + core/lib/vm/src/bootloader_state/state.rs | 31 +- core/lib/vm/src/bootloader_state/utils.rs | 24 +- core/lib/vm/src/constants.rs | 19 +- core/lib/vm/src/errors/bootloader_error.rs | 10 +- core/lib/vm/src/errors/tx_revert_reason.rs | 13 +- core/lib/vm/src/implementation/execution.rs | 19 +- core/lib/vm/src/implementation/logs.rs | 27 +- core/lib/vm/src/lib.rs | 3 +- core/lib/vm/src/old_vm/event_sink.rs | 103 +- core/lib/vm/src/tests/l1_tx_execution.rs | 12 +- core/lib/vm/src/tests/l2_blocks.rs | 66 - core/lib/vm/src/tests/refunds.rs | 18 +- core/lib/vm/src/tracers/default_tracers.rs | 5 +- core/lib/vm/src/tracers/mod.rs | 1 + core/lib/vm/src/tracers/pubdata_tracer.rs | 213 + core/lib/vm/src/tracers/utils.rs | 3 + .../vm/src/types/outputs/execution_result.rs | 23 +- .../vm/src/types/outputs/execution_state.rs | 8 +- core/lib/vm/src/types/outputs/mod.rs | 3 + core/lib/vm/src/types/outputs/pubdata.rs | 73 + core/lib/vm/src/utils/logs.rs | 21 + core/lib/vm/src/utils/mod.rs | 1 + core/lib/vm/src/vm.rs | 16 +- core/lib/zksync_core/Cargo.toml | 2 + .../execution_sandbox/vm_metrics.rs | 2 +- .../lib/zksync_core/src/block_reverter/mod.rs | 8 +- .../src/consistency_checker/mod.rs | 4 +- .../src/eth_sender/eth_tx_aggregator.rs | 59 +- core/lib/zksync_core/src/eth_sender/tests.rs | 1 + .../src/eth_sender/zksync_functions.rs | 28 +- core/lib/zksync_core/src/eth_watch/client.rs | 40 +- .../eth_watch/event_processors/upgrades.rs | 42 +- core/lib/zksync_core/src/eth_watch/mod.rs | 20 +- core/lib/zksync_core/src/eth_watch/tests.rs | 39 +- core/lib/zksync_core/src/genesis.rs | 7 +- core/lib/zksync_core/src/lib.rs | 2 + .../src/metadata_calculator/mod.rs | 9 +- .../proof_data_handler/request_processor.rs | 47 +- .../src/state_keeper/batch_executor/mod.rs | 7 +- .../src/state_keeper/io/seal_logic.rs | 81 +- .../zksync_core/src/state_keeper/tests/mod.rs | 11 +- .../state_keeper/updates/l1_batch_updates.rs | 5 +- .../state_keeper/updates/miniblock_updates.rs | 22 +- .../zksync_core/src/witness_generator/mod.rs | 2 +- .../multivm_deps/vm_1_3_2/src/legacy_types.rs | 15 + core/multivm_deps/vm_1_3_2/src/lib.rs | 1 + core/multivm_deps/vm_1_3_2/src/vm.rs | 3 +- core/multivm_deps/vm_m5/src/legacy_types.rs | 15 + core/multivm_deps/vm_m5/src/lib.rs | 1 + core/multivm_deps/vm_m5/src/vm.rs | 3 +- core/multivm_deps/vm_m6/src/legacy_types.rs | 15 + core/multivm_deps/vm_m6/src/lib.rs | 1 + core/multivm_deps/vm_m6/src/vm.rs | 3 +- core/tests/ts-integration/src/system.ts | 56 +- core/tests/ts-integration/tests/l1.test.ts | 24 +- core/tests/upgrade-test/tests/upgrade.test.ts | 70 +- core/tests/vm-benchmark/harness/src/lib.rs | 2 +- docker/contract-verifier/Dockerfile | 16 +- .../cross-external-nodes-checker/Dockerfile | 16 +- docker/external-node/Dockerfile | 16 +- docker/server-v2/Dockerfile | 14 +- docs/advanced/03_withdrawals.md | 2 +- etc/env/base/contracts.toml | 8 +- .../fee_estimate.yul/fee_estimate.yul.zbin | Bin 73056 -> 75872 bytes .../gas_test.yul/gas_test.yul.zbin | Bin 69600 -> 74976 bytes .../playground_batch.yul.zbin | Bin 73440 -> 76192 bytes .../proved_batch.yul/proved_batch.yul.zbin | Bin 70496 -> 75808 bytes etc/system-contracts | 2 +- infrastructure/zk/src/contract.ts | 13 +- infrastructure/zk/src/init.ts | 7 +- infrastructure/zk/src/server.ts | 6 +- prover/Cargo.lock | 922 +-- .../src/precalculated/tests.rs | 2 +- rust-toolchain | 2 +- sdk/zksync-rs/src/abi/IZkSync.json | 6 +- sdk/zksync-web3.js/abi/IZkSync.json | 6 +- sdk/zksync-web3.js/typechain/IZkSync.d.ts | 78 +- .../typechain/IZkSyncFactory.ts | 6 +- yarn.lock | 146 +- 124 files changed, 6897 insertions(+), 3667 deletions(-) create mode 100644 core/lib/dal/migrations/20230807204005_add_fields_for_system_logs_and_compressed_state_diffs.down.sql create mode 100644 core/lib/dal/migrations/20230807204005_add_fields_for_system_logs_and_compressed_state_diffs.up.sql create mode 100644 core/lib/dal/migrations/20230919154048_boojum-block-commitments.down.sql create mode 100644 core/lib/dal/migrations/20230919154048_boojum-block-commitments.up.sql delete mode 100644 core/lib/types/src/storage/writes.rs create mode 100644 core/lib/types/src/storage/writes/compression.rs create mode 100644 core/lib/types/src/storage/writes/mod.rs create mode 100644 core/lib/vm/src/tracers/pubdata_tracer.rs create mode 100644 core/lib/vm/src/types/outputs/pubdata.rs create mode 100644 core/lib/vm/src/utils/logs.rs create mode 100644 core/multivm_deps/vm_1_3_2/src/legacy_types.rs create mode 100644 core/multivm_deps/vm_m5/src/legacy_types.rs create mode 100644 core/multivm_deps/vm_m6/src/legacy_types.rs diff --git a/.github/workflows/build-core-template.yml b/.github/workflows/build-core-template.yml index 4857ecb8e61..3e98364422e 100644 --- a/.github/workflows/build-core-template.yml +++ b/.github/workflows/build-core-template.yml @@ -78,8 +78,8 @@ jobs: run: | ci_run docker login -u ${{ secrets.DOCKERHUB_USER }} -p ${{ secrets.DOCKERHUB_TOKEN }} ci_run gcloud auth configure-docker us-docker.pkg.dev,asia-docker.pkg.dev -q + ci_run rustup default nightly-2023-07-21 ci_run zk docker $DOCKER_ACTION $COMPONENT -- --public - - name: Show sccache stats if: always() run: | diff --git a/.prettierignore b/.prettierignore index fd0d65050de..c5e80d200b6 100644 --- a/.prettierignore +++ b/.prettierignore @@ -3,3 +3,6 @@ bellman-cuda sdk/zksync-web3.js/CHANGELOG.md sdk/zksync-rs/CHANGELOG.md CHANGELOG.md + +# ignore era-contracts, since they have their own formatting CI +contracts diff --git a/Cargo.lock b/Cargo.lock index e57439a3b24..8367f09a7a5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -677,7 +677,7 @@ source = "git+https://github.com/matter-labs/bellman?branch=dev#5520aa2274afe73d dependencies = [ "arrayvec 0.7.3", "bit-vec", - "blake2s_const", + "blake2s_const 0.6.0 (git+https://github.com/matter-labs/bellman?branch=dev)", "blake2s_simd", "byteorder", "cfg-if 1.0.0", @@ -686,7 +686,30 @@ dependencies = [ "hex", "lazy_static", "num_cpus", - "pairing_ce", + "pairing_ce 0.28.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.6", + "serde", + "smallvec", + "tiny-keccak 1.5.0", +] + +[[package]] +name = "bellman_ce" +version = "0.3.2" +source = "git+https://github.com/matter-labs/bellman?branch=snark-wrapper#1f05c528c392ea9eadb99b22431659c113bc0af4" +dependencies = [ + "arrayvec 0.7.3", + "bit-vec", + "blake2s_const 0.6.0 (git+https://github.com/matter-labs/bellman?branch=snark-wrapper)", + "blake2s_simd", + "byteorder", + "cfg-if 1.0.0", + "crossbeam 0.7.3", + "futures 0.3.28", + "hex", + "lazy_static", + "num_cpus", + "pairing_ce 0.28.5 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.4.6", "serde", "smallvec", @@ -821,6 +844,16 @@ dependencies = [ "constant_time_eq", ] +[[package]] +name = "blake2s_const" +version = "0.6.0" +source = "git+https://github.com/matter-labs/bellman?branch=snark-wrapper#1f05c528c392ea9eadb99b22431659c113bc0af4" +dependencies = [ + "arrayref", + "arrayvec 0.5.2", + "constant_time_eq", +] + [[package]] name = "blake2s_simd" version = "0.5.11" @@ -903,6 +936,37 @@ dependencies = [ "zksync_types", ] +[[package]] +name = "boojum" +version = "0.1.0" +source = "git+https://github.com/matter-labs/era-boojum.git?branch=main#2771569baab9a59690d88cee6ba9b295c8a1e4c4" +dependencies = [ + "arrayvec 0.7.3", + "bincode", + "blake2 0.10.6", + "const_format", + "convert_case 0.4.0", + "crossbeam 0.8.2", + "crypto-bigint 0.5.2", + "cs_derive 0.1.0 (git+https://github.com/matter-labs/era-boojum.git?branch=main)", + "derivative", + "ethereum-types 0.14.1", + "firestorm", + "itertools", + "lazy_static", + "num-modular", + "num_cpus", + "packed_simd", + "pairing_ce 0.28.5 (git+https://github.com/matter-labs/pairing.git)", + "rand 0.8.5", + "rayon", + "serde", + "sha2 0.10.6", + "sha3 0.10.6", + "smallvec", + "unroll", +] + [[package]] name = "brotli" version = "3.3.4" @@ -1118,12 +1182,27 @@ dependencies = [ "generic-array 0.14.7", ] +[[package]] +name = "circuit_definitions" +version = "0.1.0" +source = "git+https://github.com/matter-labs/era-zkevm_test_harness.git?branch=v1.4.0#3cd647aa57fc2e1180bab53f7a3b61ec47502a46" +dependencies = [ + "crossbeam 0.8.2", + "derivative", + "franklin-crypto 0.0.5 (git+https://github.com/matter-labs/franklin-crypto?branch=snark_wrapper)", + "rescue_poseidon 0.4.1 (git+https://github.com/matter-labs/rescue-poseidon.git?branch=poseidon2)", + "serde", + "snark_wrapper", + "zk_evm 1.4.0", + "zkevm_circuits", +] + [[package]] name = "circuit_testing" version = "0.1.0" source = "git+https://github.com/matter-labs/era-circuit_testing.git?branch=main#164c0adac85be39ee44bd9456b2b91cdede5af80" dependencies = [ - "bellman_ce", + "bellman_ce 0.3.2 (git+https://github.com/matter-labs/bellman?branch=dev)", ] [[package]] @@ -1230,11 +1309,11 @@ version = "0.1.0" source = "git+https://github.com/matter-labs/solidity_plonk_verifier.git?branch=dev#82f96b7156551087f1c9bfe4f0ea68845b6debfc" dependencies = [ "ethereum-types 0.14.1", - "franklin-crypto", + "franklin-crypto 0.0.5 (git+https://github.com/matter-labs/franklin-crypto?branch=dev)", "handlebars", "hex", "paste", - "rescue_poseidon", + "rescue_poseidon 0.4.1 (git+https://github.com/matter-labs/rescue-poseidon)", "serde", "serde_derive", "serde_json", @@ -1289,6 +1368,26 @@ version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "520fbf3c07483f94e3e3ca9d0cfd913d7718ef2483d2cfd91c0d9e91474ab913" +[[package]] +name = "const_format" +version = "0.2.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c990efc7a285731f9a4378d81aff2f0e85a2c8781a05ef0f8baa8dac54d0ff48" +dependencies = [ + "const_format_proc_macros", +] + +[[package]] +name = "const_format_proc_macros" +version = "0.2.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e026b6ce194a874cb9cf32cd5772d1ef9767cc8fcb5765948d74f37a9d8b2bf6" +dependencies = [ + "proc-macro2 1.0.66", + "quote 1.0.33", + "unicode-xid 0.2.4", +] + [[package]] name = "constant_time_eq" version = "0.1.5" @@ -1591,6 +1690,16 @@ dependencies = [ "zeroize", ] +[[package]] +name = "crypto-bigint" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf4c2f4e1afd912bc40bfd6fed5d9dc1f288e0ba01bfcc835cc5bc3eb13efe15" +dependencies = [ + "rand_core 0.6.4", + "subtle", +] + [[package]] name = "crypto-common" version = "0.1.6" @@ -1621,6 +1730,17 @@ dependencies = [ "subtle", ] +[[package]] +name = "cs_derive" +version = "0.1.0" +source = "git+https://github.com/matter-labs/era-boojum.git?branch=main#2771569baab9a59690d88cee6ba9b295c8a1e4c4" +dependencies = [ + "proc-macro-error", + "proc-macro2 1.0.66", + "quote 1.0.33", + "syn 1.0.109", +] + [[package]] name = "cs_derive" version = "0.1.0" @@ -2084,6 +2204,12 @@ dependencies = [ "winapi 0.3.9", ] +[[package]] +name = "firestorm" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c5f6c2c942da57e2aaaa84b8a521489486f14e75e7fa91dab70aba913975f98" + [[package]] name = "fixed-hash" version = "0.7.0" @@ -2154,7 +2280,7 @@ version = "0.0.5" source = "git+https://github.com/matter-labs/franklin-crypto?branch=dev#5695d07c7bc604c2c39a27712ffac171d39ee1ed" dependencies = [ "arr_macro", - "bellman_ce", + "bellman_ce 0.3.2 (git+https://github.com/matter-labs/bellman?branch=dev)", "bit-vec", "blake2 0.9.2", "blake2-rfc_bellman_edition", @@ -2178,6 +2304,38 @@ dependencies = [ "tiny-keccak 1.5.0", ] +[[package]] +name = "franklin-crypto" +version = "0.0.5" +source = "git+https://github.com/matter-labs/franklin-crypto?branch=snark_wrapper#b1f1677d9ece6a6ddcfbf394dc2db2bd8b792e6c" +dependencies = [ + "arr_macro", + "bellman_ce 0.3.2 (git+https://github.com/matter-labs/bellman?branch=snark-wrapper)", + "bit-vec", + "blake2 0.9.2", + "blake2-rfc_bellman_edition", + "blake2s_simd", + "boojum", + "byteorder", + "derivative", + "digest 0.9.0", + "hex", + "indexmap", + "itertools", + "lazy_static", + "num-bigint 0.4.3", + "num-derive 0.2.5", + "num-integer", + "num-traits", + "rand 0.4.6", + "serde", + "sha2 0.9.9", + "sha3 0.9.1", + "smallvec", + "splitmut", + "tiny-keccak 1.5.0", +] + [[package]] name = "fuchsia-cprng" version = "0.1.1" @@ -4043,6 +4201,16 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-modular" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64a5fe11d4135c3bcdf3a95b18b194afa9608a5f6ff034f5d857bc9a27fb0119" +dependencies = [ + "num-integer", + "num-traits", +] + [[package]] name = "num-rational" version = "0.3.2" @@ -4209,6 +4377,16 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" +[[package]] +name = "packed_simd" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f9f08af0c877571712e2e3e686ad79efad9657dbf0f7c3c8ba943ff6c38932d" +dependencies = [ + "cfg-if 1.0.0", + "num-traits", +] + [[package]] name = "pairing_ce" version = "0.28.5" @@ -4222,6 +4400,18 @@ dependencies = [ "serde", ] +[[package]] +name = "pairing_ce" +version = "0.28.5" +source = "git+https://github.com/matter-labs/pairing.git#d06c2a112913b0abfb75996cc29a6b6075717e99" +dependencies = [ + "byteorder", + "cfg-if 1.0.0", + "ff_ce", + "rand 0.4.6", + "serde", +] + [[package]] name = "parity-crypto" version = "0.9.0" @@ -4677,7 +4867,7 @@ version = "0.4.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" dependencies = [ - "unicode-xid", + "unicode-xid 0.1.0", ] [[package]] @@ -5156,13 +5346,36 @@ dependencies = [ [[package]] name = "rescue_poseidon" version = "0.4.1" -source = "git+https://github.com/matter-labs/rescue-poseidon#d059b5042df5ed80e151f05751410b524a54d16c" +source = "git+https://github.com/matter-labs/rescue-poseidon.git?branch=poseidon2#09b96e7e82dadac151d8d681f017cb6a16961801" dependencies = [ "addchain", "arrayvec 0.7.3", "blake2 0.10.6", + "boojum", "byteorder", - "franklin-crypto", + "derivative", + "franklin-crypto 0.0.5 (git+https://github.com/matter-labs/franklin-crypto?branch=snark_wrapper)", + "log", + "num-bigint 0.3.3", + "num-integer", + "num-iter", + "num-traits", + "rand 0.4.6", + "serde", + "sha3 0.9.1", + "smallvec", +] + +[[package]] +name = "rescue_poseidon" +version = "0.4.1" +source = "git+https://github.com/matter-labs/rescue-poseidon#f611a3353e48cf42153e44d89ed90da9bc5934e8" +dependencies = [ + "addchain", + "arrayvec 0.7.3", + "blake2 0.10.6", + "byteorder", + "franklin-crypto 0.0.5 (git+https://github.com/matter-labs/franklin-crypto?branch=dev)", "num-bigint 0.3.3", "num-integer", "num-iter", @@ -5880,6 +6093,21 @@ name = "smallvec" version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" +dependencies = [ + "serde", +] + +[[package]] +name = "snark_wrapper" +version = "0.1.0" +source = "git+https://github.com/matter-labs/snark-wrapper.git?branch=main#ce1453ed1d9cd25022a075ff5efb2fb387ea1ab9" +dependencies = [ + "boojum", + "derivative", + "franklin-crypto 0.0.5 (git+https://github.com/matter-labs/franklin-crypto?branch=snark_wrapper)", + "rand 0.4.6", + "rescue_poseidon 0.4.1 (git+https://github.com/matter-labs/rescue-poseidon.git?branch=poseidon2)", +] [[package]] name = "socket2" @@ -6151,7 +6379,7 @@ checksum = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" dependencies = [ "proc-macro2 0.4.30", "quote 0.6.13", - "unicode-xid", + "unicode-xid 0.1.0", ] [[package]] @@ -6182,9 +6410,9 @@ version = "1.3.3" source = "git+https://github.com/matter-labs/era-sync_vm.git?branch=v1.3.3#3a21c8dee43c77604350fdf33c1615e25bf1dacd" dependencies = [ "arrayvec 0.7.3", - "cs_derive", + "cs_derive 0.1.0 (git+https://github.com/matter-labs/era-sync_vm.git?branch=v1.3.3)", "derivative", - "franklin-crypto", + "franklin-crypto 0.0.5 (git+https://github.com/matter-labs/franklin-crypto?branch=dev)", "hex", "itertools", "num-bigint 0.4.3", @@ -6193,7 +6421,7 @@ dependencies = [ "num-traits", "once_cell", "rand 0.4.6", - "rescue_poseidon", + "rescue_poseidon 0.4.1 (git+https://github.com/matter-labs/rescue-poseidon)", "serde", "sha2 0.10.6", "sha3 0.10.6", @@ -6759,12 +6987,28 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + [[package]] name = "unicode_categories" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" +[[package]] +name = "unroll" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ad948c1cb799b1a70f836077721a92a35ac177d4daddf4c20a633786d4cf618" +dependencies = [ + "quote 1.0.33", + "syn 1.0.109", +] + [[package]] name = "untrusted" version = "0.7.1" @@ -7501,6 +7745,21 @@ dependencies = [ "zkevm_opcode_defs 1.3.2", ] +[[package]] +name = "zk_evm" +version = "1.4.0" +source = "git+https://github.com/matter-labs/era-zk_evm.git?branch=v1.4.0#e33a5ded1b53e35d261fdb46e6d16f2c900b217f" +dependencies = [ + "anyhow", + "lazy_static", + "num 0.4.0", + "serde", + "serde_json", + "static_assertions", + "zk_evm_abstractions", + "zkevm_opcode_defs 1.3.2", +] + [[package]] name = "zk_evm_abstractions" version = "0.1.0" @@ -7550,6 +7809,26 @@ dependencies = [ "zkevm_opcode_defs 1.3.2", ] +[[package]] +name = "zkevm_circuits" +version = "1.4.0" +source = "git+https://github.com/matter-labs/era-zkevm_circuits.git?branch=main#4fba537ccecc238e2da9c80844dc8c185e42466f" +dependencies = [ + "arrayvec 0.7.3", + "bincode", + "boojum", + "cs_derive 0.1.0 (git+https://github.com/matter-labs/era-boojum.git?branch=main)", + "derivative", + "hex", + "itertools", + "rand 0.4.6", + "rand 0.8.5", + "serde", + "serde_json", + "smallvec", + "zkevm_opcode_defs 1.3.2", +] + [[package]] name = "zkevm_opcode_defs" version = "1.3.1" @@ -7602,6 +7881,30 @@ dependencies = [ "zkevm-assembly 1.3.2", ] +[[package]] +name = "zkevm_test_harness" +version = "1.4.0" +source = "git+https://github.com/matter-labs/era-zkevm_test_harness.git?branch=v1.4.0#3cd647aa57fc2e1180bab53f7a3b61ec47502a46" +dependencies = [ + "bincode", + "circuit_definitions", + "codegen 0.2.0", + "crossbeam 0.8.2", + "derivative", + "env_logger", + "hex", + "rayon", + "rescue_poseidon 0.4.1 (git+https://github.com/matter-labs/rescue-poseidon.git?branch=poseidon2)", + "serde", + "serde_json", + "smallvec", + "snark_wrapper", + "structopt", + "test-log", + "tracing", + "zkevm-assembly 1.3.2", +] + [[package]] name = "zksync" version = "0.4.0" @@ -7755,6 +8058,7 @@ dependencies = [ "tracing", "vlog", "vm", + "zkevm_test_harness 1.4.0", "zksync_circuit_breaker", "zksync_config", "zksync_contracts", @@ -7931,6 +8235,7 @@ dependencies = [ "zksync_crypto", "zksync_storage", "zksync_types", + "zksync_utils", ] [[package]] @@ -8015,6 +8320,8 @@ version = "0.1.0" dependencies = [ "anyhow", "db_test_macro", + "itertools", + "metrics", "mini-moka", "rand 0.8.5", "tempfile", @@ -8074,7 +8381,7 @@ dependencies = [ "thiserror", "tokio", "zk_evm 1.3.3", - "zkevm_test_harness", + "zkevm_test_harness 1.3.3", "zksync_basic_types", "zksync_config", "zksync_contracts", diff --git a/contracts b/contracts index 67f38daa255..a0da7f11171 160000 --- a/contracts +++ b/contracts @@ -1 +1 @@ -Subproject commit 67f38daa255c31e778e9a6f8c673f36914513fa1 +Subproject commit a0da7f111710bfede493da2d9ffab57cda89070c diff --git a/core/bin/system-constants-generator/src/utils.rs b/core/bin/system-constants-generator/src/utils.rs index 3af5df328f4..d429f4813b2 100644 --- a/core/bin/system-constants-generator/src/utils.rs +++ b/core/bin/system-constants-generator/src/utils.rs @@ -295,7 +295,7 @@ pub(super) fn execute_user_txs_in_test_gas_vm( let execution_logs = VmExecutionLogs { storage_logs: result.full_result.storage_log_queries, events: result.full_result.events, - l2_to_l1_logs: result.full_result.l2_to_l1_logs, + l2_to_l1_logs: result.full_result.system_logs, total_log_queries_count: result.full_result.total_log_queries, }; diff --git a/core/lib/config/src/configs/contracts.rs b/core/lib/config/src/configs/contracts.rs index ddc26f7bf35..b3fbcf030cc 100644 --- a/core/lib/config/src/configs/contracts.rs +++ b/core/lib/config/src/configs/contracts.rs @@ -8,10 +8,10 @@ use super::envy_load; /// Data about deployed contracts. #[derive(Debug, Deserialize, Clone, PartialEq)] pub struct ContractsConfig { + pub governance_addr: Address, pub mailbox_facet_addr: Address, pub executor_facet_addr: Address, - pub governance_facet_addr: Address, - pub diamond_cut_facet_addr: Address, + pub admin_facet_addr: Address, pub getters_facet_addr: Address, pub verifier_addr: Address, pub diamond_init_addr: Address, @@ -51,10 +51,10 @@ mod tests { fn expected_config() -> ContractsConfig { ContractsConfig { + governance_addr: addr("d8dA6BF26964aF9D7eEd9e03E53415D37aA96045"), mailbox_facet_addr: addr("0f6Fa881EF414Fc6E818180657c2d5CD7Ac6cCAd"), executor_facet_addr: addr("18B631537801963A964211C0E86645c1aBfbB2d3"), - governance_facet_addr: addr("1e12b20BE86bEc3A0aC95aA52ade345cB9AE7a32"), - diamond_cut_facet_addr: addr("8656770FA78c830456B00B4fFCeE6b1De0e1b888"), + admin_facet_addr: addr("1e12b20BE86bEc3A0aC95aA52ade345cB9AE7a32"), getters_facet_addr: addr("8656770FA78c830456B00B4fFCeE6b1De0e1b888"), verifier_addr: addr("34782eE00206EAB6478F2692caa800e4A581687b"), diamond_init_addr: addr("FFC35A5e767BE36057c34586303498e3de7C62Ba"), @@ -100,10 +100,10 @@ mod tests { fn from_env() { let mut lock = MUTEX.lock(); let config = r#" +CONTRACTS_GOVERNANCE_ADDR="0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045" CONTRACTS_MAILBOX_FACET_ADDR="0x0f6Fa881EF414Fc6E818180657c2d5CD7Ac6cCAd" CONTRACTS_EXECUTOR_FACET_ADDR="0x18B631537801963A964211C0E86645c1aBfbB2d3" -CONTRACTS_GOVERNANCE_FACET_ADDR="0x1e12b20BE86bEc3A0aC95aA52ade345cB9AE7a32" -CONTRACTS_DIAMOND_CUT_FACET_ADDR="0x8656770FA78c830456B00B4fFCeE6b1De0e1b888" +CONTRACTS_ADMIN_FACET_ADDR="0x1e12b20BE86bEc3A0aC95aA52ade345cB9AE7a32" CONTRACTS_GETTERS_FACET_ADDR="0x8656770FA78c830456B00B4fFCeE6b1De0e1b888" CONTRACTS_VERIFIER_ADDR="0x34782eE00206EAB6478F2692caa800e4A581687b" CONTRACTS_DIAMOND_INIT_ADDR="0xFFC35A5e767BE36057c34586303498e3de7C62Ba" diff --git a/core/lib/config/src/constants/contracts.rs b/core/lib/config/src/constants/contracts.rs index 33b735c8a2d..d74c0e0319a 100644 --- a/core/lib/config/src/constants/contracts.rs +++ b/core/lib/config/src/constants/contracts.rs @@ -73,7 +73,7 @@ pub const EVENT_WRITER_ADDRESS: Address = H160([ 0x00, 0x00, 0x80, 0x0d, ]); -pub const BYTECODE_COMPRESSOR_ADDRESS: Address = H160([ +pub const COMPRESSOR_ADDRESS: Address = H160([ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0e, ]); diff --git a/core/lib/config/src/constants/ethereum.rs b/core/lib/config/src/constants/ethereum.rs index 15187892ae8..36fdc1d9c75 100644 --- a/core/lib/config/src/constants/ethereum.rs +++ b/core/lib/config/src/constants/ethereum.rs @@ -10,7 +10,9 @@ pub static ETHEREUM_ADDRESS: Address = Address::zero(); /// to be published inside the body of transaction (i.e. excluding of factory deps). pub const GUARANTEED_PUBDATA_PER_L1_BATCH: u64 = 4000; -/// The maximum number of pubdata per L1 batch. +/// The maximum number of pubdata per L1 batch. This limit is due to the fact that the Ethereum +/// nodes do not accept transactions that have more than 128kb of pubdata. +/// The 18kb margin is left in case of any inpreciseness of the pubdata calculation. pub const MAX_PUBDATA_PER_L1_BATCH: u64 = 120000; // TODO: import from zkevm_opcode_defs once VM1.3 is supported diff --git a/core/lib/contracts/src/lib.rs b/core/lib/contracts/src/lib.rs index 1fb12da5531..06434502cc3 100644 --- a/core/lib/contracts/src/lib.rs +++ b/core/lib/contracts/src/lib.rs @@ -23,7 +23,8 @@ pub enum ContractLanguage { Sol, Yul, } - +const GOVERNANCE_CONTRACT_FILE: &str = + "contracts/ethereum/artifacts/cache/solpp-generated-contracts/governance/IGovernance.sol/IGovernance.json"; const ZKSYNC_CONTRACT_FILE: &str = "contracts/ethereum/artifacts/cache/solpp-generated-contracts/zksync/interfaces/IZkSync.sol/IZkSync.json"; const MULTICALL3_CONTRACT_FILE: &str = @@ -69,6 +70,10 @@ pub fn read_contract_abi(path: impl AsRef) -> String { .to_string() } +pub fn governance_contract() -> Contract { + load_contract(GOVERNANCE_CONTRACT_FILE) +} + pub fn zksync_contract() -> Contract { load_contract(ZKSYNC_CONTRACT_FILE) } diff --git a/core/lib/dal/migrations/20230807204005_add_fields_for_system_logs_and_compressed_state_diffs.down.sql b/core/lib/dal/migrations/20230807204005_add_fields_for_system_logs_and_compressed_state_diffs.down.sql new file mode 100644 index 00000000000..69df17ae9a7 --- /dev/null +++ b/core/lib/dal/migrations/20230807204005_add_fields_for_system_logs_and_compressed_state_diffs.down.sql @@ -0,0 +1,5 @@ +ALTER TABLE l1_batches + DROP COLUMN IF EXISTS system_logs; + +ALTER TABLE l1_batches + DROP COLUMN IF EXISTS compressed_state_diffs; diff --git a/core/lib/dal/migrations/20230807204005_add_fields_for_system_logs_and_compressed_state_diffs.up.sql b/core/lib/dal/migrations/20230807204005_add_fields_for_system_logs_and_compressed_state_diffs.up.sql new file mode 100644 index 00000000000..d9b782b6f4d --- /dev/null +++ b/core/lib/dal/migrations/20230807204005_add_fields_for_system_logs_and_compressed_state_diffs.up.sql @@ -0,0 +1,6 @@ +ALTER TABLE l1_batches + ADD COLUMN IF NOT EXISTS system_logs BYTEA[] + NOT NULL DEFAULT '{}'; + +ALTER TABLE l1_batches + ADD COLUMN IF NOT EXISTS compressed_state_diffs BYTEA; diff --git a/core/lib/dal/migrations/20230919154048_boojum-block-commitments.down.sql b/core/lib/dal/migrations/20230919154048_boojum-block-commitments.down.sql new file mode 100644 index 00000000000..b50be2a14d2 --- /dev/null +++ b/core/lib/dal/migrations/20230919154048_boojum-block-commitments.down.sql @@ -0,0 +1,7 @@ +-- Add up migration script here + +ALTER TABLE l1_batches + DROP COLUMN events_state_queue_commitment; + +ALTER TABLE l1_batches + DROP COLUMN bootloader_initial_memory_commitment; diff --git a/core/lib/dal/migrations/20230919154048_boojum-block-commitments.up.sql b/core/lib/dal/migrations/20230919154048_boojum-block-commitments.up.sql new file mode 100644 index 00000000000..0ea583a6d19 --- /dev/null +++ b/core/lib/dal/migrations/20230919154048_boojum-block-commitments.up.sql @@ -0,0 +1,7 @@ +-- Add up migration script here + +ALTER TABLE l1_batches + ADD COLUMN events_state_queue_commitment BYTEA; + +ALTER TABLE l1_batches + ADD COLUMN bootloader_initial_memory_commitment BYTEA; diff --git a/core/lib/dal/sqlx-data.json b/core/lib/dal/sqlx-data.json index 84799dd2180..9cdb95611ec 100644 --- a/core/lib/dal/sqlx-data.json +++ b/core/lib/dal/sqlx-data.json @@ -244,6 +244,540 @@ }, "query": "\n WITH events_select AS (\n SELECT\n address, topic1, topic2, topic3, topic4, value,\n miniblock_number, tx_hash, tx_index_in_block,\n event_index_in_block, event_index_in_tx\n FROM events\n WHERE miniblock_number > $1\n ORDER BY miniblock_number ASC, event_index_in_block ASC\n )\n SELECT miniblocks.hash as \"block_hash?\",\n address as \"address!\", topic1 as \"topic1!\", topic2 as \"topic2!\", topic3 as \"topic3!\", topic4 as \"topic4!\", value as \"value!\",\n miniblock_number as \"miniblock_number!\", miniblocks.l1_batch_number as \"l1_batch_number?\", tx_hash as \"tx_hash!\",\n tx_index_in_block as \"tx_index_in_block!\", event_index_in_block as \"event_index_in_block!\", event_index_in_tx as \"event_index_in_tx!\"\n FROM events_select\n INNER JOIN miniblocks ON events_select.miniblock_number = miniblocks.number\n ORDER BY miniblock_number ASC, event_index_in_block ASC\n " }, + "0608677396b09cda3f09d22dd42318028de7c2b9fff6ac176383a06f8f3ae761": { + "describe": { + "columns": [ + { + "name": "number", + "ordinal": 0, + "type_info": "Int8" + }, + { + "name": "timestamp", + "ordinal": 1, + "type_info": "Int8" + }, + { + "name": "is_finished", + "ordinal": 2, + "type_info": "Bool" + }, + { + "name": "l1_tx_count", + "ordinal": 3, + "type_info": "Int4" + }, + { + "name": "l2_tx_count", + "ordinal": 4, + "type_info": "Int4" + }, + { + "name": "fee_account_address", + "ordinal": 5, + "type_info": "Bytea" + }, + { + "name": "bloom", + "ordinal": 6, + "type_info": "Bytea" + }, + { + "name": "priority_ops_onchain_data", + "ordinal": 7, + "type_info": "ByteaArray" + }, + { + "name": "hash", + "ordinal": 8, + "type_info": "Bytea" + }, + { + "name": "parent_hash", + "ordinal": 9, + "type_info": "Bytea" + }, + { + "name": "commitment", + "ordinal": 10, + "type_info": "Bytea" + }, + { + "name": "compressed_write_logs", + "ordinal": 11, + "type_info": "Bytea" + }, + { + "name": "compressed_contracts", + "ordinal": 12, + "type_info": "Bytea" + }, + { + "name": "eth_prove_tx_id", + "ordinal": 13, + "type_info": "Int4" + }, + { + "name": "eth_commit_tx_id", + "ordinal": 14, + "type_info": "Int4" + }, + { + "name": "eth_execute_tx_id", + "ordinal": 15, + "type_info": "Int4" + }, + { + "name": "merkle_root_hash", + "ordinal": 16, + "type_info": "Bytea" + }, + { + "name": "l2_to_l1_logs", + "ordinal": 17, + "type_info": "ByteaArray" + }, + { + "name": "l2_to_l1_messages", + "ordinal": 18, + "type_info": "ByteaArray" + }, + { + "name": "used_contract_hashes", + "ordinal": 19, + "type_info": "Jsonb" + }, + { + "name": "compressed_initial_writes", + "ordinal": 20, + "type_info": "Bytea" + }, + { + "name": "compressed_repeated_writes", + "ordinal": 21, + "type_info": "Bytea" + }, + { + "name": "l2_l1_compressed_messages", + "ordinal": 22, + "type_info": "Bytea" + }, + { + "name": "l2_l1_merkle_root", + "ordinal": 23, + "type_info": "Bytea" + }, + { + "name": "l1_gas_price", + "ordinal": 24, + "type_info": "Int8" + }, + { + "name": "l2_fair_gas_price", + "ordinal": 25, + "type_info": "Int8" + }, + { + "name": "rollup_last_leaf_index", + "ordinal": 26, + "type_info": "Int8" + }, + { + "name": "zkporter_is_available", + "ordinal": 27, + "type_info": "Bool" + }, + { + "name": "bootloader_code_hash", + "ordinal": 28, + "type_info": "Bytea" + }, + { + "name": "default_aa_code_hash", + "ordinal": 29, + "type_info": "Bytea" + }, + { + "name": "base_fee_per_gas", + "ordinal": 30, + "type_info": "Numeric" + }, + { + "name": "aux_data_hash", + "ordinal": 31, + "type_info": "Bytea" + }, + { + "name": "pass_through_data_hash", + "ordinal": 32, + "type_info": "Bytea" + }, + { + "name": "meta_parameters_hash", + "ordinal": 33, + "type_info": "Bytea" + }, + { + "name": "protocol_version", + "ordinal": 34, + "type_info": "Int4" + }, + { + "name": "compressed_state_diffs", + "ordinal": 35, + "type_info": "Bytea" + }, + { + "name": "gas_per_pubdata_byte_in_block", + "ordinal": 36, + "type_info": "Int4" + }, + { + "name": "gas_per_pubdata_limit", + "ordinal": 37, + "type_info": "Int8" + }, + { + "name": "skip_proof", + "ordinal": 38, + "type_info": "Bool" + }, + { + "name": "system_logs", + "ordinal": 39, + "type_info": "ByteaArray" + }, + { + "name": "events_state_queue_commitment", + "ordinal": 40, + "type_info": "Bytea" + }, + { + "name": "bootloader_initial_memory_commitment", + "ordinal": 41, + "type_info": "Bytea" + } + ], + "nullable": [ + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + true, + true, + true, + true, + false, + false, + true, + true, + true, + true, + false, + true, + true, + true, + true, + true, + true, + false, + false, + false, + true, + true + ], + "parameters": { + "Left": [ + "Int8", + "Int8", + "Int8" + ] + } + }, + "query": "SELECT number, timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, rollup_last_leaf_index, zkporter_is_available, bootloader_code_hash, default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, meta_parameters_hash, protocol_version, compressed_state_diffs, gas_per_pubdata_byte_in_block, gas_per_pubdata_limit, skip_proof, system_logs, events_state_queue_commitment, bootloader_initial_memory_commitment FROM l1_batches WHERE number BETWEEN $1 AND $2 ORDER BY number LIMIT $3" + }, + "06a4a87b95fa3e75d33bda4b2de2811948b949b88092854aded8fe3e237d5fb4": { + "describe": { + "columns": [ + { + "name": "number", + "ordinal": 0, + "type_info": "Int8" + }, + { + "name": "timestamp", + "ordinal": 1, + "type_info": "Int8" + }, + { + "name": "is_finished", + "ordinal": 2, + "type_info": "Bool" + }, + { + "name": "l1_tx_count", + "ordinal": 3, + "type_info": "Int4" + }, + { + "name": "l2_tx_count", + "ordinal": 4, + "type_info": "Int4" + }, + { + "name": "fee_account_address", + "ordinal": 5, + "type_info": "Bytea" + }, + { + "name": "bloom", + "ordinal": 6, + "type_info": "Bytea" + }, + { + "name": "priority_ops_onchain_data", + "ordinal": 7, + "type_info": "ByteaArray" + }, + { + "name": "hash", + "ordinal": 8, + "type_info": "Bytea" + }, + { + "name": "parent_hash", + "ordinal": 9, + "type_info": "Bytea" + }, + { + "name": "commitment", + "ordinal": 10, + "type_info": "Bytea" + }, + { + "name": "compressed_write_logs", + "ordinal": 11, + "type_info": "Bytea" + }, + { + "name": "compressed_contracts", + "ordinal": 12, + "type_info": "Bytea" + }, + { + "name": "eth_prove_tx_id", + "ordinal": 13, + "type_info": "Int4" + }, + { + "name": "eth_commit_tx_id", + "ordinal": 14, + "type_info": "Int4" + }, + { + "name": "eth_execute_tx_id", + "ordinal": 15, + "type_info": "Int4" + }, + { + "name": "merkle_root_hash", + "ordinal": 16, + "type_info": "Bytea" + }, + { + "name": "l2_to_l1_logs", + "ordinal": 17, + "type_info": "ByteaArray" + }, + { + "name": "l2_to_l1_messages", + "ordinal": 18, + "type_info": "ByteaArray" + }, + { + "name": "used_contract_hashes", + "ordinal": 19, + "type_info": "Jsonb" + }, + { + "name": "compressed_initial_writes", + "ordinal": 20, + "type_info": "Bytea" + }, + { + "name": "compressed_repeated_writes", + "ordinal": 21, + "type_info": "Bytea" + }, + { + "name": "l2_l1_compressed_messages", + "ordinal": 22, + "type_info": "Bytea" + }, + { + "name": "l2_l1_merkle_root", + "ordinal": 23, + "type_info": "Bytea" + }, + { + "name": "l1_gas_price", + "ordinal": 24, + "type_info": "Int8" + }, + { + "name": "l2_fair_gas_price", + "ordinal": 25, + "type_info": "Int8" + }, + { + "name": "rollup_last_leaf_index", + "ordinal": 26, + "type_info": "Int8" + }, + { + "name": "zkporter_is_available", + "ordinal": 27, + "type_info": "Bool" + }, + { + "name": "bootloader_code_hash", + "ordinal": 28, + "type_info": "Bytea" + }, + { + "name": "default_aa_code_hash", + "ordinal": 29, + "type_info": "Bytea" + }, + { + "name": "base_fee_per_gas", + "ordinal": 30, + "type_info": "Numeric" + }, + { + "name": "aux_data_hash", + "ordinal": 31, + "type_info": "Bytea" + }, + { + "name": "pass_through_data_hash", + "ordinal": 32, + "type_info": "Bytea" + }, + { + "name": "meta_parameters_hash", + "ordinal": 33, + "type_info": "Bytea" + }, + { + "name": "protocol_version", + "ordinal": 34, + "type_info": "Int4" + }, + { + "name": "compressed_state_diffs", + "ordinal": 35, + "type_info": "Bytea" + }, + { + "name": "gas_per_pubdata_byte_in_block", + "ordinal": 36, + "type_info": "Int4" + }, + { + "name": "gas_per_pubdata_limit", + "ordinal": 37, + "type_info": "Int8" + }, + { + "name": "skip_proof", + "ordinal": 38, + "type_info": "Bool" + }, + { + "name": "system_logs", + "ordinal": 39, + "type_info": "ByteaArray" + }, + { + "name": "events_state_queue_commitment", + "ordinal": 40, + "type_info": "Bytea" + }, + { + "name": "bootloader_initial_memory_commitment", + "ordinal": 41, + "type_info": "Bytea" + } + ], + "nullable": [ + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + true, + true, + true, + true, + false, + false, + true, + true, + true, + true, + false, + true, + true, + true, + true, + true, + true, + false, + false, + false, + true, + true + ], + "parameters": { + "Left": [ + "Int8" + ] + } + }, + "query": "SELECT number, timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, rollup_last_leaf_index, zkporter_is_available, bootloader_code_hash, default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, meta_parameters_hash, protocol_version, compressed_state_diffs, gas_per_pubdata_byte_in_block, gas_per_pubdata_limit, skip_proof, system_logs, events_state_queue_commitment, bootloader_initial_memory_commitment FROM l1_batches WHERE eth_commit_tx_id IS NOT NULL AND eth_prove_tx_id IS NULL ORDER BY number LIMIT $1" + }, "073582051133075adfc51a18d15639129dd00628aa4994b602843ac979ad4419": { "describe": { "columns": [], @@ -1148,138 +1682,22 @@ "nullable": [], "parameters": { "Left": [ - "Int8", - "Text" - ] - } - }, - "query": "INSERT INTO proof_compression_jobs_fri(l1_batch_number, status, created_at, updated_at) VALUES ($1, $2, now(), now()) ON CONFLICT (l1_batch_number) DO NOTHING" - }, - "1eede5c2169aee5a767b3b6b829f53721c0c353956ccec31a75226a65325ae46": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [] - } - }, - "query": "UPDATE transactions SET in_mempool = FALSE WHERE in_mempool = TRUE" - }, - "1f33c948d95dfb549b9de814e74c4effff504c3316df79816d619a20a2c04be3": { - "describe": { - "columns": [ - { - "name": "number", - "ordinal": 0, - "type_info": "Int8" - }, - { - "name": "l1_tx_count", - "ordinal": 1, - "type_info": "Int4" - }, - { - "name": "l2_tx_count", - "ordinal": 2, - "type_info": "Int4" - }, - { - "name": "timestamp", - "ordinal": 3, - "type_info": "Int8" - }, - { - "name": "is_finished", - "ordinal": 4, - "type_info": "Bool" - }, - { - "name": "fee_account_address", - "ordinal": 5, - "type_info": "Bytea" - }, - { - "name": "l2_to_l1_logs", - "ordinal": 6, - "type_info": "ByteaArray" - }, - { - "name": "l2_to_l1_messages", - "ordinal": 7, - "type_info": "ByteaArray" - }, - { - "name": "bloom", - "ordinal": 8, - "type_info": "Bytea" - }, - { - "name": "priority_ops_onchain_data", - "ordinal": 9, - "type_info": "ByteaArray" - }, - { - "name": "used_contract_hashes", - "ordinal": 10, - "type_info": "Jsonb" - }, - { - "name": "base_fee_per_gas", - "ordinal": 11, - "type_info": "Numeric" - }, - { - "name": "l1_gas_price", - "ordinal": 12, - "type_info": "Int8" - }, - { - "name": "l2_fair_gas_price", - "ordinal": 13, - "type_info": "Int8" - }, - { - "name": "bootloader_code_hash", - "ordinal": 14, - "type_info": "Bytea" - }, - { - "name": "default_aa_code_hash", - "ordinal": 15, - "type_info": "Bytea" - }, - { - "name": "protocol_version", - "ordinal": 16, - "type_info": "Int4" - } - ], - "nullable": [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - true, - true - ], - "parameters": { - "Left": [ - "Int4" + "Int8", + "Text" ] } }, - "query": "SELECT number, l1_tx_count, l2_tx_count, timestamp, is_finished, fee_account_address, l2_to_l1_logs, l2_to_l1_messages, bloom, priority_ops_onchain_data, used_contract_hashes, base_fee_per_gas, l1_gas_price, l2_fair_gas_price, bootloader_code_hash, default_aa_code_hash, protocol_version FROM l1_batches WHERE eth_commit_tx_id = $1 OR eth_prove_tx_id = $1 OR eth_execute_tx_id = $1" + "query": "INSERT INTO proof_compression_jobs_fri(l1_batch_number, status, created_at, updated_at) VALUES ($1, $2, now(), now()) ON CONFLICT (l1_batch_number) DO NOTHING" + }, + "1eede5c2169aee5a767b3b6b829f53721c0c353956ccec31a75226a65325ae46": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [] + } + }, + "query": "UPDATE transactions SET in_mempool = FALSE WHERE in_mempool = TRUE" }, "1f3e41f4ac5b1f6e735f1c422c0098ed534d9e8fe84e98b3234e893e8a2c5085": { "describe": { @@ -2313,147 +2731,421 @@ "type_info": "Timestamp" }, { - "name": "priority_op_id", + "name": "priority_op_id", + "ordinal": 10, + "type_info": "Int8" + }, + { + "name": "l1_batch_number", + "ordinal": 11, + "type_info": "Int8" + }, + { + "name": "index_in_block", + "ordinal": 12, + "type_info": "Int4" + }, + { + "name": "error", + "ordinal": 13, + "type_info": "Varchar" + }, + { + "name": "gas_limit", + "ordinal": 14, + "type_info": "Numeric" + }, + { + "name": "gas_per_storage_limit", + "ordinal": 15, + "type_info": "Numeric" + }, + { + "name": "gas_per_pubdata_limit", + "ordinal": 16, + "type_info": "Numeric" + }, + { + "name": "tx_format", + "ordinal": 17, + "type_info": "Int4" + }, + { + "name": "created_at", + "ordinal": 18, + "type_info": "Timestamp" + }, + { + "name": "updated_at", + "ordinal": 19, + "type_info": "Timestamp" + }, + { + "name": "execution_info", + "ordinal": 20, + "type_info": "Jsonb" + }, + { + "name": "contract_address", + "ordinal": 21, + "type_info": "Bytea" + }, + { + "name": "in_mempool", + "ordinal": 22, + "type_info": "Bool" + }, + { + "name": "l1_block_number", + "ordinal": 23, + "type_info": "Int4" + }, + { + "name": "value", + "ordinal": 24, + "type_info": "Numeric" + }, + { + "name": "paymaster", + "ordinal": 25, + "type_info": "Bytea" + }, + { + "name": "paymaster_input", + "ordinal": 26, + "type_info": "Bytea" + }, + { + "name": "max_fee_per_gas", + "ordinal": 27, + "type_info": "Numeric" + }, + { + "name": "max_priority_fee_per_gas", + "ordinal": 28, + "type_info": "Numeric" + }, + { + "name": "effective_gas_price", + "ordinal": 29, + "type_info": "Numeric" + }, + { + "name": "miniblock_number", + "ordinal": 30, + "type_info": "Int8" + }, + { + "name": "l1_batch_tx_index", + "ordinal": 31, + "type_info": "Int4" + }, + { + "name": "refunded_gas", + "ordinal": 32, + "type_info": "Int8" + }, + { + "name": "l1_tx_mint", + "ordinal": 33, + "type_info": "Numeric" + }, + { + "name": "l1_tx_refund_recipient", + "ordinal": 34, + "type_info": "Bytea" + }, + { + "name": "upgrade_id", + "ordinal": 35, + "type_info": "Int4" + } + ], + "nullable": [ + false, + false, + true, + true, + false, + true, + true, + true, + false, + false, + true, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + true, + false, + true, + false, + false, + false, + true, + true, + true, + true, + true, + false, + true, + true, + true + ], + "parameters": { + "Left": [] + } + }, + "query": "SELECT * FROM transactions WHERE miniblock_number IS NOT NULL AND l1_batch_number IS NULL ORDER BY miniblock_number, index_in_block" + }, + "3055b9f38a04f26dac9adbba978679e6877f44c758fd03461e940a8f9a4e5af1": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Int8", + "Int2", + "Int4", + "Text", + "Int4", + "Int4" + ] + } + }, + "query": "INSERT INTO node_aggregation_witness_jobs_fri (l1_batch_number, circuit_id, depth, aggregations_url, number_of_dependent_jobs, protocol_version, status, created_at, updated_at)\n VALUES ($1, $2, $3, $4, $5, $6, 'waiting_for_proofs', now(), now())\n ON CONFLICT(l1_batch_number, circuit_id, depth)\n DO UPDATE SET updated_at=now()" + }, + "31e9965ca851535a3b26576cbd7a89c2fc9a6a6b761c2f95535a370082918914": { + "describe": { + "columns": [ + { + "name": "number", + "ordinal": 0, + "type_info": "Int8" + }, + { + "name": "timestamp", + "ordinal": 1, + "type_info": "Int8" + }, + { + "name": "is_finished", + "ordinal": 2, + "type_info": "Bool" + }, + { + "name": "l1_tx_count", + "ordinal": 3, + "type_info": "Int4" + }, + { + "name": "l2_tx_count", + "ordinal": 4, + "type_info": "Int4" + }, + { + "name": "fee_account_address", + "ordinal": 5, + "type_info": "Bytea" + }, + { + "name": "bloom", + "ordinal": 6, + "type_info": "Bytea" + }, + { + "name": "priority_ops_onchain_data", + "ordinal": 7, + "type_info": "ByteaArray" + }, + { + "name": "hash", + "ordinal": 8, + "type_info": "Bytea" + }, + { + "name": "parent_hash", + "ordinal": 9, + "type_info": "Bytea" + }, + { + "name": "commitment", "ordinal": 10, - "type_info": "Int8" + "type_info": "Bytea" }, { - "name": "l1_batch_number", + "name": "compressed_write_logs", "ordinal": 11, - "type_info": "Int8" + "type_info": "Bytea" }, { - "name": "index_in_block", + "name": "compressed_contracts", "ordinal": 12, - "type_info": "Int4" + "type_info": "Bytea" }, { - "name": "error", + "name": "eth_prove_tx_id", "ordinal": 13, - "type_info": "Varchar" + "type_info": "Int4" }, { - "name": "gas_limit", + "name": "eth_commit_tx_id", "ordinal": 14, - "type_info": "Numeric" + "type_info": "Int4" }, { - "name": "gas_per_storage_limit", + "name": "eth_execute_tx_id", "ordinal": 15, - "type_info": "Numeric" + "type_info": "Int4" }, { - "name": "gas_per_pubdata_limit", + "name": "merkle_root_hash", "ordinal": 16, - "type_info": "Numeric" + "type_info": "Bytea" }, { - "name": "tx_format", + "name": "l2_to_l1_logs", "ordinal": 17, - "type_info": "Int4" + "type_info": "ByteaArray" }, { - "name": "created_at", + "name": "l2_to_l1_messages", "ordinal": 18, - "type_info": "Timestamp" + "type_info": "ByteaArray" }, { - "name": "updated_at", + "name": "used_contract_hashes", "ordinal": 19, - "type_info": "Timestamp" + "type_info": "Jsonb" }, { - "name": "execution_info", + "name": "compressed_initial_writes", "ordinal": 20, - "type_info": "Jsonb" + "type_info": "Bytea" }, { - "name": "contract_address", + "name": "compressed_repeated_writes", "ordinal": 21, "type_info": "Bytea" }, { - "name": "in_mempool", + "name": "l2_l1_compressed_messages", "ordinal": 22, - "type_info": "Bool" + "type_info": "Bytea" }, { - "name": "l1_block_number", + "name": "l2_l1_merkle_root", "ordinal": 23, - "type_info": "Int4" + "type_info": "Bytea" }, { - "name": "value", + "name": "l1_gas_price", "ordinal": 24, - "type_info": "Numeric" + "type_info": "Int8" }, { - "name": "paymaster", + "name": "l2_fair_gas_price", "ordinal": 25, - "type_info": "Bytea" + "type_info": "Int8" }, { - "name": "paymaster_input", + "name": "rollup_last_leaf_index", "ordinal": 26, - "type_info": "Bytea" + "type_info": "Int8" }, { - "name": "max_fee_per_gas", + "name": "zkporter_is_available", "ordinal": 27, - "type_info": "Numeric" + "type_info": "Bool" }, { - "name": "max_priority_fee_per_gas", + "name": "bootloader_code_hash", "ordinal": 28, - "type_info": "Numeric" + "type_info": "Bytea" }, { - "name": "effective_gas_price", + "name": "default_aa_code_hash", "ordinal": 29, - "type_info": "Numeric" + "type_info": "Bytea" }, { - "name": "miniblock_number", + "name": "base_fee_per_gas", "ordinal": 30, - "type_info": "Int8" + "type_info": "Numeric" }, { - "name": "l1_batch_tx_index", + "name": "aux_data_hash", "ordinal": 31, - "type_info": "Int4" + "type_info": "Bytea" }, { - "name": "refunded_gas", + "name": "pass_through_data_hash", "ordinal": 32, - "type_info": "Int8" + "type_info": "Bytea" }, { - "name": "l1_tx_mint", + "name": "meta_parameters_hash", "ordinal": 33, - "type_info": "Numeric" + "type_info": "Bytea" }, { - "name": "l1_tx_refund_recipient", + "name": "protocol_version", "ordinal": 34, - "type_info": "Bytea" + "type_info": "Int4" }, { - "name": "upgrade_id", + "name": "compressed_state_diffs", "ordinal": 35, + "type_info": "Bytea" + }, + { + "name": "gas_per_pubdata_byte_in_block", + "ordinal": 36, "type_info": "Int4" + }, + { + "name": "gas_per_pubdata_limit", + "ordinal": 37, + "type_info": "Int8" + }, + { + "name": "skip_proof", + "ordinal": 38, + "type_info": "Bool" + }, + { + "name": "system_logs", + "ordinal": 39, + "type_info": "ByteaArray" + }, + { + "name": "events_state_queue_commitment", + "ordinal": 40, + "type_info": "Bytea" + }, + { + "name": "bootloader_initial_memory_commitment", + "ordinal": 41, + "type_info": "Bytea" } ], "nullable": [ false, false, - true, - true, false, - true, - true, - true, false, false, + false, + false, + false, + true, true, true, true, @@ -2466,43 +3158,35 @@ false, false, true, - false, + true, + true, true, false, false, + true, + true, + true, + true, false, true, true, true, true, true, - false, true, + false, + false, + false, true, true ], - "parameters": { - "Left": [] - } - }, - "query": "SELECT * FROM transactions WHERE miniblock_number IS NOT NULL AND l1_batch_number IS NULL ORDER BY miniblock_number, index_in_block" - }, - "3055b9f38a04f26dac9adbba978679e6877f44c758fd03461e940a8f9a4e5af1": { - "describe": { - "columns": [], - "nullable": [], "parameters": { "Left": [ - "Int8", - "Int2", - "Int4", - "Text", - "Int4", - "Int4" + "Int8" ] } }, - "query": "INSERT INTO node_aggregation_witness_jobs_fri (l1_batch_number, circuit_id, depth, aggregations_url, number_of_dependent_jobs, protocol_version, status, created_at, updated_at)\n VALUES ($1, $2, $3, $4, $5, $6, 'waiting_for_proofs', now(), now())\n ON CONFLICT(l1_batch_number, circuit_id, depth)\n DO UPDATE SET updated_at=now()" + "query": "SELECT number, timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, rollup_last_leaf_index, zkporter_is_available, bootloader_code_hash, default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, meta_parameters_hash, protocol_version, compressed_state_diffs, gas_per_pubdata_byte_in_block, gas_per_pubdata_limit, skip_proof, system_logs, events_state_queue_commitment, bootloader_initial_memory_commitment FROM l1_batches WHERE eth_prove_tx_id IS NOT NULL AND eth_execute_tx_id IS NULL ORDER BY number LIMIT $1" }, "334197fef9eeca55790d366ae67bbe95d77181bdfd2ad3208a32bd50585aef2d": { "describe": { @@ -2878,6 +3562,41 @@ }, "query": "\n SELECT * FROM call_traces\n WHERE tx_hash = $1\n " }, + "39b5fad053bc2bb8022efb8199354eb5fec12e57447ddaa4d29922878d5a313c": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Int8", + "Int4", + "Int4", + "Int8", + "Bool", + "Bytea", + "ByteaArray", + "ByteaArray", + "Bytea", + "ByteaArray", + "Int8", + "Int8", + "Int8", + "Jsonb", + "Jsonb", + "Numeric", + "Int8", + "Int8", + "Bytea", + "Bytea", + "Int4", + "ByteaArray", + "Bytea", + "Bytea" + ] + } + }, + "query": "INSERT INTO l1_batches (number, l1_tx_count, l2_tx_count, timestamp, is_finished, fee_account_address, l2_to_l1_logs, l2_to_l1_messages, bloom, priority_ops_onchain_data, predicted_commit_gas_cost, predicted_prove_gas_cost, predicted_execute_gas_cost, initial_bootloader_heap_content, used_contract_hashes, base_fee_per_gas, l1_gas_price, l2_fair_gas_price, bootloader_code_hash, default_aa_code_hash, protocol_version, system_logs, events_state_queue_commitment, bootloader_initial_memory_commitment, created_at, updated_at) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21, $22, $23, $24, now(), now())" + }, "3a18d0d1e236d8f57e8b3b1218a24414639a7c8235ba6a514c3d03b8a1790f17": { "describe": { "columns": [ @@ -3123,74 +3842,141 @@ ] } }, - "query": "UPDATE tokens SET market_volume = $2, market_volume_updated_at = $3, updated_at = now() WHERE l1_address = $1" + "query": "UPDATE tokens SET market_volume = $2, market_volume_updated_at = $3, updated_at = now() WHERE l1_address = $1" + }, + "3e982e4863eef38069e755e3f20602ef9eaae859d23d86c3f230ddea8805aea7": { + "describe": { + "columns": [ + { + "name": "index", + "ordinal": 0, + "type_info": "Int8" + } + ], + "nullable": [ + false + ], + "parameters": { + "Left": [ + "Bytea" + ] + } + }, + "query": "SELECT index FROM initial_writes WHERE hashed_key = $1" + }, + "3f6332706376ef4cadda96498872429b6ed28eca5402b03b1aa3b77b8262bccd": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Text" + ] + } + }, + "query": "DELETE FROM compiler_versions WHERE compiler = $1" + }, + "3f671298a05f3f69a8ffb2e36d5ae79c544145fc1c289dd9e0c060dca3ec6e21": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "ByteaArray", + "ByteaArray" + ] + } + }, + "query": "UPDATE storage SET value = u.value FROM UNNEST($1::bytea[], $2::bytea[]) AS u(key, value) WHERE u.key = hashed_key" + }, + "400bb5f012b95f5b327a65bf8a55e61a9e41a8040f546d75b9b8aa6be45e78d5": { + "describe": { + "columns": [ + { + "name": "number", + "ordinal": 0, + "type_info": "Int8" + }, + { + "name": "hash", + "ordinal": 1, + "type_info": "Bytea" + } + ], + "nullable": [ + false, + false + ], + "parameters": { + "Left": [ + "Int4", + "Int8" + ] + } + }, + "query": "SELECT number, hash FROM miniblocks WHERE protocol_version = $1 ORDER BY number DESC LIMIT $2" }, - "3f6332706376ef4cadda96498872429b6ed28eca5402b03b1aa3b77b8262bccd": { + "40a86f39a74ab22bdcd8b40446ea063c68bfb3e930e3150212474a657e82b38f": { "describe": { "columns": [], "nullable": [], "parameters": { "Left": [ + "Int8", "Text" ] } }, - "query": "DELETE FROM compiler_versions WHERE compiler = $1" + "query": "\n UPDATE scheduler_witness_jobs\n SET final_node_aggregations_blob_url = $2,\n status = 'waiting_for_proofs',\n updated_at = now()\n WHERE l1_batch_number = $1 AND status != 'queued'\n " }, - "3f671298a05f3f69a8ffb2e36d5ae79c544145fc1c289dd9e0c060dca3ec6e21": { + "433d5da4d72150cf2c1e1007ee3ff51edfa51924f4b662b8cf382f06e60fd228": { "describe": { "columns": [], "nullable": [], "parameters": { "Left": [ - "ByteaArray", - "ByteaArray" + "Int4", + "Int8", + "Text", + "Text" ] } }, - "query": "UPDATE storage SET value = u.value FROM UNNEST($1::bytea[], $2::bytea[]) AS u(key, value) WHERE u.key = hashed_key" + "query": "\n UPDATE node_aggregation_witness_jobs\n SET number_of_leaf_circuits = $1,\n leaf_layer_subqueues_blob_url = $3,\n aggregation_outputs_blob_url = $4,\n status = 'waiting_for_proofs',\n updated_at = now()\n WHERE l1_batch_number = $2 AND status != 'queued'\n " }, - "400bb5f012b95f5b327a65bf8a55e61a9e41a8040f546d75b9b8aa6be45e78d5": { + "43b5082ff7673ee3a8e8f3fafa64667fac4f7f5c8bd26a21ead6b4ba0f8fd17b": { "describe": { "columns": [ - { - "name": "number", - "ordinal": 0, - "type_info": "Int8" - }, { "name": "hash", - "ordinal": 1, + "ordinal": 0, "type_info": "Bytea" } ], "nullable": [ - false, false ], "parameters": { "Left": [ - "Int4", "Int8" ] } }, - "query": "SELECT number, hash FROM miniblocks WHERE protocol_version = $1 ORDER BY number DESC LIMIT $2" + "query": "SELECT hash FROM miniblocks WHERE number = $1" }, - "40a86f39a74ab22bdcd8b40446ea063c68bfb3e930e3150212474a657e82b38f": { + "448d283cab6ae334de9676f69416974656d11563b58e0188d53ca9e0995dd287": { "describe": { "columns": [], "nullable": [], "parameters": { "Left": [ - "Int8", - "Text" + "Int8Array" ] } }, - "query": "\n UPDATE scheduler_witness_jobs\n SET final_node_aggregations_blob_url = $2,\n status = 'waiting_for_proofs',\n updated_at = now()\n WHERE l1_batch_number = $1 AND status != 'queued'\n " + "query": "\n UPDATE scheduler_dependency_tracker_fri\n SET status='queued'\n WHERE l1_batch_number = ANY($1)\n " }, - "419344dd86dfa0fbc73bdedd8408971ecb1b97382cf3eb4c57ed6d9ffb87ce58": { + "44aa2bf98afd09203f7f58f33f06a23c7992d62edb50bec2b4af26b55a584c21": { "describe": { "columns": [ { @@ -3367,6 +4153,41 @@ "name": "protocol_version", "ordinal": 34, "type_info": "Int4" + }, + { + "name": "compressed_state_diffs", + "ordinal": 35, + "type_info": "Bytea" + }, + { + "name": "gas_per_pubdata_byte_in_block", + "ordinal": 36, + "type_info": "Int4" + }, + { + "name": "gas_per_pubdata_limit", + "ordinal": 37, + "type_info": "Int8" + }, + { + "name": "skip_proof", + "ordinal": 38, + "type_info": "Bool" + }, + { + "name": "system_logs", + "ordinal": 39, + "type_info": "ByteaArray" + }, + { + "name": "events_state_queue_commitment", + "ordinal": 40, + "type_info": "Bytea" + }, + { + "name": "bootloader_initial_memory_commitment", + "ordinal": 41, + "type_info": "Bytea" } ], "nullable": [ @@ -3404,6 +4225,13 @@ true, true, true, + true, + true, + true, + false, + false, + false, + true, true ], "parameters": { @@ -3412,54 +4240,7 @@ ] } }, - "query": "SELECT number, timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, rollup_last_leaf_index, zkporter_is_available, bootloader_code_hash, default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, meta_parameters_hash, protocol_version FROM l1_batches WHERE eth_prove_tx_id IS NOT NULL AND eth_execute_tx_id IS NULL ORDER BY number LIMIT $1" - }, - "433d5da4d72150cf2c1e1007ee3ff51edfa51924f4b662b8cf382f06e60fd228": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Int4", - "Int8", - "Text", - "Text" - ] - } - }, - "query": "\n UPDATE node_aggregation_witness_jobs\n SET number_of_leaf_circuits = $1,\n leaf_layer_subqueues_blob_url = $3,\n aggregation_outputs_blob_url = $4,\n status = 'waiting_for_proofs',\n updated_at = now()\n WHERE l1_batch_number = $2 AND status != 'queued'\n " - }, - "43b5082ff7673ee3a8e8f3fafa64667fac4f7f5c8bd26a21ead6b4ba0f8fd17b": { - "describe": { - "columns": [ - { - "name": "hash", - "ordinal": 0, - "type_info": "Bytea" - } - ], - "nullable": [ - false - ], - "parameters": { - "Left": [ - "Int8" - ] - } - }, - "query": "SELECT hash FROM miniblocks WHERE number = $1" - }, - "448d283cab6ae334de9676f69416974656d11563b58e0188d53ca9e0995dd287": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Int8Array" - ] - } - }, - "query": "\n UPDATE scheduler_dependency_tracker_fri\n SET status='queued'\n WHERE l1_batch_number = ANY($1)\n " + "query": "SELECT number, timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, rollup_last_leaf_index, zkporter_is_available, bootloader_code_hash, default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, meta_parameters_hash, protocol_version, compressed_state_diffs, gas_per_pubdata_byte_in_block, gas_per_pubdata_limit, skip_proof, system_logs, events_state_queue_commitment, bootloader_initial_memory_commitment\n FROM l1_batches WHERE number = $1" }, "4588d998b3454d8210190c6b16116b5885f6f3e74606aec8250e6c1e8f55d242": { "describe": { @@ -4318,205 +5099,469 @@ "type_info": "Int8" }, { - "name": "aggregation_round", - "ordinal": 1, + "name": "aggregation_round", + "ordinal": 1, + "type_info": "Int4" + } + ], + "nullable": [ + null, + false + ], + "parameters": { + "Left": [] + } + }, + "query": "SELECT MAX(l1_batch_number) as \"l1_batch_number!\", aggregation_round FROM prover_jobs \n WHERE status='successful'\n GROUP BY aggregation_round \n " + }, + "5bc8cdc7ed710bb2f9b0035654fd7e9dcc01731ca581c6aa75d55184817bc100": { + "describe": { + "columns": [ + { + "name": "number", + "ordinal": 0, + "type_info": "Int8" + } + ], + "nullable": [ + null + ], + "parameters": { + "Left": [] + } + }, + "query": "SELECT MAX(number) as \"number\" FROM l1_batches WHERE hash IS NOT NULL" + }, + "5df806b33f84893d4ddfacf3b289b0e173e85ad9204cbb7ad314e68a94cdc41e": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Text", + "Int8", + "Int2", + "Int4", + "Int4" + ] + } + }, + "query": "\n UPDATE node_aggregation_witness_jobs_fri\n SET aggregations_url = $1, number_of_dependent_jobs = $5, updated_at = now()\n WHERE l1_batch_number = $2\n AND circuit_id = $3\n AND depth = $4\n " + }, + "5e09f2359dd69380c1f183f613d82696029a56896e2b985738a2fa25d6cb8a71": { + "describe": { + "columns": [ + { + "name": "op_id", + "ordinal": 0, + "type_info": "Int8" + } + ], + "nullable": [ + null + ], + "parameters": { + "Left": [] + } + }, + "query": "SELECT MAX(priority_op_id) as \"op_id\" from transactions where is_priority = true" + }, + "5eb9f25dacfb02e70a9fcf0a41937d4c63bd786efb2fd0d1180f449a3ae0bbc0": { + "describe": { + "columns": [ + { + "name": "l1_batch_number", + "ordinal": 0, + "type_info": "Int8" + }, + { + "name": "leaf_layer_subqueues", + "ordinal": 1, + "type_info": "Bytea" + }, + { + "name": "aggregation_outputs", + "ordinal": 2, + "type_info": "Bytea" + }, + { + "name": "number_of_leaf_circuits", + "ordinal": 3, + "type_info": "Int4" + }, + { + "name": "status", + "ordinal": 4, + "type_info": "Text" + }, + { + "name": "processing_started_at", + "ordinal": 5, + "type_info": "Timestamp" + }, + { + "name": "time_taken", + "ordinal": 6, + "type_info": "Time" + }, + { + "name": "error", + "ordinal": 7, + "type_info": "Text" + }, + { + "name": "created_at", + "ordinal": 8, + "type_info": "Timestamp" + }, + { + "name": "updated_at", + "ordinal": 9, + "type_info": "Timestamp" + }, + { + "name": "attempts", + "ordinal": 10, + "type_info": "Int4" + }, + { + "name": "leaf_layer_subqueues_blob_url", + "ordinal": 11, + "type_info": "Text" + }, + { + "name": "aggregation_outputs_blob_url", + "ordinal": 12, + "type_info": "Text" + }, + { + "name": "is_blob_cleaned", + "ordinal": 13, + "type_info": "Bool" + }, + { + "name": "protocol_version", + "ordinal": 14, "type_info": "Int4" } ], "nullable": [ - null, - false - ], - "parameters": { - "Left": [] - } - }, - "query": "SELECT MAX(l1_batch_number) as \"l1_batch_number!\", aggregation_round FROM prover_jobs \n WHERE status='successful'\n GROUP BY aggregation_round \n " - }, - "5bc8cdc7ed710bb2f9b0035654fd7e9dcc01731ca581c6aa75d55184817bc100": { - "describe": { - "columns": [ - { - "name": "number", - "ordinal": 0, - "type_info": "Int8" - } - ], - "nullable": [ - null + false, + true, + true, + true, + false, + true, + true, + true, + false, + false, + false, + true, + true, + false, + true ], - "parameters": { - "Left": [] - } - }, - "query": "SELECT MAX(number) as \"number\" FROM l1_batches WHERE hash IS NOT NULL" - }, - "5df806b33f84893d4ddfacf3b289b0e173e85ad9204cbb7ad314e68a94cdc41e": { - "describe": { - "columns": [], - "nullable": [], "parameters": { "Left": [ - "Text", - "Int8", - "Int2", + "Interval", "Int4", - "Int4" + "Int8", + "Int4Array" ] } }, - "query": "\n UPDATE node_aggregation_witness_jobs_fri\n SET aggregations_url = $1, number_of_dependent_jobs = $5, updated_at = now()\n WHERE l1_batch_number = $2\n AND circuit_id = $3\n AND depth = $4\n " + "query": "\n UPDATE node_aggregation_witness_jobs\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now()\n WHERE l1_batch_number = (\n SELECT l1_batch_number\n FROM node_aggregation_witness_jobs\n WHERE l1_batch_number <= $3\n AND\n ( status = 'queued'\n OR (status = 'in_progress' AND processing_started_at < now() - $1::interval)\n OR (status = 'failed' AND attempts < $2)\n )\n AND protocol_version = ANY($4)\n ORDER BY l1_batch_number ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING node_aggregation_witness_jobs.*\n " }, - "5e09f2359dd69380c1f183f613d82696029a56896e2b985738a2fa25d6cb8a71": { + "5f037f6ae8489d5224772d4f9e3e6cfc2075560957fa491d97a95c0e79ff4830": { "describe": { "columns": [ { - "name": "op_id", + "name": "block_batch?", "ordinal": 0, "type_info": "Int8" + }, + { + "name": "max_batch?", + "ordinal": 1, + "type_info": "Int8" } ], "nullable": [ + null, null ], "parameters": { - "Left": [] + "Left": [ + "Int8" + ] } }, - "query": "SELECT MAX(priority_op_id) as \"op_id\" from transactions where is_priority = true" + "query": "SELECT (SELECT l1_batch_number FROM miniblocks WHERE number = $1) as \"block_batch?\", (SELECT MAX(number) + 1 FROM l1_batches) as \"max_batch?\"" }, - "5eb9f25dacfb02e70a9fcf0a41937d4c63bd786efb2fd0d1180f449a3ae0bbc0": { + "5f42bcbba9857c62874ecdbd9ae71f7580e7ed1f2dd5c13e9e4d4427e4dc9d32": { "describe": { "columns": [ { - "name": "l1_batch_number", + "name": "number", "ordinal": 0, "type_info": "Int8" }, { - "name": "leaf_layer_subqueues", + "name": "timestamp", "ordinal": 1, - "type_info": "Bytea" + "type_info": "Int8" }, { - "name": "aggregation_outputs", + "name": "is_finished", "ordinal": 2, - "type_info": "Bytea" + "type_info": "Bool" }, { - "name": "number_of_leaf_circuits", + "name": "l1_tx_count", "ordinal": 3, "type_info": "Int4" }, { - "name": "status", + "name": "l2_tx_count", "ordinal": 4, - "type_info": "Text" + "type_info": "Int4" }, { - "name": "processing_started_at", + "name": "fee_account_address", "ordinal": 5, - "type_info": "Timestamp" + "type_info": "Bytea" }, { - "name": "time_taken", + "name": "bloom", "ordinal": 6, - "type_info": "Time" + "type_info": "Bytea" }, { - "name": "error", + "name": "priority_ops_onchain_data", "ordinal": 7, - "type_info": "Text" + "type_info": "ByteaArray" }, { - "name": "created_at", + "name": "hash", "ordinal": 8, - "type_info": "Timestamp" + "type_info": "Bytea" }, { - "name": "updated_at", + "name": "parent_hash", "ordinal": 9, - "type_info": "Timestamp" + "type_info": "Bytea" }, { - "name": "attempts", + "name": "commitment", "ordinal": 10, - "type_info": "Int4" + "type_info": "Bytea" }, { - "name": "leaf_layer_subqueues_blob_url", + "name": "compressed_write_logs", "ordinal": 11, - "type_info": "Text" + "type_info": "Bytea" }, { - "name": "aggregation_outputs_blob_url", + "name": "compressed_contracts", "ordinal": 12, - "type_info": "Text" + "type_info": "Bytea" }, { - "name": "is_blob_cleaned", + "name": "eth_prove_tx_id", "ordinal": 13, + "type_info": "Int4" + }, + { + "name": "eth_commit_tx_id", + "ordinal": 14, + "type_info": "Int4" + }, + { + "name": "eth_execute_tx_id", + "ordinal": 15, + "type_info": "Int4" + }, + { + "name": "merkle_root_hash", + "ordinal": 16, + "type_info": "Bytea" + }, + { + "name": "l2_to_l1_logs", + "ordinal": 17, + "type_info": "ByteaArray" + }, + { + "name": "l2_to_l1_messages", + "ordinal": 18, + "type_info": "ByteaArray" + }, + { + "name": "used_contract_hashes", + "ordinal": 19, + "type_info": "Jsonb" + }, + { + "name": "compressed_initial_writes", + "ordinal": 20, + "type_info": "Bytea" + }, + { + "name": "compressed_repeated_writes", + "ordinal": 21, + "type_info": "Bytea" + }, + { + "name": "l2_l1_compressed_messages", + "ordinal": 22, + "type_info": "Bytea" + }, + { + "name": "l2_l1_merkle_root", + "ordinal": 23, + "type_info": "Bytea" + }, + { + "name": "l1_gas_price", + "ordinal": 24, + "type_info": "Int8" + }, + { + "name": "l2_fair_gas_price", + "ordinal": 25, + "type_info": "Int8" + }, + { + "name": "rollup_last_leaf_index", + "ordinal": 26, + "type_info": "Int8" + }, + { + "name": "zkporter_is_available", + "ordinal": 27, "type_info": "Bool" }, + { + "name": "bootloader_code_hash", + "ordinal": 28, + "type_info": "Bytea" + }, + { + "name": "default_aa_code_hash", + "ordinal": 29, + "type_info": "Bytea" + }, + { + "name": "base_fee_per_gas", + "ordinal": 30, + "type_info": "Numeric" + }, + { + "name": "aux_data_hash", + "ordinal": 31, + "type_info": "Bytea" + }, + { + "name": "pass_through_data_hash", + "ordinal": 32, + "type_info": "Bytea" + }, + { + "name": "meta_parameters_hash", + "ordinal": 33, + "type_info": "Bytea" + }, { "name": "protocol_version", - "ordinal": 14, + "ordinal": 34, + "type_info": "Int4" + }, + { + "name": "compressed_state_diffs", + "ordinal": 35, + "type_info": "Bytea" + }, + { + "name": "gas_per_pubdata_byte_in_block", + "ordinal": 36, "type_info": "Int4" + }, + { + "name": "gas_per_pubdata_limit", + "ordinal": 37, + "type_info": "Int8" + }, + { + "name": "skip_proof", + "ordinal": 38, + "type_info": "Bool" + }, + { + "name": "system_logs", + "ordinal": 39, + "type_info": "ByteaArray" + }, + { + "name": "events_state_queue_commitment", + "ordinal": 40, + "type_info": "Bytea" + }, + { + "name": "bootloader_initial_memory_commitment", + "ordinal": 41, + "type_info": "Bytea" } ], "nullable": [ false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, true, true, true, + true, + true, + false, + false, false, true, true, true, + true, false, false, + true, + true, + true, + true, false, true, true, + true, + true, + true, + true, + false, false, + false, + true, true ], "parameters": { - "Left": [ - "Interval", - "Int4", - "Int8", - "Int4Array" - ] - } - }, - "query": "\n UPDATE node_aggregation_witness_jobs\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now()\n WHERE l1_batch_number = (\n SELECT l1_batch_number\n FROM node_aggregation_witness_jobs\n WHERE l1_batch_number <= $3\n AND\n ( status = 'queued'\n OR (status = 'in_progress' AND processing_started_at < now() - $1::interval)\n OR (status = 'failed' AND attempts < $2)\n )\n AND protocol_version = ANY($4)\n ORDER BY l1_batch_number ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING node_aggregation_witness_jobs.*\n " - }, - "5f037f6ae8489d5224772d4f9e3e6cfc2075560957fa491d97a95c0e79ff4830": { - "describe": { - "columns": [ - { - "name": "block_batch?", - "ordinal": 0, - "type_info": "Int8" - }, - { - "name": "max_batch?", - "ordinal": 1, - "type_info": "Int8" - } - ], - "nullable": [ - null, - null - ], - "parameters": { - "Left": [ - "Int8" - ] + "Left": [] } }, - "query": "SELECT (SELECT l1_batch_number FROM miniblocks WHERE number = $1) as \"block_batch?\", (SELECT MAX(number) + 1 FROM l1_batches) as \"max_batch?\"" + "query": "SELECT number, timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, rollup_last_leaf_index, zkporter_is_available, bootloader_code_hash, default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, meta_parameters_hash, protocol_version, compressed_state_diffs, gas_per_pubdata_byte_in_block, gas_per_pubdata_limit, skip_proof, system_logs, events_state_queue_commitment, bootloader_initial_memory_commitment\n FROM l1_batches WHERE number = 0 OR eth_commit_tx_id IS NOT NULL AND commitment IS NOT NULL ORDER BY number DESC LIMIT 1" }, "5f4b1091b74424ffd20c0aede98287418afa2bb37dbc941200c1d6190c96bec5": { "describe": { @@ -4951,309 +5996,53 @@ }, "721367902328f9e2e5f8a99820b11d230c60553db366fc76f97c5680470bece8": { "describe": { - "columns": [ - { - "name": "l1_batch_number", - "ordinal": 0, - "type_info": "Int8" - }, - { - "name": "basic_circuits_blob_url", - "ordinal": 1, - "type_info": "Text" - }, - { - "name": "basic_circuits_inputs_blob_url", - "ordinal": 2, - "type_info": "Text" - } - ], - "nullable": [ - false, - true, - true - ], - "parameters": { - "Left": [ - "Int8" - ] - } - }, - "query": "\n SELECT l1_batch_number, basic_circuits_blob_url, basic_circuits_inputs_blob_url FROM leaf_aggregation_witness_jobs\n WHERE status='successful' AND is_blob_cleaned=FALSE\n AND basic_circuits_blob_url is NOT NULL\n AND basic_circuits_inputs_blob_url is NOT NULL\n AND updated_at < NOW() - INTERVAL '30 days'\n LIMIT $1;\n " - }, - "73f0e672ff1a5e144b3034beb18271f1164e95029998d6750c6a8953f7344db5": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Int8", - "Int4", - "Int4", - "Int8", - "Bool", - "Bytea", - "ByteaArray", - "ByteaArray", - "Bytea", - "ByteaArray", - "Int8", - "Int8", - "Int8", - "Jsonb", - "Jsonb", - "Numeric", - "Int8", - "Int8", - "Bytea", - "Bytea", - "Int4" - ] - } - }, - "query": "INSERT INTO l1_batches (number, l1_tx_count, l2_tx_count, timestamp, is_finished, fee_account_address, l2_to_l1_logs, l2_to_l1_messages, bloom, priority_ops_onchain_data, predicted_commit_gas_cost, predicted_prove_gas_cost, predicted_execute_gas_cost, initial_bootloader_heap_content, used_contract_hashes, base_fee_per_gas, l1_gas_price, l2_fair_gas_price, bootloader_code_hash, default_aa_code_hash, protocol_version, created_at, updated_at ) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21, now(), now())" - }, - "741b13b0a4769a30186c650a4a1b24855806a27ccd8d5a50594741842dde44ec": { - "describe": { - "columns": [ - { - "name": "min?", - "ordinal": 0, - "type_info": "Int8" - }, - { - "name": "max?", - "ordinal": 1, - "type_info": "Int8" - } - ], - "nullable": [ - null, - null - ], - "parameters": { - "Left": [ - "Int8" - ] - } - }, - "query": "SELECT MIN(miniblocks.number) as \"min?\", MAX(miniblocks.number) as \"max?\" FROM miniblocks WHERE l1_batch_number = $1" - }, - "74637e3c2a52bc7c00521c38f476497792e29046fbb4bb6caa4715f017f5d828": { - "describe": { - "columns": [ - { - "name": "number", - "ordinal": 0, - "type_info": "Int8" - }, - { - "name": "timestamp", - "ordinal": 1, - "type_info": "Int8" - }, - { - "name": "is_finished", - "ordinal": 2, - "type_info": "Bool" - }, - { - "name": "l1_tx_count", - "ordinal": 3, - "type_info": "Int4" - }, - { - "name": "l2_tx_count", - "ordinal": 4, - "type_info": "Int4" - }, - { - "name": "fee_account_address", - "ordinal": 5, - "type_info": "Bytea" - }, - { - "name": "bloom", - "ordinal": 6, - "type_info": "Bytea" - }, - { - "name": "priority_ops_onchain_data", - "ordinal": 7, - "type_info": "ByteaArray" - }, - { - "name": "hash", - "ordinal": 8, - "type_info": "Bytea" - }, - { - "name": "parent_hash", - "ordinal": 9, - "type_info": "Bytea" - }, - { - "name": "commitment", - "ordinal": 10, - "type_info": "Bytea" - }, - { - "name": "compressed_write_logs", - "ordinal": 11, - "type_info": "Bytea" - }, - { - "name": "compressed_contracts", - "ordinal": 12, - "type_info": "Bytea" - }, - { - "name": "eth_prove_tx_id", - "ordinal": 13, - "type_info": "Int4" - }, - { - "name": "eth_commit_tx_id", - "ordinal": 14, - "type_info": "Int4" - }, - { - "name": "eth_execute_tx_id", - "ordinal": 15, - "type_info": "Int4" - }, - { - "name": "merkle_root_hash", - "ordinal": 16, - "type_info": "Bytea" - }, - { - "name": "l2_to_l1_logs", - "ordinal": 17, - "type_info": "ByteaArray" - }, - { - "name": "l2_to_l1_messages", - "ordinal": 18, - "type_info": "ByteaArray" - }, - { - "name": "used_contract_hashes", - "ordinal": 19, - "type_info": "Jsonb" - }, - { - "name": "compressed_initial_writes", - "ordinal": 20, - "type_info": "Bytea" - }, - { - "name": "compressed_repeated_writes", - "ordinal": 21, - "type_info": "Bytea" - }, + "columns": [ { - "name": "l2_l1_compressed_messages", - "ordinal": 22, - "type_info": "Bytea" + "name": "l1_batch_number", + "ordinal": 0, + "type_info": "Int8" }, { - "name": "l2_l1_merkle_root", - "ordinal": 23, - "type_info": "Bytea" + "name": "basic_circuits_blob_url", + "ordinal": 1, + "type_info": "Text" }, { - "name": "l1_gas_price", - "ordinal": 24, - "type_info": "Int8" - }, + "name": "basic_circuits_inputs_blob_url", + "ordinal": 2, + "type_info": "Text" + } + ], + "nullable": [ + false, + true, + true + ], + "parameters": { + "Left": [ + "Int8" + ] + } + }, + "query": "\n SELECT l1_batch_number, basic_circuits_blob_url, basic_circuits_inputs_blob_url FROM leaf_aggregation_witness_jobs\n WHERE status='successful' AND is_blob_cleaned=FALSE\n AND basic_circuits_blob_url is NOT NULL\n AND basic_circuits_inputs_blob_url is NOT NULL\n AND updated_at < NOW() - INTERVAL '30 days'\n LIMIT $1;\n " + }, + "741b13b0a4769a30186c650a4a1b24855806a27ccd8d5a50594741842dde44ec": { + "describe": { + "columns": [ { - "name": "l2_fair_gas_price", - "ordinal": 25, + "name": "min?", + "ordinal": 0, "type_info": "Int8" }, { - "name": "rollup_last_leaf_index", - "ordinal": 26, + "name": "max?", + "ordinal": 1, "type_info": "Int8" - }, - { - "name": "zkporter_is_available", - "ordinal": 27, - "type_info": "Bool" - }, - { - "name": "bootloader_code_hash", - "ordinal": 28, - "type_info": "Bytea" - }, - { - "name": "default_aa_code_hash", - "ordinal": 29, - "type_info": "Bytea" - }, - { - "name": "base_fee_per_gas", - "ordinal": 30, - "type_info": "Numeric" - }, - { - "name": "aux_data_hash", - "ordinal": 31, - "type_info": "Bytea" - }, - { - "name": "pass_through_data_hash", - "ordinal": 32, - "type_info": "Bytea" - }, - { - "name": "meta_parameters_hash", - "ordinal": 33, - "type_info": "Bytea" - }, - { - "name": "protocol_version", - "ordinal": 34, - "type_info": "Int4" } ], "nullable": [ - false, - false, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true, - true, - true, - true, - true, - false, - false, - false, - true, - true, - true, - true, - false, - false, - true, - true, - true, - true, - false, - true, - true, - true, - true + null, + null ], "parameters": { "Left": [ @@ -5261,7 +6050,7 @@ ] } }, - "query": "SELECT number, timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, rollup_last_leaf_index, zkporter_is_available, bootloader_code_hash, default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, meta_parameters_hash, protocol_version FROM l1_batches WHERE eth_commit_tx_id IS NOT NULL AND eth_prove_tx_id IS NULL ORDER BY number LIMIT $1" + "query": "SELECT MIN(miniblocks.number) as \"min?\", MAX(miniblocks.number) as \"max?\" FROM miniblocks WHERE l1_batch_number = $1" }, "751c8e5ed1fc211dbb4c7419a316c5f4e49a7f0b4f3a5c74c2abd8daebc457dd": { "describe": { @@ -5321,43 +6110,210 @@ }, "query": "SELECT max(l1_batches.number) FROM l1_batches JOIN eth_txs ON (l1_batches.eth_commit_tx_id = eth_txs.id) JOIN eth_txs_history AS commit_tx ON (eth_txs.confirmed_eth_tx_history_id = commit_tx.id) WHERE commit_tx.confirmed_at IS NOT NULL AND eth_prove_tx_id IS NOT NULL AND eth_execute_tx_id IS NULL AND EXTRACT(epoch FROM commit_tx.confirmed_at) < $1" }, + "77d78689b5c0b631da047f21c89a607213bec507cd9cf2b5cb4ea86e1a084796": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Bytea", + "Bytea", + "Bytea", + "Bytea", + "Bytea", + "Bytea", + "Bytea", + "Bytea", + "Bool", + "Bytea", + "Int8", + "Bytea", + "Bytea", + "Bytea", + "Bytea", + "Int8" + ] + } + }, + "query": "UPDATE l1_batches SET hash = $1, merkle_root_hash = $2, commitment = $3, default_aa_code_hash = $4, compressed_repeated_writes = $5, compressed_initial_writes = $6, l2_l1_compressed_messages = $7, l2_l1_merkle_root = $8, zkporter_is_available = $9, bootloader_code_hash = $10, rollup_last_leaf_index = $11, aux_data_hash = $12, pass_through_data_hash = $13, meta_parameters_hash = $14, compressed_state_diffs = $15, updated_at = now() WHERE number = $16" + }, "780b30e56a3ecfb3daa5310168ac6cd9e94bd5f1d871e1eaf36fbfd463a5e7e0": { "describe": { "columns": [ { - "name": "address_and_key?", - "ordinal": 0, + "name": "address_and_key?", + "ordinal": 0, + "type_info": "ByteaArray" + } + ], + "nullable": [ + null + ], + "parameters": { + "Left": [ + "ByteaArray" + ] + } + }, + "query": "SELECT (SELECT ARRAY[address,key] FROM storage_logs WHERE hashed_key = u.hashed_key ORDER BY miniblock_number, operation_number LIMIT 1) as \"address_and_key?\" FROM UNNEST($1::bytea[]) AS u(hashed_key)" + }, + "7889294ffe999d3c8b3b093d3add7f9b826e8259451068aeaeca0da0772648e8": { + "describe": { + "columns": [ + { + "name": "count!", + "ordinal": 0, + "type_info": "Int8" + } + ], + "nullable": [ + null + ], + "parameters": { + "Left": [] + } + }, + "query": "\n SELECT COUNT(*) as \"count!\"\n FROM contract_verification_requests\n WHERE status = 'queued'\n " + }, + "7901e6007115b354716b8592a83907d09b057fe3c7fa72b676e994f3cf1daa78": { + "describe": { + "columns": [ + { + "name": "number", + "ordinal": 0, + "type_info": "Int8" + }, + { + "name": "l1_tx_count", + "ordinal": 1, + "type_info": "Int4" + }, + { + "name": "l2_tx_count", + "ordinal": 2, + "type_info": "Int4" + }, + { + "name": "timestamp", + "ordinal": 3, + "type_info": "Int8" + }, + { + "name": "is_finished", + "ordinal": 4, + "type_info": "Bool" + }, + { + "name": "fee_account_address", + "ordinal": 5, + "type_info": "Bytea" + }, + { + "name": "l2_to_l1_logs", + "ordinal": 6, + "type_info": "ByteaArray" + }, + { + "name": "l2_to_l1_messages", + "ordinal": 7, + "type_info": "ByteaArray" + }, + { + "name": "bloom", + "ordinal": 8, + "type_info": "Bytea" + }, + { + "name": "priority_ops_onchain_data", + "ordinal": 9, + "type_info": "ByteaArray" + }, + { + "name": "used_contract_hashes", + "ordinal": 10, + "type_info": "Jsonb" + }, + { + "name": "base_fee_per_gas", + "ordinal": 11, + "type_info": "Numeric" + }, + { + "name": "l1_gas_price", + "ordinal": 12, + "type_info": "Int8" + }, + { + "name": "l2_fair_gas_price", + "ordinal": 13, + "type_info": "Int8" + }, + { + "name": "bootloader_code_hash", + "ordinal": 14, + "type_info": "Bytea" + }, + { + "name": "default_aa_code_hash", + "ordinal": 15, + "type_info": "Bytea" + }, + { + "name": "protocol_version", + "ordinal": 16, + "type_info": "Int4" + }, + { + "name": "system_logs", + "ordinal": 17, "type_info": "ByteaArray" + }, + { + "name": "compressed_state_diffs", + "ordinal": 18, + "type_info": "Bytea" + }, + { + "name": "events_state_queue_commitment", + "ordinal": 19, + "type_info": "Bytea" + }, + { + "name": "bootloader_initial_memory_commitment", + "ordinal": 20, + "type_info": "Bytea" } ], "nullable": [ - null + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + false, + true, + true, + true ], "parameters": { "Left": [ - "ByteaArray" + "Int4" ] } }, - "query": "SELECT (SELECT ARRAY[address,key] FROM storage_logs WHERE hashed_key = u.hashed_key ORDER BY miniblock_number, operation_number LIMIT 1) as \"address_and_key?\" FROM UNNEST($1::bytea[]) AS u(hashed_key)" - }, - "7889294ffe999d3c8b3b093d3add7f9b826e8259451068aeaeca0da0772648e8": { - "describe": { - "columns": [ - { - "name": "count!", - "ordinal": 0, - "type_info": "Int8" - } - ], - "nullable": [ - null - ], - "parameters": { - "Left": [] - } - }, - "query": "\n SELECT COUNT(*) as \"count!\"\n FROM contract_verification_requests\n WHERE status = 'queued'\n " + "query": "SELECT number, l1_tx_count, l2_tx_count, timestamp, is_finished, fee_account_address, l2_to_l1_logs, l2_to_l1_messages, bloom, priority_ops_onchain_data, used_contract_hashes, base_fee_per_gas, l1_gas_price, l2_fair_gas_price, bootloader_code_hash, default_aa_code_hash, protocol_version, system_logs, compressed_state_diffs, events_state_queue_commitment, bootloader_initial_memory_commitment FROM l1_batches WHERE eth_commit_tx_id = $1 OR eth_prove_tx_id = $1 OR eth_execute_tx_id = $1" }, "79420f7676acb3f17aeb538271cdb4067a342fd554adcf7bd0550b6682b4c82b": { "describe": { @@ -5762,7 +6718,7 @@ }, "query": "SELECT l1_batch_number, status FROM proof_compression_jobs_fri\n WHERE l1_batch_number = ( SELECT MIN(l1_batch_number) FROM proof_compression_jobs_fri WHERE status = $1 OR status = $2\n )" }, - "852b8d72a8dcbf620e528e983b836b2b05596eb0b7c5d7d1791080bef6a6b821": { + "850c2d366357c13e591bb7635e36e27969b7ea1b666eb28a82fe7dba3c2efa92": { "describe": { "columns": [ { @@ -5771,24 +6727,24 @@ "type_info": "Int8" }, { - "name": "l1_tx_count", + "name": "timestamp", "ordinal": 1, - "type_info": "Int4" + "type_info": "Int8" }, { - "name": "l2_tx_count", + "name": "is_finished", "ordinal": 2, - "type_info": "Int4" + "type_info": "Bool" }, { - "name": "timestamp", + "name": "l1_tx_count", "ordinal": 3, - "type_info": "Int8" + "type_info": "Int4" }, { - "name": "is_finished", + "name": "l2_tx_count", "ordinal": 4, - "type_info": "Bool" + "type_info": "Int4" }, { "name": "fee_account_address", @@ -5796,59 +6752,184 @@ "type_info": "Bytea" }, { - "name": "l2_to_l1_logs", + "name": "bloom", "ordinal": 6, - "type_info": "ByteaArray" + "type_info": "Bytea" }, { - "name": "l2_to_l1_messages", + "name": "priority_ops_onchain_data", "ordinal": 7, "type_info": "ByteaArray" }, { - "name": "bloom", + "name": "hash", "ordinal": 8, "type_info": "Bytea" }, { - "name": "priority_ops_onchain_data", + "name": "parent_hash", "ordinal": 9, + "type_info": "Bytea" + }, + { + "name": "commitment", + "ordinal": 10, + "type_info": "Bytea" + }, + { + "name": "compressed_write_logs", + "ordinal": 11, + "type_info": "Bytea" + }, + { + "name": "compressed_contracts", + "ordinal": 12, + "type_info": "Bytea" + }, + { + "name": "eth_prove_tx_id", + "ordinal": 13, + "type_info": "Int4" + }, + { + "name": "eth_commit_tx_id", + "ordinal": 14, + "type_info": "Int4" + }, + { + "name": "eth_execute_tx_id", + "ordinal": 15, + "type_info": "Int4" + }, + { + "name": "merkle_root_hash", + "ordinal": 16, + "type_info": "Bytea" + }, + { + "name": "l2_to_l1_logs", + "ordinal": 17, + "type_info": "ByteaArray" + }, + { + "name": "l2_to_l1_messages", + "ordinal": 18, "type_info": "ByteaArray" }, { "name": "used_contract_hashes", - "ordinal": 10, + "ordinal": 19, "type_info": "Jsonb" }, { - "name": "base_fee_per_gas", - "ordinal": 11, - "type_info": "Numeric" + "name": "compressed_initial_writes", + "ordinal": 20, + "type_info": "Bytea" + }, + { + "name": "compressed_repeated_writes", + "ordinal": 21, + "type_info": "Bytea" + }, + { + "name": "l2_l1_compressed_messages", + "ordinal": 22, + "type_info": "Bytea" + }, + { + "name": "l2_l1_merkle_root", + "ordinal": 23, + "type_info": "Bytea" }, { "name": "l1_gas_price", - "ordinal": 12, + "ordinal": 24, "type_info": "Int8" }, { "name": "l2_fair_gas_price", - "ordinal": 13, + "ordinal": 25, + "type_info": "Int8" + }, + { + "name": "rollup_last_leaf_index", + "ordinal": 26, "type_info": "Int8" }, + { + "name": "zkporter_is_available", + "ordinal": 27, + "type_info": "Bool" + }, { "name": "bootloader_code_hash", - "ordinal": 14, + "ordinal": 28, "type_info": "Bytea" }, { "name": "default_aa_code_hash", - "ordinal": 15, + "ordinal": 29, + "type_info": "Bytea" + }, + { + "name": "base_fee_per_gas", + "ordinal": 30, + "type_info": "Numeric" + }, + { + "name": "aux_data_hash", + "ordinal": 31, + "type_info": "Bytea" + }, + { + "name": "pass_through_data_hash", + "ordinal": 32, + "type_info": "Bytea" + }, + { + "name": "meta_parameters_hash", + "ordinal": 33, + "type_info": "Bytea" + }, + { + "name": "skip_proof", + "ordinal": 34, + "type_info": "Bool" + }, + { + "name": "gas_per_pubdata_byte_in_block", + "ordinal": 35, + "type_info": "Int4" + }, + { + "name": "gas_per_pubdata_limit", + "ordinal": 36, + "type_info": "Int8" + }, + { + "name": "system_logs", + "ordinal": 37, + "type_info": "ByteaArray" + }, + { + "name": "compressed_state_diffs", + "ordinal": 38, "type_info": "Bytea" }, { "name": "protocol_version", - "ordinal": 16, + "ordinal": 39, "type_info": "Int4" + }, + { + "name": "events_state_queue_commitment", + "ordinal": 40, + "type_info": "Bytea" + }, + { + "name": "bootloader_initial_memory_commitment", + "ordinal": 41, + "type_info": "Bytea" } ], "nullable": [ @@ -5860,23 +6941,49 @@ false, false, false, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + true, + true, + true, + true, false, false, + true, + true, + true, + true, false, + true, + true, + true, false, + true, false, false, true, true, + true, true ], "parameters": { "Left": [ + "Int8", "Int8" ] } }, - "query": "SELECT number, l1_tx_count, l2_tx_count, timestamp, is_finished, fee_account_address, l2_to_l1_logs, l2_to_l1_messages, bloom, priority_ops_onchain_data, used_contract_hashes, base_fee_per_gas, l1_gas_price, l2_fair_gas_price, bootloader_code_hash, default_aa_code_hash, protocol_version FROM l1_batches WHERE number = $1" + "query": "SELECT number, timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, rollup_last_leaf_index, zkporter_is_available, bootloader_code_hash, default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, meta_parameters_hash, skip_proof, gas_per_pubdata_byte_in_block, gas_per_pubdata_limit, system_logs, compressed_state_diffs, protocol_version, events_state_queue_commitment, bootloader_initial_memory_commitment FROM (SELECT l1_batches.*, row_number() OVER (ORDER BY number ASC) AS row_number FROM l1_batches WHERE eth_commit_tx_id IS NOT NULL AND l1_batches.skip_proof = TRUE AND l1_batches.number > $1 ORDER BY number LIMIT $2) inn WHERE number - row_number = $1" }, "85c52cb09c73499507144e3a684c3230c2c71eb4f8ddef43e67fbd33de2747c8": { "describe": { @@ -6451,405 +7558,265 @@ }, "query": "INSERT INTO eth_txs (raw_tx, nonce, tx_type, contract_address, predicted_gas_cost, created_at, updated_at)\n VALUES ($1, $2, $3, $4, $5, now(), now())\n RETURNING *" }, - "95e0e783794ac55ab20b30366f037c313fb0d17e93d3e6ec60667ef1b4da30d5": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Int8Array" - ] - } - }, - "query": "\n UPDATE prover_jobs\n SET is_blob_cleaned=TRUE\n WHERE id = ANY($1);\n " - }, - "96b1cd2bb6861064b633d597a4a09d279dbc7bcd7a810a7270da3d7941af0fff": { - "describe": { - "columns": [ - { - "name": "count!", - "ordinal": 0, - "type_info": "Int8" - } - ], - "nullable": [ - null - ], - "parameters": { - "Left": [ - "Bytea", - "Bytea" - ] - } - }, - "query": "SELECT COUNT(*) as \"count!\" FROM (SELECT * FROM storage_logs WHERE storage_logs.hashed_key = $1 ORDER BY storage_logs.miniblock_number DESC, storage_logs.operation_number DESC LIMIT 1) sl WHERE sl.value != $2" - }, - "96f6d06a49646f93ba1918080ef1efba868d506c6b51ede981e610f1b57bf88b": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "ByteaArray" - ] - } - }, - "query": "DELETE FROM storage WHERE hashed_key = ANY($1)" - }, - "987fcbbd716648c7c368462643f13d8001d5c6d197add90613ae21d21fdef79b": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Text", - "Int8" - ] - } - }, - "query": "UPDATE prover_jobs_fri SET status = $1, updated_at = now() WHERE id = $2" - }, - "9970bb69f5ca9ab9f103e1547eb40c1d4f5dd3a540ff6f1b9724821350c9501a": { - "describe": { - "columns": [ - { - "name": "id", - "ordinal": 0, - "type_info": "Int8" - }, - { - "name": "l1_batch_number", - "ordinal": 1, - "type_info": "Int8" - }, - { - "name": "circuit_type", - "ordinal": 2, - "type_info": "Text" - }, - { - "name": "prover_input", - "ordinal": 3, - "type_info": "Bytea" - }, - { - "name": "status", - "ordinal": 4, - "type_info": "Text" - }, - { - "name": "error", - "ordinal": 5, - "type_info": "Text" - }, - { - "name": "processing_started_at", - "ordinal": 6, - "type_info": "Timestamp" - }, - { - "name": "created_at", - "ordinal": 7, - "type_info": "Timestamp" - }, - { - "name": "updated_at", - "ordinal": 8, - "type_info": "Timestamp" - }, - { - "name": "time_taken", - "ordinal": 9, - "type_info": "Time" - }, - { - "name": "aggregation_round", - "ordinal": 10, - "type_info": "Int4" - }, - { - "name": "result", - "ordinal": 11, - "type_info": "Bytea" - }, - { - "name": "sequence_number", - "ordinal": 12, - "type_info": "Int4" - }, - { - "name": "attempts", - "ordinal": 13, - "type_info": "Int4" - }, - { - "name": "circuit_input_blob_url", - "ordinal": 14, - "type_info": "Text" - }, - { - "name": "proccesed_by", - "ordinal": 15, - "type_info": "Text" - }, - { - "name": "is_blob_cleaned", - "ordinal": 16, - "type_info": "Bool" - }, - { - "name": "protocol_version", - "ordinal": 17, - "type_info": "Int4" - } - ], - "nullable": [ - false, - false, - false, - false, - false, - true, - true, - false, - false, - false, - false, - true, - false, - false, - true, - true, - false, - true - ], - "parameters": { - "Left": [ - "Int4Array" - ] - } - }, - "query": "\n UPDATE prover_jobs\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now()\n WHERE id = (\n SELECT id\n FROM prover_jobs\n WHERE status = 'queued'\n AND protocol_version = ANY($1)\n ORDER BY aggregation_round DESC, l1_batch_number ASC, id ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING prover_jobs.*\n " - }, - "99d331d233d357302ab0cc7e3269ef9e414f0c3111785212660f471e3b4f6a04": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "ByteaArray", - "Int4Array", - "ByteaArray", - "ByteaArray", - "NumericArray", - "NumericArray", - "NumericArray", - "NumericArray", - "Int4Array", - "Int4Array", - "VarcharArray", - "NumericArray", - "JsonbArray", - "ByteaArray", - "JsonbArray", - "Int8Array", - "NumericArray", - "ByteaArray", - "ByteaArray", - "ByteaArray", - "Int8" - ] - } - }, - "query": "\n UPDATE transactions\n SET \n hash = data_table.hash,\n signature = data_table.signature,\n gas_limit = data_table.gas_limit,\n max_fee_per_gas = data_table.max_fee_per_gas,\n max_priority_fee_per_gas = data_table.max_priority_fee_per_gas,\n gas_per_pubdata_limit = data_table.gas_per_pubdata_limit,\n input = data_table.input,\n data = data_table.data,\n tx_format = data_table.tx_format,\n miniblock_number = $21,\n index_in_block = data_table.index_in_block,\n error = NULLIF(data_table.error, ''),\n effective_gas_price = data_table.effective_gas_price,\n execution_info = data_table.new_execution_info,\n refunded_gas = data_table.refunded_gas,\n value = data_table.value,\n contract_address = data_table.contract_address,\n paymaster = data_table.paymaster,\n paymaster_input = data_table.paymaster_input,\n in_mempool = FALSE,\n updated_at = now()\n FROM\n (\n SELECT data_table_temp.* FROM (\n SELECT\n UNNEST($1::bytea[]) AS initiator_address,\n UNNEST($2::int[]) AS nonce,\n UNNEST($3::bytea[]) AS hash,\n UNNEST($4::bytea[]) AS signature,\n UNNEST($5::numeric[]) AS gas_limit,\n UNNEST($6::numeric[]) AS max_fee_per_gas,\n UNNEST($7::numeric[]) AS max_priority_fee_per_gas,\n UNNEST($8::numeric[]) AS gas_per_pubdata_limit,\n UNNEST($9::int[]) AS tx_format,\n UNNEST($10::integer[]) AS index_in_block,\n UNNEST($11::varchar[]) AS error,\n UNNEST($12::numeric[]) AS effective_gas_price,\n UNNEST($13::jsonb[]) AS new_execution_info,\n UNNEST($14::bytea[]) AS input,\n UNNEST($15::jsonb[]) AS data,\n UNNEST($16::bigint[]) as refunded_gas,\n UNNEST($17::numeric[]) as value,\n UNNEST($18::bytea[]) as contract_address,\n UNNEST($19::bytea[]) as paymaster,\n UNNEST($20::bytea[]) as paymaster_input\n ) AS data_table_temp\n JOIN transactions ON transactions.initiator_address = data_table_temp.initiator_address\n AND transactions.nonce = data_table_temp.nonce\n ORDER BY transactions.hash\n ) AS data_table\n WHERE transactions.initiator_address=data_table.initiator_address\n AND transactions.nonce=data_table.nonce\n " - }, - "9aaf98668f384f634860c4acf793ff47be08975e5d09061cc26fd53dea249c55": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Int8", - "Bytea", - "Text", - "Int4" - ] - } - }, - "query": "\n INSERT INTO scheduler_witness_jobs\n (l1_batch_number, scheduler_witness, scheduler_witness_blob_url, protocol_version, status, created_at, updated_at)\n VALUES ($1, $2, $3, $4, 'waiting_for_artifacts', now(), now())\n " - }, - "9b4d87f7d7cabe0d61f10d26bb856cce3dc7f36f521efbb6992d98937e5a91ba": { - "describe": { - "columns": [ - { - "name": "id", - "ordinal": 0, - "type_info": "Int8" - } - ], - "nullable": [ - false - ], - "parameters": { - "Left": [ - "Bytea", - "Text", - "Text", - "Text", - "Text", - "Bool", - "Text", - "Bytea", - "Bool" - ] - } - }, - "query": "\n INSERT INTO contract_verification_requests (\n contract_address,\n source_code,\n contract_name,\n zk_compiler_version,\n compiler_version,\n optimization_used,\n optimizer_mode,\n constructor_arguments,\n is_system,\n status,\n created_at,\n updated_at\n )\n VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, 'queued', now(), now())\n RETURNING id\n " - }, - "9b70e9039cdc1a8c8baf9220a9d42a9b1b209ce73f74cccb9e313bcacdc3daf3": { + "95e0e783794ac55ab20b30366f037c313fb0d17e93d3e6ec60667ef1b4da30d5": { "describe": { "columns": [], "nullable": [], "parameters": { "Left": [ - "Int8", - "Text", - "Int4", - "Bytea", - "Int4", - "Text", - "Int4" + "Int8Array" ] } }, - "query": "\n INSERT INTO prover_jobs (l1_batch_number, circuit_type, sequence_number, prover_input, aggregation_round, circuit_input_blob_url, protocol_version, status, created_at, updated_at)\n VALUES ($1, $2, $3, $4, $5, $6, $7, 'queued', now(), now())\n ON CONFLICT(l1_batch_number, aggregation_round, sequence_number) DO NOTHING\n " + "query": "\n UPDATE prover_jobs\n SET is_blob_cleaned=TRUE\n WHERE id = ANY($1);\n " }, - "9bf32ea710825c1f0560a7eaa89f8f097ad196755ba82d98a729a2b0d34e1aca": { + "966c175431a77e6cb942ee359a6f6a6edd9804dbad2467dd4e2effbc266b01be": { "describe": { "columns": [ { - "name": "successful_limit!", + "name": "number", "ordinal": 0, "type_info": "Int8" }, { - "name": "queued_limit!", + "name": "l1_tx_count", "ordinal": 1, - "type_info": "Int8" + "type_info": "Int4" }, { - "name": "max_block!", + "name": "l2_tx_count", "ordinal": 2, + "type_info": "Int4" + }, + { + "name": "timestamp", + "ordinal": 3, + "type_info": "Int8" + }, + { + "name": "is_finished", + "ordinal": 4, + "type_info": "Bool" + }, + { + "name": "fee_account_address", + "ordinal": 5, + "type_info": "Bytea" + }, + { + "name": "l2_to_l1_logs", + "ordinal": 6, + "type_info": "ByteaArray" + }, + { + "name": "l2_to_l1_messages", + "ordinal": 7, + "type_info": "ByteaArray" + }, + { + "name": "bloom", + "ordinal": 8, + "type_info": "Bytea" + }, + { + "name": "priority_ops_onchain_data", + "ordinal": 9, + "type_info": "ByteaArray" + }, + { + "name": "used_contract_hashes", + "ordinal": 10, + "type_info": "Jsonb" + }, + { + "name": "base_fee_per_gas", + "ordinal": 11, + "type_info": "Numeric" + }, + { + "name": "l1_gas_price", + "ordinal": 12, + "type_info": "Int8" + }, + { + "name": "l2_fair_gas_price", + "ordinal": 13, "type_info": "Int8" + }, + { + "name": "bootloader_code_hash", + "ordinal": 14, + "type_info": "Bytea" + }, + { + "name": "default_aa_code_hash", + "ordinal": 15, + "type_info": "Bytea" + }, + { + "name": "protocol_version", + "ordinal": 16, + "type_info": "Int4" + }, + { + "name": "compressed_state_diffs", + "ordinal": 17, + "type_info": "Bytea" + }, + { + "name": "system_logs", + "ordinal": 18, + "type_info": "ByteaArray" + }, + { + "name": "events_state_queue_commitment", + "ordinal": 19, + "type_info": "Bytea" + }, + { + "name": "bootloader_initial_memory_commitment", + "ordinal": 20, + "type_info": "Bytea" } ], "nullable": [ - null, - null, - null + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + false, + true, + true ], - "parameters": { - "Left": [] - } - }, - "query": "\n SELECT\n (SELECT l1_batch_number\n FROM prover_jobs\n WHERE status NOT IN ('successful', 'skipped')\n ORDER BY l1_batch_number\n LIMIT 1) as \"successful_limit!\",\n \n (SELECT l1_batch_number\n FROM prover_jobs\n WHERE status <> 'queued'\n ORDER BY l1_batch_number DESC\n LIMIT 1) as \"queued_limit!\",\n\n (SELECT MAX(l1_batch_number) as \"max!\" FROM prover_jobs) as \"max_block!\"\n " - }, - "9c77342759fc71b12f05c2395ac36aabadab1fa64ff585d6349b8053300cf76c": { - "describe": { - "columns": [], - "nullable": [], "parameters": { "Left": [ - "Bytea", - "Bytea", - "Bytea", - "Bytea", - "Bytea", - "Bytea", - "Bytea", - "Bool", - "Bytea", - "Int8", - "Bytea", - "Bytea", - "Bytea", "Int8" ] } }, - "query": "UPDATE l1_batches SET hash = $1, merkle_root_hash = $2, commitment = $3, compressed_repeated_writes = $4, compressed_initial_writes = $5, l2_l1_compressed_messages = $6, l2_l1_merkle_root = $7, zkporter_is_available = $8, parent_hash = $9, rollup_last_leaf_index = $10, aux_data_hash = $11, pass_through_data_hash = $12, meta_parameters_hash = $13, updated_at = now() WHERE number = $14 AND hash IS NULL" - }, - "9d28c1be3bda0c4fb37567d4a56730e801f48fbb2abad42ea894ebd8ee40412d": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Int8", - "Int2", - "Text", - "Int2", - "Int4", - "Int4", - "Bool", - "Int4" - ] - } - }, - "query": "\n INSERT INTO prover_jobs_fri (l1_batch_number, circuit_id, circuit_blob_url, aggregation_round, sequence_number, depth, is_node_final_proof, protocol_version, status, created_at, updated_at)\n VALUES ($1, $2, $3, $4, $5, $6, $7, $8, 'queued', now(), now())\n ON CONFLICT(l1_batch_number, aggregation_round, circuit_id, depth, sequence_number)\n DO UPDATE SET updated_at=now()\n " + "query": "SELECT number, l1_tx_count, l2_tx_count, timestamp, is_finished, fee_account_address, l2_to_l1_logs, l2_to_l1_messages, bloom, priority_ops_onchain_data, used_contract_hashes, base_fee_per_gas, l1_gas_price, l2_fair_gas_price, bootloader_code_hash, default_aa_code_hash, protocol_version, compressed_state_diffs, system_logs, events_state_queue_commitment, bootloader_initial_memory_commitment FROM l1_batches WHERE number = $1" }, - "9feee3fd267dc4e58185aeae7cab798c03eefa69470e4b98716615cecf6c012a": { + "967a71be09004c144593e3449daaf8b7c8052238b81578951c692de243734b55": { "describe": { "columns": [ { - "name": "id", + "name": "number", "ordinal": 0, "type_info": "Int8" }, { - "name": "contract_address", + "name": "l1_tx_count", "ordinal": 1, - "type_info": "Bytea" + "type_info": "Int4" }, { - "name": "source_code", + "name": "l2_tx_count", "ordinal": 2, - "type_info": "Text" + "type_info": "Int4" }, { - "name": "contract_name", + "name": "timestamp", "ordinal": 3, - "type_info": "Text" + "type_info": "Int8" }, { - "name": "zk_compiler_version", + "name": "is_finished", "ordinal": 4, - "type_info": "Text" + "type_info": "Bool" }, { - "name": "compiler_version", + "name": "fee_account_address", "ordinal": 5, - "type_info": "Text" + "type_info": "Bytea" }, { - "name": "optimization_used", + "name": "l2_to_l1_logs", "ordinal": 6, - "type_info": "Bool" + "type_info": "ByteaArray" }, { - "name": "optimizer_mode", + "name": "l2_to_l1_messages", "ordinal": 7, - "type_info": "Text" + "type_info": "ByteaArray" }, { - "name": "constructor_arguments", + "name": "bloom", "ordinal": 8, "type_info": "Bytea" }, { - "name": "is_system", + "name": "priority_ops_onchain_data", "ordinal": 9, - "type_info": "Bool" + "type_info": "ByteaArray" + }, + { + "name": "used_contract_hashes", + "ordinal": 10, + "type_info": "Jsonb" + }, + { + "name": "base_fee_per_gas", + "ordinal": 11, + "type_info": "Numeric" + }, + { + "name": "l1_gas_price", + "ordinal": 12, + "type_info": "Int8" + }, + { + "name": "l2_fair_gas_price", + "ordinal": 13, + "type_info": "Int8" + }, + { + "name": "bootloader_code_hash", + "ordinal": 14, + "type_info": "Bytea" + }, + { + "name": "default_aa_code_hash", + "ordinal": 15, + "type_info": "Bytea" + }, + { + "name": "protocol_version", + "ordinal": 16, + "type_info": "Int4" + }, + { + "name": "compressed_state_diffs", + "ordinal": 17, + "type_info": "Bytea" + }, + { + "name": "system_logs", + "ordinal": 18, + "type_info": "ByteaArray" + }, + { + "name": "events_state_queue_commitment", + "ordinal": 19, + "type_info": "Bytea" + }, + { + "name": "bootloader_initial_memory_commitment", + "ordinal": 20, + "type_info": "Bytea" } ], "nullable": [ @@ -6860,19 +7827,74 @@ false, false, false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, true, false, - false + true, + true + ], + "parameters": { + "Left": [] + } + }, + "query": "SELECT number, l1_tx_count, l2_tx_count, timestamp, is_finished, fee_account_address, l2_to_l1_logs, l2_to_l1_messages, bloom, priority_ops_onchain_data, used_contract_hashes, base_fee_per_gas, l1_gas_price, l2_fair_gas_price, bootloader_code_hash, default_aa_code_hash, protocol_version, compressed_state_diffs, system_logs, events_state_queue_commitment, bootloader_initial_memory_commitment FROM l1_batches ORDER BY number DESC LIMIT 1" + }, + "96b1cd2bb6861064b633d597a4a09d279dbc7bcd7a810a7270da3d7941af0fff": { + "describe": { + "columns": [ + { + "name": "count!", + "ordinal": 0, + "type_info": "Int8" + } + ], + "nullable": [ + null ], "parameters": { "Left": [ - "Interval" + "Bytea", + "Bytea" ] } }, - "query": "UPDATE contract_verification_requests\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now()\n WHERE id = (\n SELECT id FROM contract_verification_requests\n WHERE status = 'queued' OR (status = 'in_progress' AND processing_started_at < now() - $1::interval)\n ORDER BY created_at\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING id, contract_address, source_code, contract_name, zk_compiler_version, compiler_version, optimization_used,\n optimizer_mode, constructor_arguments, is_system\n " + "query": "SELECT COUNT(*) as \"count!\" FROM (SELECT * FROM storage_logs WHERE storage_logs.hashed_key = $1 ORDER BY storage_logs.miniblock_number DESC, storage_logs.operation_number DESC LIMIT 1) sl WHERE sl.value != $2" }, - "a074cd2c23434a8e801c2c0b42e63f1657765aceabd6d8a50ef2d2299bba99ab": { + "96f6d06a49646f93ba1918080ef1efba868d506c6b51ede981e610f1b57bf88b": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "ByteaArray" + ] + } + }, + "query": "DELETE FROM storage WHERE hashed_key = ANY($1)" + }, + "987fcbbd716648c7c368462643f13d8001d5c6d197add90613ae21d21fdef79b": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Text", + "Int8" + ] + } + }, + "query": "UPDATE prover_jobs_fri SET status = $1, updated_at = now() WHERE id = $2" + }, + "9970bb69f5ca9ab9f103e1547eb40c1d4f5dd3a540ff6f1b9724821350c9501a": { "describe": { "columns": [ { @@ -6886,29 +7908,29 @@ "type_info": "Int8" }, { - "name": "circuit_id", + "name": "circuit_type", "ordinal": 2, - "type_info": "Int2" + "type_info": "Text" }, { - "name": "closed_form_inputs_blob_url", + "name": "prover_input", "ordinal": 3, - "type_info": "Text" + "type_info": "Bytea" }, { - "name": "attempts", + "name": "status", "ordinal": 4, - "type_info": "Int2" + "type_info": "Text" }, { - "name": "status", + "name": "error", "ordinal": 5, "type_info": "Text" }, { - "name": "error", + "name": "processing_started_at", "ordinal": 6, - "type_info": "Text" + "type_info": "Timestamp" }, { "name": "created_at", @@ -6921,452 +7943,502 @@ "type_info": "Timestamp" }, { - "name": "processing_started_at", + "name": "time_taken", "ordinal": 9, - "type_info": "Timestamp" + "type_info": "Time" }, { - "name": "time_taken", + "name": "aggregation_round", "ordinal": 10, - "type_info": "Time" + "type_info": "Int4" }, { - "name": "is_blob_cleaned", + "name": "result", "ordinal": 11, - "type_info": "Bool" + "type_info": "Bytea" }, { - "name": "number_of_basic_circuits", + "name": "sequence_number", "ordinal": 12, "type_info": "Int4" }, { - "name": "protocol_version", + "name": "attempts", "ordinal": 13, "type_info": "Int4" }, { - "name": "picked_by", + "name": "circuit_input_blob_url", "ordinal": 14, "type_info": "Text" + }, + { + "name": "proccesed_by", + "ordinal": 15, + "type_info": "Text" + }, + { + "name": "is_blob_cleaned", + "ordinal": 16, + "type_info": "Bool" + }, + { + "name": "protocol_version", + "ordinal": 17, + "type_info": "Int4" } ], "nullable": [ false, false, false, - true, false, false, true, + true, + false, + false, false, false, true, + false, + false, true, true, - true, - true, + false, true ], "parameters": { "Left": [ - "Int4Array", - "Text" + "Int4Array" ] } }, - "query": "\n UPDATE leaf_aggregation_witness_jobs_fri\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now(),\n picked_by = $2\n WHERE id = (\n SELECT id\n FROM leaf_aggregation_witness_jobs_fri\n WHERE status = 'queued'\n AND protocol_version = ANY($1)\n ORDER BY l1_batch_number ASC, id ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING leaf_aggregation_witness_jobs_fri.*\n " + "query": "\n UPDATE prover_jobs\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now()\n WHERE id = (\n SELECT id\n FROM prover_jobs\n WHERE status = 'queued'\n AND protocol_version = ANY($1)\n ORDER BY aggregation_round DESC, l1_batch_number ASC, id ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING prover_jobs.*\n " }, - "a19b7137403c5cdf1be5f5122ce4d297ed661fa8bdb3bc91f8a81fe9da47469e": { + "99d331d233d357302ab0cc7e3269ef9e414f0c3111785212660f471e3b4f6a04": { "describe": { - "columns": [ - { - "name": "upgrade_tx_hash", - "ordinal": 0, - "type_info": "Bytea" - } - ], - "nullable": [ - true - ], + "columns": [], + "nullable": [], "parameters": { "Left": [ - "Int4" + "ByteaArray", + "Int4Array", + "ByteaArray", + "ByteaArray", + "NumericArray", + "NumericArray", + "NumericArray", + "NumericArray", + "Int4Array", + "Int4Array", + "VarcharArray", + "NumericArray", + "JsonbArray", + "ByteaArray", + "JsonbArray", + "Int8Array", + "NumericArray", + "ByteaArray", + "ByteaArray", + "ByteaArray", + "Int8" ] } }, - "query": "\n SELECT upgrade_tx_hash FROM protocol_versions\n WHERE id = $1\n " + "query": "\n UPDATE transactions\n SET \n hash = data_table.hash,\n signature = data_table.signature,\n gas_limit = data_table.gas_limit,\n max_fee_per_gas = data_table.max_fee_per_gas,\n max_priority_fee_per_gas = data_table.max_priority_fee_per_gas,\n gas_per_pubdata_limit = data_table.gas_per_pubdata_limit,\n input = data_table.input,\n data = data_table.data,\n tx_format = data_table.tx_format,\n miniblock_number = $21,\n index_in_block = data_table.index_in_block,\n error = NULLIF(data_table.error, ''),\n effective_gas_price = data_table.effective_gas_price,\n execution_info = data_table.new_execution_info,\n refunded_gas = data_table.refunded_gas,\n value = data_table.value,\n contract_address = data_table.contract_address,\n paymaster = data_table.paymaster,\n paymaster_input = data_table.paymaster_input,\n in_mempool = FALSE,\n updated_at = now()\n FROM\n (\n SELECT data_table_temp.* FROM (\n SELECT\n UNNEST($1::bytea[]) AS initiator_address,\n UNNEST($2::int[]) AS nonce,\n UNNEST($3::bytea[]) AS hash,\n UNNEST($4::bytea[]) AS signature,\n UNNEST($5::numeric[]) AS gas_limit,\n UNNEST($6::numeric[]) AS max_fee_per_gas,\n UNNEST($7::numeric[]) AS max_priority_fee_per_gas,\n UNNEST($8::numeric[]) AS gas_per_pubdata_limit,\n UNNEST($9::int[]) AS tx_format,\n UNNEST($10::integer[]) AS index_in_block,\n UNNEST($11::varchar[]) AS error,\n UNNEST($12::numeric[]) AS effective_gas_price,\n UNNEST($13::jsonb[]) AS new_execution_info,\n UNNEST($14::bytea[]) AS input,\n UNNEST($15::jsonb[]) AS data,\n UNNEST($16::bigint[]) as refunded_gas,\n UNNEST($17::numeric[]) as value,\n UNNEST($18::bytea[]) as contract_address,\n UNNEST($19::bytea[]) as paymaster,\n UNNEST($20::bytea[]) as paymaster_input\n ) AS data_table_temp\n JOIN transactions ON transactions.initiator_address = data_table_temp.initiator_address\n AND transactions.nonce = data_table_temp.nonce\n ORDER BY transactions.hash\n ) AS data_table\n WHERE transactions.initiator_address=data_table.initiator_address\n AND transactions.nonce=data_table.nonce\n " }, - "a1a6b52403c1db35c8d83d0a512ac453ecd54b34ec516027d540ee1890b40291": { + "9aaf98668f384f634860c4acf793ff47be08975e5d09061cc26fd53dea249c55": { "describe": { "columns": [], "nullable": [], "parameters": { "Left": [ - "Int4", - "Bytea", - "Bytea", + "Int8", "Bytea", - "Bytea" + "Text", + "Int4" ] } }, - "query": "INSERT INTO prover_fri_protocol_versions (id, recursion_scheduler_level_vk_hash, recursion_node_level_vk_hash, recursion_leaf_level_vk_hash, recursion_circuits_set_vks_hash, created_at) VALUES ($1, $2, $3, $4, $5, now()) ON CONFLICT(id) DO NOTHING" + "query": "\n INSERT INTO scheduler_witness_jobs\n (l1_batch_number, scheduler_witness, scheduler_witness_blob_url, protocol_version, status, created_at, updated_at)\n VALUES ($1, $2, $3, $4, 'waiting_for_artifacts', now(), now())\n " }, - "a39f760d2cd879a78112e57d8611d7099802b03b7cc4933cafb4c47e133ad543": { + "9b4d87f7d7cabe0d61f10d26bb856cce3dc7f36f521efbb6992d98937e5a91ba": { "describe": { "columns": [ { - "name": "address", + "name": "id", "ordinal": 0, - "type_info": "Bytea" - }, - { - "name": "topic1", - "ordinal": 1, - "type_info": "Bytea" - }, - { - "name": "topic2", - "ordinal": 2, - "type_info": "Bytea" - }, - { - "name": "topic3", - "ordinal": 3, - "type_info": "Bytea" - }, - { - "name": "topic4", - "ordinal": 4, - "type_info": "Bytea" - }, - { - "name": "value", - "ordinal": 5, - "type_info": "Bytea" - }, - { - "name": "block_hash", - "ordinal": 6, - "type_info": "Bytea" - }, - { - "name": "l1_batch_number?", - "ordinal": 7, - "type_info": "Int8" - }, - { - "name": "miniblock_number", - "ordinal": 8, "type_info": "Int8" - }, - { - "name": "tx_hash", - "ordinal": 9, - "type_info": "Bytea" - }, - { - "name": "tx_index_in_block", - "ordinal": 10, - "type_info": "Int4" - }, - { - "name": "event_index_in_block", - "ordinal": 11, - "type_info": "Int4" - }, - { - "name": "event_index_in_tx", - "ordinal": 12, - "type_info": "Int4" } ], - "nullable": [ - false, - false, - false, - false, - false, - false, - null, - null, - false, - false, - false, - false, + "nullable": [ false ], "parameters": { "Left": [ - "Bytea" + "Bytea", + "Text", + "Text", + "Text", + "Text", + "Bool", + "Text", + "Bytea", + "Bool" ] } }, - "query": "\n SELECT\n address, topic1, topic2, topic3, topic4, value,\n Null::bytea as \"block_hash\", Null::bigint as \"l1_batch_number?\",\n miniblock_number, tx_hash, tx_index_in_block,\n event_index_in_block, event_index_in_tx\n FROM events\n WHERE tx_hash = $1\n ORDER BY miniblock_number ASC, event_index_in_block ASC\n " + "query": "\n INSERT INTO contract_verification_requests (\n contract_address,\n source_code,\n contract_name,\n zk_compiler_version,\n compiler_version,\n optimization_used,\n optimizer_mode,\n constructor_arguments,\n is_system,\n status,\n created_at,\n updated_at\n )\n VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, 'queued', now(), now())\n RETURNING id\n " }, - "a3d526a5a341618e9784fc81626143a3174709483a527879254ff8e28f210ac3": { + "9b70e9039cdc1a8c8baf9220a9d42a9b1b209ce73f74cccb9e313bcacdc3daf3": { "describe": { "columns": [], "nullable": [], "parameters": { "Left": [ - "Int4", "Int8", - "Int8" - ] - } - }, - "query": "UPDATE l1_batches SET eth_execute_tx_id = $1, updated_at = now() WHERE number BETWEEN $2 AND $3" - }, - "a42626c162a0600b9c7d22dd0d7997fa70cc95296ecc185ff9ae2e03593b07bf": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Int8" + "Text", + "Int4", + "Bytea", + "Int4", + "Text", + "Int4" ] } }, - "query": "\n UPDATE scheduler_witness_jobs_fri\n SET status='queued'\n WHERE l1_batch_number = $1\n AND status != 'successful'\n AND status != 'in_progress'\n " + "query": "\n INSERT INTO prover_jobs (l1_batch_number, circuit_type, sequence_number, prover_input, aggregation_round, circuit_input_blob_url, protocol_version, status, created_at, updated_at)\n VALUES ($1, $2, $3, $4, $5, $6, $7, 'queued', now(), now())\n ON CONFLICT(l1_batch_number, aggregation_round, sequence_number) DO NOTHING\n " }, - "a4a14eb42b9acca3f93c67e5760ba700c333b5e9a38c132a3060a94c988e7f13": { + "9bf32ea710825c1f0560a7eaa89f8f097ad196755ba82d98a729a2b0d34e1aca": { "describe": { "columns": [ { - "name": "hash", + "name": "successful_limit!", "ordinal": 0, - "type_info": "Bytea" + "type_info": "Int8" }, { - "name": "received_at", + "name": "queued_limit!", "ordinal": 1, - "type_info": "Timestamp" + "type_info": "Int8" + }, + { + "name": "max_block!", + "ordinal": 2, + "type_info": "Int8" } ], "nullable": [ - false, - false + null, + null, + null ], "parameters": { - "Left": [ - "Timestamp", - "Int8" - ] + "Left": [] } }, - "query": "SELECT transactions.hash, transactions.received_at FROM transactions LEFT JOIN miniblocks ON miniblocks.number = miniblock_number WHERE received_at > $1 ORDER BY received_at ASC LIMIT $2" + "query": "\n SELECT\n (SELECT l1_batch_number\n FROM prover_jobs\n WHERE status NOT IN ('successful', 'skipped')\n ORDER BY l1_batch_number\n LIMIT 1) as \"successful_limit!\",\n \n (SELECT l1_batch_number\n FROM prover_jobs\n WHERE status <> 'queued'\n ORDER BY l1_batch_number DESC\n LIMIT 1) as \"queued_limit!\",\n\n (SELECT MAX(l1_batch_number) as \"max!\" FROM prover_jobs) as \"max_block!\"\n " }, - "a5115658f3a53462a9570fd6676f1931604d1c17a9a2b5f1475519006aaf03ba": { + "9d28c1be3bda0c4fb37567d4a56730e801f48fbb2abad42ea894ebd8ee40412d": { "describe": { "columns": [], "nullable": [], "parameters": { "Left": [ "Int8", - "Text" + "Int2", + "Text", + "Int2", + "Int4", + "Int4", + "Bool", + "Int4" ] } }, - "query": "INSERT INTO proof_generation_details (l1_batch_number, status, proof_gen_data_blob_url, created_at, updated_at) VALUES ($1, 'ready_to_be_proven', $2, now(), now()) ON CONFLICT (l1_batch_number) DO NOTHING" + "query": "\n INSERT INTO prover_jobs_fri (l1_batch_number, circuit_id, circuit_blob_url, aggregation_round, sequence_number, depth, is_node_final_proof, protocol_version, status, created_at, updated_at)\n VALUES ($1, $2, $3, $4, $5, $6, $7, $8, 'queued', now(), now())\n ON CONFLICT(l1_batch_number, aggregation_round, circuit_id, depth, sequence_number)\n DO UPDATE SET updated_at=now()\n " }, - "a7abde5a53248d6e63aa998acac521194231bbe08140c9c4efa548c4f3ae17fa": { + "9feee3fd267dc4e58185aeae7cab798c03eefa69470e4b98716615cecf6c012a": { "describe": { "columns": [ { - "name": "max?", + "name": "id", "ordinal": 0, - "type_info": "Int4" + "type_info": "Int8" + }, + { + "name": "contract_address", + "ordinal": 1, + "type_info": "Bytea" + }, + { + "name": "source_code", + "ordinal": 2, + "type_info": "Text" + }, + { + "name": "contract_name", + "ordinal": 3, + "type_info": "Text" + }, + { + "name": "zk_compiler_version", + "ordinal": 4, + "type_info": "Text" + }, + { + "name": "compiler_version", + "ordinal": 5, + "type_info": "Text" + }, + { + "name": "optimization_used", + "ordinal": 6, + "type_info": "Bool" + }, + { + "name": "optimizer_mode", + "ordinal": 7, + "type_info": "Text" + }, + { + "name": "constructor_arguments", + "ordinal": 8, + "type_info": "Bytea" + }, + { + "name": "is_system", + "ordinal": 9, + "type_info": "Bool" } ], "nullable": [ - null + false, + false, + false, + false, + false, + false, + false, + true, + false, + false ], "parameters": { "Left": [ - "Int8" + "Interval" ] } }, - "query": "SELECT MAX(operation_number) as \"max?\" FROM storage_logs WHERE miniblock_number = $1" + "query": "UPDATE contract_verification_requests\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now()\n WHERE id = (\n SELECT id FROM contract_verification_requests\n WHERE status = 'queued' OR (status = 'in_progress' AND processing_started_at < now() - $1::interval)\n ORDER BY created_at\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING id, contract_address, source_code, contract_name, zk_compiler_version, compiler_version, optimization_used,\n optimizer_mode, constructor_arguments, is_system\n " }, - "a8878258bac2876686f1218213457edd70652e8145743b6b44a846220829bbe2": { + "a074cd2c23434a8e801c2c0b42e63f1657765aceabd6d8a50ef2d2299bba99ab": { "describe": { "columns": [ { - "name": "number", + "name": "id", "ordinal": 0, "type_info": "Int8" }, { - "name": "timestamp", + "name": "l1_batch_number", "ordinal": 1, "type_info": "Int8" }, { - "name": "is_finished", + "name": "circuit_id", "ordinal": 2, - "type_info": "Bool" + "type_info": "Int2" }, { - "name": "l1_tx_count", + "name": "closed_form_inputs_blob_url", "ordinal": 3, - "type_info": "Int4" + "type_info": "Text" }, { - "name": "l2_tx_count", + "name": "attempts", "ordinal": 4, - "type_info": "Int4" + "type_info": "Int2" }, { - "name": "fee_account_address", + "name": "status", "ordinal": 5, - "type_info": "Bytea" + "type_info": "Text" }, { - "name": "bloom", + "name": "error", "ordinal": 6, - "type_info": "Bytea" + "type_info": "Text" }, { - "name": "priority_ops_onchain_data", + "name": "created_at", "ordinal": 7, - "type_info": "ByteaArray" + "type_info": "Timestamp" }, { - "name": "hash", + "name": "updated_at", "ordinal": 8, - "type_info": "Bytea" + "type_info": "Timestamp" }, { - "name": "parent_hash", + "name": "processing_started_at", "ordinal": 9, - "type_info": "Bytea" + "type_info": "Timestamp" }, { - "name": "commitment", + "name": "time_taken", "ordinal": 10, - "type_info": "Bytea" + "type_info": "Time" }, { - "name": "compressed_write_logs", + "name": "is_blob_cleaned", "ordinal": 11, - "type_info": "Bytea" + "type_info": "Bool" }, { - "name": "compressed_contracts", + "name": "number_of_basic_circuits", "ordinal": 12, - "type_info": "Bytea" + "type_info": "Int4" }, { - "name": "eth_prove_tx_id", + "name": "protocol_version", "ordinal": 13, "type_info": "Int4" }, { - "name": "eth_commit_tx_id", + "name": "picked_by", "ordinal": 14, - "type_info": "Int4" - }, + "type_info": "Text" + } + ], + "nullable": [ + false, + false, + false, + true, + false, + false, + true, + false, + false, + true, + true, + true, + true, + true, + true + ], + "parameters": { + "Left": [ + "Int4Array", + "Text" + ] + } + }, + "query": "\n UPDATE leaf_aggregation_witness_jobs_fri\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now(),\n picked_by = $2\n WHERE id = (\n SELECT id\n FROM leaf_aggregation_witness_jobs_fri\n WHERE status = 'queued'\n AND protocol_version = ANY($1)\n ORDER BY l1_batch_number ASC, id ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING leaf_aggregation_witness_jobs_fri.*\n " + }, + "a19b7137403c5cdf1be5f5122ce4d297ed661fa8bdb3bc91f8a81fe9da47469e": { + "describe": { + "columns": [ { - "name": "eth_execute_tx_id", - "ordinal": 15, - "type_info": "Int4" - }, + "name": "upgrade_tx_hash", + "ordinal": 0, + "type_info": "Bytea" + } + ], + "nullable": [ + true + ], + "parameters": { + "Left": [ + "Int4" + ] + } + }, + "query": "\n SELECT upgrade_tx_hash FROM protocol_versions\n WHERE id = $1\n " + }, + "a1a6b52403c1db35c8d83d0a512ac453ecd54b34ec516027d540ee1890b40291": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Int4", + "Bytea", + "Bytea", + "Bytea", + "Bytea" + ] + } + }, + "query": "INSERT INTO prover_fri_protocol_versions (id, recursion_scheduler_level_vk_hash, recursion_node_level_vk_hash, recursion_leaf_level_vk_hash, recursion_circuits_set_vks_hash, created_at) VALUES ($1, $2, $3, $4, $5, now()) ON CONFLICT(id) DO NOTHING" + }, + "a39f760d2cd879a78112e57d8611d7099802b03b7cc4933cafb4c47e133ad543": { + "describe": { + "columns": [ { - "name": "merkle_root_hash", - "ordinal": 16, + "name": "address", + "ordinal": 0, "type_info": "Bytea" }, { - "name": "l2_to_l1_logs", - "ordinal": 17, - "type_info": "ByteaArray" - }, - { - "name": "l2_to_l1_messages", - "ordinal": 18, - "type_info": "ByteaArray" - }, - { - "name": "used_contract_hashes", - "ordinal": 19, - "type_info": "Jsonb" + "name": "topic1", + "ordinal": 1, + "type_info": "Bytea" }, { - "name": "compressed_initial_writes", - "ordinal": 20, + "name": "topic2", + "ordinal": 2, "type_info": "Bytea" }, { - "name": "compressed_repeated_writes", - "ordinal": 21, + "name": "topic3", + "ordinal": 3, "type_info": "Bytea" }, { - "name": "l2_l1_compressed_messages", - "ordinal": 22, + "name": "topic4", + "ordinal": 4, "type_info": "Bytea" }, { - "name": "l2_l1_merkle_root", - "ordinal": 23, + "name": "value", + "ordinal": 5, "type_info": "Bytea" }, { - "name": "l1_gas_price", - "ordinal": 24, - "type_info": "Int8" + "name": "block_hash", + "ordinal": 6, + "type_info": "Bytea" }, { - "name": "l2_fair_gas_price", - "ordinal": 25, + "name": "l1_batch_number?", + "ordinal": 7, "type_info": "Int8" }, { - "name": "rollup_last_leaf_index", - "ordinal": 26, + "name": "miniblock_number", + "ordinal": 8, "type_info": "Int8" }, { - "name": "zkporter_is_available", - "ordinal": 27, - "type_info": "Bool" - }, - { - "name": "bootloader_code_hash", - "ordinal": 28, - "type_info": "Bytea" - }, - { - "name": "default_aa_code_hash", - "ordinal": 29, - "type_info": "Bytea" - }, - { - "name": "base_fee_per_gas", - "ordinal": 30, - "type_info": "Numeric" - }, - { - "name": "aux_data_hash", - "ordinal": 31, + "name": "tx_hash", + "ordinal": 9, "type_info": "Bytea" }, { - "name": "pass_through_data_hash", - "ordinal": 32, - "type_info": "Bytea" + "name": "tx_index_in_block", + "ordinal": 10, + "type_info": "Int4" }, { - "name": "meta_parameters_hash", - "ordinal": 33, - "type_info": "Bytea" + "name": "event_index_in_block", + "ordinal": 11, + "type_info": "Int4" }, { - "name": "protocol_version", - "ordinal": 34, + "name": "event_index_in_tx", + "ordinal": 12, "type_info": "Int4" } ], @@ -7377,46 +8449,107 @@ false, false, false, + null, + null, false, false, - true, - true, - true, - true, - true, - true, - true, - true, - true, - false, - false, - false, - true, - true, - true, - true, - false, false, - true, - true, - true, - true, false, - true, - true, - true, - true + false ], "parameters": { "Left": [ - "Bytea", - "Bytea", + "Bytea" + ] + } + }, + "query": "\n SELECT\n address, topic1, topic2, topic3, topic4, value,\n Null::bytea as \"block_hash\", Null::bigint as \"l1_batch_number?\",\n miniblock_number, tx_hash, tx_index_in_block,\n event_index_in_block, event_index_in_tx\n FROM events\n WHERE tx_hash = $1\n ORDER BY miniblock_number ASC, event_index_in_block ASC\n " + }, + "a3d526a5a341618e9784fc81626143a3174709483a527879254ff8e28f210ac3": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ "Int4", + "Int8", + "Int8" + ] + } + }, + "query": "UPDATE l1_batches SET eth_execute_tx_id = $1, updated_at = now() WHERE number BETWEEN $2 AND $3" + }, + "a42626c162a0600b9c7d22dd0d7997fa70cc95296ecc185ff9ae2e03593b07bf": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Int8" + ] + } + }, + "query": "\n UPDATE scheduler_witness_jobs_fri\n SET status='queued'\n WHERE l1_batch_number = $1\n AND status != 'successful'\n AND status != 'in_progress'\n " + }, + "a4a14eb42b9acca3f93c67e5760ba700c333b5e9a38c132a3060a94c988e7f13": { + "describe": { + "columns": [ + { + "name": "hash", + "ordinal": 0, + "type_info": "Bytea" + }, + { + "name": "received_at", + "ordinal": 1, + "type_info": "Timestamp" + } + ], + "nullable": [ + false, + false + ], + "parameters": { + "Left": [ + "Timestamp", + "Int8" + ] + } + }, + "query": "SELECT transactions.hash, transactions.received_at FROM transactions LEFT JOIN miniblocks ON miniblocks.number = miniblock_number WHERE received_at > $1 ORDER BY received_at ASC LIMIT $2" + }, + "a5115658f3a53462a9570fd6676f1931604d1c17a9a2b5f1475519006aaf03ba": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Int8", + "Text" + ] + } + }, + "query": "INSERT INTO proof_generation_details (l1_batch_number, status, proof_gen_data_blob_url, created_at, updated_at) VALUES ($1, 'ready_to_be_proven', $2, now(), now()) ON CONFLICT (l1_batch_number) DO NOTHING" + }, + "a7abde5a53248d6e63aa998acac521194231bbe08140c9c4efa548c4f3ae17fa": { + "describe": { + "columns": [ + { + "name": "max?", + "ordinal": 0, + "type_info": "Int4" + } + ], + "nullable": [ + null + ], + "parameters": { + "Left": [ "Int8" ] } }, - "query": "SELECT number, l1_batches.timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, rollup_last_leaf_index, zkporter_is_available, l1_batches.bootloader_code_hash, l1_batches.default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, meta_parameters_hash, protocol_version FROM l1_batches JOIN protocol_versions ON protocol_versions.id = l1_batches.protocol_version WHERE eth_commit_tx_id IS NULL AND number != 0 AND protocol_versions.bootloader_code_hash = $1 AND protocol_versions.default_account_code_hash = $2 AND commitment IS NOT NULL AND (protocol_versions.id = $3 OR protocol_versions.upgrade_tx_hash IS NULL) ORDER BY number LIMIT $4" + "query": "SELECT MAX(operation_number) as \"max?\" FROM storage_logs WHERE miniblock_number = $1" }, "a9b1a31def214f8b1441dc3ab720bd270f3991c9f1c7528256276e176d532163": { "describe": { @@ -7719,31 +8852,69 @@ }, "query": "SELECT * FROM eth_txs_history WHERE eth_tx_id = $1 ORDER BY created_at DESC LIMIT 1" }, - "ad4f74aa6f131df0243f4fa500ade1b98aa335bd71ed417b02361e2c697e60f8": { + "ad4f74aa6f131df0243f4fa500ade1b98aa335bd71ed417b02361e2c697e60f8": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Bytea", + "Int8" + ] + } + }, + "query": "\n UPDATE scheduler_witness_jobs\n SET aggregation_result_coords = $1,\n updated_at = now()\n WHERE l1_batch_number = $2\n " + }, + "adc9ad2c944f9dacc28b5bd133aa37d9e8ea99eca1c5dfbeef37cda4b793f434": { + "describe": { + "columns": [ + { + "name": "market_volume", + "ordinal": 0, + "type_info": "Numeric" + }, + { + "name": "market_volume_updated_at", + "ordinal": 1, + "type_info": "Timestamp" + } + ], + "nullable": [ + true, + true + ], + "parameters": { + "Left": [ + "Bytea" + ] + } + }, + "query": "SELECT market_volume, market_volume_updated_at FROM tokens WHERE l2_address = $1" + }, + "ae072f51b65d0b5212264be9a34027922e5aedef7e4741517ad8104bf5aa79e9": { "describe": { "columns": [], "nullable": [], "parameters": { "Left": [ - "Bytea", "Int8" ] } }, - "query": "\n UPDATE scheduler_witness_jobs\n SET aggregation_result_coords = $1,\n updated_at = now()\n WHERE l1_batch_number = $2\n " + "query": "DELETE FROM factory_deps WHERE miniblock_number > $1" }, - "adc9ad2c944f9dacc28b5bd133aa37d9e8ea99eca1c5dfbeef37cda4b793f434": { + "aea4e8d1b018836973d252df943a2c1988dd5f3ffc629064b87d25af8cdb8638": { "describe": { "columns": [ { - "name": "market_volume", + "name": "l1_batch_number", "ordinal": 0, - "type_info": "Numeric" + "type_info": "Int8" }, { - "name": "market_volume_updated_at", + "name": "l1_batch_tx_index", "ordinal": 1, - "type_info": "Timestamp" + "type_info": "Int4" } ], "nullable": [ @@ -7756,58 +8927,289 @@ ] } }, - "query": "SELECT market_volume, market_volume_updated_at FROM tokens WHERE l2_address = $1" + "query": "SELECT l1_batch_number, l1_batch_tx_index FROM transactions WHERE hash = $1" }, - "ae072f51b65d0b5212264be9a34027922e5aedef7e4741517ad8104bf5aa79e9": { + "af22ad34bde12b8d25eb85da9939d12b7bed6407d732b868eeaf2916568c8646": { "describe": { "columns": [], "nullable": [], "parameters": { "Left": [ + "Time", "Int8" ] } }, - "query": "DELETE FROM factory_deps WHERE miniblock_number > $1" + "query": "\n UPDATE scheduler_witness_jobs_fri\n SET status = 'successful', updated_at = now(), time_taken = $1\n WHERE l1_batch_number = $2\n " }, - "aea4e8d1b018836973d252df943a2c1988dd5f3ffc629064b87d25af8cdb8638": { + "af54137f462904bfccb81123dd990ac623a461d02126414ee161ab3d6a0dc616": { "describe": { "columns": [ { - "name": "l1_batch_number", + "name": "number", "ordinal": 0, "type_info": "Int8" }, { - "name": "l1_batch_tx_index", + "name": "timestamp", "ordinal": 1, + "type_info": "Int8" + }, + { + "name": "is_finished", + "ordinal": 2, + "type_info": "Bool" + }, + { + "name": "l1_tx_count", + "ordinal": 3, + "type_info": "Int4" + }, + { + "name": "l2_tx_count", + "ordinal": 4, + "type_info": "Int4" + }, + { + "name": "fee_account_address", + "ordinal": 5, + "type_info": "Bytea" + }, + { + "name": "bloom", + "ordinal": 6, + "type_info": "Bytea" + }, + { + "name": "priority_ops_onchain_data", + "ordinal": 7, + "type_info": "ByteaArray" + }, + { + "name": "hash", + "ordinal": 8, + "type_info": "Bytea" + }, + { + "name": "parent_hash", + "ordinal": 9, + "type_info": "Bytea" + }, + { + "name": "commitment", + "ordinal": 10, + "type_info": "Bytea" + }, + { + "name": "compressed_write_logs", + "ordinal": 11, + "type_info": "Bytea" + }, + { + "name": "compressed_contracts", + "ordinal": 12, + "type_info": "Bytea" + }, + { + "name": "eth_prove_tx_id", + "ordinal": 13, + "type_info": "Int4" + }, + { + "name": "eth_commit_tx_id", + "ordinal": 14, + "type_info": "Int4" + }, + { + "name": "eth_execute_tx_id", + "ordinal": 15, + "type_info": "Int4" + }, + { + "name": "merkle_root_hash", + "ordinal": 16, + "type_info": "Bytea" + }, + { + "name": "l2_to_l1_logs", + "ordinal": 17, + "type_info": "ByteaArray" + }, + { + "name": "l2_to_l1_messages", + "ordinal": 18, + "type_info": "ByteaArray" + }, + { + "name": "used_contract_hashes", + "ordinal": 19, + "type_info": "Jsonb" + }, + { + "name": "compressed_initial_writes", + "ordinal": 20, + "type_info": "Bytea" + }, + { + "name": "compressed_repeated_writes", + "ordinal": 21, + "type_info": "Bytea" + }, + { + "name": "l2_l1_compressed_messages", + "ordinal": 22, + "type_info": "Bytea" + }, + { + "name": "l2_l1_merkle_root", + "ordinal": 23, + "type_info": "Bytea" + }, + { + "name": "l1_gas_price", + "ordinal": 24, + "type_info": "Int8" + }, + { + "name": "l2_fair_gas_price", + "ordinal": 25, + "type_info": "Int8" + }, + { + "name": "rollup_last_leaf_index", + "ordinal": 26, + "type_info": "Int8" + }, + { + "name": "zkporter_is_available", + "ordinal": 27, + "type_info": "Bool" + }, + { + "name": "bootloader_code_hash", + "ordinal": 28, + "type_info": "Bytea" + }, + { + "name": "default_aa_code_hash", + "ordinal": 29, + "type_info": "Bytea" + }, + { + "name": "base_fee_per_gas", + "ordinal": 30, + "type_info": "Numeric" + }, + { + "name": "aux_data_hash", + "ordinal": 31, + "type_info": "Bytea" + }, + { + "name": "pass_through_data_hash", + "ordinal": 32, + "type_info": "Bytea" + }, + { + "name": "meta_parameters_hash", + "ordinal": 33, + "type_info": "Bytea" + }, + { + "name": "protocol_version", + "ordinal": 34, + "type_info": "Int4" + }, + { + "name": "compressed_state_diffs", + "ordinal": 35, + "type_info": "Bytea" + }, + { + "name": "gas_per_pubdata_byte_in_block", + "ordinal": 36, "type_info": "Int4" + }, + { + "name": "gas_per_pubdata_limit", + "ordinal": 37, + "type_info": "Int8" + }, + { + "name": "skip_proof", + "ordinal": 38, + "type_info": "Bool" + }, + { + "name": "system_logs", + "ordinal": 39, + "type_info": "ByteaArray" + }, + { + "name": "events_state_queue_commitment", + "ordinal": 40, + "type_info": "Bytea" + }, + { + "name": "bootloader_initial_memory_commitment", + "ordinal": 41, + "type_info": "Bytea" } ], "nullable": [ + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + true, + true, + true, + true, + false, + false, + true, + true, + true, + true, + false, + true, + true, + true, + true, + true, + true, + false, + false, + false, true, true ], "parameters": { "Left": [ - "Bytea" - ] - } - }, - "query": "SELECT l1_batch_number, l1_batch_tx_index FROM transactions WHERE hash = $1" - }, - "af22ad34bde12b8d25eb85da9939d12b7bed6407d732b868eeaf2916568c8646": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Time", + "Bytea", + "Bytea", + "Int4", "Int8" ] } }, - "query": "\n UPDATE scheduler_witness_jobs_fri\n SET status = 'successful', updated_at = now(), time_taken = $1\n WHERE l1_batch_number = $2\n " + "query": "SELECT number, l1_batches.timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, rollup_last_leaf_index, zkporter_is_available, l1_batches.bootloader_code_hash, l1_batches.default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, meta_parameters_hash, protocol_version, compressed_state_diffs, gas_per_pubdata_byte_in_block, gas_per_pubdata_limit, skip_proof, system_logs, events_state_queue_commitment, bootloader_initial_memory_commitment FROM l1_batches JOIN protocol_versions ON protocol_versions.id = l1_batches.protocol_version WHERE eth_commit_tx_id IS NULL AND number != 0 AND protocol_versions.bootloader_code_hash = $1 AND protocol_versions.default_account_code_hash = $2 AND commitment IS NOT NULL AND (protocol_versions.id = $3 OR protocol_versions.upgrade_tx_hash IS NULL) ORDER BY number LIMIT $4" }, "af75db6b7e42b73ce62b28a7281e1bfa181ee0c80a85d7d8078831db5dcdb699": { "describe": { @@ -8185,264 +9587,40 @@ "Left": [] } }, - "query": "SELECT id, contract_address, source_code, contract_name, zk_compiler_version, compiler_version, optimization_used,\n optimizer_mode, constructor_arguments, is_system\n FROM contract_verification_requests\n WHERE status = 'successful'\n ORDER BY id" - }, - "b7ab3aeee71e87c7469428ec411b410d81282ff6fed63fe5cda0e81a330d2ac5": { - "describe": { - "columns": [ - { - "name": "id", - "ordinal": 0, - "type_info": "Int8" - }, - { - "name": "status", - "ordinal": 1, - "type_info": "Text" - }, - { - "name": "attempts", - "ordinal": 2, - "type_info": "Int2" - } - ], - "nullable": [ - false, - false, - false - ], - "parameters": { - "Left": [ - "Interval", - "Int2" - ] - } - }, - "query": "\n UPDATE leaf_aggregation_witness_jobs_fri\n SET status = 'queued', attempts = attempts + 1, updated_at = now(), processing_started_at = now()\n WHERE (status = 'in_progress' AND processing_started_at <= now() - $1::interval AND attempts < $2)\n OR (status = 'failed' AND attempts < $2)\n RETURNING id, status, attempts\n " - }, - "b7c3d8606c77f78897763bc8c77b7bc85ce1daf8d079402eb20dfc0a3f164834": { - "describe": { - "columns": [ - { - "name": "number", - "ordinal": 0, - "type_info": "Int8" - }, - { - "name": "timestamp", - "ordinal": 1, - "type_info": "Int8" - }, - { - "name": "is_finished", - "ordinal": 2, - "type_info": "Bool" - }, - { - "name": "l1_tx_count", - "ordinal": 3, - "type_info": "Int4" - }, - { - "name": "l2_tx_count", - "ordinal": 4, - "type_info": "Int4" - }, - { - "name": "fee_account_address", - "ordinal": 5, - "type_info": "Bytea" - }, - { - "name": "bloom", - "ordinal": 6, - "type_info": "Bytea" - }, - { - "name": "priority_ops_onchain_data", - "ordinal": 7, - "type_info": "ByteaArray" - }, - { - "name": "hash", - "ordinal": 8, - "type_info": "Bytea" - }, - { - "name": "parent_hash", - "ordinal": 9, - "type_info": "Bytea" - }, - { - "name": "commitment", - "ordinal": 10, - "type_info": "Bytea" - }, - { - "name": "compressed_write_logs", - "ordinal": 11, - "type_info": "Bytea" - }, - { - "name": "compressed_contracts", - "ordinal": 12, - "type_info": "Bytea" - }, - { - "name": "eth_prove_tx_id", - "ordinal": 13, - "type_info": "Int4" - }, - { - "name": "eth_commit_tx_id", - "ordinal": 14, - "type_info": "Int4" - }, - { - "name": "eth_execute_tx_id", - "ordinal": 15, - "type_info": "Int4" - }, - { - "name": "merkle_root_hash", - "ordinal": 16, - "type_info": "Bytea" - }, - { - "name": "l2_to_l1_logs", - "ordinal": 17, - "type_info": "ByteaArray" - }, - { - "name": "l2_to_l1_messages", - "ordinal": 18, - "type_info": "ByteaArray" - }, - { - "name": "used_contract_hashes", - "ordinal": 19, - "type_info": "Jsonb" - }, - { - "name": "compressed_initial_writes", - "ordinal": 20, - "type_info": "Bytea" - }, - { - "name": "compressed_repeated_writes", - "ordinal": 21, - "type_info": "Bytea" - }, - { - "name": "l2_l1_compressed_messages", - "ordinal": 22, - "type_info": "Bytea" - }, - { - "name": "l2_l1_merkle_root", - "ordinal": 23, - "type_info": "Bytea" - }, - { - "name": "l1_gas_price", - "ordinal": 24, - "type_info": "Int8" - }, - { - "name": "l2_fair_gas_price", - "ordinal": 25, - "type_info": "Int8" - }, - { - "name": "rollup_last_leaf_index", - "ordinal": 26, - "type_info": "Int8" - }, - { - "name": "zkporter_is_available", - "ordinal": 27, - "type_info": "Bool" - }, - { - "name": "bootloader_code_hash", - "ordinal": 28, - "type_info": "Bytea" - }, - { - "name": "default_aa_code_hash", - "ordinal": 29, - "type_info": "Bytea" - }, - { - "name": "base_fee_per_gas", - "ordinal": 30, - "type_info": "Numeric" - }, - { - "name": "aux_data_hash", - "ordinal": 31, - "type_info": "Bytea" - }, - { - "name": "pass_through_data_hash", - "ordinal": 32, - "type_info": "Bytea" - }, - { - "name": "meta_parameters_hash", - "ordinal": 33, - "type_info": "Bytea" - }, - { - "name": "protocol_version", - "ordinal": 34, - "type_info": "Int4" - } - ], - "nullable": [ - false, - false, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true, - true, - true, - true, - true, - false, - false, - false, - true, - true, - true, - true, - false, + "query": "SELECT id, contract_address, source_code, contract_name, zk_compiler_version, compiler_version, optimization_used,\n optimizer_mode, constructor_arguments, is_system\n FROM contract_verification_requests\n WHERE status = 'successful'\n ORDER BY id" + }, + "b7ab3aeee71e87c7469428ec411b410d81282ff6fed63fe5cda0e81a330d2ac5": { + "describe": { + "columns": [ + { + "name": "id", + "ordinal": 0, + "type_info": "Int8" + }, + { + "name": "status", + "ordinal": 1, + "type_info": "Text" + }, + { + "name": "attempts", + "ordinal": 2, + "type_info": "Int2" + } + ], + "nullable": [ false, - true, - true, - true, - true, false, - true, - true, - true, - true + false ], "parameters": { "Left": [ - "Int8" + "Interval", + "Int2" ] } }, - "query": "SELECT number, timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, rollup_last_leaf_index, zkporter_is_available, bootloader_code_hash, default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, meta_parameters_hash, protocol_version FROM l1_batches WHERE number = $1" + "query": "\n UPDATE leaf_aggregation_witness_jobs_fri\n SET status = 'queued', attempts = attempts + 1, updated_at = now(), processing_started_at = now()\n WHERE (status = 'in_progress' AND processing_started_at <= now() - $1::interval AND attempts < $2)\n OR (status = 'failed' AND attempts < $2)\n RETURNING id, status, attempts\n " }, "b7d3b30bff2ed9aabcdaed89ebfd1f0303b70c6d5483ff9183475bb232a04f21": { "describe": { @@ -9124,241 +10302,16 @@ false, false, false, - false - ], - "parameters": { - "Left": [ - "Int4Array", - "Text" - ] - } - }, - "query": "\n UPDATE prover_jobs_fri\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now(),\n picked_by = $2\n WHERE id = (\n SELECT id\n FROM prover_jobs_fri\n WHERE status = 'queued'\n AND protocol_version = ANY($1)\n ORDER BY aggregation_round DESC, l1_batch_number ASC, id ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING prover_jobs_fri.id, prover_jobs_fri.l1_batch_number, prover_jobs_fri.circuit_id,\n prover_jobs_fri.aggregation_round, prover_jobs_fri.sequence_number, prover_jobs_fri.depth,\n prover_jobs_fri.is_node_final_proof\n " - }, - "d5dea31f2a325bb44e8ef2cbbabbeb73fd6996a3e6cb99d62c6b97a4aa49c1ca": { - "describe": { - "columns": [ - { - "name": "number", - "ordinal": 0, - "type_info": "Int8" - }, - { - "name": "timestamp", - "ordinal": 1, - "type_info": "Int8" - }, - { - "name": "is_finished", - "ordinal": 2, - "type_info": "Bool" - }, - { - "name": "l1_tx_count", - "ordinal": 3, - "type_info": "Int4" - }, - { - "name": "l2_tx_count", - "ordinal": 4, - "type_info": "Int4" - }, - { - "name": "fee_account_address", - "ordinal": 5, - "type_info": "Bytea" - }, - { - "name": "bloom", - "ordinal": 6, - "type_info": "Bytea" - }, - { - "name": "priority_ops_onchain_data", - "ordinal": 7, - "type_info": "ByteaArray" - }, - { - "name": "hash", - "ordinal": 8, - "type_info": "Bytea" - }, - { - "name": "parent_hash", - "ordinal": 9, - "type_info": "Bytea" - }, - { - "name": "commitment", - "ordinal": 10, - "type_info": "Bytea" - }, - { - "name": "compressed_write_logs", - "ordinal": 11, - "type_info": "Bytea" - }, - { - "name": "compressed_contracts", - "ordinal": 12, - "type_info": "Bytea" - }, - { - "name": "eth_prove_tx_id", - "ordinal": 13, - "type_info": "Int4" - }, - { - "name": "eth_commit_tx_id", - "ordinal": 14, - "type_info": "Int4" - }, - { - "name": "eth_execute_tx_id", - "ordinal": 15, - "type_info": "Int4" - }, - { - "name": "merkle_root_hash", - "ordinal": 16, - "type_info": "Bytea" - }, - { - "name": "l2_to_l1_logs", - "ordinal": 17, - "type_info": "ByteaArray" - }, - { - "name": "l2_to_l1_messages", - "ordinal": 18, - "type_info": "ByteaArray" - }, - { - "name": "used_contract_hashes", - "ordinal": 19, - "type_info": "Jsonb" - }, - { - "name": "compressed_initial_writes", - "ordinal": 20, - "type_info": "Bytea" - }, - { - "name": "compressed_repeated_writes", - "ordinal": 21, - "type_info": "Bytea" - }, - { - "name": "l2_l1_compressed_messages", - "ordinal": 22, - "type_info": "Bytea" - }, - { - "name": "l2_l1_merkle_root", - "ordinal": 23, - "type_info": "Bytea" - }, - { - "name": "l1_gas_price", - "ordinal": 24, - "type_info": "Int8" - }, - { - "name": "l2_fair_gas_price", - "ordinal": 25, - "type_info": "Int8" - }, - { - "name": "rollup_last_leaf_index", - "ordinal": 26, - "type_info": "Int8" - }, - { - "name": "zkporter_is_available", - "ordinal": 27, - "type_info": "Bool" - }, - { - "name": "bootloader_code_hash", - "ordinal": 28, - "type_info": "Bytea" - }, - { - "name": "default_aa_code_hash", - "ordinal": 29, - "type_info": "Bytea" - }, - { - "name": "base_fee_per_gas", - "ordinal": 30, - "type_info": "Numeric" - }, - { - "name": "aux_data_hash", - "ordinal": 31, - "type_info": "Bytea" - }, - { - "name": "pass_through_data_hash", - "ordinal": 32, - "type_info": "Bytea" - }, - { - "name": "meta_parameters_hash", - "ordinal": 33, - "type_info": "Bytea" - }, - { - "name": "protocol_version", - "ordinal": 34, - "type_info": "Int4" - } - ], - "nullable": [ - false, - false, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true, - true, - true, - true, - true, - false, - false, - false, - true, - true, - true, - true, - false, - false, - true, - true, - true, - true, - false, - true, - true, - true, - true + false ], "parameters": { "Left": [ - "Int8", - "Int8" + "Int4Array", + "Text" ] } }, - "query": "SELECT number, timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, rollup_last_leaf_index, zkporter_is_available, bootloader_code_hash, default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, meta_parameters_hash, protocol_version FROM (SELECT l1_batches.*, row_number() OVER (ORDER BY number ASC) AS row_number FROM l1_batches WHERE eth_commit_tx_id IS NOT NULL AND l1_batches.skip_proof = TRUE AND l1_batches.number > $1 ORDER BY number LIMIT $2) inn WHERE number - row_number = $1" + "query": "\n UPDATE prover_jobs_fri\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now(),\n picked_by = $2\n WHERE id = (\n SELECT id\n FROM prover_jobs_fri\n WHERE status = 'queued'\n AND protocol_version = ANY($1)\n ORDER BY aggregation_round DESC, l1_batch_number ASC, id ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING prover_jobs_fri.id, prover_jobs_fri.l1_batch_number, prover_jobs_fri.circuit_id,\n prover_jobs_fri.aggregation_round, prover_jobs_fri.sequence_number, prover_jobs_fri.depth,\n prover_jobs_fri.is_node_final_proof\n " }, "d6709f3ce8f08f988e10a0e0fb5c06db9488834a85066babaf3d56cf212b4ea0": { "describe": { @@ -9534,663 +10487,349 @@ "parameters": { "Left": [ "Varchar", - "Bytea" - ] - } - }, - "query": "UPDATE transactions\n SET error = $1, updated_at = now()\n WHERE hash = $2" - }, - "dd8f0bbabcd646457a9174a590c79a45d4f744624a74f79017eacbab6b4f9b0a": { - "describe": { - "columns": [ - { - "name": "id", - "ordinal": 0, - "type_info": "Int4" - } - ], - "nullable": [ - false - ], - "parameters": { - "Left": [] - } - }, - "query": "SELECT id FROM protocol_versions" - }, - "ddb3b38be2b6038b63288961f46ba7d3bb7250caff1146e13c5ee77b6a994ffc": { - "describe": { - "columns": [ - { - "name": "circuit_type", - "ordinal": 0, - "type_info": "Text" - }, - { - "name": "result", - "ordinal": 1, - "type_info": "Bytea" - } - ], - "nullable": [ - false, - true - ], - "parameters": { - "Left": [ - "Int8", - "Int4" - ] - } - }, - "query": "\n SELECT circuit_type, result from prover_jobs\n WHERE l1_batch_number = $1 AND status = 'successful' AND aggregation_round = $2\n ORDER BY sequence_number ASC;\n " - }, - "ddd8b105f5e5cf9db40b14ea47e4ba2b3875f89280019464be34f51605833f1b": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Text", - "Text", - "Int4", - "Text" - ] - } - }, - "query": "UPDATE gpu_prover_queue_fri SET instance_status = $1, updated_at = now() WHERE instance_host = $2::text::inet AND instance_port = $3 AND zone = $4\n " - }, - "de960625b0fa0b766aacab74473fcd0332a3f7dc356648452a6a63189a8b7cc3": { - "describe": { - "columns": [ - { - "name": "protocol_version", - "ordinal": 0, - "type_info": "Int4" - } - ], - "nullable": [ - true - ], - "parameters": { - "Left": [ - "Int8" - ] - } - }, - "query": "SELECT protocol_version FROM witness_inputs_fri WHERE l1_batch_number = $1" - }, - "deaf3789ac968e299fe0e5a7f1c72494af8ecd664da9c901ec9c0c5e7c29bb65": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "ByteaArray", - "ByteaArray", - "ByteaArray", - "ByteaArray", - "ByteaArray" - ] - } - }, - "query": "INSERT INTO storage (hashed_key, address, key, value, tx_hash, created_at, updated_at) SELECT u.hashed_key, u.address, u.key, u.value, u.tx_hash, now(), now() FROM UNNEST ($1::bytea[], $2::bytea[], $3::bytea[], $4::bytea[], $5::bytea[]) AS u(hashed_key, address, key, value, tx_hash) ON CONFLICT (hashed_key) DO UPDATE SET tx_hash = excluded.tx_hash, value = excluded.value, updated_at = now()" - }, - "df857ee85c600bd90687b2ed91517d91a5dc4de3cd6c15c34119ca52a3321828": { - "describe": { - "columns": [ - { - "name": "l1_batch_number", - "ordinal": 0, - "type_info": "Int8" - }, - { - "name": "merkle_tree_paths", - "ordinal": 1, - "type_info": "Bytea" - }, - { - "name": "created_at", - "ordinal": 2, - "type_info": "Timestamp" - }, - { - "name": "updated_at", - "ordinal": 3, - "type_info": "Timestamp" - }, - { - "name": "status", - "ordinal": 4, - "type_info": "Text" - }, - { - "name": "time_taken", - "ordinal": 5, - "type_info": "Time" - }, - { - "name": "processing_started_at", - "ordinal": 6, - "type_info": "Timestamp" - }, - { - "name": "error", - "ordinal": 7, - "type_info": "Varchar" - }, - { - "name": "attempts", - "ordinal": 8, - "type_info": "Int4" - }, - { - "name": "merkel_tree_paths_blob_url", - "ordinal": 9, - "type_info": "Text" - }, - { - "name": "is_blob_cleaned", - "ordinal": 10, - "type_info": "Bool" - }, - { - "name": "protocol_version", - "ordinal": 11, - "type_info": "Int4" - } - ], - "nullable": [ - false, - true, - false, - false, - false, - false, - true, - true, - false, - true, - false, - true - ], - "parameters": { - "Left": [ - "Interval", - "Int4", - "Int8", - "Int4Array" - ] - } - }, - "query": "\n UPDATE witness_inputs\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now()\n WHERE l1_batch_number = (\n SELECT l1_batch_number\n FROM witness_inputs\n WHERE l1_batch_number <= $3\n AND\n ( status = 'queued'\n OR (status = 'in_progress' AND processing_started_at < now() - $1::interval)\n OR (status = 'failed' AND attempts < $2)\n )\n AND protocol_version = ANY($4)\n ORDER BY l1_batch_number ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING witness_inputs.*\n " - }, - "e05a8c74653afc78c892ddfd08e60ab040d2b2f7c4b5ee110988eac2dd0dd90d": { - "describe": { - "columns": [ - { - "name": "timestamp", - "ordinal": 0, - "type_info": "Int8" - }, - { - "name": "virtual_blocks", - "ordinal": 1, - "type_info": "Int8" - } - ], - "nullable": [ - false, - false - ], - "parameters": { - "Left": [ - "Int8", - "Int8" - ] - } - }, - "query": "SELECT timestamp, virtual_blocks FROM miniblocks WHERE number BETWEEN $1 AND $2 ORDER BY number" - }, - "e1ad7a51afef6bd7a95df3294f64b7b1bdc4c4fc7ae5c4195802177986f3e876": { - "describe": { - "columns": [ - { - "name": "id", - "ordinal": 0, - "type_info": "Int8" - }, - { - "name": "status", - "ordinal": 1, - "type_info": "Text" - }, - { - "name": "attempts", - "ordinal": 2, - "type_info": "Int2" - } - ], - "nullable": [ - false, - false, - false - ], - "parameters": { - "Left": [ - "Interval", - "Int2" + "Bytea" ] } }, - "query": "\n UPDATE prover_jobs_fri\n SET status = 'queued', attempts = attempts + 1, updated_at = now(), processing_started_at = now()\n WHERE (status = 'in_progress' AND processing_started_at <= now() - $1::interval AND attempts < $2)\n OR (status = 'failed' AND attempts < $2)\n RETURNING id, status, attempts\n " + "query": "UPDATE transactions\n SET error = $1, updated_at = now()\n WHERE hash = $2" }, - "e29d263f33257a37f391907b7ff588f416a0350b606f16f4779fa1d3bf4be08b": { + "dd8f0bbabcd646457a9174a590c79a45d4f744624a74f79017eacbab6b4f9b0a": { "describe": { "columns": [ { "name": "id", "ordinal": 0, "type_info": "Int4" - }, - { - "name": "eth_tx_id", - "ordinal": 1, - "type_info": "Int4" } ], "nullable": [ - false, false ], "parameters": { - "Left": [ - "Text" - ] + "Left": [] } }, - "query": "UPDATE eth_txs_history\n SET updated_at = now(), confirmed_at = now()\n WHERE tx_hash = $1\n RETURNING id, eth_tx_id" + "query": "SELECT id FROM protocol_versions" }, - "e409b39a5e62a3a4ec5d3b6aae4935c13b93129a22ffe6a0b68b5ade1f6082c8": { + "ddb3b38be2b6038b63288961f46ba7d3bb7250caff1146e13c5ee77b6a994ffc": { "describe": { "columns": [ { - "name": "number", + "name": "circuit_type", "ordinal": 0, - "type_info": "Int8" + "type_info": "Text" }, { - "name": "hash", + "name": "result", "ordinal": 1, "type_info": "Bytea" } ], "nullable": [ false, - false + true ], "parameters": { "Left": [ "Int8", - "Int4", - "Int8" + "Int4" ] } }, - "query": "SELECT number, hash FROM miniblocks WHERE number >= $1 and protocol_version = $2 ORDER BY number LIMIT $3" + "query": "\n SELECT circuit_type, result from prover_jobs\n WHERE l1_batch_number = $1 AND status = 'successful' AND aggregation_round = $2\n ORDER BY sequence_number ASC;\n " }, - "e626aa2efb6ba875a12f2b4e37b0ba8052810e73fa5e2d3280f747f7b89b956f": { + "ddd8b105f5e5cf9db40b14ea47e4ba2b3875f89280019464be34f51605833f1b": { "describe": { "columns": [], "nullable": [], "parameters": { "Left": [ "Text", - "Int8" + "Text", + "Int4", + "Text" ] } }, - "query": "UPDATE proof_generation_details SET status='generated', proof_blob_url = $1, updated_at = now() WHERE l1_batch_number = $2" + "query": "UPDATE gpu_prover_queue_fri SET instance_status = $1, updated_at = now() WHERE instance_host = $2::text::inet AND instance_port = $3 AND zone = $4\n " }, - "e6fc424c622576166999df4487068cc1447b09464c48f379f882c45172f34a78": { + "de960625b0fa0b766aacab74473fcd0332a3f7dc356648452a6a63189a8b7cc3": { "describe": { "columns": [ - { - "name": "number", - "ordinal": 0, - "type_info": "Int8" - }, - { - "name": "l1_tx_count", - "ordinal": 1, - "type_info": "Int4" - }, - { - "name": "l2_tx_count", - "ordinal": 2, - "type_info": "Int4" - }, - { - "name": "timestamp", - "ordinal": 3, - "type_info": "Int8" - }, - { - "name": "is_finished", - "ordinal": 4, - "type_info": "Bool" - }, - { - "name": "fee_account_address", - "ordinal": 5, - "type_info": "Bytea" - }, - { - "name": "l2_to_l1_logs", - "ordinal": 6, - "type_info": "ByteaArray" - }, - { - "name": "l2_to_l1_messages", - "ordinal": 7, - "type_info": "ByteaArray" - }, - { - "name": "bloom", - "ordinal": 8, - "type_info": "Bytea" - }, - { - "name": "priority_ops_onchain_data", - "ordinal": 9, - "type_info": "ByteaArray" - }, - { - "name": "used_contract_hashes", - "ordinal": 10, - "type_info": "Jsonb" - }, - { - "name": "base_fee_per_gas", - "ordinal": 11, - "type_info": "Numeric" - }, - { - "name": "l1_gas_price", - "ordinal": 12, - "type_info": "Int8" - }, - { - "name": "l2_fair_gas_price", - "ordinal": 13, - "type_info": "Int8" - }, - { - "name": "bootloader_code_hash", - "ordinal": 14, - "type_info": "Bytea" - }, - { - "name": "default_aa_code_hash", - "ordinal": 15, - "type_info": "Bytea" - }, { "name": "protocol_version", - "ordinal": 16, + "ordinal": 0, "type_info": "Int4" } ], "nullable": [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - true, true ], "parameters": { - "Left": [] + "Left": [ + "Int8" + ] } }, - "query": "SELECT number, l1_tx_count, l2_tx_count, timestamp, is_finished, fee_account_address, l2_to_l1_logs, l2_to_l1_messages, bloom, priority_ops_onchain_data, used_contract_hashes, base_fee_per_gas, l1_gas_price, l2_fair_gas_price, bootloader_code_hash, default_aa_code_hash, protocol_version FROM l1_batches ORDER BY number DESC LIMIT 1" - }, - "e72e3eb79c4d306775cdae718db78f8f1f7c4a97b0abfcceac15efe1c3543fff": { - "describe": { - "columns": [ - { - "name": "number", - "ordinal": 0, - "type_info": "Int8" - }, - { - "name": "timestamp", - "ordinal": 1, - "type_info": "Int8" - }, - { - "name": "is_finished", - "ordinal": 2, - "type_info": "Bool" - }, - { - "name": "l1_tx_count", - "ordinal": 3, - "type_info": "Int4" - }, - { - "name": "l2_tx_count", - "ordinal": 4, - "type_info": "Int4" - }, - { - "name": "fee_account_address", - "ordinal": 5, - "type_info": "Bytea" - }, - { - "name": "bloom", - "ordinal": 6, - "type_info": "Bytea" - }, - { - "name": "priority_ops_onchain_data", - "ordinal": 7, - "type_info": "ByteaArray" - }, - { - "name": "hash", - "ordinal": 8, - "type_info": "Bytea" - }, - { - "name": "parent_hash", - "ordinal": 9, - "type_info": "Bytea" - }, - { - "name": "commitment", - "ordinal": 10, - "type_info": "Bytea" - }, - { - "name": "compressed_write_logs", - "ordinal": 11, - "type_info": "Bytea" - }, - { - "name": "compressed_contracts", - "ordinal": 12, - "type_info": "Bytea" - }, - { - "name": "eth_prove_tx_id", - "ordinal": 13, - "type_info": "Int4" - }, - { - "name": "eth_commit_tx_id", - "ordinal": 14, - "type_info": "Int4" - }, - { - "name": "eth_execute_tx_id", - "ordinal": 15, - "type_info": "Int4" - }, - { - "name": "merkle_root_hash", - "ordinal": 16, - "type_info": "Bytea" - }, - { - "name": "l2_to_l1_logs", - "ordinal": 17, - "type_info": "ByteaArray" - }, - { - "name": "l2_to_l1_messages", - "ordinal": 18, - "type_info": "ByteaArray" - }, - { - "name": "used_contract_hashes", - "ordinal": 19, - "type_info": "Jsonb" - }, - { - "name": "compressed_initial_writes", - "ordinal": 20, - "type_info": "Bytea" - }, - { - "name": "compressed_repeated_writes", - "ordinal": 21, - "type_info": "Bytea" - }, + "query": "SELECT protocol_version FROM witness_inputs_fri WHERE l1_batch_number = $1" + }, + "deaf3789ac968e299fe0e5a7f1c72494af8ecd664da9c901ec9c0c5e7c29bb65": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "ByteaArray", + "ByteaArray", + "ByteaArray", + "ByteaArray", + "ByteaArray" + ] + } + }, + "query": "INSERT INTO storage (hashed_key, address, key, value, tx_hash, created_at, updated_at) SELECT u.hashed_key, u.address, u.key, u.value, u.tx_hash, now(), now() FROM UNNEST ($1::bytea[], $2::bytea[], $3::bytea[], $4::bytea[], $5::bytea[]) AS u(hashed_key, address, key, value, tx_hash) ON CONFLICT (hashed_key) DO UPDATE SET tx_hash = excluded.tx_hash, value = excluded.value, updated_at = now()" + }, + "df857ee85c600bd90687b2ed91517d91a5dc4de3cd6c15c34119ca52a3321828": { + "describe": { + "columns": [ { - "name": "l2_l1_compressed_messages", - "ordinal": 22, - "type_info": "Bytea" + "name": "l1_batch_number", + "ordinal": 0, + "type_info": "Int8" }, { - "name": "l2_l1_merkle_root", - "ordinal": 23, + "name": "merkle_tree_paths", + "ordinal": 1, "type_info": "Bytea" }, { - "name": "l1_gas_price", - "ordinal": 24, - "type_info": "Int8" - }, - { - "name": "l2_fair_gas_price", - "ordinal": 25, - "type_info": "Int8" + "name": "created_at", + "ordinal": 2, + "type_info": "Timestamp" }, { - "name": "rollup_last_leaf_index", - "ordinal": 26, - "type_info": "Int8" + "name": "updated_at", + "ordinal": 3, + "type_info": "Timestamp" }, { - "name": "zkporter_is_available", - "ordinal": 27, - "type_info": "Bool" + "name": "status", + "ordinal": 4, + "type_info": "Text" }, { - "name": "bootloader_code_hash", - "ordinal": 28, - "type_info": "Bytea" + "name": "time_taken", + "ordinal": 5, + "type_info": "Time" }, { - "name": "default_aa_code_hash", - "ordinal": 29, - "type_info": "Bytea" + "name": "processing_started_at", + "ordinal": 6, + "type_info": "Timestamp" }, { - "name": "base_fee_per_gas", - "ordinal": 30, - "type_info": "Numeric" + "name": "error", + "ordinal": 7, + "type_info": "Varchar" }, { - "name": "aux_data_hash", - "ordinal": 31, - "type_info": "Bytea" + "name": "attempts", + "ordinal": 8, + "type_info": "Int4" }, { - "name": "pass_through_data_hash", - "ordinal": 32, - "type_info": "Bytea" + "name": "merkel_tree_paths_blob_url", + "ordinal": 9, + "type_info": "Text" }, { - "name": "meta_parameters_hash", - "ordinal": 33, - "type_info": "Bytea" + "name": "is_blob_cleaned", + "ordinal": 10, + "type_info": "Bool" }, { "name": "protocol_version", - "ordinal": 34, + "ordinal": 11, "type_info": "Int4" } ], "nullable": [ false, - false, - false, - false, + true, false, false, false, false, true, true, - true, - true, - true, - true, - true, - true, + false, true, false, + true + ], + "parameters": { + "Left": [ + "Interval", + "Int4", + "Int8", + "Int4Array" + ] + } + }, + "query": "\n UPDATE witness_inputs\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now()\n WHERE l1_batch_number = (\n SELECT l1_batch_number\n FROM witness_inputs\n WHERE l1_batch_number <= $3\n AND\n ( status = 'queued'\n OR (status = 'in_progress' AND processing_started_at < now() - $1::interval)\n OR (status = 'failed' AND attempts < $2)\n )\n AND protocol_version = ANY($4)\n ORDER BY l1_batch_number ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING witness_inputs.*\n " + }, + "e03756d19dfdf4cdffa81154e690dc7c36024dad5363e0c5440606a5a50eef53": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Bytea", + "Bytea", + "Bytea", + "Bytea", + "Bytea", + "Bytea", + "Bytea", + "Bool", + "Bytea", + "Int8", + "Bytea", + "Bytea", + "Bytea", + "Bytea", + "Int8" + ] + } + }, + "query": "UPDATE l1_batches SET hash = $1, merkle_root_hash = $2, commitment = $3, compressed_repeated_writes = $4, compressed_initial_writes = $5, l2_l1_compressed_messages = $6, l2_l1_merkle_root = $7, zkporter_is_available = $8, parent_hash = $9, rollup_last_leaf_index = $10, aux_data_hash = $11, pass_through_data_hash = $12, meta_parameters_hash = $13, compressed_state_diffs = $14, updated_at = now() WHERE number = $15 AND hash IS NULL" + }, + "e05a8c74653afc78c892ddfd08e60ab040d2b2f7c4b5ee110988eac2dd0dd90d": { + "describe": { + "columns": [ + { + "name": "timestamp", + "ordinal": 0, + "type_info": "Int8" + }, + { + "name": "virtual_blocks", + "ordinal": 1, + "type_info": "Int8" + } + ], + "nullable": [ false, + false + ], + "parameters": { + "Left": [ + "Int8", + "Int8" + ] + } + }, + "query": "SELECT timestamp, virtual_blocks FROM miniblocks WHERE number BETWEEN $1 AND $2 ORDER BY number" + }, + "e1ad7a51afef6bd7a95df3294f64b7b1bdc4c4fc7ae5c4195802177986f3e876": { + "describe": { + "columns": [ + { + "name": "id", + "ordinal": 0, + "type_info": "Int8" + }, + { + "name": "status", + "ordinal": 1, + "type_info": "Text" + }, + { + "name": "attempts", + "ordinal": 2, + "type_info": "Int2" + } + ], + "nullable": [ false, - true, - true, - true, - true, false, + false + ], + "parameters": { + "Left": [ + "Interval", + "Int2" + ] + } + }, + "query": "\n UPDATE prover_jobs_fri\n SET status = 'queued', attempts = attempts + 1, updated_at = now(), processing_started_at = now()\n WHERE (status = 'in_progress' AND processing_started_at <= now() - $1::interval AND attempts < $2)\n OR (status = 'failed' AND attempts < $2)\n RETURNING id, status, attempts\n " + }, + "e29d263f33257a37f391907b7ff588f416a0350b606f16f4779fa1d3bf4be08b": { + "describe": { + "columns": [ + { + "name": "id", + "ordinal": 0, + "type_info": "Int4" + }, + { + "name": "eth_tx_id", + "ordinal": 1, + "type_info": "Int4" + } + ], + "nullable": [ false, - true, - true, - true, - true, + false + ], + "parameters": { + "Left": [ + "Text" + ] + } + }, + "query": "UPDATE eth_txs_history\n SET updated_at = now(), confirmed_at = now()\n WHERE tx_hash = $1\n RETURNING id, eth_tx_id" + }, + "e409b39a5e62a3a4ec5d3b6aae4935c13b93129a22ffe6a0b68b5ade1f6082c8": { + "describe": { + "columns": [ + { + "name": "number", + "ordinal": 0, + "type_info": "Int8" + }, + { + "name": "hash", + "ordinal": 1, + "type_info": "Bytea" + } + ], + "nullable": [ false, - true, - true, - true, - true + false ], "parameters": { "Left": [ - "Int8", - "Int8", + "Int8", + "Int4", + "Int8" + ] + } + }, + "query": "SELECT number, hash FROM miniblocks WHERE number >= $1 and protocol_version = $2 ORDER BY number LIMIT $3" + }, + "e626aa2efb6ba875a12f2b4e37b0ba8052810e73fa5e2d3280f747f7b89b956f": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Text", "Int8" ] } }, - "query": "SELECT number, timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, rollup_last_leaf_index, zkporter_is_available, bootloader_code_hash, default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, meta_parameters_hash, protocol_version FROM l1_batches WHERE number BETWEEN $1 AND $2 ORDER BY number LIMIT $3" + "query": "UPDATE proof_generation_details SET status='generated', proof_blob_url = $1, updated_at = now() WHERE l1_batch_number = $2" }, "e900682a160af90d532da47a1222fc1d7c9962ee8996dbd9b9bb63f13820cf2b": { "describe": { @@ -10516,254 +11155,6 @@ }, "query": "\n UPDATE leaf_aggregation_witness_jobs\n SET is_blob_cleaned=TRUE\n WHERE l1_batch_number = ANY($1);\n " }, - "ee20215e53d1467e96d3db3a95dbb9a8cbb1c9407d0c914b4168637604d91c29": { - "describe": { - "columns": [ - { - "name": "number", - "ordinal": 0, - "type_info": "Int8" - }, - { - "name": "timestamp", - "ordinal": 1, - "type_info": "Int8" - }, - { - "name": "is_finished", - "ordinal": 2, - "type_info": "Bool" - }, - { - "name": "l1_tx_count", - "ordinal": 3, - "type_info": "Int4" - }, - { - "name": "l2_tx_count", - "ordinal": 4, - "type_info": "Int4" - }, - { - "name": "fee_account_address", - "ordinal": 5, - "type_info": "Bytea" - }, - { - "name": "bloom", - "ordinal": 6, - "type_info": "Bytea" - }, - { - "name": "priority_ops_onchain_data", - "ordinal": 7, - "type_info": "ByteaArray" - }, - { - "name": "hash", - "ordinal": 8, - "type_info": "Bytea" - }, - { - "name": "parent_hash", - "ordinal": 9, - "type_info": "Bytea" - }, - { - "name": "commitment", - "ordinal": 10, - "type_info": "Bytea" - }, - { - "name": "compressed_write_logs", - "ordinal": 11, - "type_info": "Bytea" - }, - { - "name": "compressed_contracts", - "ordinal": 12, - "type_info": "Bytea" - }, - { - "name": "eth_prove_tx_id", - "ordinal": 13, - "type_info": "Int4" - }, - { - "name": "eth_commit_tx_id", - "ordinal": 14, - "type_info": "Int4" - }, - { - "name": "eth_execute_tx_id", - "ordinal": 15, - "type_info": "Int4" - }, - { - "name": "merkle_root_hash", - "ordinal": 16, - "type_info": "Bytea" - }, - { - "name": "l2_to_l1_logs", - "ordinal": 17, - "type_info": "ByteaArray" - }, - { - "name": "l2_to_l1_messages", - "ordinal": 18, - "type_info": "ByteaArray" - }, - { - "name": "used_contract_hashes", - "ordinal": 19, - "type_info": "Jsonb" - }, - { - "name": "compressed_initial_writes", - "ordinal": 20, - "type_info": "Bytea" - }, - { - "name": "compressed_repeated_writes", - "ordinal": 21, - "type_info": "Bytea" - }, - { - "name": "l2_l1_compressed_messages", - "ordinal": 22, - "type_info": "Bytea" - }, - { - "name": "l2_l1_merkle_root", - "ordinal": 23, - "type_info": "Bytea" - }, - { - "name": "l1_gas_price", - "ordinal": 24, - "type_info": "Int8" - }, - { - "name": "l2_fair_gas_price", - "ordinal": 25, - "type_info": "Int8" - }, - { - "name": "rollup_last_leaf_index", - "ordinal": 26, - "type_info": "Int8" - }, - { - "name": "zkporter_is_available", - "ordinal": 27, - "type_info": "Bool" - }, - { - "name": "bootloader_code_hash", - "ordinal": 28, - "type_info": "Bytea" - }, - { - "name": "default_aa_code_hash", - "ordinal": 29, - "type_info": "Bytea" - }, - { - "name": "base_fee_per_gas", - "ordinal": 30, - "type_info": "Numeric" - }, - { - "name": "aux_data_hash", - "ordinal": 31, - "type_info": "Bytea" - }, - { - "name": "pass_through_data_hash", - "ordinal": 32, - "type_info": "Bytea" - }, - { - "name": "meta_parameters_hash", - "ordinal": 33, - "type_info": "Bytea" - }, - { - "name": "protocol_version", - "ordinal": 34, - "type_info": "Int4" - } - ], - "nullable": [ - false, - false, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true, - true, - true, - true, - true, - false, - false, - false, - true, - true, - true, - true, - false, - false, - true, - true, - true, - true, - false, - true, - true, - true, - true - ], - "parameters": { - "Left": [] - } - }, - "query": "SELECT number, timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, rollup_last_leaf_index, zkporter_is_available, bootloader_code_hash, default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, meta_parameters_hash, protocol_version FROM l1_batches WHERE number = 0 OR eth_commit_tx_id IS NOT NULL AND commitment IS NOT NULL ORDER BY number DESC LIMIT 1" - }, - "ee5727dc06a7385969e834556b96bbfdf12a5049a1a1c270f203ef3fa0e8cb94": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Bytea", - "Bytea", - "Bytea", - "Bytea", - "Bytea", - "Bytea", - "Bytea", - "Bytea", - "Bool", - "Bytea", - "Int8", - "Bytea", - "Bytea", - "Bytea", - "Int8" - ] - } - }, - "query": "UPDATE l1_batches SET hash = $1, merkle_root_hash = $2, commitment = $3, default_aa_code_hash = $4, compressed_repeated_writes = $5, compressed_initial_writes = $6, l2_l1_compressed_messages = $7, l2_l1_merkle_root = $8, zkporter_is_available = $9, bootloader_code_hash = $10, rollup_last_leaf_index = $11, aux_data_hash = $12, pass_through_data_hash = $13, meta_parameters_hash = $14, updated_at = now() WHERE number = $15" - }, "ee74b42d1a6a52784124751dae6c7eca3fd36f5a3bb26de56efc2b810da7033a": { "describe": { "columns": [ diff --git a/core/lib/dal/src/blocks_dal.rs b/core/lib/dal/src/blocks_dal.rs index 69913a2dc14..c2771d30ba8 100644 --- a/core/lib/dal/src/blocks_dal.rs +++ b/core/lib/dal/src/blocks_dal.rs @@ -153,7 +153,8 @@ impl BlocksDal<'_, '_> { timestamp, is_finished, fee_account_address, l2_to_l1_logs, l2_to_l1_messages, \ bloom, priority_ops_onchain_data, \ used_contract_hashes, base_fee_per_gas, l1_gas_price, \ - l2_fair_gas_price, bootloader_code_hash, default_aa_code_hash, protocol_version \ + l2_fair_gas_price, bootloader_code_hash, default_aa_code_hash, protocol_version, \ + system_logs, compressed_state_diffs, events_state_queue_commitment, bootloader_initial_memory_commitment \ FROM l1_batches \ WHERE eth_commit_tx_id = $1 \ OR eth_prove_tx_id = $1 \ @@ -182,7 +183,9 @@ impl BlocksDal<'_, '_> { l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, \ rollup_last_leaf_index, zkporter_is_available, bootloader_code_hash, \ default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, \ - meta_parameters_hash, protocol_version \ + meta_parameters_hash, protocol_version, compressed_state_diffs, \ + gas_per_pubdata_byte_in_block, gas_per_pubdata_limit, skip_proof, system_logs, \ + events_state_queue_commitment, bootloader_initial_memory_commitment FROM l1_batches \ WHERE number = $1", number.0 as i64 @@ -203,7 +206,8 @@ impl BlocksDal<'_, '_> { timestamp, is_finished, fee_account_address, l2_to_l1_logs, l2_to_l1_messages, \ bloom, priority_ops_onchain_data, \ used_contract_hashes, base_fee_per_gas, l1_gas_price, \ - l2_fair_gas_price, bootloader_code_hash, default_aa_code_hash, protocol_version \ + l2_fair_gas_price, bootloader_code_hash, default_aa_code_hash, protocol_version, \ + compressed_state_diffs, system_logs, events_state_queue_commitment, bootloader_initial_memory_commitment \ FROM l1_batches \ WHERE number = $1", number.0 as i64 @@ -301,6 +305,11 @@ impl BlocksDal<'_, '_> { .iter() .map(|log| log.to_bytes().to_vec()) .collect(); + let system_logs = header + .system_logs + .iter() + .map(|log| log.to_bytes().to_vec()) + .collect::>>(); // Serialization should always succeed. let initial_bootloader_contents = serde_json::to_value(initial_bootloader_contents) @@ -318,9 +327,9 @@ impl BlocksDal<'_, '_> { bloom, priority_ops_onchain_data, \ predicted_commit_gas_cost, predicted_prove_gas_cost, predicted_execute_gas_cost, \ initial_bootloader_heap_content, used_contract_hashes, base_fee_per_gas, \ - l1_gas_price, l2_fair_gas_price, bootloader_code_hash, default_aa_code_hash, protocol_version, \ - created_at, updated_at \ - ) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21, now(), now())", + l1_gas_price, l2_fair_gas_price, bootloader_code_hash, default_aa_code_hash, \ + protocol_version, system_logs, events_state_queue_commitment, bootloader_initial_memory_commitment, created_at, updated_at\ + ) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21, $22, $23, $24, now(), now())", header.number.0 as i64, header.l1_tx_count as i32, header.l2_tx_count as i32, @@ -348,6 +357,9 @@ impl BlocksDal<'_, '_> { .default_aa .as_bytes(), header.protocol_version.map(|v| v as i32), + &system_logs, + header.events_queue_commitment.unwrap_or_default().as_bytes().to_vec(), + header.bootloader_initial_content_commitment.unwrap_or_default().as_bytes().to_vec() ) .execute(self.storage.conn()) .await?; @@ -479,8 +491,8 @@ impl BlocksDal<'_, '_> { l2_l1_compressed_messages = $7, l2_l1_merkle_root = $8, \ zkporter_is_available = $9, bootloader_code_hash = $10, rollup_last_leaf_index = $11, \ aux_data_hash = $12, pass_through_data_hash = $13, meta_parameters_hash = $14, \ - updated_at = now() \ - WHERE number = $15", + compressed_state_diffs = $15, updated_at = now() \ + WHERE number = $16", metadata.root_hash.as_bytes(), metadata.merkle_root_hash.as_bytes(), metadata.commitment.as_bytes(), @@ -495,6 +507,7 @@ impl BlocksDal<'_, '_> { metadata.aux_data_hash.as_bytes(), metadata.pass_through_data_hash.as_bytes(), metadata.meta_parameters_hash.as_bytes(), + metadata.state_diffs_compressed, 0, ) .execute(self.storage.conn()) @@ -515,8 +528,8 @@ impl BlocksDal<'_, '_> { l2_l1_compressed_messages = $6, l2_l1_merkle_root = $7, \ zkporter_is_available = $8, parent_hash = $9, rollup_last_leaf_index = $10, \ aux_data_hash = $11, pass_through_data_hash = $12, meta_parameters_hash = $13, \ - updated_at = now() \ - WHERE number = $14 AND hash IS NULL", + compressed_state_diffs = $14, updated_at = now() \ + WHERE number = $15 AND hash IS NULL", metadata.root_hash.as_bytes(), metadata.merkle_root_hash.as_bytes(), metadata.commitment.as_bytes(), @@ -530,6 +543,7 @@ impl BlocksDal<'_, '_> { metadata.aux_data_hash.as_bytes(), metadata.pass_through_data_hash.as_bytes(), metadata.meta_parameters_hash.as_bytes(), + metadata.state_diffs_compressed, number.0 as i64, ) .instrument("save_blocks_metadata") @@ -594,7 +608,9 @@ impl BlocksDal<'_, '_> { l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, \ rollup_last_leaf_index, zkporter_is_available, bootloader_code_hash, \ default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, \ - meta_parameters_hash, protocol_version \ + meta_parameters_hash, protocol_version, compressed_state_diffs, \ + gas_per_pubdata_byte_in_block, gas_per_pubdata_limit, skip_proof, system_logs, \ + events_state_queue_commitment, bootloader_initial_memory_commitment FROM l1_batches \ WHERE number = 0 OR eth_commit_tx_id IS NOT NULL AND commitment IS NOT NULL \ ORDER BY number DESC \ @@ -689,7 +705,9 @@ impl BlocksDal<'_, '_> { l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, \ rollup_last_leaf_index, zkporter_is_available, bootloader_code_hash, \ default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, \ - meta_parameters_hash, protocol_version \ + meta_parameters_hash, protocol_version, compressed_state_diffs, \ + gas_per_pubdata_byte_in_block, gas_per_pubdata_limit, skip_proof, system_logs, \ + events_state_queue_commitment, bootloader_initial_memory_commitment \ FROM l1_batches \ WHERE eth_commit_tx_id IS NOT NULL AND eth_prove_tx_id IS NULL \ ORDER BY number LIMIT $1", @@ -755,7 +773,8 @@ impl BlocksDal<'_, '_> { l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, \ rollup_last_leaf_index, zkporter_is_available, bootloader_code_hash, \ default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, \ - meta_parameters_hash, protocol_version \ + meta_parameters_hash, skip_proof, gas_per_pubdata_byte_in_block, gas_per_pubdata_limit, \ + system_logs, compressed_state_diffs, protocol_version, events_state_queue_commitment, bootloader_initial_memory_commitment \ FROM \ (SELECT l1_batches.*, row_number() OVER (ORDER BY number ASC) AS row_number \ FROM l1_batches \ @@ -794,7 +813,9 @@ impl BlocksDal<'_, '_> { l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, \ rollup_last_leaf_index, zkporter_is_available, bootloader_code_hash, \ default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, \ - meta_parameters_hash, protocol_version \ + meta_parameters_hash, protocol_version, compressed_state_diffs, \ + gas_per_pubdata_byte_in_block, gas_per_pubdata_limit, skip_proof, system_logs, \ + events_state_queue_commitment, bootloader_initial_memory_commitment \ FROM l1_batches \ WHERE eth_prove_tx_id IS NOT NULL AND eth_execute_tx_id IS NULL \ ORDER BY number LIMIT $1", @@ -871,7 +892,9 @@ impl BlocksDal<'_, '_> { l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, \ rollup_last_leaf_index, zkporter_is_available, bootloader_code_hash, \ default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, \ - meta_parameters_hash, protocol_version \ + meta_parameters_hash, protocol_version, compressed_state_diffs, \ + gas_per_pubdata_byte_in_block, gas_per_pubdata_limit, skip_proof, system_logs, \ + events_state_queue_commitment, bootloader_initial_memory_commitment \ FROM l1_batches \ WHERE number BETWEEN $1 AND $2 \ ORDER BY number LIMIT $3", @@ -906,7 +929,9 @@ impl BlocksDal<'_, '_> { l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, \ rollup_last_leaf_index, zkporter_is_available, l1_batches.bootloader_code_hash, \ l1_batches.default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, \ - meta_parameters_hash, protocol_version \ + meta_parameters_hash, protocol_version, compressed_state_diffs, \ + gas_per_pubdata_byte_in_block, gas_per_pubdata_limit, skip_proof, system_logs, \ + events_state_queue_commitment, bootloader_initial_memory_commitment \ FROM l1_batches \ JOIN protocol_versions ON protocol_versions.id = l1_batches.protocol_version \ WHERE eth_commit_tx_id IS NULL \ @@ -973,7 +998,8 @@ impl BlocksDal<'_, '_> { timestamp, is_finished, fee_account_address, l2_to_l1_logs, l2_to_l1_messages, \ bloom, priority_ops_onchain_data, \ used_contract_hashes, base_fee_per_gas, l1_gas_price, \ - l2_fair_gas_price, bootloader_code_hash, default_aa_code_hash, protocol_version \ + l2_fair_gas_price, bootloader_code_hash, default_aa_code_hash, protocol_version, \ + compressed_state_diffs, system_logs, events_state_queue_commitment, bootloader_initial_memory_commitment \ FROM l1_batches \ ORDER BY number DESC \ LIMIT 1" diff --git a/core/lib/dal/src/models/storage_block.rs b/core/lib/dal/src/models/storage_block.rs index d0077a2f7a1..dd17dffa24b 100644 --- a/core/lib/dal/src/models/storage_block.rs +++ b/core/lib/dal/src/models/storage_block.rs @@ -43,6 +43,10 @@ pub struct StorageL1BatchHeader { pub bootloader_code_hash: Option>, pub default_aa_code_hash: Option>, pub protocol_version: Option, + pub system_logs: Vec>, + pub compressed_state_diffs: Option>, + pub events_state_queue_commitment: Option>, + pub bootloader_initial_memory_commitment: Option>, } impl From for L1BatchHeader { @@ -53,6 +57,12 @@ impl From for L1BatchHeader { .map(|raw_data| raw_data.into()) .collect(); + let system_logs: Vec<_> = l1_batch + .system_logs + .into_iter() + .map(|raw_log| L2ToL1Log::from_slice(&raw_log)) + .collect(); + L1BatchHeader { number: L1BatchNumber(l1_batch.number as u32), is_finished: l1_batch.is_finished, @@ -77,9 +87,16 @@ impl From for L1BatchHeader { ), l1_gas_price: l1_batch.l1_gas_price as u64, l2_fair_gas_price: l1_batch.l2_fair_gas_price as u64, + system_logs, protocol_version: l1_batch .protocol_version .map(|v| (v as u16).try_into().unwrap()), + events_queue_commitment: l1_batch + .events_state_queue_commitment + .map(|v| H256::from_slice(&v)), + bootloader_initial_content_commitment: l1_batch + .bootloader_initial_memory_commitment + .map(|v| H256::from_slice(&v)), } } } @@ -151,7 +168,19 @@ pub struct StorageL1Batch { pub l1_gas_price: i64, pub l2_fair_gas_price: i64, + // These fields are not used, but are present for compatibility reasons + pub gas_per_pubdata_byte_in_block: Option, + pub gas_per_pubdata_limit: i64, + + pub skip_proof: bool, + + pub system_logs: Vec>, + pub compressed_state_diffs: Option>, + pub protocol_version: Option, + + pub events_state_queue_commitment: Option>, + pub bootloader_initial_memory_commitment: Option>, } impl From for L1BatchHeader { @@ -162,6 +191,12 @@ impl From for L1BatchHeader { .map(Vec::into) .collect(); + let system_logs: Vec<_> = l1_batch + .system_logs + .into_iter() + .map(|raw_log| L2ToL1Log::from_slice(&raw_log)) + .collect(); + L1BatchHeader { number: L1BatchNumber(l1_batch.number as u32), is_finished: l1_batch.is_finished, @@ -186,9 +221,16 @@ impl From for L1BatchHeader { ), l1_gas_price: l1_batch.l1_gas_price as u64, l2_fair_gas_price: l1_batch.l2_fair_gas_price as u64, + system_logs, protocol_version: l1_batch .protocol_version .map(|v| (v as u16).try_into().unwrap()), + events_queue_commitment: l1_batch + .events_state_queue_commitment + .map(|v| H256::from_slice(&v)), + bootloader_initial_content_commitment: l1_batch + .bootloader_initial_memory_commitment + .map(|v| H256::from_slice(&v)), } } } @@ -257,6 +299,9 @@ impl TryInto for StorageL1Batch { .ok_or(StorageL1BatchConvertError::Incomplete)?, ), }, + state_diffs_compressed: self + .compressed_state_diffs + .ok_or(StorageL1BatchConvertError::Incomplete)?, }) } } diff --git a/core/lib/dal/src/storage_logs_dedup_dal.rs b/core/lib/dal/src/storage_logs_dedup_dal.rs index 2b99000a48a..8a70ceb50fe 100644 --- a/core/lib/dal/src/storage_logs_dedup_dal.rs +++ b/core/lib/dal/src/storage_logs_dedup_dal.rs @@ -118,6 +118,19 @@ impl StorageLogsDedupDal<'_, '_> { .collect() } + pub async fn get_enumeration_index_for_key(&mut self, key: StorageKey) -> Option { + sqlx::query!( + "SELECT index \ + FROM initial_writes \ + WHERE hashed_key = $1", + key.hashed_key().0.to_vec() + ) + .fetch_optional(self.storage.conn()) + .await + .unwrap() + .map(|row| row.index as u64) + } + /// Returns `hashed_keys` that are both present in the input and in `initial_writes` table. pub async fn filter_written_slots(&mut self, hashed_keys: &[H256]) -> HashSet { let hashed_keys: Vec<_> = hashed_keys.iter().map(H256::as_bytes).collect(); diff --git a/core/lib/merkle_tree/Cargo.toml b/core/lib/merkle_tree/Cargo.toml index f8846545a4c..b21160b369c 100644 --- a/core/lib/merkle_tree/Cargo.toml +++ b/core/lib/merkle_tree/Cargo.toml @@ -14,6 +14,7 @@ vise = { git = "https://github.com/matter-labs/vise.git", version = "0.1.0", rev zksync_types = { path = "../types" } zksync_crypto = { path = "../crypto" } zksync_storage = { path = "../storage", default-features = false } +zksync_utils = { path = "../utils" } leb128 = "0.2.5" once_cell = "1.17.1" diff --git a/core/lib/merkle_tree/src/domain.rs b/core/lib/merkle_tree/src/domain.rs index add622f9139..cf3386de5f1 100644 --- a/core/lib/merkle_tree/src/domain.rs +++ b/core/lib/merkle_tree/src/domain.rs @@ -1,6 +1,7 @@ //! Tying the Merkle tree implementation to the problem domain. use rayon::{ThreadPool, ThreadPoolBuilder}; +use zksync_utils::h256_to_u256; use crate::{ storage::{MerkleTreeColumnFamily, PatchSet, Patched, RocksDBWrapper}, @@ -11,8 +12,8 @@ use zksync_crypto::hasher::blake2::Blake2Hasher; use zksync_storage::RocksDB; use zksync_types::{ proofs::{PrepareBasicCircuitsJob, StorageLogMetadata}, - writes::{InitialStorageWrite, RepeatedStorageWrite}, - L1BatchNumber, StorageLog, StorageLogKind, + writes::{InitialStorageWrite, RepeatedStorageWrite, StateDiffRecord}, + L1BatchNumber, StorageKey, StorageLog, StorageLogKind, U256, }; /// Metadata for the current tree state. @@ -29,6 +30,8 @@ pub struct TreeMetadata { pub repeated_writes: Vec, /// Witness information. As with `repeated_writes`, no-op updates will be omitted from Merkle paths. pub witness: Option, + /// State diffs performed in the processed L1 batch in the order of provided `StorageLog`s. + pub state_diffs: Vec, } #[derive(Debug, PartialEq, Eq)] @@ -68,6 +71,11 @@ impl ZkSyncTree { instr_count = kvs.len() ); + let kvs = kvs + .iter() + .map(|(k, v)| (k.hashed_key_u256(), *v)) + .collect::>(); + let mut in_memory_tree = MerkleTree::new(PatchSet::default()); let output = in_memory_tree.extend(kvs); @@ -184,15 +192,20 @@ impl ZkSyncTree { let starting_leaf_count = self.tree.latest_root().leaf_count(); let starting_root_hash = self.tree.latest_root_hash(); + let instructions_with_hashed_keys = instructions + .iter() + .map(|(k, instr)| (k.hashed_key_u256(), instr.clone())) + .collect::>(); + tracing::info!( "Extending Merkle tree with batch #{l1_batch_number} with {instr_count} ops in full mode", instr_count = instructions.len() ); let output = if let Some(thread_pool) = &self.thread_pool { - thread_pool.install(|| self.tree.extend_with_proofs(instructions.clone())) + thread_pool.install(|| self.tree.extend_with_proofs(instructions_with_hashed_keys)) } else { - self.tree.extend_with_proofs(instructions.clone()) + self.tree.extend_with_proofs(instructions_with_hashed_keys) }; let mut witness = PrepareBasicCircuitsJob::new(starting_leaf_count + 1); @@ -216,7 +229,7 @@ impl ZkSyncTree { is_write: !log.base.is_read(), first_write: matches!(log.base, TreeLogEntry::Inserted { .. }), merkle_paths, - leaf_hashed_key: *key, + leaf_hashed_key: key.hashed_key_u256(), leaf_enumeration_index: match log.base { TreeLogEntry::Updated { leaf_index, .. } | TreeLogEntry::Inserted { leaf_index } @@ -250,7 +263,7 @@ impl ZkSyncTree { }; Some((key, value)) }); - let (initial_writes, repeated_writes) = Self::extract_writes(logs, kvs); + let (initial_writes, repeated_writes, state_diffs) = Self::extract_writes(logs, kvs); tracing::info!( "Processed batch #{l1_batch_number}; root hash is {root_hash}, \ @@ -267,12 +280,13 @@ impl ZkSyncTree { initial_writes, repeated_writes, witness: Some(witness), + state_diffs, } } - fn transform_logs(storage_logs: &[StorageLog]) -> Vec<(Key, TreeInstruction)> { + fn transform_logs(storage_logs: &[StorageLog]) -> Vec<(StorageKey, TreeInstruction)> { let instructions = storage_logs.iter().map(|log| { - let key = log.key.hashed_key_u256(); + let key = log.key; let instruction = match log.kind { StorageLogKind::Write => TreeInstruction::Write(log.value), StorageLogKind::Read => TreeInstruction::Read, @@ -284,18 +298,31 @@ impl ZkSyncTree { fn extract_writes( logs: impl Iterator, - kvs: impl Iterator, - ) -> (Vec, Vec) { + kvs: impl Iterator, + ) -> ( + Vec, + Vec, + Vec, + ) { let mut initial_writes = vec![]; let mut repeated_writes = vec![]; + let mut state_diffs = vec![]; for (log_entry, (key, value)) in logs.zip(kvs) { match log_entry { TreeLogEntry::Inserted { leaf_index } => { initial_writes.push(InitialStorageWrite { index: leaf_index, - key, + key: key.hashed_key_u256(), value, }); + state_diffs.push(StateDiffRecord { + address: *key.address(), + key: h256_to_u256(*key.key()), + derived_key: StorageKey::raw_hashed_key(key.address(), key.key()), + enumeration_index: 0u64, + initial_value: U256::default(), + final_value: h256_to_u256(value), + }); } TreeLogEntry::Updated { leaf_index, @@ -306,13 +333,21 @@ impl ZkSyncTree { index: leaf_index, value, }); + state_diffs.push(StateDiffRecord { + address: *key.address(), + key: h256_to_u256(*key.key()), + derived_key: StorageKey::raw_hashed_key(key.address(), key.key()), + enumeration_index: leaf_index, + initial_value: h256_to_u256(previous_value), + final_value: h256_to_u256(value), + }); } // Else we have a no-op update that must be omitted from `repeated_writes`. } TreeLogEntry::Read { .. } | TreeLogEntry::ReadMissingKey => {} } } - (initial_writes, repeated_writes) + (initial_writes, repeated_writes, state_diffs) } fn process_l1_batch_lightweight(&mut self, storage_logs: &[StorageLog]) -> TreeMetadata { @@ -324,12 +359,17 @@ impl ZkSyncTree { kv_count = kvs.len() ); + let kvs_with_derived_key = kvs + .iter() + .map(|(k, v)| (k.hashed_key_u256(), v.clone())) + .collect::>(); + let output = if let Some(thread_pool) = &self.thread_pool { - thread_pool.install(|| self.tree.extend(kvs.clone())) + thread_pool.install(|| self.tree.extend(kvs_with_derived_key.clone())) } else { - self.tree.extend(kvs.clone()) + self.tree.extend(kvs_with_derived_key.clone()) }; - let (initial_writes, repeated_writes) = + let (initial_writes, repeated_writes, state_diffs) = Self::extract_writes(output.logs.into_iter(), kvs.into_iter()); tracing::info!( @@ -348,13 +388,14 @@ impl ZkSyncTree { initial_writes, repeated_writes, witness: None, + state_diffs, } } - fn filter_write_logs(storage_logs: &[StorageLog]) -> Vec<(Key, ValueHash)> { + fn filter_write_logs(storage_logs: &[StorageLog]) -> Vec<(StorageKey, ValueHash)> { let kvs = storage_logs.iter().filter_map(|log| match log.kind { StorageLogKind::Write => { - let key = log.key.hashed_key_u256(); + let key = log.key; Some((key, log.value)) } StorageLogKind::Read => None, diff --git a/core/lib/mini_merkle_tree/src/lib.rs b/core/lib/mini_merkle_tree/src/lib.rs index a4e9552aad6..2826e071f10 100644 --- a/core/lib/mini_merkle_tree/src/lib.rs +++ b/core/lib/mini_merkle_tree/src/lib.rs @@ -7,7 +7,7 @@ use once_cell::sync::Lazy; -use std::{fmt, iter}; +use std::{fmt, iter, str::FromStr}; #[cfg(test)] mod tests; @@ -15,8 +15,8 @@ mod tests; use zksync_basic_types::H256; use zksync_crypto::hasher::{keccak::KeccakHasher, Hasher}; -/// Maximum supported depth of Merkle trees. 10 means that the tree must have <=1,024 leaves. -const MAX_TREE_DEPTH: usize = 10; +/// Maximum supported depth of Merkle trees. 11 means that the tree must have <=2048 leaves. +const MAX_TREE_DEPTH: usize = 11; /// In-memory Merkle tree of bounded depth (no more than 10). /// @@ -88,8 +88,8 @@ impl<'a, const LEAF_SIZE: usize> MiniMerkleTree<'a, LEAF_SIZE> { /// Returns the root hash of this tree. pub fn merkle_root(self) -> H256 { if self.hashes.is_empty() { - // TODO (SMA-184): change constant to the real root hash of empty merkle tree. - H256::zero() + H256::from_str("fef7bd9f889811e59e4076a0174087135f080177302763019adaf531257e3a87") + .unwrap() } else { self.compute_merkle_root_and_path(0, None) } diff --git a/core/lib/multivm/src/glue/types/vm/vm_block_result.rs b/core/lib/multivm/src/glue/types/vm/vm_block_result.rs index 1c0465855b6..b7e7436bf8f 100644 --- a/core/lib/multivm/src/glue/types/vm/vm_block_result.rs +++ b/core/lib/multivm/src/glue/types/vm/vm_block_result.rs @@ -1,9 +1,9 @@ use crate::glue::{GlueFrom, GlueInto}; +use vm_latest::VmExecutionLogs; use vm_latest::{ CurrentExecutionState, ExecutionResult, Refunds, VmExecutionResultAndLogs, VmExecutionStatistics, }; -use zksync_types::tx::tx_execution_info::VmExecutionLogs; // Note: In version after vm VmVirtualBlocks the bootloader memory knowledge is encapsulated into the VM. // But before it was a part of a public API. @@ -17,7 +17,8 @@ impl GlueFrom for vm_latest::FinishedL1Batch { result: value.block_tip_result.revert_reason.glue_into(), logs: VmExecutionLogs { events: value.block_tip_result.logs.events.clone(), - l2_to_l1_logs: value.block_tip_result.logs.l2_to_l1_logs.clone(), + user_l2_to_l1_logs: value.block_tip_result.logs.l2_to_l1_logs.clone(), + system_l2_to_l1_logs: vec![], storage_logs: value.block_tip_result.logs.storage_logs.clone(), total_log_queries_count: value.block_tip_result.logs.total_log_queries_count, }, @@ -34,9 +35,11 @@ impl GlueFrom for vm_latest::FinishedL1Batch { events: value.full_result.events, storage_log_queries: value.full_result.storage_log_queries, used_contract_hashes: value.full_result.used_contract_hashes, - l2_to_l1_logs: value.full_result.l2_to_l1_logs, + user_l2_to_l1_logs: value.full_result.l2_to_l1_logs, + system_logs: vec![], total_log_queries: value.full_result.total_log_queries, cycles_used: value.full_result.cycles_used, + deduplicated_events_logs: vec![], }, final_bootloader_memory: None, } @@ -50,7 +53,8 @@ impl GlueFrom for vm_latest::FinishedL1Batch { result: value.block_tip_result.revert_reason.glue_into(), logs: VmExecutionLogs { events: value.block_tip_result.logs.events, - l2_to_l1_logs: value.block_tip_result.logs.l2_to_l1_logs, + user_l2_to_l1_logs: value.block_tip_result.logs.l2_to_l1_logs, + system_l2_to_l1_logs: vec![], storage_logs: value.block_tip_result.logs.storage_logs, total_log_queries_count: value.block_tip_result.logs.total_log_queries_count, }, @@ -67,9 +71,11 @@ impl GlueFrom for vm_latest::FinishedL1Batch { events: value.full_result.events, storage_log_queries: value.full_result.storage_log_queries, used_contract_hashes: value.full_result.used_contract_hashes, - l2_to_l1_logs: value.full_result.l2_to_l1_logs, + user_l2_to_l1_logs: value.full_result.l2_to_l1_logs, + system_logs: vec![], total_log_queries: value.full_result.total_log_queries, cycles_used: value.full_result.cycles_used, + deduplicated_events_logs: vec![], }, final_bootloader_memory: None, } @@ -83,7 +89,8 @@ impl GlueFrom for vm_latest::FinishedL1Batch { result: value.block_tip_result.revert_reason.glue_into(), logs: VmExecutionLogs { events: value.block_tip_result.logs.events, - l2_to_l1_logs: value.block_tip_result.logs.l2_to_l1_logs, + user_l2_to_l1_logs: value.block_tip_result.logs.l2_to_l1_logs, + system_l2_to_l1_logs: vec![], storage_logs: value.block_tip_result.logs.storage_logs, total_log_queries_count: value.block_tip_result.logs.total_log_queries_count, }, @@ -100,9 +107,11 @@ impl GlueFrom for vm_latest::FinishedL1Batch { events: value.full_result.events, storage_log_queries: value.full_result.storage_log_queries, used_contract_hashes: value.full_result.used_contract_hashes, - l2_to_l1_logs: value.full_result.l2_to_l1_logs, + user_l2_to_l1_logs: value.full_result.l2_to_l1_logs, + system_logs: vec![], total_log_queries: value.full_result.total_log_queries, cycles_used: value.full_result.cycles_used, + deduplicated_events_logs: vec![], }, final_bootloader_memory: None, } @@ -125,7 +134,8 @@ impl GlueFrom for vm_latest::VmExecutionResultAndLo result, logs: VmExecutionLogs { events: value.full_result.events, - l2_to_l1_logs: value.full_result.l2_to_l1_logs, + user_l2_to_l1_logs: value.full_result.l2_to_l1_logs, + system_l2_to_l1_logs: vec![], storage_logs: value.full_result.storage_log_queries, total_log_queries_count: value.full_result.total_log_queries, }, @@ -157,7 +167,8 @@ impl GlueFrom for vm_latest::VmExecutionResultAndLogs result, logs: VmExecutionLogs { events: value.full_result.events, - l2_to_l1_logs: value.full_result.l2_to_l1_logs, + user_l2_to_l1_logs: value.full_result.l2_to_l1_logs, + system_l2_to_l1_logs: vec![], storage_logs: value.full_result.storage_log_queries, total_log_queries_count: value.full_result.total_log_queries, }, @@ -189,7 +200,8 @@ impl GlueFrom for vm_latest::VmExecutionResultAndLogs result, logs: VmExecutionLogs { events: value.full_result.events, - l2_to_l1_logs: value.full_result.l2_to_l1_logs, + user_l2_to_l1_logs: value.full_result.l2_to_l1_logs, + system_l2_to_l1_logs: vec![], storage_logs: value.full_result.storage_log_queries, total_log_queries_count: value.full_result.total_log_queries, }, diff --git a/core/lib/multivm/src/glue/types/vm/vm_execution_result.rs b/core/lib/multivm/src/glue/types/vm/vm_execution_result.rs index ce405df7217..a51b30a9980 100644 --- a/core/lib/multivm/src/glue/types/vm/vm_execution_result.rs +++ b/core/lib/multivm/src/glue/types/vm/vm_execution_result.rs @@ -1,4 +1,4 @@ -use crate::glue::GlueFrom; +use crate::glue::{GlueFrom, GlueInto}; impl GlueFrom for vm_latest::CurrentExecutionState { fn glue_from(value: vm_m5::vm::VmExecutionResult) -> Self { @@ -6,9 +6,15 @@ impl GlueFrom for vm_latest::CurrentExecutionState events: value.events, storage_log_queries: value.storage_log_queries, used_contract_hashes: value.used_contract_hashes, - l2_to_l1_logs: value.l2_to_l1_logs, + system_logs: vec![], + user_l2_to_l1_logs: value + .l2_to_l1_logs + .into_iter() + .map(GlueInto::glue_into) + .collect(), total_log_queries: value.total_log_queries, cycles_used: value.cycles_used, + deduplicated_events_logs: vec![], } } } @@ -19,9 +25,15 @@ impl GlueFrom for vm_latest::CurrentExecutionState events: value.events, storage_log_queries: value.storage_log_queries, used_contract_hashes: value.used_contract_hashes, - l2_to_l1_logs: value.l2_to_l1_logs, + system_logs: vec![], + user_l2_to_l1_logs: value + .l2_to_l1_logs + .into_iter() + .map(GlueInto::glue_into) + .collect(), total_log_queries: value.total_log_queries, cycles_used: value.cycles_used, + deduplicated_events_logs: vec![], } } } @@ -32,9 +44,15 @@ impl GlueFrom for vm_latest::CurrentExecutionState events: value.events, storage_log_queries: value.storage_log_queries, used_contract_hashes: value.used_contract_hashes, - l2_to_l1_logs: value.l2_to_l1_logs, + system_logs: vec![], + user_l2_to_l1_logs: value + .l2_to_l1_logs + .into_iter() + .map(GlueInto::glue_into) + .collect(), total_log_queries: value.total_log_queries, cycles_used: value.cycles_used, + deduplicated_events_logs: vec![], } } } diff --git a/core/lib/multivm/src/glue/types/vm/vm_partial_execution_result.rs b/core/lib/multivm/src/glue/types/vm/vm_partial_execution_result.rs index bdce90777d2..3cc2bb7769d 100644 --- a/core/lib/multivm/src/glue/types/vm/vm_partial_execution_result.rs +++ b/core/lib/multivm/src/glue/types/vm/vm_partial_execution_result.rs @@ -1,5 +1,5 @@ use crate::glue::{GlueFrom, GlueInto}; -use zksync_types::tx::tx_execution_info::VmExecutionLogs; +use vm_latest::VmExecutionLogs; impl GlueFrom for vm_latest::VmExecutionResultAndLogs { fn glue_from(value: vm_m5::vm::VmPartialExecutionResult) -> Self { @@ -7,7 +7,8 @@ impl GlueFrom for vm_latest::VmExecutionRes result: value.revert_reason.glue_into(), logs: VmExecutionLogs { events: value.logs.events.clone(), - l2_to_l1_logs: value.logs.l2_to_l1_logs.clone(), + user_l2_to_l1_logs: value.logs.l2_to_l1_logs.clone(), + system_l2_to_l1_logs: vec![], storage_logs: value.logs.storage_logs.clone(), total_log_queries_count: value.logs.total_log_queries_count, }, @@ -34,7 +35,8 @@ impl GlueFrom for vm_latest::VmExecutionRes result: value.revert_reason.glue_into(), logs: VmExecutionLogs { events: value.logs.events.clone(), - l2_to_l1_logs: value.logs.l2_to_l1_logs.clone(), + user_l2_to_l1_logs: value.logs.l2_to_l1_logs.clone(), + system_l2_to_l1_logs: vec![], storage_logs: value.logs.storage_logs.clone(), total_log_queries_count: value.logs.total_log_queries_count, }, @@ -59,7 +61,8 @@ impl GlueFrom for vm_latest::VmExecution result: value.revert_reason.glue_into(), logs: VmExecutionLogs { events: value.logs.events.clone(), - l2_to_l1_logs: value.logs.l2_to_l1_logs.clone(), + user_l2_to_l1_logs: value.logs.l2_to_l1_logs.clone(), + system_l2_to_l1_logs: vec![], storage_logs: value.logs.storage_logs.clone(), total_log_queries_count: value.logs.total_log_queries_count, }, diff --git a/core/lib/prover_utils/src/gcs_proof_fetcher.rs b/core/lib/prover_utils/src/gcs_proof_fetcher.rs index 25a29b52fe9..8b59fe67a61 100644 --- a/core/lib/prover_utils/src/gcs_proof_fetcher.rs +++ b/core/lib/prover_utils/src/gcs_proof_fetcher.rs @@ -1,4 +1,4 @@ -use zksync_object_store::ObjectStore; +use zksync_object_store::{ObjectStore, ObjectStoreError}; use zksync_types::aggregated_operations::L1BatchProofForL1; use zksync_types::L1BatchNumber; @@ -10,11 +10,14 @@ pub async fn load_wrapped_fri_proofs_for_range( let mut proofs = Vec::new(); for l1_batch_number in from.0..=to.0 { let l1_batch_number = L1BatchNumber(l1_batch_number); - let proof = blob_store - .get(l1_batch_number) - .await - .expect("Failed to load proof"); - proofs.push(proof); + match blob_store.get(l1_batch_number).await { + Ok(proof) => proofs.push(proof), + Err(ObjectStoreError::KeyNotFound(_)) => (), // do nothing, proof is not ready yet + Err(err) => panic!( + "Failed to load proof for batch {}: {}", + l1_batch_number.0, err + ), + } } proofs } diff --git a/core/lib/state/Cargo.toml b/core/lib/state/Cargo.toml index cf8a09d9159..81d61ee4e0a 100644 --- a/core/lib/state/Cargo.toml +++ b/core/lib/state/Cargo.toml @@ -21,8 +21,11 @@ mini-moka = "0.10.0" tokio = { version = "1", features = ["rt"] } tracing = "0.1" +metrics = "0.21" + [dev-dependencies] db_test_macro = { path = "../db_test_macro" } +itertools = "0.10.3" rand = "0.8.5" tempfile = "3.0.2" diff --git a/core/lib/state/src/in_memory.rs b/core/lib/state/src/in_memory.rs index 3ae72a9f4e9..e827cf10627 100644 --- a/core/lib/state/src/in_memory.rs +++ b/core/lib/state/src/in_memory.rs @@ -1,4 +1,4 @@ -use std::collections::HashMap; +use std::collections::{BTreeMap, HashMap}; use crate::ReadStorage; use zksync_types::{ @@ -16,6 +16,7 @@ pub const IN_MEMORY_STORAGE_DEFAULT_NETWORK_ID: u16 = 270; pub struct InMemoryStorage { pub(crate) state: HashMap, pub(crate) factory_deps: HashMap>, + pub(crate) enum_indices: HashMap, } impl InMemoryStorage { @@ -47,7 +48,7 @@ impl InMemoryStorage { ) -> Self { let system_context_init_log = get_system_context_init_logs(chain_id); - let state = contracts + let state: BTreeMap<_, _> = contracts .iter() .flat_map(|contract| { let bytecode_hash = bytecode_hasher(&contract.bytecode); @@ -63,14 +64,21 @@ impl InMemoryStorage { .chain(system_context_init_log) .filter_map(|log| (log.kind == StorageLogKind::Write).then_some((log.key, log.value))) .collect(); + let enum_indices = state + .keys() + .enumerate() + .map(|(index, key)| (*key, index as u64 + 1)) + .collect(); let factory_deps = contracts .into_iter() .map(|contract| (bytecode_hasher(&contract.bytecode), contract.bytecode)) .collect(); + Self { - state, + state: state.into_iter().collect(), factory_deps, + enum_indices, } } @@ -79,6 +87,11 @@ impl InMemoryStorage { self.state.insert(key, value); } + /// Sets the given `enumeration_index ` for the specified `key`. + pub fn set_enumeration_index(&mut self, key: StorageKey, enumeration_index: u64) { + self.enum_indices.insert(key, enumeration_index); + } + /// Stores a factory dependency with the specified `hash` and `bytecode`. pub fn store_factory_dep(&mut self, hash: H256, bytecode: Vec) { self.factory_deps.insert(hash, bytecode); @@ -97,6 +110,10 @@ impl ReadStorage for &InMemoryStorage { fn load_factory_dep(&mut self, hash: H256) -> Option> { self.factory_deps.get(&hash).cloned() } + + fn get_enumeration_index(&mut self, key: &StorageKey) -> Option { + self.enum_indices.get(&key).copied() + } } impl ReadStorage for InMemoryStorage { @@ -111,4 +128,8 @@ impl ReadStorage for InMemoryStorage { fn load_factory_dep(&mut self, hash: H256) -> Option> { (&*self).load_factory_dep(hash) } + + fn get_enumeration_index(&mut self, key: &StorageKey) -> Option { + (&*self).get_enumeration_index(key) + } } diff --git a/core/lib/state/src/lib.rs b/core/lib/state/src/lib.rs index 33376b60143..78e7cca562c 100644 --- a/core/lib/state/src/lib.rs +++ b/core/lib/state/src/lib.rs @@ -55,6 +55,9 @@ pub trait ReadStorage: fmt::Debug { let code_key = get_known_code_key(bytecode_hash); self.read_value(&code_key) != H256::zero() } + + /// Retrieves the enumeration index for a given `key`. + fn get_enumeration_index(&mut self, _key: &StorageKey) -> Option; } /// Functionality to write to the VM storage in a batch. diff --git a/core/lib/state/src/postgres/mod.rs b/core/lib/state/src/postgres/mod.rs index 989e38f1934..8cc69f7bbbd 100644 --- a/core/lib/state/src/postgres/mod.rs +++ b/core/lib/state/src/postgres/mod.rs @@ -495,4 +495,14 @@ impl ReadStorage for PostgresStorage<'_> { latency.observe(); result } + + fn get_enumeration_index(&mut self, key: &StorageKey) -> Option { + let mut dal = self.connection.storage_logs_dedup_dal(); + + let value = self + .rt_handle + .block_on(dal.get_enumeration_index_for_key(*key)); + + value + } } diff --git a/core/lib/state/src/rocksdb/mod.rs b/core/lib/state/src/rocksdb/mod.rs index ab6db6bbc89..43940345d97 100644 --- a/core/lib/state/src/rocksdb/mod.rs +++ b/core/lib/state/src/rocksdb/mod.rs @@ -40,17 +40,24 @@ enum StateKeeperColumnFamily { State, Contracts, FactoryDeps, + EnumIndices, } impl NamedColumnFamily for StateKeeperColumnFamily { const DB_NAME: &'static str = "state_keeper"; - const ALL: &'static [Self] = &[Self::State, Self::Contracts, Self::FactoryDeps]; + const ALL: &'static [Self] = &[ + Self::State, + Self::Contracts, + Self::FactoryDeps, + Self::EnumIndices, + ]; fn name(&self) -> &'static str { match self { Self::State => "state", Self::Contracts => "contracts", Self::FactoryDeps => "factory_deps", + Self::EnumIndices => "enum_indices", } } } @@ -110,7 +117,7 @@ impl RocksdbStorage { .await; self.process_transaction_logs(&storage_logs); - tracing::debug!("loading factory deps for l1 batch {current_l1_batch_number}"); + tracing::debug!("Loading factory deps for l1 batch {current_l1_batch_number}"); let factory_deps = conn .blocks_dal() .get_l1_batch_factory_deps(L1BatchNumber(current_l1_batch_number)) @@ -120,6 +127,19 @@ impl RocksdbStorage { self.store_factory_dep(hash, bytecode); } + tracing::debug!("Loading enumeration indexes for l1 batch {current_l1_batch_number}"); + let enum_indices: HashMap = conn + .storage_logs_dedup_dal() + .initial_writes_for_batch(L1BatchNumber(current_l1_batch_number)) + .await + .into_iter() + .collect(); + for (key, _) in storage_logs { + if let Some(index) = enum_indices.get(&key.hashed_key()) { + self.store_enumeration_index(key, *index) + } + } + current_l1_batch_number += 1; self.save(L1BatchNumber(current_l1_batch_number)).await; } @@ -155,6 +175,13 @@ impl RocksdbStorage { self.pending_patch.factory_deps.insert(hash, bytecode); } + /// Stores a `enumeration_index ` for the specified `key`. + fn store_enumeration_index(&mut self, key: StorageKey, enumeration_index: u64) { + self.pending_patch + .enum_indices + .insert(key, enumeration_index); + } + /// Rolls back the state to a previous L1 batch number. /// /// # Panics @@ -204,23 +231,29 @@ impl RocksdbStorage { tokio::task::spawn_blocking(move || { let mut batch = db.new_write_batch(); - let cf = StateKeeperColumnFamily::State; for (key, maybe_value) in logs { if let Some(prev_value) = maybe_value { - batch.put_cf(cf, key.as_bytes(), prev_value.as_bytes()); + batch.put_cf( + StateKeeperColumnFamily::State, + key.as_bytes(), + prev_value.as_bytes(), + ); } else { - batch.delete_cf(cf, key.as_bytes()); + batch.delete_cf(StateKeeperColumnFamily::State, key.as_bytes()); + batch.delete_cf(StateKeeperColumnFamily::EnumIndices, key.as_bytes()); } } batch.put_cf( - cf, + StateKeeperColumnFamily::State, Self::BLOCK_NUMBER_KEY, &serialize_block_number(last_l1_batch_to_keep.0 + 1), ); - let cf = StateKeeperColumnFamily::FactoryDeps; for factory_dep_hash in &factory_deps { - batch.delete_cf(cf, factory_dep_hash.as_bytes()); + batch.delete_cf( + StateKeeperColumnFamily::FactoryDeps, + factory_dep_hash.as_bytes(), + ); } db.write(batch) @@ -251,6 +284,16 @@ impl RocksdbStorage { for (hash, value) in pending_patch.factory_deps { batch.put_cf(cf, &hash.to_fixed_bytes(), value.as_ref()); } + + let cf = StateKeeperColumnFamily::EnumIndices; + for (key, enumeration_index) in pending_patch.enum_indices { + batch.put_cf( + cf, + &Self::serialize_state_key(&key), + &enumeration_index.to_be_bytes(), + ); + } + db.write(batch) .expect("failed to save state data into rocksdb"); }); @@ -296,11 +339,26 @@ impl ReadStorage for RocksdbStorage { .get_cf(cf, hash.as_bytes()) .expect("failed to read RocksDB state value") } + + fn get_enumeration_index(&mut self, key: &StorageKey) -> Option { + let cf = StateKeeperColumnFamily::EnumIndices; + self.db + .get_cf(cf, &Self::serialize_state_key(key)) + .expect("failed to read rocksdb state value") + .map(|value| { + u64::from_be_bytes( + value + .try_into() + .expect("Cannot convert bytes to enum index"), + ) + }) + } } #[cfg(test)] mod tests { use db_test_macro::db_test; + use itertools::Itertools; use tempfile::TempDir; use super::*; @@ -375,6 +433,12 @@ mod tests { async fn rocksdb_storage_revert(pool: ConnectionPool) { let mut conn = pool.access_storage().await.unwrap(); prepare_postgres(&mut conn).await; + + let number_of_genesis_logs = conn + .storage_logs_dedup_dal() + .initial_writes_for_batch(L1BatchNumber(0)) + .await + .len() as u64; let storage_logs = gen_storage_logs(20..40); create_miniblock(&mut conn, MiniblockNumber(1), storage_logs[..10].to_vec()).await; insert_factory_deps(&mut conn, MiniblockNumber(1), 0..1).await; @@ -418,6 +482,17 @@ mod tests { [i; 64] ); } + + let expected_indices: Vec<_> = storage_logs + .iter() + .sorted_by_key(|log| log.key) + .chain(inserted_storage_logs.iter().sorted_by_key(|log| log.key)) + .enumerate() + .map(|(index, log)| (log.key, index as u64 + number_of_genesis_logs + 1)) + .collect(); + for (key, index) in expected_indices { + assert_eq!(storage.get_enumeration_index(&key), Some(index)); + } } storage.rollback(&mut conn, L1BatchNumber(1)).await; @@ -439,6 +514,16 @@ mod tests { for i in 3..5 { assert!(storage.load_factory_dep(H256::repeat_byte(i)).is_none()); } + let expected_indices: Vec<_> = storage_logs + .iter() + .sorted_by_key(|log| log.key) + .enumerate() + .map(|(index, log)| (log.key, Some(index as u64 + number_of_genesis_logs + 1))) + .chain(inserted_storage_logs.iter().map(|log| (log.key, None))) + .collect(); + for (key, index) in expected_indices { + assert_eq!(storage.get_enumeration_index(&key), index); + } } } } diff --git a/core/lib/state/src/shadow_storage.rs b/core/lib/state/src/shadow_storage.rs index a17629d2835..756a8910b77 100644 --- a/core/lib/state/src/shadow_storage.rs +++ b/core/lib/state/src/shadow_storage.rs @@ -88,6 +88,21 @@ impl ReadStorage for ShadowStorage<'_> { } source_value } + + fn get_enumeration_index(&mut self, key: &StorageKey) -> Option { + let source_value = self.source_storage.get_enumeration_index(key); + let expected_value = self.to_check_storage.get_enumeration_index(key); + let mut metric_value = 0.0; + if source_value != expected_value { + metric_value = 1.0; + tracing::error!("get_enumeration_index({:?}) -- l1_batch_number={:?} -- expected source={:?} to be equal to to_check={:?}", key, self.l1_batch_number, source_value, expected_value); + } + metrics::histogram!( + "shadow_storage.get_enumeration_index_mismatch", + metric_value + ); + source_value + } } // TODO: Add unit tests when we swap metrics crate; blocked by: https://linear.app/matterlabs/issue/QIT-3/rework-metrics-approach diff --git a/core/lib/state/src/storage_view.rs b/core/lib/state/src/storage_view.rs index c8054e520ad..8476be78aa9 100644 --- a/core/lib/state/src/storage_view.rs +++ b/core/lib/state/src/storage_view.rs @@ -80,6 +80,10 @@ where fn is_bytecode_known(&mut self, bytecode_hash: &H256) -> bool { (**self).is_bytecode_known(bytecode_hash) } + + fn get_enumeration_index(&mut self, key: &StorageKey) -> Option { + (**self).get_enumeration_index(key) + } } impl StorageView { @@ -163,6 +167,10 @@ impl ReadStorage for StorageView { fn load_factory_dep(&mut self, hash: H256) -> Option> { self.storage_handle.load_factory_dep(hash) } + + fn get_enumeration_index(&mut self, key: &StorageKey) -> Option { + self.storage_handle.get_enumeration_index(key) + } } impl WriteStorage for StorageView { diff --git a/core/lib/state/src/witness.rs b/core/lib/state/src/witness.rs index a918d153881..26ea38e16ea 100644 --- a/core/lib/state/src/witness.rs +++ b/core/lib/state/src/witness.rs @@ -37,4 +37,9 @@ impl ReadStorage for WitnessStorage { fn load_factory_dep(&mut self, _hash: H256) -> Option> { None } + + fn get_enumeration_index(&mut self, _key: &StorageKey) -> Option { + metrics::histogram!("witness_storage.unexpected_get_enumeration_index_call", 1.0); + None + } } diff --git a/core/lib/types/src/aggregated_operations.rs b/core/lib/types/src/aggregated_operations.rs index e32968fb8eb..4283a31bb23 100644 --- a/core/lib/types/src/aggregated_operations.rs +++ b/core/lib/types/src/aggregated_operations.rs @@ -97,7 +97,7 @@ impl L1BatchProofOperation { scheduler_proof, } = self.proofs.first().unwrap(); - let (_, proof) = serialize_proof(scheduler_proof); + let (_inputs, proof) = serialize_proof(scheduler_proof); let proof_input = Token::Tuple(vec![ Token::Array( diff --git a/core/lib/types/src/block.rs b/core/lib/types/src/block.rs index d37c97324bd..52653b97dd5 100644 --- a/core/lib/types/src/block.rs +++ b/core/lib/types/src/block.rs @@ -60,8 +60,16 @@ pub struct L1BatchHeader { /// The L2 gas price that the operator agrees on. pub l2_fair_gas_price: u64, pub base_system_contracts_hashes: BaseSystemContractsHashes, + /// System logs are those emitted as part of the Vm excecution. + pub system_logs: Vec, /// Version of protocol used for the L1 batch. pub protocol_version: Option, + /// The commitment to the final events queue state after the batch is committed. + /// Practically, it is a commitment to all events that happened on L2 during the batch execution. + pub events_queue_commitment: Option, + /// The commitment to the initial heap content of the bootloader. Practically it serves as a + /// commitment to the transactions in the batch. + pub bootloader_initial_content_commitment: Option, } /// Holder for the miniblock metadata that is not available from transactions themselves. @@ -116,7 +124,10 @@ impl L1BatchHeader { l1_gas_price: 0, l2_fair_gas_price: 0, base_system_contracts_hashes, + system_logs: vec![], protocol_version: Some(protocol_version), + events_queue_commitment: Some(H256::zero()), + bootloader_initial_content_commitment: Some(H256::zero()), } } diff --git a/core/lib/types/src/commitment.rs b/core/lib/types/src/commitment.rs index 89207309f20..c64c9e68f81 100644 --- a/core/lib/types/src/commitment.rs +++ b/core/lib/types/src/commitment.rs @@ -19,7 +19,10 @@ use crate::{ ethabi::Token, l2_to_l1_log::L2ToL1Log, web3::signing::keccak256, - writes::{InitialStorageWrite, RepeatedStorageWrite}, + writes::{ + compress_state_diffs, InitialStorageWrite, RepeatedStorageWrite, StateDiffRecord, + PADDED_ENCODED_STORAGE_DIFF_LEN_BYTES, + }, H256, KNOWN_CODES_STORAGE_ADDRESS, U256, }; @@ -37,12 +40,11 @@ pub trait SerializeCommitment { /// Serialize elements for commitment. The results consist of: /// 1. Number of elements (4 bytes) /// 2. Serialized elements -pub(crate) fn serialize_commitments(values: &[I]) -> Vec { - let final_len = values.len() * I::SERIALIZED_SIZE + 4; +pub fn serialize_commitments(values: &[I]) -> Vec { + let final_len = values.len() * I::SERIALIZED_SIZE; let mut input = vec![0_u8; final_len]; - input[0..4].copy_from_slice(&(values.len() as u32).to_be_bytes()); - let chunks = input[4..].chunks_mut(I::SERIALIZED_SIZE); + let chunks = input.chunks_mut(I::SERIALIZED_SIZE); for (value, chunk) in values.iter().zip(chunks) { value.serialize_commitment(chunk); } @@ -64,6 +66,7 @@ pub struct L1BatchMetadata { pub aux_data_hash: H256, pub meta_parameters_hash: H256, pub pass_through_data_hash: H256, + pub state_diffs_compressed: Vec, } #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] @@ -111,7 +114,7 @@ impl L1BatchWithMetadata { pub fn l1_header_data(&self) -> Token { Token::Tuple(vec![ - Token::Uint(U256::from(*self.header.number)), + Token::Uint(U256::from(self.header.number.0)), Token::FixedBytes(self.metadata.root_hash.as_bytes().to_vec()), Token::Uint(U256::from(self.metadata.rollup_last_leaf_index)), Token::Uint(U256::from(self.header.l1_tx_count)), @@ -134,40 +137,69 @@ impl L1BatchWithMetadata { Token::Uint(U256::from(self.metadata.rollup_last_leaf_index)), Token::FixedBytes(self.metadata.merkle_root_hash.as_bytes().to_vec()), Token::Uint(U256::from(self.header.l1_tx_count)), - Token::FixedBytes(self.metadata.l2_l1_merkle_root.as_bytes().to_vec()), Token::FixedBytes( self.header .priority_ops_onchain_data_hash() .as_bytes() .to_vec(), ), - Token::Bytes(self.metadata.initial_writes_compressed.clone()), - Token::Bytes(self.metadata.repeated_writes_compressed.clone()), - Token::Bytes(self.metadata.l2_l1_messages_compressed.clone()), - Token::Array( + Token::FixedBytes( self.header - .l2_to_l1_messages - .iter() - .map(|message| Token::Bytes(message.to_vec())) - .collect(), + .bootloader_initial_content_commitment + .unwrap() + .as_bytes() + .to_vec(), ), - Token::Array( - self.factory_deps - .iter() - .map(|bytecode| Token::Bytes(bytecode.to_vec())) - .collect(), + Token::FixedBytes( + self.header + .events_queue_commitment + .unwrap() + .as_bytes() + .to_vec(), ), + Token::Bytes(self.metadata.l2_l1_messages_compressed.clone()), + Token::Bytes(self.construct_pubdata()), ]) } pub fn l1_commit_data_size(&self) -> usize { crate::ethabi::encode(&[Token::Array(vec![self.l1_commit_data()])]).len() } + + pub fn construct_pubdata(&self) -> Vec { + let mut res: Vec = vec![]; + + // Process and Pack Logs + res.extend((self.header.l2_to_l1_logs.len() as u32).to_be_bytes()); + for l2_to_l1_log in &self.header.l2_to_l1_logs { + res.extend(l2_to_l1_log.packed_encoding()); + } + + // Process and Pack Msgs + res.extend((self.header.l2_to_l1_messages.len() as u32).to_be_bytes()); + for msg in &self.header.l2_to_l1_messages { + res.extend((msg.len() as u32).to_be_bytes()); + res.extend(msg); + } + + // Process and Pack Bytecodes + res.extend((self.factory_deps.len() as u32).to_be_bytes()); + for bytecode in &self.factory_deps { + res.extend((bytecode.len() as u32).to_be_bytes()); + res.extend(bytecode); + } + + // Extend with Compressed StateDiffs + res.extend(&self.metadata.state_diffs_compressed); + + res + } } impl SerializeCommitment for L2ToL1Log { const SERIALIZED_SIZE: usize = 88; - const LIMIT_PER_L1_BATCH: usize = GEOMETRY_CONFIG.limit_for_l1_messages_merklizer as usize; + // Unlike the other limits, it is not enforced by GeometryConfig, but the constants in contracts. + const LIMIT_PER_L1_BATCH: usize = 2048; fn serialize_commitment(&self, buffer: &mut [u8]) { buffer[0] = self.shard_id; @@ -201,6 +233,16 @@ impl SerializeCommitment for RepeatedStorageWrite { } } +impl SerializeCommitment for StateDiffRecord { + const SERIALIZED_SIZE: usize = PADDED_ENCODED_STORAGE_DIFF_LEN_BYTES; + const LIMIT_PER_L1_BATCH: usize = + ((GEOMETRY_CONFIG.limit_for_repeated_writes_pubdata_hasher * 40) / 156) as usize; + + fn serialize_commitment(&self, buffer: &mut [u8]) { + buffer.copy_from_slice(&self.encode_padded()); + } +} + /// Block Output produced by Virtual Machine #[derive(Debug, Clone)] struct L1BatchAuxiliaryOutput { @@ -218,6 +260,17 @@ struct L1BatchAuxiliaryOutput { initial_writes_hash: H256, repeated_writes_compressed: Vec, repeated_writes_hash: H256, + #[allow(dead_code)] + system_logs: Vec, + system_logs_compressed: Vec, + system_logs_linear_hash: H256, + #[allow(dead_code)] + state_diffs: Vec, + state_diffs_hash: H256, + state_diffs_compressed: Vec, + + bootloader_heap_hash: H256, + events_state_hash: H256, } impl L1BatchAuxiliaryOutput { @@ -225,16 +278,31 @@ impl L1BatchAuxiliaryOutput { l2_l1_logs: Vec, initial_writes: Vec, repeated_writes: Vec, + system_logs: Vec, + mut state_diffs: Vec, + bootloader_heap_hash: H256, + events_state_hash: H256, ) -> Self { + state_diffs.sort_unstable_by_key(|rec| (rec.address, rec.key)); + let l2_l1_logs_compressed = serialize_commitments(&l2_l1_logs); let initial_writes_compressed = serialize_commitments(&initial_writes); let repeated_writes_compressed = serialize_commitments(&repeated_writes); + let system_logs_compressed = serialize_commitments(&system_logs); + let state_diffs_packed = serialize_commitments(&state_diffs); + + let mut comp_state_diffs: Vec = vec![]; + + let state_diffs_compressed = compress_state_diffs(state_diffs.clone()); + comp_state_diffs.extend(state_diffs_compressed); let l2_l1_logs_linear_hash = H256::from(keccak256(&l2_l1_logs_compressed)); + let system_logs_linear_hash = H256::from(keccak256(&system_logs_compressed)); let initial_writes_hash = H256::from(keccak256(&initial_writes_compressed)); let repeated_writes_hash = H256::from(keccak256(&repeated_writes_compressed)); + let state_diffs_hash = H256::from(keccak256(&(state_diffs_packed))); - let merkle_tree_leaves = l2_l1_logs_compressed[4..] + let merkle_tree_leaves = l2_l1_logs_compressed .chunks(L2ToL1Log::SERIALIZED_SIZE) .map(|chunk| <[u8; L2ToL1Log::SERIALIZED_SIZE]>::try_from(chunk).unwrap()); // ^ Skip first 4 bytes of the serialized logs (i.e., the number of logs). @@ -252,6 +320,15 @@ impl L1BatchAuxiliaryOutput { l2_l1_logs_merkle_root, initial_writes_hash, repeated_writes_hash, + system_logs, + system_logs_compressed, + system_logs_linear_hash, + state_diffs, + state_diffs_hash, + state_diffs_compressed: comp_state_diffs, + + bootloader_heap_hash, + events_state_hash, } } @@ -259,10 +336,10 @@ impl L1BatchAuxiliaryOutput { // 4 H256 values const SERIALIZED_SIZE: usize = 128; let mut result = Vec::with_capacity(SERIALIZED_SIZE); - result.extend(self.l2_l1_logs_merkle_root.as_bytes()); - result.extend(self.l2_l1_logs_linear_hash.as_bytes()); - result.extend(self.initial_writes_hash.as_bytes()); - result.extend(self.repeated_writes_hash.as_bytes()); + result.extend(self.system_logs_linear_hash.as_bytes()); + result.extend(self.state_diffs_hash.as_bytes()); + result.extend(self.bootloader_heap_hash.as_bytes()); + result.extend(self.events_state_hash.as_bytes()); result } @@ -351,6 +428,10 @@ impl L1BatchCommitment { repeated_writes: Vec, bootloader_code_hash: H256, default_aa_code_hash: H256, + system_logs: Vec, + state_diffs: Vec, + bootloader_heap_hash: H256, + events_state_queue: H256, ) -> Self { let meta_parameters = L1BatchMetaParameters { zkporter_is_available: ZKPORTER_IS_AVAILABLE, @@ -376,6 +457,10 @@ impl L1BatchCommitment { l2_to_l1_logs, initial_writes, repeated_writes, + system_logs, + state_diffs, + bootloader_heap_hash, + events_state_queue, ), meta_parameters, } @@ -413,6 +498,14 @@ impl L1BatchCommitment { self.auxiliary_output.repeated_writes_hash } + pub fn system_logs_compressed(&self) -> &[u8] { + &self.auxiliary_output.system_logs_compressed + } + + pub fn state_diffs_compressed(&self) -> &[u8] { + &self.auxiliary_output.state_diffs_compressed + } + pub fn hash(&self) -> L1BatchCommitmentHash { let mut result = vec![]; let pass_through_data_hash = self.pass_through_data.hash(); @@ -490,7 +583,8 @@ mod tests { expected_outputs: ExpectedOutput, } - #[test] + // TODO(PLA-568): restore this test + // #[test] fn commitment_test() { let zksync_home = std::env::var("ZKSYNC_HOME").unwrap_or_else(|_| ".".into()); let path = std::path::Path::new(&zksync_home) @@ -514,6 +608,10 @@ mod tests { commitment_test.auxiliary_input.l2_l1_logs.clone(), initial_writes, commitment_test.auxiliary_input.repeated_writes.clone(), + vec![], + vec![], + H256::zero(), + H256::zero(), ); let commitment = L1BatchCommitment { diff --git a/core/lib/types/src/event.rs b/core/lib/types/src/event.rs index 1ac6bb89e9b..28b764019b2 100644 --- a/core/lib/types/src/event.rs +++ b/core/lib/types/src/event.rs @@ -1,13 +1,15 @@ use crate::{ ethabi, + l2_to_l1_log::L2ToL1Log, tokens::{TokenInfo, TokenMetadata}, Address, L1BatchNumber, CONTRACT_DEPLOYER_ADDRESS, H256, KNOWN_CODES_STORAGE_ADDRESS, - L1_MESSENGER_ADDRESS, + L1_MESSENGER_ADDRESS, U256, }; use once_cell::sync::Lazy; use serde::{Deserialize, Serialize}; use std::fmt::Debug; -use zksync_utils::h256_to_account_address; +use zksync_basic_types::ethabi::Token; +use zksync_utils::{h256_to_account_address, u256_to_bytes_be, u256_to_h256}; #[derive(Default, Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)] pub struct VmEvent { @@ -51,6 +53,75 @@ static L1_MESSAGE_EVENT_SIGNATURE: Lazy = Lazy::new(|| { ) }); +// struct L2ToL1Log { +// uint8 l2ShardId; +// bool isService; +// uint16 txNumberInBlock; +// address sender; +// bytes32 key; +// bytes32 value; +// } +static L1_MESSENGER_L2_TO_L1_LOG_EVENT_SIGNATURE: Lazy = Lazy::new(|| { + ethabi::long_signature( + "L2ToL1LogSent", + &[ethabi::ParamType::Tuple(vec![ + ethabi::ParamType::Uint(8), + ethabi::ParamType::Bool, + ethabi::ParamType::Uint(16), + ethabi::ParamType::Address, + ethabi::ParamType::FixedBytes(32), + ethabi::ParamType::FixedBytes(32), + ])], + ) +}); + +#[derive(Debug, Default, Clone)] +pub struct L1MessengerL2ToL1Log { + l2_shard_id: u8, + is_service: bool, + tx_number_in_block: u16, + sender: Address, + key: U256, + value: U256, +} + +impl L1MessengerL2ToL1Log { + pub fn packed_encoding(&self) -> Vec { + let mut res = vec![]; + res.extend_from_slice(&self.l2_shard_id.to_be_bytes()); + res.extend_from_slice(&(self.is_service as u8).to_be_bytes()); + res.extend_from_slice(&self.tx_number_in_block.to_be_bytes()); + res.extend_from_slice(self.sender.as_bytes()); + res.extend(u256_to_bytes_be(&self.key)); + res.extend(u256_to_bytes_be(&self.value)); + res + } +} + +impl Into for L1MessengerL2ToL1Log { + fn into(self) -> L2ToL1Log { + L2ToL1Log { + shard_id: self.l2_shard_id, + is_service: self.is_service, + tx_number_in_block: self.tx_number_in_block, + sender: self.sender, + key: u256_to_h256(self.key), + value: u256_to_h256(self.value), + } + } +} + +static L1_MESSENGER_BYTECODE_PUBLICATION_EVENT_SIGNATURE: Lazy = Lazy::new(|| { + ethabi::long_signature( + "BytecodeL1PublicationRequested", + &[ethabi::ParamType::FixedBytes(32)], + ) +}); + +pub struct L1MessengerBytecodePublicationRequest { + pub bytecode_hash: H256, +} + static BRIDGE_INITIALIZATION_SIGNATURE_OLD: Lazy = Lazy::new(|| { ethabi::long_signature( "BridgeInitialization", @@ -148,7 +219,7 @@ pub fn extract_long_l2_to_l1_messages(all_generated_events: &[VmEvent]) -> Vec Vec Vec { + all_generated_events + .iter() + .filter(|event| { + // Filter events from the l1 messenger contract that match the expected signature. + event.address == L1_MESSENGER_ADDRESS + && !event.indexed_topics.is_empty() + && event.indexed_topics[0] == *L1_MESSENGER_L2_TO_L1_LOG_EVENT_SIGNATURE + }) + .map(|event| { + let tuple = ethabi::decode( + &[ethabi::ParamType::Tuple(vec![ + ethabi::ParamType::Uint(8), + ethabi::ParamType::Bool, + ethabi::ParamType::Uint(16), + ethabi::ParamType::Address, + ethabi::ParamType::FixedBytes(32), + ethabi::ParamType::FixedBytes(32), + ])], + &event.value, + ) + .expect("Failed to decode L2ToL1LogSent message") + .first() + .unwrap() + .clone(); + let Token::Tuple(tokens) = tuple else { + unreachable!("Tuple was expected, got: {}", tuple); + }; + let [ + Token::Uint(shard_id), + Token::Bool(is_service), + Token::Uint(tx_number_in_block), + Token::Address(sender), + Token::FixedBytes(key_bytes), + Token::FixedBytes(value_bytes), + ] = tokens.as_slice() else { + unreachable!("Invalid tuple types"); + }; + L1MessengerL2ToL1Log { + l2_shard_id: shard_id.low_u64() as u8, + is_service: *is_service, + tx_number_in_block: tx_number_in_block.low_u64() as u16, + sender: *sender, + key: U256::from_big_endian(key_bytes), + value: U256::from_big_endian(value_bytes), + } + }) + .collect() +} + +// Extracts all the bytecode publication requests +// that were emitted by the L1Messenger contract +pub fn extract_bytecode_publication_requests_from_l1_messenger( + all_generated_events: &[VmEvent], +) -> Vec { + all_generated_events + .iter() + .filter(|event| { + // Filter events from the l1 messenger contract that match the expected signature. + event.address == L1_MESSENGER_ADDRESS + && !event.indexed_topics.is_empty() + && event.indexed_topics[0] == *L1_MESSENGER_BYTECODE_PUBLICATION_EVENT_SIGNATURE + }) + .map(|event| { + let mut tokens = ethabi::decode(&[ethabi::ParamType::FixedBytes(32)], &event.value) + .expect("Failed to decode BytecodeL1PublicationRequested message"); + L1MessengerBytecodePublicationRequest { + bytecode_hash: H256::from_slice(&tokens.remove(0).into_fixed_bytes().unwrap()), + } + }) + .collect() +} + // Extract all bytecodes marked as known on the system contracts pub fn extract_bytecodes_marked_as_known(all_generated_events: &[VmEvent]) -> Vec { all_generated_events diff --git a/core/lib/types/src/fee.rs b/core/lib/types/src/fee.rs index 970b8d95664..8ce731b5b4a 100644 --- a/core/lib/types/src/fee.rs +++ b/core/lib/types/src/fee.rs @@ -3,8 +3,7 @@ use zksync_utils::ceil_div; use crate::U256; -#[derive(Debug, Default, Clone, Copy, Serialize, Deserialize)] -#[serde(rename_all = "camelCase", tag = "result")] +#[derive(Debug, Default, Clone, Copy)] pub struct TransactionExecutionMetrics { pub initial_storage_writes: usize, pub repeated_storage_writes: usize, diff --git a/core/lib/types/src/l2_to_l1_log.rs b/core/lib/types/src/l2_to_l1_log.rs index 57338c4766c..cb22556f7d9 100644 --- a/core/lib/types/src/l2_to_l1_log.rs +++ b/core/lib/types/src/l2_to_l1_log.rs @@ -33,6 +33,17 @@ impl L2ToL1Log { self.serialize_commitment(&mut buffer); buffer } + + pub fn packed_encoding(&self) -> Vec { + let mut res = vec![]; + res.extend_from_slice(&self.shard_id.to_be_bytes()); + res.extend_from_slice(&(self.is_service as u8).to_be_bytes()); + res.extend_from_slice(&self.tx_number_in_block.to_be_bytes()); + res.extend_from_slice(self.sender.as_bytes()); + res.extend(self.key.as_bytes()); + res.extend(self.value.as_bytes()); + res + } } impl From for L2ToL1Log { diff --git a/core/lib/types/src/protocol_version.rs b/core/lib/types/src/protocol_version.rs index a36fd003cfa..58825d3a395 100644 --- a/core/lib/types/src/protocol_version.rs +++ b/core/lib/types/src/protocol_version.rs @@ -154,6 +154,32 @@ pub struct L1VerifierConfig { pub recursion_scheduler_level_vk_hash: H256, } +/// Represents a call to be made during governance operation. +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct Call { + /// The address to which the call will be made. + pub target: Address, + /// The amount of Ether (in wei) to be sent along with the call. + pub value: U256, + /// The calldata to be executed on the `target` address. + pub data: Vec, + /// Hash of the corresponding Ethereum transaction. Size should be 32 bytes. + pub eth_hash: H256, + /// Block in which Ethereum transaction was included. + pub eth_block: u64, +} + +/// Defines the structure of an operation that Governance contract executes. +#[derive(Debug, Clone, Default)] +pub struct GovernanceOperation { + /// An array of `Call` structs, each representing a call to be made during the operation. + pub calls: Vec, + /// The hash of the predecessor operation, that should be executed before this operation. + pub predecessor: H256, + /// The value used for creating unique operation hashes. + pub salt: H256, +} + /// Protocol upgrade proposal from L1. /// Most of the fields are optional meaning if value is none /// then this field is not changed within an upgrade. @@ -175,10 +201,63 @@ pub struct ProtocolUpgrade { pub tx: Option, } -impl TryFrom for ProtocolUpgrade { +impl TryFrom for GovernanceOperation { type Error = crate::ethabi::Error; fn try_from(event: Log) -> Result { + let call_param_type = ParamType::Tuple(vec![ + ParamType::Address, + ParamType::Uint(256), + ParamType::Bytes, + ]); + + let operation_param_type = ParamType::Tuple(vec![ + ParamType::Array(Box::new(call_param_type)), + ParamType::FixedBytes(32), + ParamType::FixedBytes(32), + ]); + let mut decoded = decode(&[ParamType::Uint(256), operation_param_type], &event.data.0)?; + decoded = decoded.remove(1).into_tuple().unwrap(); + + let eth_hash = event + .transaction_hash + .expect("Event transaction hash is missing"); + let eth_block = event + .block_number + .expect("Event block number is missing") + .as_u64(); + + let calls = decoded.remove(0).into_array().unwrap(); + let predecessor = H256::from_slice(&decoded.remove(0).into_fixed_bytes().unwrap()); + let salt = H256::from_slice(&decoded.remove(0).into_fixed_bytes().unwrap()); + + let calls = calls + .into_iter() + .map(|call| { + let mut decoded = call.into_tuple().unwrap(); + + Call { + target: decoded.remove(0).into_address().unwrap(), + value: decoded.remove(0).into_uint().unwrap(), + data: decoded.remove(0).into_bytes().unwrap(), + eth_hash, + eth_block, + } + }) + .collect(); + + Ok(Self { + calls, + predecessor, + salt, + }) + } +} + +impl TryFrom for ProtocolUpgrade { + type Error = crate::ethabi::Error; + + fn try_from(call: Call) -> Result { let facet_cut_param_type = ParamType::Tuple(vec![ ParamType::Address, ParamType::Uint(8), @@ -190,10 +269,7 @@ impl TryFrom for ProtocolUpgrade { ParamType::Address, ParamType::Bytes, ]); - let mut decoded = decode( - &[diamond_cut_data_param_type, ParamType::FixedBytes(32)], - &event.data.0, - )?; + let mut decoded = decode(&[diamond_cut_data_param_type], &call.data[4..])?; let init_calldata = match decoded.remove(0) { Token::Tuple(tokens) => tokens[2].clone().into_bytes().unwrap(), @@ -314,14 +390,6 @@ impl TryFrom for ProtocolUpgrade { let reserved_dynamic = transaction.remove(0).into_bytes().unwrap(); assert_eq!(reserved_dynamic.len(), 0); - let eth_hash = event - .transaction_hash - .expect("Event transaction hash is missing"); - let eth_block = event - .block_number - .expect("Event block number is missing") - .as_u64(); - let common_data = ProtocolUpgradeTxCommonData { canonical_tx_hash, sender, @@ -331,8 +399,8 @@ impl TryFrom for ProtocolUpgrade { gas_limit, max_fee_per_gas, gas_per_pubdata_limit, - eth_hash, - eth_block, + eth_hash: call.eth_hash, + eth_block: call.eth_block, }; let factory_deps = factory_deps diff --git a/core/lib/types/src/storage/writes.rs b/core/lib/types/src/storage/writes.rs deleted file mode 100644 index 9bdacebbbc3..00000000000 --- a/core/lib/types/src/storage/writes.rs +++ /dev/null @@ -1,71 +0,0 @@ -use crate::H256; -use serde::{Deserialize, Serialize}; -use zksync_basic_types::U256; - -/// In vm there are two types of writes Initial and Repeated. After the first write to the leaf, -/// we assign an index to it and in the future we should use index instead of full key. -/// It allows us to compress the data. -#[derive(Clone, Debug, Default, Eq, PartialEq)] -pub struct InitialStorageWrite { - pub index: u64, - pub key: U256, - pub value: H256, -} - -#[derive(Clone, Debug, Deserialize, Serialize, Default, Eq, PartialEq)] -pub struct RepeatedStorageWrite { - pub index: u64, - pub value: H256, -} - -#[cfg(test)] -mod tests { - use super::*; - use crate::commitment::serialize_commitments; - use crate::{H256, U256}; - - #[test] - fn calculate_hash_for_storage_writes() { - let initial_writes = vec![ - InitialStorageWrite { - index: 1, - key: U256::from(1u32), - value: H256::from([1; 32]), - }, - InitialStorageWrite { - index: 2, - key: U256::from(2u32), - value: H256::from([3; 32]), - }, - ]; - let bytes = serialize_commitments(&initial_writes); - - let expected_bytes = "00000002\ - 0100000000000000000000000000000000000000000000000000000000000000\ - 0101010101010101010101010101010101010101010101010101010101010101\ - 0200000000000000000000000000000000000000000000000000000000000000\ - 0303030303030303030303030303030303030303030303030303030303030303"; - let expected_bytes = hex::decode(expected_bytes).unwrap(); - assert_eq!(expected_bytes, bytes); - - let repeated_writes = vec![ - RepeatedStorageWrite { - index: 1, - value: H256::from([1; 32]), - }, - RepeatedStorageWrite { - index: 2, - value: H256::from([3; 32]), - }, - ]; - let bytes = serialize_commitments(&repeated_writes); - - let expected_bytes = "00000002\ - 0000000000000001\ - 0101010101010101010101010101010101010101010101010101010101010101\ - 0000000000000002\ - 0303030303030303030303030303030303030303030303030303030303030303"; - let expected_bytes = hex::decode(expected_bytes).unwrap(); - assert_eq!(expected_bytes, bytes); - } -} diff --git a/core/lib/types/src/storage/writes/compression.rs b/core/lib/types/src/storage/writes/compression.rs new file mode 100644 index 00000000000..1f8ac697954 --- /dev/null +++ b/core/lib/types/src/storage/writes/compression.rs @@ -0,0 +1,435 @@ +use super::*; + +// Trait used to define functionality for different compression modes. Defines functions for +// output size, what type of operation was performed, and value/extended compression. +trait CompressionMode: 'static { + /// Id of the operation being performed. + fn operation_id(&self) -> usize; + /// Number of bytes the compressed value requires. + fn output_size(&self) -> Option; + /// Compress the value. + fn compress_value_only(&self) -> Option>; + /// Concatenation of the metadata byte (5 bits for len and 3 bits for operation type) and the compressed value. + fn compress_extended(&self) -> Option>; +} + +struct CompressionByteAdd { + pub prev_value: U256, + pub new_value: U256, +} + +impl CompressionByteAdd { + fn get_diff_and_size(&self) -> Option<(U256, usize)> { + let diff = self.new_value.overflowing_sub(self.prev_value).0; + // Ceiling division + let size = (diff.bits() + 7) / 8; + + if size >= 31 { + None + } else { + Some((diff, size)) + } + } +} + +impl CompressionMode for CompressionByteAdd { + fn operation_id(&self) -> usize { + 1 + } + + fn output_size(&self) -> Option { + self.get_diff_and_size().map(|(_, size)| size) + } + + fn compress_value_only(&self) -> Option> { + let (diff, size) = self.get_diff_and_size()?; + + let mut buffer = [0u8; 32]; + diff.to_big_endian(&mut buffer); + + let diff = buffer[(32 - size)..].to_vec(); + + Some(diff) + } + + fn compress_extended(&self) -> Option> { + match self.compress_value_only() { + None => None, + Some(compressed_val) => { + let mut res: Vec = vec![]; + res.push(((self.output_size().unwrap() << 3) | self.operation_id()) as u8); + res.extend(compressed_val); + Some(res) + } + } + } +} + +struct CompressionByteSub { + pub prev_value: U256, + pub new_value: U256, +} + +impl CompressionByteSub { + fn get_diff_and_size(&self) -> Option<(U256, usize)> { + let diff = self.prev_value.overflowing_sub(self.new_value).0; + // Ceiling division + let size = (diff.bits() + 7) / 8; + + if size >= 31 { + None + } else { + Some((diff, size)) + } + } +} + +impl CompressionMode for CompressionByteSub { + fn operation_id(&self) -> usize { + 2 + } + + fn output_size(&self) -> Option { + self.get_diff_and_size().map(|(_, size)| size) + } + + fn compress_value_only(&self) -> Option> { + let (diff, size) = self.get_diff_and_size()?; + + let mut buffer = [0u8; 32]; + diff.to_big_endian(&mut buffer); + + let diff = buffer[(32 - size)..].to_vec(); + + Some(diff) + } + + fn compress_extended(&self) -> Option> { + match self.compress_value_only() { + None => None, + Some(compressed_val) => { + let mut res: Vec = vec![]; + res.push(((self.output_size().unwrap() << 3) | self.operation_id()) as u8); + res.extend(compressed_val); + Some(res) + } + } + } +} + +struct CompressionByteTransform { + pub new_value: U256, +} + +impl CompressionByteTransform { + fn get_diff_and_size(&self) -> Option<(U256, usize)> { + // Ceiling division + let size = (self.new_value.bits() + 7) / 8; + + if size >= 31 { + None + } else { + Some((self.new_value, size)) + } + } +} + +impl CompressionMode for CompressionByteTransform { + fn operation_id(&self) -> usize { + 3 + } + + fn output_size(&self) -> Option { + self.get_diff_and_size().map(|(_, size)| size) + } + + fn compress_value_only(&self) -> Option> { + let (diff, size) = self.get_diff_and_size()?; + + let mut buffer = [0u8; 32]; + diff.to_big_endian(&mut buffer); + + let diff = buffer[(32 - size)..].to_vec(); + + Some(diff) + } + + fn compress_extended(&self) -> Option> { + match self.compress_value_only() { + None => None, + Some(compressed_val) => { + let mut res: Vec = vec![]; + res.push(((self.output_size().unwrap() << 3) | self.operation_id()) as u8); + res.extend(compressed_val); + Some(res) + } + } + } +} + +struct CompressionByteNone { + pub new_value: U256, +} + +impl CompressionByteNone { + fn new(new_value: U256) -> Self { + Self { new_value } + } +} + +impl CompressionMode for CompressionByteNone { + fn operation_id(&self) -> usize { + 0 + } + + fn output_size(&self) -> Option { + Some(32) + } + + fn compress_value_only(&self) -> Option> { + let mut buffer = [0u8; 32]; + self.new_value.to_big_endian(&mut buffer); + + let diff = buffer[(32 - self.output_size().unwrap())..].to_vec(); + + Some(diff) + } + + fn compress_extended(&self) -> Option> { + let mut res = [0u8; 33]; + + self.new_value.to_big_endian(&mut res[1..33]); + Some(res.to_vec()) + } +} + +fn default_passes(prev_value: U256, new_value: U256) -> Vec> { + let mut result: Vec> = vec![]; + result.push(Box::new(CompressionByteAdd { + prev_value, + new_value, + })); + result.push(Box::new(CompressionByteSub { + prev_value, + new_value, + })); + result.push(Box::new(CompressionByteTransform { new_value })); + + result +} + +/// For a given previous value and new value, try each compression strategy selecting the most +/// efficient one. Using that strategy, generate the extended compression (metadata byte and compressed value). +/// If none are found then use the full 32 byte new value with the metadata byte being `0x00` +pub fn compress_with_best_strategy(prev_value: U256, new_value: U256) -> Vec { + let compressors = default_passes(prev_value, new_value); + + let mut result: Option<(&Box, usize)> = None; + for compressor in compressors.iter() { + if let Some(expected_size) = compressor.output_size() { + if let Some(_) = compressor.compress_value_only() { + if let Some(existing) = result.as_mut() { + if expected_size < existing.1 { + existing.0 = compressor; + existing.1 = expected_size; + } + } else { + result = Some((compressor, expected_size)); + } + } + } + } + + match result { + None => CompressionByteNone::new(new_value) + .compress_extended() + .unwrap(), + Some((compression_strategy, _)) => compression_strategy.compress_extended().unwrap(), + } +} + +#[cfg(test)] +mod tests { + use super::*; + use std::ops::{Add, BitAnd, Shr, Sub}; + + #[test] + fn test_compress_addition() { + let initial_val = U256::from(255438218); + let final_val = U256::from(255438638); + + let compress_add_strategy = CompressionByteAdd { + prev_value: initial_val, + new_value: final_val, + }; + + verify_sub_is_none(initial_val, final_val); + + assert!(compress_add_strategy.output_size() == Some(2)); + + assert!(compress_add_strategy.compress_value_only() == Some(vec![01, 164])); + + let compressed_val = compress_with_best_strategy(initial_val, final_val); + + assert!(compressed_val == vec![17, 01, 164]); + + let (metadata, compressed_val) = compressed_val.split_at(1); + + let metadata = U256::from(metadata); + let operation = metadata.bitand(U256::from(7u8)); + assert!(operation == U256::from(compress_add_strategy.operation_id())); + let len = metadata.shr(U256::from(3u8)); + assert!(len == U256::from(2)); + + let compressed_val = U256::from(compressed_val); + assert!( + (((compressed_val.bits() as f64) / 8f64).ceil() as usize) == (len.as_u128() as usize) + ); + assert!(initial_val.add(compressed_val) == final_val); + } + + #[test] + fn test_compress_subtraction() { + let initial_val = U256::from(580481589); + let final_val = U256::from(229496100); + + let compression_sub_strategy = CompressionByteSub { + prev_value: initial_val, + new_value: final_val, + }; + + verify_add_is_none(initial_val, final_val); + + assert!(compression_sub_strategy.output_size() == Some(4)); + + assert!(compression_sub_strategy.compress_value_only() == Some(vec![20, 235, 157, 17])); + assert!(compression_sub_strategy.compress_extended() == Some(vec![34, 20, 235, 157, 17])); + + let compressed_value = compress_with_best_strategy(initial_val, final_val); + + assert!(compressed_value == vec![34, 20, 235, 157, 17]); + + let (metadata, compressed_val) = compressed_value.split_at(1); + + let metadata = U256::from(metadata); + let operation = metadata.bitand(U256::from(7u8)); + assert!(operation == U256::from(compression_sub_strategy.operation_id())); + let len = metadata.shr(U256::from(3u8)); + assert!(len == U256::from(4)); + + let compressed_val = U256::from(compressed_val); + assert!( + (((compressed_val.bits() as f64) / 8f64).ceil() as usize) == (len.as_u128() as usize) + ); + assert!(initial_val.sub(compressed_val) == final_val); + } + + #[test] + fn test_compress_transform() { + let initial_val = U256::from(580481589); + let final_val = U256::from(1337); + + let compressed_value = compress_with_best_strategy(initial_val, final_val); + assert!(compressed_value == vec![19, 05, 57]); + + let (metadata, compressed_val) = compressed_value.split_at(1); + + let metadata = U256::from(metadata); + let operation = metadata.bitand(U256::from(7u8)); + assert!(operation == U256::from(3)); + let len = metadata.shr(U256::from(3u8)); + dbg!(len); + assert!(len == U256::from(2)); + + let compressed_val = U256::from(compressed_val); + assert!( + (((compressed_val.bits() as f64) / 8f64).ceil() as usize) == (len.as_u128() as usize) + ); + assert!(compressed_val == final_val); + } + + #[test] + fn test_compress_transform_to_zero() { + let initial_val = U256::from(580481589); + let final_val = U256::from(0); + + let compressed_value = compress_with_best_strategy(initial_val, final_val); + assert!(compressed_value == vec![3]); + + let (metadata, compressed_val) = compressed_value.split_at(1); + + let metadata = U256::from(metadata); + let operation = metadata.bitand(U256::from(7u8)); + assert!(operation == U256::from(3)); + let len = metadata.shr(U256::from(3u8)); + assert!(len == U256::from(0)); + + let compressed_val = U256::from(compressed_val); + assert!( + (((compressed_val.bits() as f64) / 8f64).ceil() as usize) == (len.as_u128() as usize) + ); + assert!(compressed_val == final_val); + } + + #[test] + fn test_compress_transform_to_one_from_max() { + let initial_val = U256::MAX; + let final_val = U256::from(1); + + let compressed_value = compress_with_best_strategy(initial_val, final_val); + assert!(compressed_value == vec![9, 2]); + + let (metadata, compressed_val) = compressed_value.split_at(1); + + let metadata = U256::from(metadata); + let operation = metadata.bitand(U256::from(7u8)); + assert!(operation == U256::from(1)); + let len = metadata.shr(U256::from(3u8)); + assert!(len == U256::from(1)); + + let compressed_val = U256::from(compressed_val); + assert!( + (((compressed_val.bits() as f64) / 8f64).ceil() as usize) == (len.as_u128() as usize) + ); + } + + #[test] + fn test_compress_transform_to_u256_max() { + let initial_val = U256::from(0); + let final_val = U256::MAX; + + let compressed_value = compress_with_best_strategy(initial_val, final_val); + assert!(compressed_value == vec![10, 1]); + + let (metadata, compressed_val) = compressed_value.split_at(1); + + let metadata = U256::from(metadata); + let operation = metadata.bitand(U256::from(7u8)); + assert!(operation == U256::from(2)); + let len = metadata.shr(U256::from(3u8)); + assert!(len == U256::from(1)); + + let compressed_val = U256::from(compressed_val); + assert!((((compressed_val.bits() as f64) / 8f64).ceil() as usize) == 1); + } + + fn verify_add_is_none(initial_val: U256, final_val: U256) { + let compression_add_strategy = CompressionByteAdd { + prev_value: initial_val, + new_value: final_val, + }; + + assert!(compression_add_strategy.compress_value_only() == None); + assert!(compression_add_strategy.compress_extended() == None); + } + + fn verify_sub_is_none(initial_val: U256, final_val: U256) { + let compression_sub_strategy = CompressionByteSub { + prev_value: initial_val, + new_value: final_val, + }; + + assert!(compression_sub_strategy.compress_value_only() == None); + assert!(compression_sub_strategy.compress_extended() == None); + } +} diff --git a/core/lib/types/src/storage/writes/mod.rs b/core/lib/types/src/storage/writes/mod.rs new file mode 100644 index 00000000000..01ef985d78b --- /dev/null +++ b/core/lib/types/src/storage/writes/mod.rs @@ -0,0 +1,459 @@ +use std::convert::TryInto; + +use crate::H256; +use serde::{Deserialize, Serialize}; +use zksync_basic_types::{Address, U256}; + +use self::compression::compress_with_best_strategy; + +mod compression; + +const COMPRESSION_VERSION_NUMBER: u8 = 1; +const BYTES_PER_ENUMERATION_INDEX: u8 = 4; +const STATE_DIFF_RECORD_SIZE: usize = 156; + +// 2 * 136 - the size that allows for two keccak rounds. +pub const PADDED_ENCODED_STORAGE_DIFF_LEN_BYTES: usize = 272; + +/// In vm there are two types of writes Initial and Repeated. After the first write to the leaf, +/// we assign an index to it and in the future we should use index instead of full key. +/// It allows us to compress the data. +#[derive(Clone, Debug, Default, Eq, PartialEq)] +pub struct InitialStorageWrite { + pub index: u64, + pub key: U256, + pub value: H256, +} + +#[derive(Clone, Debug, Deserialize, Serialize, Default, Eq, PartialEq)] +pub struct RepeatedStorageWrite { + pub index: u64, + pub value: H256, +} + +#[derive(Clone, Debug, Deserialize, Serialize, Default, Eq, PartialEq)] +pub struct StateDiffRecord { + /// address state diff occured at + pub address: Address, + /// storage slot key updated + pub key: U256, + /// derived_key == Blake2s(bytes32(address), key) + pub derived_key: [u8; 32], + /// index in tree of state diff + pub enumeration_index: u64, + /// previous value + pub initial_value: U256, + /// updated value + pub final_value: U256, +} + +impl StateDiffRecord { + // Serialize into byte representation. + fn encode(&self) -> [u8; STATE_DIFF_RECORD_SIZE] { + let mut encoding = [0u8; STATE_DIFF_RECORD_SIZE]; + let mut offset = 0; + let mut end = 0; + + end += 20; + encoding[offset..end].copy_from_slice(self.address.as_fixed_bytes()); + offset = end; + + end += 32; + self.key.to_big_endian(&mut encoding[offset..end]); + offset = end; + + end += 32; + encoding[offset..end].copy_from_slice(&self.derived_key); + offset = end; + + end += 8; + encoding[offset..end].copy_from_slice(&self.enumeration_index.to_be_bytes()); + offset = end; + + end += 32; + self.initial_value.to_big_endian(&mut encoding[offset..end]); + offset = end; + + end += 32; + self.final_value.to_big_endian(&mut encoding[offset..end]); + offset = end; + + debug_assert_eq!(offset, encoding.len()); + + encoding + } + + pub fn encode_padded(&self) -> [u8; PADDED_ENCODED_STORAGE_DIFF_LEN_BYTES] { + let mut extended_state_diff_encoding = [0u8; PADDED_ENCODED_STORAGE_DIFF_LEN_BYTES]; + let packed_encoding = self.encode(); + extended_state_diff_encoding[0..packed_encoding.len()].copy_from_slice(&packed_encoding); + + extended_state_diff_encoding + } + + /// Decode bytes into StateDiffRecord + pub fn from_slice(data: &[u8]) -> Self { + assert_eq!(data.len(), 156); + + Self { + address: Address::from_slice(&data[0..20]), + key: U256::from(&data[20..52]), + derived_key: data[52..84].try_into().unwrap(), + enumeration_index: u64::from_be_bytes(data[84..92].try_into().unwrap()), + initial_value: U256::from(&data[92..124]), + final_value: U256::from(&data[124..156]), + } + } + + /// compression follows the following algo: + /// 1. if repeated write: + /// entry <- enumeration_index || value + /// 2. if initial write: + /// entry <- blake2(bytes32(address), key) || value + /// size: + /// initial: 64 bytes + /// repeated: 40 bytes + /// before: 156 bytes for each + pub fn compress(&self) -> Vec { + let mut comp_state_diff = match self.enumeration_index { + 0 => self.derived_key.to_vec(), + enumeration_index if enumeration_index < u32::MAX.into() => { + (self.enumeration_index as u32).to_be_bytes().to_vec() + } + enumeration_index => panic!("enumeration_index is too large: {}", enumeration_index), + }; + + comp_state_diff.extend(compress_with_best_strategy( + self.initial_value, + self.final_value, + )); + + comp_state_diff + } +} + +/// Compresses a vector of state diff records according to the following: +/// num_initial writes (u32) || compressed initial writes || compressed repeated writes +pub fn compress_state_diffs(mut state_diffs: Vec) -> Vec { + let mut res = vec![]; + + state_diffs.sort_by_key(|rec| (rec.address, rec.key)); + + let (initial_writes, repeated_writes): (Vec<_>, Vec<_>) = state_diffs + .iter() + .partition(|rec| rec.enumeration_index == 0); + + res.extend((initial_writes.len() as u16).to_be_bytes()); + for state_diff in initial_writes { + res.extend(state_diff.compress()); + } + + for state_diff in repeated_writes { + res.extend(state_diff.compress()); + } + + prepend_header(res) +} + +fn prepend_header(compressed_state_diffs: Vec) -> Vec { + let mut res = vec![0u8; 5]; + res[0] = COMPRESSION_VERSION_NUMBER; + + res[1..4].copy_from_slice(&(compressed_state_diffs.len() as u32).to_be_bytes()[1..4]); + + res[4] = BYTES_PER_ENUMERATION_INDEX; + + res.extend(compressed_state_diffs); + + res.to_vec() +} + +#[cfg(test)] +mod tests { + use std::ops::{Add, Sub}; + use std::str::FromStr; + + use super::*; + use crate::commitment::serialize_commitments; + use crate::{H256, U256}; + + #[test] + fn calculate_hash_for_storage_writes() { + let initial_writes = vec![ + InitialStorageWrite { + index: 1, + key: U256::from(1u32), + value: H256::from([1; 32]), + }, + InitialStorageWrite { + index: 2, + key: U256::from(2u32), + value: H256::from([3; 32]), + }, + ]; + let bytes = serialize_commitments(&initial_writes); + + let expected_bytes = "0100000000000000000000000000000000000000000000000000000000000000\ + 0101010101010101010101010101010101010101010101010101010101010101\ + 0200000000000000000000000000000000000000000000000000000000000000\ + 0303030303030303030303030303030303030303030303030303030303030303"; + let expected_bytes = hex::decode(expected_bytes).unwrap(); + assert_eq!(expected_bytes, bytes); + + let repeated_writes = vec![ + RepeatedStorageWrite { + index: 1, + value: H256::from([1; 32]), + }, + RepeatedStorageWrite { + index: 2, + value: H256::from([3; 32]), + }, + ]; + let bytes = serialize_commitments(&repeated_writes); + + let expected_bytes = "0000000000000001\ + 0101010101010101010101010101010101010101010101010101010101010101\ + 0000000000000002\ + 0303030303030303030303030303030303030303030303030303030303030303"; + + let expected_bytes = hex::decode(expected_bytes).unwrap(); + assert_eq!(expected_bytes, bytes); + } + + #[test] + fn test_compression() { + let initial_add = StateDiffRecord { + address: Address::from_str("0x09610c49cfe4a0509dbe319886eb0cfc01f2cfd1").unwrap(), + key: U256::from(1u8), + derived_key: [1u8; 32], + enumeration_index: 0u64, + initial_value: U256::default(), + final_value: U256::from(64u8), + }; + + let initial_sub = StateDiffRecord { + address: Address::from_str("0x1c915d9b098ecf548d978ef9931a09e4e2167fab").unwrap(), + key: U256::from(2u8), + derived_key: [2u8; 32], + enumeration_index: 0u64, + initial_value: U256::from(64u8), + final_value: U256::from(20u8), + }; + + let initial_transform = StateDiffRecord { + address: Address::from_str("0x3859d669dcc980c3ba68806a8d49bbc998da781d").unwrap(), + key: U256::from(3u8), + derived_key: [3u8; 32], + enumeration_index: 0u64, + initial_value: U256::MAX, + final_value: U256::from(255u8), + }; + + let initial_none = StateDiffRecord { + address: Address::from_str("0x3f441bf60f4d8f7704b262f41b7b015c21623f46").unwrap(), + key: U256::from(5u8), + derived_key: [4u8; 32], + enumeration_index: 0u64, + initial_value: U256::MAX / 2, + final_value: U256::MAX, + }; + + let repeated_add = StateDiffRecord { + address: Address::from_str("0x5e52dd6d60c2f89b5ced2bddf53794f0d8c58254").unwrap(), + key: U256::from(1u8), + derived_key: [5u8; 32], + enumeration_index: 1u64, + initial_value: U256::default(), + final_value: U256::from(64u8), + }; + + let repeated_sub = StateDiffRecord { + address: Address::from_str("0x9bac6b5cb15aa5f80f9480af6b530ecd93a30a41").unwrap(), + key: U256::from(2u8), + derived_key: [6u8; 32], + enumeration_index: 2u64, + initial_value: U256::from(64u8), + final_value: U256::from(20u8), + }; + + let repeated_transform = StateDiffRecord { + address: Address::from_str("0xaf21caa263eefa213301522c1062d22a890b2b6d").unwrap(), + key: U256::from(3u8), + derived_key: [7u8; 32], + enumeration_index: 3u64, + initial_value: U256::MAX, + final_value: U256::from(255u8), + }; + + let repeated_none = StateDiffRecord { + address: Address::from_str("0xb21058b7c589c49871a295575418e9e3edaf44b0").unwrap(), + key: U256::from(5u8), + derived_key: [8u8; 32], + enumeration_index: 5u64, + initial_value: U256::MAX / 2, + final_value: U256::MAX, + }; + + let storage_diffs = vec![ + initial_add, + initial_sub, + initial_transform, + initial_none, + repeated_add, + repeated_sub, + repeated_transform, + repeated_none, + ]; + + let compressed_state_diffs = compress_state_diffs(storage_diffs.clone()); + + let mut storage_diffs = storage_diffs.clone(); + storage_diffs.sort_by_key(|rec| (rec.address, rec.key)); + + let (header, compressed_state_diffs) = compressed_state_diffs.split_at(5); + + assert!(header[0] == COMPRESSION_VERSION_NUMBER); + assert!(U256::from(&header[1..4]) == U256::from(compressed_state_diffs.len())); + assert!(header[4] == 4u8); + + let (num_initial, compressed_state_diffs) = compressed_state_diffs.split_at(2); + assert!(num_initial[0] == 0u8); + assert!(num_initial[1] == 4u8); + + let (initial, repeated): (Vec<_>, Vec<_>) = + storage_diffs.iter().partition(|v| v.enumeration_index == 0); + assert!((initial.len() as u8) == num_initial[1]); + + // Initial + let (key, compressed_state_diffs) = compressed_state_diffs.split_at(32); + assert!(U256::from(key) == U256::from(initial[0].derived_key)); + let (metadata, compressed_state_diffs) = compressed_state_diffs.split_at(1); + let metadata = metadata[0]; + let operation = metadata & 7; + let len = (metadata >> 3) as usize; + verify_value( + initial[0].initial_value, + initial[0].final_value, + operation, + &compressed_state_diffs.to_vec()[..len], + ); + let compressed_state_diffs = &compressed_state_diffs[len..]; + + let (key, compressed_state_diffs) = compressed_state_diffs.split_at(32); + assert!(U256::from(key) == U256::from(initial[1].derived_key)); + let (metadata, compressed_state_diffs) = compressed_state_diffs.split_at(1); + let metadata = metadata[0]; + let operation = metadata & 7; + let len = (metadata >> 3) as usize; + verify_value( + initial[1].initial_value, + initial[1].final_value, + operation, + &compressed_state_diffs.to_vec()[..len], + ); + let compressed_state_diffs = &compressed_state_diffs[len..]; + + let (key, compressed_state_diffs) = compressed_state_diffs.split_at(32); + assert!(U256::from(key) == U256::from(initial[2].derived_key)); + let (metadata, compressed_state_diffs) = compressed_state_diffs.split_at(1); + let metadata = metadata[0]; + let operation = metadata & 7; + let len = (metadata >> 3) as usize; + verify_value( + initial[2].initial_value, + initial[2].final_value, + operation, + &compressed_state_diffs.to_vec()[..len], + ); + let compressed_state_diffs = &compressed_state_diffs[len..]; + + let (key, compressed_state_diffs) = compressed_state_diffs.split_at(32); + assert!(U256::from(key) == U256::from(initial[3].derived_key)); + let (metadata, compressed_state_diffs) = compressed_state_diffs.split_at(1); + let metadata = metadata[0]; + let operation = metadata & 7; + verify_value( + initial[3].initial_value, + initial[3].final_value, + operation, + &compressed_state_diffs.to_vec()[..32], + ); + let compressed_state_diffs = &compressed_state_diffs[32..]; + + // Repeated + let (enum_index, compressed_state_diffs) = compressed_state_diffs.split_at(4); + assert!((enum_index[3] as u64) == repeated[0].enumeration_index); + let (metadata, compressed_state_diffs) = compressed_state_diffs.split_at(1); + let metadata = metadata[0]; + let operation = metadata & 7; + let len = (metadata >> 3) as usize; + verify_value( + repeated[0].initial_value, + repeated[0].final_value, + operation, + &compressed_state_diffs.to_vec()[..len], + ); + let compressed_state_diffs = &compressed_state_diffs[len..]; + + let (enum_index, compressed_state_diffs) = compressed_state_diffs.split_at(4); + assert!((enum_index[3] as u64) == repeated[1].enumeration_index); + let (metadata, compressed_state_diffs) = compressed_state_diffs.split_at(1); + let metadata = metadata[0]; + let operation = metadata & 7; + let len = (metadata >> 3) as usize; + verify_value( + repeated[1].initial_value, + repeated[1].final_value, + operation, + &compressed_state_diffs.to_vec()[..len], + ); + let compressed_state_diffs = &compressed_state_diffs[len..]; + + let (enum_index, compressed_state_diffs) = compressed_state_diffs.split_at(4); + assert!((enum_index[3] as u64) == repeated[2].enumeration_index); + let (metadata, compressed_state_diffs) = compressed_state_diffs.split_at(1); + let metadata = metadata[0]; + let operation = metadata & 7; + let len = (metadata >> 3) as usize; + verify_value( + repeated[2].initial_value, + repeated[2].final_value, + operation, + &compressed_state_diffs.to_vec()[..len], + ); + let compressed_state_diffs = &compressed_state_diffs[len..]; + + let (enum_index, compressed_state_diffs) = compressed_state_diffs.split_at(4); + assert!((enum_index[3] as u64) == repeated[3].enumeration_index); + let (metadata, compressed_state_diffs) = compressed_state_diffs.split_at(1); + let metadata = metadata[0]; + let operation = metadata & 7; + verify_value( + repeated[3].initial_value, + repeated[3].final_value, + operation, + &compressed_state_diffs.to_vec()[..32], + ); + let compressed_state_diffs = &compressed_state_diffs[32..]; + + assert!(compressed_state_diffs.len() == 0); + } + + fn verify_value( + initial_value: U256, + final_value: U256, + operation: u8, + compressed_value: &[u8], + ) { + if operation == 0 || operation == 3 { + assert!(U256::from(compressed_value) == final_value); + } else if operation == 1 { + assert!(initial_value.add(U256::from(compressed_value)) == final_value); + } else if operation == 2 { + assert!(initial_value.sub(U256::from(compressed_value)) == final_value); + } else { + panic!("invalid operation id"); + } + } +} diff --git a/core/lib/types/src/system_contracts.rs b/core/lib/types/src/system_contracts.rs index b925f8ddd0f..58e252a3bec 100644 --- a/core/lib/types/src/system_contracts.rs +++ b/core/lib/types/src/system_contracts.rs @@ -2,16 +2,15 @@ use std::path::PathBuf; use zksync_basic_types::{AccountTreeId, Address, U256}; use zksync_config::constants::{ - BOOTLOADER_UTILITIES_ADDRESS, BYTECODE_COMPRESSOR_ADDRESS, COMPLEX_UPGRADER_ADDRESS, - EVENT_WRITER_ADDRESS, + BOOTLOADER_UTILITIES_ADDRESS, COMPRESSOR_ADDRESS, EVENT_WRITER_ADDRESS, }; use zksync_contracts::{read_sys_contract_bytecode, ContractLanguage, SystemContractsRepo}; use crate::{ block::DeployedContract, ACCOUNT_CODE_STORAGE_ADDRESS, BOOTLOADER_ADDRESS, - CONTRACT_DEPLOYER_ADDRESS, ECRECOVER_PRECOMPILE_ADDRESS, IMMUTABLE_SIMULATOR_STORAGE_ADDRESS, - KECCAK256_PRECOMPILE_ADDRESS, KNOWN_CODES_STORAGE_ADDRESS, L1_MESSENGER_ADDRESS, - L2_ETH_TOKEN_ADDRESS, MSG_VALUE_SIMULATOR_ADDRESS, NONCE_HOLDER_ADDRESS, + COMPLEX_UPGRADER_ADDRESS, CONTRACT_DEPLOYER_ADDRESS, ECRECOVER_PRECOMPILE_ADDRESS, + IMMUTABLE_SIMULATOR_STORAGE_ADDRESS, KECCAK256_PRECOMPILE_ADDRESS, KNOWN_CODES_STORAGE_ADDRESS, + L1_MESSENGER_ADDRESS, L2_ETH_TOKEN_ADDRESS, MSG_VALUE_SIMULATOR_ADDRESS, NONCE_HOLDER_ADDRESS, SHA256_PRECOMPILE_ADDRESS, SYSTEM_CONTEXT_ADDRESS, }; use once_cell::sync::Lazy; @@ -109,12 +108,7 @@ static SYSTEM_CONTRACT_LIST: [(&str, &str, Address, ContractLanguage); 18] = [ BOOTLOADER_UTILITIES_ADDRESS, ContractLanguage::Sol, ), - ( - "", - "BytecodeCompressor", - BYTECODE_COMPRESSOR_ADDRESS, - ContractLanguage::Sol, - ), + ("", "Compressor", COMPRESSOR_ADDRESS, ContractLanguage::Sol), ( "", "ComplexUpgrader", diff --git a/core/lib/types/src/tx/tx_execution_info.rs b/core/lib/types/src/tx/tx_execution_info.rs index 32f2f3c5ef1..6639fa2992a 100644 --- a/core/lib/types/src/tx/tx_execution_info.rs +++ b/core/lib/types/src/tx/tx_execution_info.rs @@ -2,19 +2,8 @@ use crate::commitment::SerializeCommitment; use crate::fee::TransactionExecutionMetrics; use crate::l2_to_l1_log::L2ToL1Log; use crate::writes::{InitialStorageWrite, RepeatedStorageWrite}; -use crate::{StorageLogQuery, VmEvent}; use std::ops::{Add, AddAssign}; -/// Events/storage logs/l2->l1 logs created within transaction execution. -#[derive(Debug, Clone, Default, PartialEq)] -pub struct VmExecutionLogs { - pub storage_logs: Vec, - pub events: Vec, - pub l2_to_l1_logs: Vec, - // This field moved to statistics, but we need to keep it for backward compatibility - pub total_log_queries_count: usize, -} - #[derive(Debug, Clone, Copy, Eq, PartialEq)] pub enum TxExecutionStatus { Success, @@ -56,7 +45,7 @@ pub struct ExecutionMetrics { pub gas_used: usize, pub published_bytecode_bytes: usize, pub l2_l1_long_messages: usize, - pub l2_l1_logs: usize, + pub l2_to_l1_logs: usize, pub contracts_used: usize, pub contracts_deployed: u16, pub vm_events: usize, @@ -71,7 +60,7 @@ impl ExecutionMetrics { Self { published_bytecode_bytes: tx_metrics.published_bytecode_bytes, l2_l1_long_messages: tx_metrics.l2_l1_long_messages, - l2_l1_logs: tx_metrics.l2_l1_logs, + l2_to_l1_logs: tx_metrics.l2_l1_logs, contracts_deployed: tx_metrics.contracts_deployed, contracts_used: tx_metrics.contracts_used, gas_used: tx_metrics.gas_used, @@ -84,9 +73,12 @@ impl ExecutionMetrics { } pub fn size(&self) -> usize { - self.l2_l1_logs * L2ToL1Log::SERIALIZED_SIZE + self.l2_to_l1_logs * L2ToL1Log::SERIALIZED_SIZE + self.l2_l1_long_messages + self.published_bytecode_bytes + // TODO: refactor this constant + // It represents the need to store the length's of messages as well as bytecodes + + self.l2_to_l1_logs * 4 } } @@ -100,7 +92,7 @@ impl Add for ExecutionMetrics { contracts_deployed: self.contracts_deployed + other.contracts_deployed, contracts_used: self.contracts_used + other.contracts_used, l2_l1_long_messages: self.l2_l1_long_messages + other.l2_l1_long_messages, - l2_l1_logs: self.l2_l1_logs + other.l2_l1_logs, + l2_to_l1_logs: self.l2_to_l1_logs + other.l2_to_l1_logs, gas_used: self.gas_used + other.gas_used, vm_events: self.vm_events + other.vm_events, storage_logs: self.storage_logs + other.storage_logs, diff --git a/core/lib/vm/src/bootloader_state/snapshot.rs b/core/lib/vm/src/bootloader_state/snapshot.rs index e417a3b9ee6..08267d0dfcc 100644 --- a/core/lib/vm/src/bootloader_state/snapshot.rs +++ b/core/lib/vm/src/bootloader_state/snapshot.rs @@ -12,6 +12,8 @@ pub(crate) struct BootloaderStateSnapshot { pub(crate) compressed_bytecodes_encoding: usize, /// Current offset of the free space in the bootloader memory. pub(crate) free_tx_offset: usize, + /// Whether the pubdata information has been provided already + pub(crate) pubdata_information: bool, } #[derive(Debug, Clone)] diff --git a/core/lib/vm/src/bootloader_state/state.rs b/core/lib/vm/src/bootloader_state/state.rs index ca6f54e233e..f0eb0c33e52 100644 --- a/core/lib/vm/src/bootloader_state/state.rs +++ b/core/lib/vm/src/bootloader_state/state.rs @@ -1,6 +1,7 @@ use crate::bootloader_state::l2_block::BootloaderL2Block; use crate::bootloader_state::snapshot::BootloaderStateSnapshot; use crate::bootloader_state::utils::{apply_l2_block, apply_tx_to_memory}; +use once_cell::sync::OnceCell; use std::cmp::Ordering; use zksync_types::{L2ChainId, U256}; use zksync_utils::bytecode::CompressedBytecodeInfo; @@ -8,11 +9,12 @@ use zksync_utils::bytecode::CompressedBytecodeInfo; use crate::constants::TX_DESCRIPTION_OFFSET; use crate::types::inputs::system_env::TxExecutionMode; use crate::types::internals::TransactionData; -use crate::types::outputs::BootloaderMemory; +use crate::types::outputs::{BootloaderMemory, PubdataInput}; use crate::utils::l2_blocks::assert_next_block; use crate::L2BlockEnv; use super::tx::BootloaderTx; +use super::utils::apply_pubdata_to_memory; /// Intermediate bootloader-related VM state. /// /// Required to process transactions one by one (since we intercept the VM execution to execute @@ -38,6 +40,8 @@ pub struct BootloaderState { execution_mode: TxExecutionMode, /// Current offset of the free space in the bootloader memory. free_tx_offset: usize, + /// Information about the the pubdata that will be needed to supply to the L1Messenger + pubdata_information: OnceCell, } impl BootloaderState { @@ -54,6 +58,7 @@ impl BootloaderState { initial_memory, execution_mode, free_tx_offset: 0, + pubdata_information: Default::default(), } } @@ -65,6 +70,12 @@ impl BootloaderState { tx.refund = refund; } + pub(crate) fn set_pubdata_input(&mut self, info: PubdataInput) { + self.pubdata_information + .set(info) + .expect("Pubdata information is already set"); + } + pub(crate) fn start_new_l2_block(&mut self, l2_block: L2BlockEnv) { let last_block = self.last_l2_block(); assert!( @@ -152,6 +163,14 @@ impl BootloaderState { apply_l2_block(&mut initial_memory, l2_block, tx_index) } } + + let pubdata_information = self + .pubdata_information + .clone() + .into_inner() + .expect("Empty pubdata information"); + + apply_pubdata_to_memory(&mut initial_memory, pubdata_information); initial_memory } @@ -236,6 +255,7 @@ impl BootloaderState { last_l2_block: self.last_l2_block().make_snapshot(), compressed_bytecodes_encoding: self.compressed_bytecodes_encoding, free_tx_offset: self.free_tx_offset, + pubdata_information: self.pubdata_information.get().is_some(), } } @@ -250,5 +270,14 @@ impl BootloaderState { } self.last_mut_l2_block() .apply_snapshot(snapshot.last_l2_block); + + if !snapshot.pubdata_information { + self.pubdata_information = Default::default(); + } else { + assert!( + self.pubdata_information.get().is_some(), + "Can not use snapshot from future" + ); + } } } diff --git a/core/lib/vm/src/bootloader_state/utils.rs b/core/lib/vm/src/bootloader_state/utils.rs index 31ec2ede599..62b3433f347 100644 --- a/core/lib/vm/src/bootloader_state/utils.rs +++ b/core/lib/vm/src/bootloader_state/utils.rs @@ -5,9 +5,11 @@ use zksync_utils::{bytes_to_be_words, h256_to_u256}; use crate::bootloader_state::l2_block::BootloaderL2Block; use crate::constants::{ BOOTLOADER_TX_DESCRIPTION_OFFSET, BOOTLOADER_TX_DESCRIPTION_SIZE, COMPRESSED_BYTECODES_OFFSET, - OPERATOR_REFUNDS_OFFSET, TX_DESCRIPTION_OFFSET, TX_OPERATOR_L2_BLOCK_INFO_OFFSET, - TX_OPERATOR_SLOTS_PER_L2_BLOCK_INFO, TX_OVERHEAD_OFFSET, TX_TRUSTED_GAS_LIMIT_OFFSET, + OPERATOR_PROVIDED_L1_MESSENGER_PUBDATA_OFFSET, OPERATOR_REFUNDS_OFFSET, TX_DESCRIPTION_OFFSET, + TX_OPERATOR_L2_BLOCK_INFO_OFFSET, TX_OPERATOR_SLOTS_PER_L2_BLOCK_INFO, TX_OVERHEAD_OFFSET, + TX_TRUSTED_GAS_LIMIT_OFFSET, }; +use crate::types::outputs::PubdataInput; use crate::{BootloaderMemory, TxExecutionMode}; use super::tx::BootloaderTx; @@ -110,6 +112,24 @@ pub(crate) fn apply_l2_block( ]) } +pub(crate) fn apply_pubdata_to_memory( + memory: &mut BootloaderMemory, + pubdata_information: PubdataInput, +) { + let l1_messenger_pubdata_start_slot = OPERATOR_PROVIDED_L1_MESSENGER_PUBDATA_OFFSET + 2; + + pubdata_information + .build_pubdata() + .chunks(32) + .enumerate() + .for_each(|(slot_offset, value)| { + memory.push(( + l1_messenger_pubdata_start_slot + slot_offset, + U256::from(value), + )) + }); +} + /// Forms a word that contains meta information for the transaction execution. /// /// # Current layout diff --git a/core/lib/vm/src/constants.rs b/core/lib/vm/src/constants.rs index a51688b851e..11ca23c59ef 100644 --- a/core/lib/vm/src/constants.rs +++ b/core/lib/vm/src/constants.rs @@ -50,8 +50,25 @@ pub(crate) const TX_TRUSTED_GAS_LIMIT_SLOTS: usize = MAX_TXS_IN_BLOCK; pub(crate) const COMPRESSED_BYTECODES_SLOTS: usize = 32768; -pub(crate) const BOOTLOADER_TX_DESCRIPTION_OFFSET: usize = +pub(crate) const PRIORITY_TXS_L1_DATA_OFFSET: usize = COMPRESSED_BYTECODES_OFFSET + COMPRESSED_BYTECODES_SLOTS; +pub(crate) const PRIORITY_TXS_L1_DATA_SLOTS: usize = 2; + +pub const OPERATOR_PROVIDED_L1_MESSENGER_PUBDATA_OFFSET: usize = + PRIORITY_TXS_L1_DATA_OFFSET + PRIORITY_TXS_L1_DATA_SLOTS; + +/// One of "worst case" scenarios for the number of state diffs in a batch is when 120kb of pubdata is spent +/// on repeated writes, that are all zeroed out. In this case, the number of diffs is 120k / 5 = 24k. This means that they will have +/// accoomdate 6528000 bytes of calldata for the uncompressed state diffs. Adding 120k on top leaves us with +/// roughly 6650000 bytes needed for calldata. 207813 slots are needed to accomodate this amount of data. +/// We round up to 208000 slots just in case. +/// +/// In theory though much more calldata could be used (if for instance 1 byte is used for enum index). It is the responsibility of the +/// operator to ensure that it can form the correct calldata for the L1Messenger. +pub(crate) const OPERATOR_PROVIDED_L1_MESSENGER_PUBDATA_SLOTS: usize = 208000; + +pub(crate) const BOOTLOADER_TX_DESCRIPTION_OFFSET: usize = + OPERATOR_PROVIDED_L1_MESSENGER_PUBDATA_OFFSET + OPERATOR_PROVIDED_L1_MESSENGER_PUBDATA_SLOTS; /// The size of the bootloader memory dedicated to the encodings of transactions pub const BOOTLOADER_TX_ENCODING_SPACE: u32 = diff --git a/core/lib/vm/src/errors/bootloader_error.rs b/core/lib/vm/src/errors/bootloader_error.rs index 07ed0899b22..b9fa3199e27 100644 --- a/core/lib/vm/src/errors/bootloader_error.rs +++ b/core/lib/vm/src/errors/bootloader_error.rs @@ -27,7 +27,10 @@ pub(crate) enum BootloaderErrorCode { MintEtherFailed, FailedToAppendTransactionToL2Block, FailedToSetL2Block, - FailedToPublishBlockDataToL1, + L1MessengerPublishingFailed, + L1MessengerLogSendingFailed, + FailedToCallSystemContext, + FailedToPublishTimestampDataToL1, Unknown, } @@ -60,7 +63,10 @@ impl From for BootloaderErrorCode { 23 => BootloaderErrorCode::MintEtherFailed, 24 => BootloaderErrorCode::FailedToAppendTransactionToL2Block, 25 => BootloaderErrorCode::FailedToSetL2Block, - 26 => BootloaderErrorCode::FailedToPublishBlockDataToL1, + 26 => BootloaderErrorCode::L1MessengerPublishingFailed, + 27 => BootloaderErrorCode::L1MessengerLogSendingFailed, + 28 => BootloaderErrorCode::FailedToCallSystemContext, + 29 => BootloaderErrorCode::FailedToPublishTimestampDataToL1, _ => BootloaderErrorCode::Unknown, } } diff --git a/core/lib/vm/src/errors/tx_revert_reason.rs b/core/lib/vm/src/errors/tx_revert_reason.rs index 8e65b15a097..d4918ef7efa 100644 --- a/core/lib/vm/src/errors/tx_revert_reason.rs +++ b/core/lib/vm/src/errors/tx_revert_reason.rs @@ -109,6 +109,15 @@ impl TxRevertReason { BootloaderErrorCode::PaymasterReturnedInvalidMagic => { Self::Halt(Halt::ValidationFailed(VmRevertReason::General { msg: String::from("Paymaster validation returned invalid magic value. Please refer to the documentation of the paymaster for more details"), data: vec![] })) } + BootloaderErrorCode::L1MessengerLogSendingFailed => { + Self::Halt(Halt::UnexpectedVMBehavior(format!("Failed to send log via L1Messenger for: {}", revert_reason))) + }, + BootloaderErrorCode::L1MessengerPublishingFailed => { + Self::Halt(Halt::UnexpectedVMBehavior(format!("Failed to publish pubdata via L1Messenger for: {}", revert_reason))) + }, + BootloaderErrorCode::FailedToCallSystemContext => { + Self::Halt(Halt::UnexpectedVMBehavior(format!("Failed to call system context contract: {}", revert_reason))) + }, BootloaderErrorCode::Unknown => Self::Halt(Halt::UnexpectedVMBehavior(format!( "Unsupported error code: {}. Revert reason: {}", error_code[0], revert_reason @@ -121,8 +130,8 @@ impl TxRevertReason { Self::Halt(Halt::FailedToSetL2Block(format!("{}", revert_reason))) } - BootloaderErrorCode::FailedToPublishBlockDataToL1 => { - Self::Halt(Halt::UnexpectedVMBehavior(format!("Failed to publish block data to L1: {}", revert_reason))) + BootloaderErrorCode::FailedToPublishTimestampDataToL1 => { + Self::Halt(Halt::UnexpectedVMBehavior(format!("Failed to publish timestamp data to L1: {}", revert_reason))) } } } diff --git a/core/lib/vm/src/implementation/execution.rs b/core/lib/vm/src/implementation/execution.rs index 9944a37f7e8..43c3f002f87 100644 --- a/core/lib/vm/src/implementation/execution.rs +++ b/core/lib/vm/src/implementation/execution.rs @@ -1,17 +1,18 @@ use zk_evm::aux_structures::Timestamp; use zksync_state::WriteStorage; -use crate::old_vm::{ - history_recorder::HistoryMode, - utils::{vm_may_have_ended_inner, VmExecutionResult}, -}; -use crate::tracers::{ - traits::{BoxedTracer, ExecutionEndTracer, ExecutionProcessing, VmTracer}, - DefaultExecutionTracer, RefundsTracer, -}; use crate::types::{inputs::VmExecutionMode, outputs::VmExecutionResultAndLogs}; use crate::vm::Vm; use crate::VmExecutionStopReason; +use crate::{ + old_vm::utils::{vm_may_have_ended_inner, VmExecutionResult}, + tracers::{ + pubdata_tracer::PubdataTracer, + traits::{BoxedTracer, ExecutionEndTracer, ExecutionProcessing, VmTracer}, + DefaultExecutionTracer, RefundsTracer, + }, + HistoryMode, +}; impl Vm { pub(crate) fn inspect_inner( @@ -25,6 +26,8 @@ impl Vm { // Move the pointer to the next transaction self.bootloader_state.move_tx_to_execute_pointer(); } + tracers.push(PubdataTracer::new(self.batch_env.clone(), execution_mode).into_boxed()); + let (_, result) = self.inspect_and_collect_results(tracers, execution_mode); result } diff --git a/core/lib/vm/src/implementation/logs.rs b/core/lib/vm/src/implementation/logs.rs index 6bc095740ef..163a8c665ff 100644 --- a/core/lib/vm/src/implementation/logs.rs +++ b/core/lib/vm/src/implementation/logs.rs @@ -1,13 +1,14 @@ use zk_evm::aux_structures::Timestamp; use zksync_state::WriteStorage; +use zksync_types::event::extract_l2tol1logs_from_l1_messenger; use zksync_types::l2_to_l1_log::L2ToL1Log; -use zksync_types::tx::tx_execution_info::VmExecutionLogs; use zksync_types::VmEvent; -use crate::old_vm::events::merge_events; use crate::old_vm::history_recorder::HistoryMode; use crate::old_vm::utils::precompile_calls_count_after_timestamp; +use crate::types::outputs::VmExecutionLogs; +use crate::utils::logs; use crate::vm::Vm; impl Vm { @@ -24,7 +25,7 @@ impl Vm { .collect(); let storage_logs_count = storage_logs.len(); - let (events, l2_to_l1_logs) = + let (events, system_l2_to_l1_logs) = self.collect_events_and_l1_logs_after_timestamp(from_timestamp); let log_queries = self @@ -37,12 +38,16 @@ impl Vm { from_timestamp, ); + let user_logs = extract_l2tol1logs_from_l1_messenger(&events); + let total_log_queries_count = storage_logs_count + log_queries.len() + precompile_calls_count; + VmExecutionLogs { storage_logs, events, - l2_to_l1_logs, + user_l2_to_l1_logs: user_logs.into_iter().map(|log| log.into()).collect(), + system_l2_to_l1_logs, total_log_queries_count, } } @@ -51,14 +56,10 @@ impl Vm { &self, from_timestamp: Timestamp, ) -> (Vec, Vec) { - let (raw_events, l1_messages) = self - .state - .event_sink - .get_events_and_l2_l1_logs_after_timestamp(from_timestamp); - let events = merge_events(raw_events) - .into_iter() - .map(|e| e.into_vm_event(self.batch_env.number)) - .collect(); - (events, l1_messages.into_iter().map(Into::into).collect()) + logs::collect_events_and_l1_logs_after_timestamp( + &self.state, + &self.batch_env, + from_timestamp, + ) } } diff --git a/core/lib/vm/src/lib.rs b/core/lib/vm/src/lib.rs index 34c25f4addc..34eb5f3ea68 100644 --- a/core/lib/vm/src/lib.rs +++ b/core/lib/vm/src/lib.rs @@ -1,7 +1,6 @@ #![deny(unreachable_pub)] #![deny(unused_crate_dependencies)] #![warn(unused_extern_crates)] -#![warn(unused_imports)] pub use old_vm::{ history_recorder::{HistoryDisabled, HistoryEnabled, HistoryMode}, @@ -26,7 +25,7 @@ pub use types::{ internals::ZkSyncVmState, outputs::{ BootloaderMemory, CurrentExecutionState, ExecutionResult, FinishedL1Batch, L2Block, - Refunds, VmExecutionResultAndLogs, VmExecutionStatistics, VmMemoryMetrics, + Refunds, VmExecutionLogs, VmExecutionResultAndLogs, VmExecutionStatistics, VmMemoryMetrics, }, }; pub use utils::transaction_encoding::TransactionVmExt; diff --git a/core/lib/vm/src/old_vm/event_sink.rs b/core/lib/vm/src/old_vm/event_sink.rs index 03156e83b9f..b52fe6f81ee 100644 --- a/core/lib/vm/src/old_vm/event_sink.rs +++ b/core/lib/vm/src/old_vm/event_sink.rs @@ -2,7 +2,8 @@ use crate::old_vm::{ history_recorder::{AppDataFrameManagerWithHistory, HistoryEnabled, HistoryMode}, oracles::OracleWithHistory, }; -use std::collections::HashMap; +use itertools::Itertools; +use std::{cmp::Ordering, collections::HashMap, f32::consts::E}; use zk_evm::{ abstractions::EventSink, aux_structures::{LogQuery, Timestamp}, @@ -11,6 +12,7 @@ use zk_evm::{ BOOTLOADER_FORMAL_ADDRESS, EVENT_AUX_BYTE, L1_MESSAGE_AUX_BYTE, }, }; +use zksync_types::U256; #[derive(Debug, Clone, PartialEq, Default)] pub struct InMemoryEventSink { @@ -37,7 +39,9 @@ impl InMemoryEventSink { let history = self.frames_stack.forward().current_frame(); let (events, l1_messages) = Self::events_and_l1_messages_from_history(history); - (history.iter().map(|x| **x).collect(), events, l1_messages) + let events_logs = Self::events_logs_from_history(history); + + (events_logs, events, l1_messages) } pub fn get_log_queries(&self) -> usize { @@ -63,6 +67,101 @@ impl InMemoryEventSink { Self::events_and_l1_messages_from_history(self.log_queries_after_timestamp(from_timestamp)) } + fn events_logs_from_history(history: &[Box]) -> Vec { + // Filter out all the L2->L1 logs and leave only events + let mut events = history + .into_iter() + .filter_map(|log_query| (log_query.aux_byte == EVENT_AUX_BYTE).then(|| **log_query)) + .collect_vec(); + + // Sort the events by timestamp and rollback flag, basically ensuring that + // if an event has been rolled back, the original event and its rollback will be put together + events.sort_by(|a, b| match a.timestamp.0.cmp(&b.timestamp.0) { + Ordering::Equal => { + if b.rollback { + Ordering::Less + } else { + Ordering::Greater + } + } + r @ _ => r, + }); + + let mut stack = Vec::::new(); + let mut net_history = vec![]; + for el in events.iter() { + assert_eq!(el.shard_id, 0, "only rollup shard is supported"); + if stack.is_empty() { + assert!(el.rollback == false); + stack.push(*el); + } else { + // we can always pop as it's either one to add to queue, or discard + let previous = stack.pop().unwrap(); + if previous.timestamp == el.timestamp { + // Only rollback can have the same timestamp, so here we do nothing and simply + // double check the invariants + assert!(previous.rollback == false); + assert!(el.rollback == true); + assert!(previous.rw_flag == true); + assert!(el.rw_flag == true); + assert_eq!(previous.tx_number_in_block, el.tx_number_in_block); + assert_eq!(previous.shard_id, el.shard_id); + assert_eq!(previous.address, el.address); + assert_eq!(previous.key, el.key); + assert_eq!(previous.written_value, el.written_value); + assert_eq!(previous.is_service, el.is_service); + continue; + } else { + // The event on the stack has not been rolled back. It must be a different event, + // with a different timestamp. + assert!(el.rollback == false); + stack.push(*el); + + // cleanup some fields + // flags are conventions + let sorted_log_query = LogQuery { + timestamp: Timestamp(0), + tx_number_in_block: previous.tx_number_in_block, + aux_byte: 0, + shard_id: previous.shard_id, + address: previous.address, + key: previous.key, + read_value: U256::zero(), + written_value: previous.written_value, + rw_flag: false, + rollback: false, + is_service: previous.is_service, + }; + + net_history.push(sorted_log_query); + } + } + } + + // In case the stack is non-empty, then the last element of it has not been rolled back. + if let Some(previous) = stack.pop() { + // cleanup some fields + // flags are conventions + let sorted_log_query = LogQuery { + timestamp: Timestamp(0), + tx_number_in_block: previous.tx_number_in_block, + aux_byte: 0, + shard_id: previous.shard_id, + address: previous.address, + key: previous.key, + read_value: U256::zero(), + written_value: previous.written_value, + rw_flag: false, + rollback: false, + is_service: previous.is_service, + }; + + net_history.push(sorted_log_query); + } + + net_history + } + fn events_and_l1_messages_from_history( history: &[Box], ) -> (Vec, Vec) { diff --git a/core/lib/vm/src/tests/l1_tx_execution.rs b/core/lib/vm/src/tests/l1_tx_execution.rs index 5afe6af7918..3a5f05f8510 100644 --- a/core/lib/vm/src/tests/l1_tx_execution.rs +++ b/core/lib/vm/src/tests/l1_tx_execution.rs @@ -16,13 +16,17 @@ fn test_l1_tx_execution() { // Here instead of marking code hash via the bootloader means, we will be // using L1->L2 communication, the same it would likely be done during the priority mode. - // There are always at least 3 initial writes here, because we pay fees from l1: + // There are always at least 7 initial writes here, because we pay fees from l1: // - totalSupply of ETH token // - balance of the refund recipient // - balance of the bootloader - // - tx_rollout hash + // - tx_rolling hash + // - rolling hash of L2->L1 logs + // - transaction number in block counter + // - L2->L1 log counter in L1Messenger - let basic_initial_writes = 1; + // TODO(PLA-537): right now we are using 4 slots instead of 7 due to 0 fee for transaction. + let basic_initial_writes = 4; let mut vm = VmTesterBuilder::new(HistoryEnabled) .with_empty_in_memory_storage() @@ -63,7 +67,7 @@ fn test_l1_tx_execution() { verify_required_storage(&vm.vm.state, expected_slots); - assert_eq!(res.logs.l2_to_l1_logs, required_l2_to_l1_logs); + assert_eq!(res.logs.user_l2_to_l1_logs, required_l2_to_l1_logs); let tx = account.get_test_contract_transaction( deploy_tx.address, diff --git a/core/lib/vm/src/tests/l2_blocks.rs b/core/lib/vm/src/tests/l2_blocks.rs index 9deac837f90..025fcab2019 100644 --- a/core/lib/vm/src/tests/l2_blocks.rs +++ b/core/lib/vm/src/tests/l2_blocks.rs @@ -406,72 +406,6 @@ fn test_l2_block_first_in_batch() { ); } -#[test] -fn test_l2_block_upgrade() { - let mut vm = VmTesterBuilder::new(HistoryEnabled) - .with_empty_in_memory_storage() - .with_execution_mode(TxExecutionMode::VerifyExecute) - .with_random_rich_accounts(1) - .build(); - - vm.vm - .state - .storage - .storage - .get_ptr() - .borrow_mut() - .set_value(get_code_key(&SYSTEM_CONTEXT_ADDRESS), H256::default()); - - let l1_tx = get_l1_noop(); - // Firstly we execute the first transaction - vm.vm.push_transaction(l1_tx); - let result = vm.vm.execute(VmExecutionMode::OneTx); - assert!(!result.result.is_failed(), "No revert reason expected"); - let result = vm.vm.execute(VmExecutionMode::Batch); - assert!(!result.result.is_failed(), "No revert reason expected"); -} - -#[test] -fn test_l2_block_upgrade_ending() { - let mut l1_batch = default_l1_batch(L1BatchNumber(1)); - l1_batch.timestamp = 1; - let mut vm = VmTesterBuilder::new(HistoryEnabled) - .with_empty_in_memory_storage() - .with_execution_mode(TxExecutionMode::VerifyExecute) - .with_l1_batch_env(l1_batch.clone()) - .with_random_rich_accounts(1) - .build(); - - let l1_tx = get_l1_noop(); - - let storage = vm.storage.clone(); - - storage - .borrow_mut() - .set_value(get_code_key(&SYSTEM_CONTEXT_ADDRESS), H256::default()); - - vm.vm.push_transaction(l1_tx.clone()); - let result = vm.vm.execute(VmExecutionMode::OneTx); - - assert!(!result.result.is_failed(), "No revert reason expected"); - - let virtual_block_info = storage.borrow_mut().read_value(&StorageKey::new( - AccountTreeId::new(SYSTEM_CONTEXT_ADDRESS), - CURRENT_VIRTUAL_BLOCK_INFO_POSITION, - )); - - let (virtual_block_number, virtual_block_timestamp) = - unpack_block_info(h256_to_u256(virtual_block_info)); - - assert_eq!(virtual_block_number as u32, l1_batch.first_l2_block.number); - assert_eq!(virtual_block_timestamp, l1_batch.first_l2_block.timestamp); - vm.vm.push_transaction(l1_tx); - let result = vm.vm.execute(VmExecutionMode::OneTx); - assert!(!result.result.is_failed(), "No revert reason expected"); - let result = vm.vm.execute(VmExecutionMode::Batch); - assert!(!result.result.is_failed(), "No revert reason expected"); -} - fn set_manual_l2_block_info( vm: &mut Vm, tx_number: usize, diff --git a/core/lib/vm/src/tests/refunds.rs b/core/lib/vm/src/tests/refunds.rs index 4314f57489e..9fd7e6d9893 100644 --- a/core/lib/vm/src/tests/refunds.rs +++ b/core/lib/vm/src/tests/refunds.rs @@ -80,8 +80,13 @@ fn test_predetermined_refunded_gas() { ); assert_eq!( - current_state_with_predefined_refunds.l2_to_l1_logs, - current_state_without_predefined_refunds.l2_to_l1_logs + current_state_with_predefined_refunds.user_l2_to_l1_logs, + current_state_without_predefined_refunds.user_l2_to_l1_logs + ); + + assert_eq!( + current_state_with_predefined_refunds.system_logs, + current_state_without_predefined_refunds.system_logs ); assert_eq!( @@ -128,8 +133,13 @@ fn test_predetermined_refunded_gas() { ); assert_eq!( - current_state_with_changed_predefined_refunds.l2_to_l1_logs, - current_state_without_predefined_refunds.l2_to_l1_logs + current_state_with_changed_predefined_refunds.user_l2_to_l1_logs, + current_state_without_predefined_refunds.user_l2_to_l1_logs + ); + + assert_ne!( + current_state_with_changed_predefined_refunds.system_logs, + current_state_without_predefined_refunds.system_logs ); assert_eq!( diff --git a/core/lib/vm/src/tracers/default_tracers.rs b/core/lib/vm/src/tracers/default_tracers.rs index 7cc1e19869c..0eb9c2e2b09 100644 --- a/core/lib/vm/src/tracers/default_tracers.rs +++ b/core/lib/vm/src/tracers/default_tracers.rs @@ -23,7 +23,9 @@ use crate::tracers::utils::{ }; use crate::tracers::ResultTracer; use crate::types::internals::ZkSyncVmState; -use crate::{VmExecutionMode, VmExecutionStopReason}; +use crate::VmExecutionStopReason; + +use crate::VmExecutionMode; /// Default tracer for the VM. It manages the other tracers execution and stop the vm when needed. pub(crate) struct DefaultExecutionTracer { @@ -232,6 +234,7 @@ impl ExecutionProcessing for DefaultExecu for processor in self.custom_tracers.iter_mut() { processor.after_cycle(state, bootloader_state); } + if self.final_batch_info_requested { self.set_fictive_l2_block(state, bootloader_state) } diff --git a/core/lib/vm/src/tracers/mod.rs b/core/lib/vm/src/tracers/mod.rs index 11fefedc85a..6b766b25e5c 100644 --- a/core/lib/vm/src/tracers/mod.rs +++ b/core/lib/vm/src/tracers/mod.rs @@ -5,6 +5,7 @@ pub use storage_invocations::StorageInvocations; pub use validation::{ValidationError, ValidationTracer, ValidationTracerParams}; pub(crate) mod default_tracers; +pub(crate) mod pubdata_tracer; pub(crate) mod refunds; pub(crate) mod result_tracer; diff --git a/core/lib/vm/src/tracers/pubdata_tracer.rs b/core/lib/vm/src/tracers/pubdata_tracer.rs new file mode 100644 index 00000000000..282ce4cd36c --- /dev/null +++ b/core/lib/vm/src/tracers/pubdata_tracer.rs @@ -0,0 +1,213 @@ +use zk_evm::{ + aux_structures::Timestamp, + tracing::{BeforeExecutionData, VmLocalStateData}, +}; + +use zksync_state::{StoragePtr, WriteStorage}; +use zksync_types::{ + event::{ + extract_bytecode_publication_requests_from_l1_messenger, + extract_l2tol1logs_from_l1_messenger, extract_long_l2_to_l1_messages, L1MessengerL2ToL1Log, + }, + writes::StateDiffRecord, + zkevm_test_harness::witness::sort_storage_access::sort_storage_access_queries, + AccountTreeId, StorageKey, L1_MESSENGER_ADDRESS, +}; +use zksync_utils::u256_to_h256; +use zksync_utils::{h256_to_u256, u256_to_bytes_be}; + +use crate::constants::BOOTLOADER_HEAP_PAGE; +use crate::old_vm::{history_recorder::HistoryMode, memory::SimpleMemory}; + +use crate::tracers::{ + traits::{DynTracer, ExecutionEndTracer, ExecutionProcessing, VmTracer}, + utils::VmHook, +}; +use crate::types::{inputs::L1BatchEnv, internals::ZkSyncVmState}; +use crate::{ + bootloader_state::{utils::apply_pubdata_to_memory, BootloaderState}, + types::outputs::PubdataInput, + utils::logs::collect_events_and_l1_logs_after_timestamp, + VmExecutionMode, +}; + +/// Tracer responsible for collecting information about refunds. +#[derive(Debug, Clone)] +pub(crate) struct PubdataTracer { + l1_batch_env: L1BatchEnv, + pubdata_info_requested: bool, + execution_mode: VmExecutionMode, +} + +impl PubdataTracer { + pub(crate) fn new(l1_batch_env: L1BatchEnv, execution_mode: VmExecutionMode) -> Self { + Self { + l1_batch_env, + pubdata_info_requested: false, + execution_mode, + } + } +} + +impl PubdataTracer { + // Packs part of L1 Messenger total pubdata that corresponds to + // L2toL1Logs sent in the block + fn get_total_user_logs( + &self, + state: &mut ZkSyncVmState, + ) -> Vec { + let (all_generated_events, _) = + collect_events_and_l1_logs_after_timestamp(state, &self.l1_batch_env, Timestamp(0)); + extract_l2tol1logs_from_l1_messenger(&all_generated_events) + } + + // Packs part of L1 Messenger total pubdata that corresponds to + // Messages sent in the block + fn get_total_l1_messenger_messages( + &self, + state: &mut ZkSyncVmState, + ) -> Vec> { + let (all_generated_events, _) = + collect_events_and_l1_logs_after_timestamp(state, &self.l1_batch_env, Timestamp(0)); + + extract_long_l2_to_l1_messages(&all_generated_events) + } + + // Packs part of L1 Messenger total pubdata that corresponds to + // Bytecodes needed to be published on L1 + fn get_total_published_bytecodes( + &self, + state: &mut ZkSyncVmState, + ) -> Vec> { + let (all_generated_events, _) = + collect_events_and_l1_logs_after_timestamp(state, &self.l1_batch_env, Timestamp(0)); + + let bytecode_publication_requests = + extract_bytecode_publication_requests_from_l1_messenger(&all_generated_events); + + bytecode_publication_requests + .iter() + .map(|bytecode_publication_request| { + state + .decommittment_processor + .known_bytecodes + .inner() + .get(&h256_to_u256(bytecode_publication_request.bytecode_hash)) + .unwrap() + .iter() + .map(u256_to_bytes_be) + .flatten() + .collect() + }) + .collect() + } + + // Packs part of L1Messenger total pubdata that corresponds to + // State diffs needed to be published on L1 + fn get_state_diffs( + state: &mut ZkSyncVmState, + ) -> Vec { + sort_storage_access_queries( + state + .storage + .storage_log_queries_after_timestamp(Timestamp(0)) + .iter() + .map(|log| &log.log_query), + ) + .1 + .into_iter() + .filter(|log| log.rw_flag) + .filter(|log| log.read_value != log.written_value) + .filter(|log| log.address != L1_MESSENGER_ADDRESS) + .map(|log| StateDiffRecord { + address: log.address, + key: log.key, + derived_key: log.derive_final_address(), + enumeration_index: state + .storage + .storage + .get_ptr() + .borrow_mut() + .get_enumeration_index(&StorageKey::new( + AccountTreeId::new(log.address), + u256_to_h256(log.key), + )) + .unwrap_or_default(), + initial_value: log.read_value, + final_value: log.written_value, + }) + .collect() + } + + fn build_pubdata_input( + &self, + state: &mut ZkSyncVmState, + ) -> PubdataInput { + PubdataInput { + user_logs: self.get_total_user_logs(state), + l2_to_l1_messages: self.get_total_l1_messenger_messages(state), + published_bytecodes: self.get_total_published_bytecodes(state), + state_diffs: Self::get_state_diffs(state), + } + } +} + +impl DynTracer for PubdataTracer { + fn before_execution( + &mut self, + state: VmLocalStateData<'_>, + data: BeforeExecutionData, + _memory: &SimpleMemory, + _storage: StoragePtr, + ) { + let hook = VmHook::from_opcode_memory(&state, &data); + match hook { + VmHook::PubdataRequested => self.pubdata_info_requested = true, + _ => {} + } + } +} + +impl ExecutionEndTracer for PubdataTracer { + fn should_stop_execution(&self) -> bool { + if !matches!(self.execution_mode, VmExecutionMode::Batch) { + // We do not provide the pubdata when executing the block tip or a single transaction + return self.pubdata_info_requested; + } + + false + } +} + +impl VmTracer for PubdataTracer {} + +impl ExecutionProcessing for PubdataTracer { + fn initialize_tracer(&mut self, _state: &mut ZkSyncVmState) {} + + fn before_cycle(&mut self, _state: &mut ZkSyncVmState) {} + + fn after_cycle( + &mut self, + state: &mut ZkSyncVmState, + bootloader_state: &mut BootloaderState, + ) { + if self.pubdata_info_requested && matches!(self.execution_mode, VmExecutionMode::Batch) { + // Whenever we are executing the block tip, we want to avoid publishing the full pubdata + let pubdata_input = self.build_pubdata_input(state); + + // Save the pubdata for the future initial bootloader memory building + bootloader_state.set_pubdata_input(pubdata_input.clone()); + + // Apply the pubdata to the current memory + let mut memory_to_apply = vec![]; + apply_pubdata_to_memory(&mut memory_to_apply, pubdata_input); + state.memory.populate_page( + BOOTLOADER_HEAP_PAGE as usize, + memory_to_apply, + Timestamp(state.local_state.timestamp), + ); + + self.pubdata_info_requested = false; + } + } +} diff --git a/core/lib/vm/src/tracers/utils.rs b/core/lib/vm/src/tracers/utils.rs index f86b496b078..3161f678843 100644 --- a/core/lib/vm/src/tracers/utils.rs +++ b/core/lib/vm/src/tracers/utils.rs @@ -34,6 +34,8 @@ pub(crate) enum VmHook { NotifyAboutRefund, ExecutionResult, FinalBatchInfo, + // Hook used to signal that the final pubdata for a batch is requested. + PubdataRequested, } impl VmHook { @@ -72,6 +74,7 @@ impl VmHook { 9 => Self::NotifyAboutRefund, 10 => Self::ExecutionResult, 11 => Self::FinalBatchInfo, + 12 => Self::PubdataRequested, _ => panic!("Unkown hook"), } } diff --git a/core/lib/vm/src/types/outputs/execution_result.rs b/core/lib/vm/src/types/outputs/execution_result.rs index bb46cb41ec8..056b9d1b03f 100644 --- a/core/lib/vm/src/types/outputs/execution_result.rs +++ b/core/lib/vm/src/types/outputs/execution_result.rs @@ -1,9 +1,9 @@ use crate::{Halt, VmExecutionStatistics, VmRevertReason}; use zksync_config::constants::PUBLISH_BYTECODE_OVERHEAD; use zksync_types::event::{extract_long_l2_to_l1_messages, extract_published_bytecodes}; -use zksync_types::tx::tx_execution_info::VmExecutionLogs; +use zksync_types::l2_to_l1_log::L2ToL1Log; use zksync_types::tx::ExecutionMetrics; -use zksync_types::Transaction; +use zksync_types::{StorageLogQuery, Transaction, VmEvent}; use zksync_utils::bytecode::bytecode_len_in_bytes; /// Refunds produced for the user. @@ -13,6 +13,23 @@ pub struct Refunds { pub operator_suggested_refund: u32, } +/// Events/storage logs/l2->l1 logs created within transaction execution. +#[derive(Debug, Clone, Default, PartialEq)] +pub struct VmExecutionLogs { + pub storage_logs: Vec, + pub events: Vec, + pub user_l2_to_l1_logs: Vec, + pub system_l2_to_l1_logs: Vec, + // This field moved to statistics, but we need to keep it for backward compatibility + pub total_log_queries_count: usize, +} + +impl VmExecutionLogs { + pub fn total_l2_to_l1_logs_count(&self) -> usize { + self.user_l2_to_l1_logs.len() + self.system_l2_to_l1_logs.len() + } +} + /// Result and logs of the VM execution. #[derive(Debug, Clone)] pub struct VmExecutionResultAndLogs { @@ -70,7 +87,7 @@ impl VmExecutionResultAndLogs { gas_used: self.statistics.gas_used as usize, published_bytecode_bytes, l2_l1_long_messages, - l2_l1_logs: self.logs.l2_to_l1_logs.len(), + l2_to_l1_logs: self.logs.total_l2_to_l1_logs_count(), contracts_used: self.statistics.contracts_used, contracts_deployed, vm_events: self.logs.events.len(), diff --git a/core/lib/vm/src/types/outputs/execution_state.rs b/core/lib/vm/src/types/outputs/execution_state.rs index 3ae36a17967..a4f7361544e 100644 --- a/core/lib/vm/src/types/outputs/execution_state.rs +++ b/core/lib/vm/src/types/outputs/execution_state.rs @@ -1,5 +1,5 @@ use zksync_types::l2_to_l1_log::L2ToL1Log; -use zksync_types::{StorageLogQuery, VmEvent, U256}; +use zksync_types::{LogQuery, StorageLogQuery, VmEvent, U256}; /// State of the VM since the start of the batch execution. #[derive(Debug, Clone, PartialEq)] @@ -11,11 +11,15 @@ pub struct CurrentExecutionState { /// Hashes of the contracts used by the VM. pub used_contract_hashes: Vec, /// L2 to L1 logs produced by the VM. - pub l2_to_l1_logs: Vec, + pub system_logs: Vec, + /// L2 to L1 logs produced by the L1Messeger + pub user_l2_to_l1_logs: Vec, /// Number of log queries produced by the VM. Including l2_to_l1 logs, storage logs and events. pub total_log_queries: usize, /// Number of cycles used by the VM. pub cycles_used: u32, + /// Sorted & deduplicated events logs for batch + pub deduplicated_events_logs: Vec, } /// Bootloader Memory of the VM. diff --git a/core/lib/vm/src/types/outputs/mod.rs b/core/lib/vm/src/types/outputs/mod.rs index 8aa029cb53f..97f11eba091 100644 --- a/core/lib/vm/src/types/outputs/mod.rs +++ b/core/lib/vm/src/types/outputs/mod.rs @@ -2,10 +2,13 @@ mod execution_result; mod execution_state; mod finished_l1batch; mod l2_block; +mod pubdata; mod statistic; +pub use execution_result::VmExecutionLogs; pub use execution_result::{ExecutionResult, Refunds, VmExecutionResultAndLogs}; pub use execution_state::{BootloaderMemory, CurrentExecutionState}; pub use finished_l1batch::FinishedL1Batch; pub use l2_block::L2Block; +pub(crate) use pubdata::PubdataInput; pub use statistic::{VmExecutionStatistics, VmMemoryMetrics}; diff --git a/core/lib/vm/src/types/outputs/pubdata.rs b/core/lib/vm/src/types/outputs/pubdata.rs new file mode 100644 index 00000000000..fb293549f43 --- /dev/null +++ b/core/lib/vm/src/types/outputs/pubdata.rs @@ -0,0 +1,73 @@ +use zksync_types::ethabi; +use zksync_types::{ + event::L1MessengerL2ToL1Log, + writes::{compress_state_diffs, StateDiffRecord}, +}; + +/// Struct based on which the pubdata blob is formed +#[derive(Debug, Clone, Default)] +pub(crate) struct PubdataInput { + pub(crate) user_logs: Vec, + pub(crate) l2_to_l1_messages: Vec>, + pub(crate) published_bytecodes: Vec>, + pub(crate) state_diffs: Vec, +} + +impl PubdataInput { + pub(crate) fn build_pubdata(self) -> Vec { + let mut l1_messenger_pubdata = vec![]; + + let PubdataInput { + user_logs, + l2_to_l1_messages, + published_bytecodes, + state_diffs, + } = self; + + // Encoding user L2->L1 logs. + // Format: [(numberOfL2ToL1Logs as u32) || l2tol1logs[1] || ... || l2tol1logs[n]] + l1_messenger_pubdata.extend((user_logs.len() as u32).to_be_bytes()); + for l2tol1log in user_logs { + l1_messenger_pubdata.extend(l2tol1log.packed_encoding()); + } + + // Encoding L2->L1 messages + // Format: [(numberOfMessages as u32) || (messages[1].len() as u32) || messages[1] || ... || (messages[n].len() as u32) || messages[n]] + l1_messenger_pubdata.extend((l2_to_l1_messages.len() as u32).to_be_bytes()); + for message in l2_to_l1_messages { + l1_messenger_pubdata.extend((message.len() as u32).to_be_bytes()); + l1_messenger_pubdata.extend(message); + } + + // Encoding bytecodes + // Format: [(numberOfBytecodes as u32) || (bytecodes[1].len() as u32) || bytecodes[1] || ... || (bytecodes[n].len() as u32) || bytecodes[n]] + l1_messenger_pubdata.extend((published_bytecodes.len() as u32).to_be_bytes()); + for bytecode in published_bytecodes { + l1_messenger_pubdata.extend((bytecode.len() as u32).to_be_bytes()); + l1_messenger_pubdata.extend(bytecode); + } + + // Encoding state diffs + // Format: [size of compressed state diffs u32 || compressed state diffs || (# state diffs: intial + repeated) as u32 || sorted state diffs by ] + let state_diffs_compressed = compress_state_diffs(state_diffs.clone()); + l1_messenger_pubdata.extend(state_diffs_compressed); + l1_messenger_pubdata.extend((state_diffs.len() as u32).to_be_bytes()); + + for state_diff in state_diffs { + l1_messenger_pubdata.extend(state_diff.encode_padded()); + } + + // ABI-encoding the final pubdata + let l1_messenger_abi_encoded_pubdata = + ethabi::encode(&[ethabi::Token::Bytes(l1_messenger_pubdata)]); + + assert!( + l1_messenger_abi_encoded_pubdata.len() % 32 == 0, + "abi encoded bytes array length should be divisible by 32" + ); + + // Need to skip first word as it represents array offset + // while bootloader expects only [len || data] + l1_messenger_abi_encoded_pubdata[32..].to_vec() + } +} diff --git a/core/lib/vm/src/utils/logs.rs b/core/lib/vm/src/utils/logs.rs new file mode 100644 index 00000000000..d4fc7adafdf --- /dev/null +++ b/core/lib/vm/src/utils/logs.rs @@ -0,0 +1,21 @@ +use zksync_state::WriteStorage; +use zksync_types::{l2_to_l1_log::L2ToL1Log, Timestamp, VmEvent}; + +use crate::{ + old_vm::events::merge_events, types::internals::ZkSyncVmState, HistoryMode, L1BatchEnv, +}; + +pub(crate) fn collect_events_and_l1_logs_after_timestamp( + vm_state: &ZkSyncVmState, + batch_env: &L1BatchEnv, + from_timestamp: Timestamp, +) -> (Vec, Vec) { + let (raw_events, l1_messages) = vm_state + .event_sink + .get_events_and_l2_l1_logs_after_timestamp(from_timestamp); + let events = merge_events(raw_events) + .into_iter() + .map(|e| e.into_vm_event(batch_env.number)) + .collect(); + (events, l1_messages.into_iter().map(Into::into).collect()) +} diff --git a/core/lib/vm/src/utils/mod.rs b/core/lib/vm/src/utils/mod.rs index 15ffa92b549..0fb803de5d4 100644 --- a/core/lib/vm/src/utils/mod.rs +++ b/core/lib/vm/src/utils/mod.rs @@ -1,5 +1,6 @@ /// Utility functions for the VM. pub mod fee; pub mod l2_blocks; +pub(crate) mod logs; pub mod overhead; pub mod transaction_encoding; diff --git a/core/lib/vm/src/vm.rs b/core/lib/vm/src/vm.rs index ee196683db3..4fd2a33cb94 100644 --- a/core/lib/vm/src/vm.rs +++ b/core/lib/vm/src/vm.rs @@ -1,4 +1,5 @@ use zksync_state::{StoragePtr, WriteStorage}; +use zksync_types::event::extract_l2tol1logs_from_l1_messenger; use zksync_types::Transaction; use zksync_utils::bytecode::CompressedBytecodeInfo; @@ -83,12 +84,14 @@ impl Vm { /// This method should be used only after the batch execution. /// Otherwise it can panic. pub fn get_current_execution_state(&self) -> CurrentExecutionState { - let (_full_history, raw_events, l1_messages) = self.state.event_sink.flatten(); - let events = merge_events(raw_events) + let (deduplicated_events_logs, raw_events, l1_messages) = self.state.event_sink.flatten(); + let events: Vec<_> = merge_events(raw_events) .into_iter() .map(|e| e.into_vm_event(self.batch_env.number)) .collect(); - let l2_to_l1_logs = l1_messages.into_iter().map(|log| log.into()).collect(); + + let user_l2_to_l1_logs = extract_l2tol1logs_from_l1_messenger(&events); + let system_logs = l1_messages.into_iter().map(|log| log.into()).collect(); let total_log_queries = self.state.event_sink.get_log_queries() + self .state @@ -101,9 +104,14 @@ impl Vm { events, storage_log_queries: self.state.storage.get_final_log_queries(), used_contract_hashes: self.get_used_contracts(), - l2_to_l1_logs, + user_l2_to_l1_logs: user_l2_to_l1_logs + .into_iter() + .map(|log| log.into()) + .collect(), + system_logs, total_log_queries, cycles_used: self.state.local_state.monotonic_cycle_counter, + deduplicated_events_logs, } } diff --git a/core/lib/zksync_core/Cargo.toml b/core/lib/zksync_core/Cargo.toml index ec03e83ba6c..5b96d42f572 100644 --- a/core/lib/zksync_core/Cargo.toml +++ b/core/lib/zksync_core/Cargo.toml @@ -81,6 +81,8 @@ actix-web = "4.0.0-beta.8" tracing = "0.1.26" +zkevm_test_harness = { git = "https://github.com/matter-labs/era-zkevm_test_harness.git", branch = "v1.4.0" } + [dev-dependencies] db_test_macro = { path = "../db_test_macro" } diff --git a/core/lib/zksync_core/src/api_server/execution_sandbox/vm_metrics.rs b/core/lib/zksync_core/src/api_server/execution_sandbox/vm_metrics.rs index e0d7d3ea7be..c830121f4f3 100644 --- a/core/lib/zksync_core/src/api_server/execution_sandbox/vm_metrics.rs +++ b/core/lib/zksync_core/src/api_server/execution_sandbox/vm_metrics.rs @@ -145,7 +145,7 @@ pub(super) fn collect_tx_execution_metrics( event_topics, published_bytecode_bytes, l2_l1_long_messages, - l2_l1_logs: result.logs.l2_to_l1_logs.len(), + l2_l1_logs: result.logs.total_l2_to_l1_logs_count(), contracts_used: result.statistics.contracts_used, contracts_deployed, vm_events: result.logs.events.len(), diff --git a/core/lib/zksync_core/src/block_reverter/mod.rs b/core/lib/zksync_core/src/block_reverter/mod.rs index 3a1c58d20cf..05c793d8dd5 100644 --- a/core/lib/zksync_core/src/block_reverter/mod.rs +++ b/core/lib/zksync_core/src/block_reverter/mod.rs @@ -301,7 +301,7 @@ impl BlockReverter { let chain_id = web3.eth().chain_id().await.unwrap().as_u64(); let data = contract - .function("revertBlocks") + .function("revertBatches") .unwrap() .encode_input(&[Token::Uint(last_l1_batch_to_keep.0.into())]) .unwrap(); @@ -347,9 +347,9 @@ impl BlockReverter { async fn get_l1_batch_number_from_contract(&self, op: AggregatedActionType) -> L1BatchNumber { let function_name = match op { - AggregatedActionType::Commit => "getTotalBlocksCommitted", - AggregatedActionType::PublishProofOnchain => "getTotalBlocksVerified", - AggregatedActionType::Execute => "getTotalBlocksExecuted", + AggregatedActionType::Commit => "getTotalBatchesCommitted", + AggregatedActionType::PublishProofOnchain => "getTotalBatchesVerified", + AggregatedActionType::Execute => "getTotalBatchesExecuted", }; let eth_config = self .eth_config diff --git a/core/lib/zksync_core/src/consistency_checker/mod.rs b/core/lib/zksync_core/src/consistency_checker/mod.rs index 4ea435c08d9..8d56397fb20 100644 --- a/core/lib/zksync_core/src/consistency_checker/mod.rs +++ b/core/lib/zksync_core/src/consistency_checker/mod.rs @@ -95,7 +95,7 @@ impl ConsistencyChecker { let commitments = self .contract - .function("commitBlocks") + .function("commitBatches") .unwrap() .decode_input(&commit_tx.input.0[4..]) .unwrap() @@ -108,7 +108,7 @@ impl ConsistencyChecker { // the one that corresponds to the batch we're checking. let first_batch_number = match &commitments[0] { ethabi::Token::Tuple(tuple) => tuple[0].clone().into_uint().unwrap().as_usize(), - _ => panic!("ABI does not match the commitBlocks() function on the zkSync contract"), + _ => panic!("ABI does not match the commitBatches() function on the zkSync contract"), }; let commitment = &commitments[batch_number.0 as usize - first_batch_number]; diff --git a/core/lib/zksync_core/src/eth_sender/eth_tx_aggregator.rs b/core/lib/zksync_core/src/eth_sender/eth_tx_aggregator.rs index 8048ac7662e..294079c1b6f 100644 --- a/core/lib/zksync_core/src/eth_sender/eth_tx_aggregator.rs +++ b/core/lib/zksync_core/src/eth_sender/eth_tx_aggregator.rs @@ -303,20 +303,39 @@ impl EthTxAggregator { eth_client: &E, verifier_address: Address, ) -> Result { - let token: Token = eth_client - .call_contract_function( - &self.functions.get_verification_key.name, - (), - None, - Default::default(), - None, - verifier_address, - self.functions.verifier_contract.clone(), - ) - .await?; - let recursion_scheduler_level_vk_hash = l1_vk_commitment(token); - - Ok(recursion_scheduler_level_vk_hash) + // This is here for backward compatibility with the old verifier: + // Legacy verifier returns the full verification key; + // New verifier returns the hash of the verification key + if let Some(get_vk) = &self.functions.get_verification_key { + tracing::debug!("Calling get_verification_key"); + let vk = eth_client + .call_contract_function( + &get_vk.name, + (), + None, + Default::default(), + None, + verifier_address, + self.functions.verifier_contract.clone(), + ) + .await?; + Ok(l1_vk_commitment(vk)) + } else { + let get_vk_hash = self.functions.verification_key_hash.as_ref(); + tracing::debug!("Calling verificationKeyHash"); + let vk_hash = eth_client + .call_contract_function( + &get_vk_hash.unwrap().name, + (), + None, + Default::default(), + None, + verifier_address, + self.functions.verifier_contract.clone(), + ) + .await?; + Ok(vk_hash) + } } #[tracing::instrument(skip(self, storage, eth_client))] @@ -331,11 +350,19 @@ impl EthTxAggregator { verifier_params, verifier_address, protocol_version_id, - } = self.get_multicall_data(eth_client).await?; + } = self.get_multicall_data(eth_client).await.map_err(|err| { + tracing::error!("Failed to get multicall data"); + err + })?; let recursion_scheduler_level_vk_hash = self .get_recursion_scheduler_level_vk_hash(eth_client, verifier_address) - .await?; + .await + .map_err(|err| { + tracing::error!("Failed to get VK hash from the Verifier"); + err + })?; + let l1_verifier_config = L1VerifierConfig { params: verifier_params, recursion_scheduler_level_vk_hash, diff --git a/core/lib/zksync_core/src/eth_sender/tests.rs b/core/lib/zksync_core/src/eth_sender/tests.rs index 9cce70b8248..9ed0704d3ea 100644 --- a/core/lib/zksync_core/src/eth_sender/tests.rs +++ b/core/lib/zksync_core/src/eth_sender/tests.rs @@ -465,6 +465,7 @@ fn default_l1_batch_metadata() -> L1BatchMetadata { aux_data_hash: Default::default(), meta_parameters_hash: Default::default(), pass_through_data_hash: Default::default(), + state_diffs_compressed: vec![], } } diff --git a/core/lib/zksync_core/src/eth_sender/zksync_functions.rs b/core/lib/zksync_core/src/eth_sender/zksync_functions.rs index 1dadbd142df..162e2a9eec6 100644 --- a/core/lib/zksync_core/src/eth_sender/zksync_functions.rs +++ b/core/lib/zksync_core/src/eth_sender/zksync_functions.rs @@ -13,7 +13,8 @@ pub(super) struct ZkSyncFunctions { pub(super) get_protocol_version: Function, pub(super) verifier_contract: Contract, - pub(super) get_verification_key: Function, + pub(super) get_verification_key: Option, + pub(super) verification_key_hash: Option, pub(super) multicall_contract: Contract, pub(super) aggregate3: Function, @@ -29,15 +30,23 @@ fn get_function(contract: &Contract, name: &str) -> Function { .unwrap_or_else(|| panic!("{} function entry not found", name)) } +fn get_optional_function(contract: &Contract, name: &str) -> Option { + contract + .functions + .get(name) + .cloned() + .map(|mut functions| functions.pop().unwrap()) +} + impl Default for ZkSyncFunctions { fn default() -> Self { let zksync_contract = zksync_contract(); let verifier_contract = verifier_contract(); let multicall_contract = multicall_contract(); - let commit_blocks = get_function(&zksync_contract, "commitBlocks"); - let prove_blocks = get_function(&zksync_contract, "proveBlocks"); - let execute_blocks = get_function(&zksync_contract, "executeBlocks"); + let commit_blocks = get_function(&zksync_contract, "commitBatches"); + let prove_blocks = get_function(&zksync_contract, "proveBatches"); + let execute_blocks = get_function(&zksync_contract, "executeBatches"); let get_l2_bootloader_bytecode_hash = get_function(&zksync_contract, "getL2BootloaderBytecodeHash"); let get_l2_default_account_bytecode_hash = @@ -45,8 +54,16 @@ impl Default for ZkSyncFunctions { let get_verifier = get_function(&zksync_contract, "getVerifier"); let get_verifier_params = get_function(&zksync_contract, "getVerifierParams"); let get_protocol_version = get_function(&zksync_contract, "getProtocolVersion"); - let get_verification_key = get_function(&verifier_contract, "get_verification_key"); let aggregate3 = get_function(&multicall_contract, "aggregate3"); + let get_verification_key = + get_optional_function(&verifier_contract, "get_verification_key"); + let verification_key_hash = + get_optional_function(&verifier_contract, "verificationKeyHash"); + + assert!( + get_verification_key.as_ref().xor(verification_key_hash.as_ref()).is_some(), + "Either get_verification_key or verificationKeyHash must be present in the verifier contract, but not both" + ); ZkSyncFunctions { commit_blocks, @@ -59,6 +76,7 @@ impl Default for ZkSyncFunctions { get_protocol_version, verifier_contract, get_verification_key, + verification_key_hash, multicall_contract, aggregate3, } diff --git a/core/lib/zksync_core/src/eth_watch/client.rs b/core/lib/zksync_core/src/eth_watch/client.rs index e14ffc09a62..c57b110a194 100644 --- a/core/lib/zksync_core/src/eth_watch/client.rs +++ b/core/lib/zksync_core/src/eth_watch/client.rs @@ -51,6 +51,7 @@ pub struct EthHttpQueryClient { client: E, topics: Vec, zksync_contract_addr: Address, + governance_address: Address, verifier_contract_abi: Contract, confirmations_for_eth_event: Option, } @@ -59,13 +60,19 @@ impl EthHttpQueryClient { pub fn new( client: E, zksync_contract_addr: Address, + governance_address: Address, confirmations_for_eth_event: Option, ) -> Self { - tracing::debug!("New eth client, contract addr: {:x}", zksync_contract_addr); + tracing::debug!( + "New eth client, zkSync addr: {:x}, governance addr: {:x}", + zksync_contract_addr, + governance_address + ); Self { client, topics: Vec::new(), zksync_contract_addr, + governance_address, verifier_contract_abi: verifier_contract(), confirmations_for_eth_event, } @@ -78,7 +85,7 @@ impl EthHttpQueryClient { topics: Vec, ) -> Result, Error> { let filter = FilterBuilder::default() - .address(vec![self.zksync_contract_addr]) + .address(vec![self.zksync_contract_addr, self.governance_address]) .from_block(from) .to_block(to) .topics(Some(topics), None, None, None) @@ -91,10 +98,14 @@ impl EthHttpQueryClient { #[async_trait::async_trait] impl EthClient for EthHttpQueryClient { async fn scheduler_vk_hash(&self, verifier_address: Address) -> Result { - let vk_token: Token = self + // This is here for backward compatibility with the old verifier: + // Legacy verifier returns the full verification key; + // New verifier returns the hash of the verification key + + let vk_hash = self .client .call_contract_function( - "get_verification_key", + "verificationKeyHash", (), None, Default::default(), @@ -102,8 +113,25 @@ impl EthClient for EthHttpQueryClient Self { + pub fn new(diamond_proxy_address: Address, last_seen_version_id: ProtocolVersionId) -> Self { Self { + diamond_proxy_address, last_seen_version_id, - upgrade_proposal_signature: zksync_contract() - .event("ProposeTransparentUpgrade") - .expect("ProposeTransparentUpgrade event is missing in abi") + upgrade_proposal_signature: governance_contract() + .event("TransparentOperationScheduled") + .expect("TransparentOperationScheduled event is missing in abi") .signature(), } } @@ -40,15 +45,24 @@ impl EventProcessor for UpgradesEventProcessor { .into_iter() .filter(|event| event.topics[0] == self.upgrade_proposal_signature) { - let upgrade = ProtocolUpgrade::try_from(event) + let governance_operation = GovernanceOperation::try_from(event) .map_err(|err| Error::LogParse(format!("{:?}", err)))?; - // Scheduler VK is not present in proposal event. It is hardcoded in verifier contract. - let scheduler_vk_hash = if let Some(address) = upgrade.verifier_address { - Some(client.scheduler_vk_hash(address).await?) - } else { - None - }; - upgrades.push((upgrade, scheduler_vk_hash)); + // Some calls can target other contracts than Diamond proxy, skip them. + for call in governance_operation + .calls + .into_iter() + .filter(|call| call.target == self.diamond_proxy_address) + { + let upgrade = ProtocolUpgrade::try_from(call) + .map_err(|err| Error::LogParse(format!("{:?}", err)))?; + // Scheduler VK is not present in proposal event. It is hardcoded in verifier contract. + let scheduler_vk_hash = if let Some(address) = upgrade.verifier_address { + Some(client.scheduler_vk_hash(address).await?) + } else { + None + }; + upgrades.push((upgrade, scheduler_vk_hash)); + } } if upgrades.is_empty() { diff --git a/core/lib/zksync_core/src/eth_watch/mod.rs b/core/lib/zksync_core/src/eth_watch/mod.rs index 0cd2c8283f2..2be8c6be22e 100644 --- a/core/lib/zksync_core/src/eth_watch/mod.rs +++ b/core/lib/zksync_core/src/eth_watch/mod.rs @@ -50,7 +50,12 @@ pub struct EthWatch { } impl EthWatch { - pub async fn new(mut client: W, pool: &ConnectionPool, poll_interval: Duration) -> Self { + pub async fn new( + diamond_proxy_address: Address, + mut client: W, + pool: &ConnectionPool, + poll_interval: Duration, + ) -> Self { let mut storage = pool.access_storage_tagged("eth_watch").await.unwrap(); let state = Self::initialize_state(&client, &mut storage).await; @@ -59,7 +64,8 @@ impl EthWatch { let priority_ops_processor = PriorityOpsEventProcessor::new(state.next_expected_priority_id); - let upgrades_processor = UpgradesEventProcessor::new(state.last_seen_version_id); + let upgrades_processor = + UpgradesEventProcessor::new(diamond_proxy_address, state.last_seen_version_id); let event_processors: Vec>> = vec![ Box::new(priority_ops_processor), Box::new(upgrades_processor), @@ -179,16 +185,24 @@ pub async fn start_eth_watch( pool: ConnectionPool, eth_gateway: E, diamond_proxy_addr: Address, + governance_addr: Address, stop_receiver: watch::Receiver, ) -> anyhow::Result>> { let eth_watch = ETHWatchConfig::from_env().context("ETHWatchConfig::from_env()")?; let eth_client = EthHttpQueryClient::new( eth_gateway, diamond_proxy_addr, + governance_addr, eth_watch.confirmations_for_eth_event, ); - let mut eth_watch = EthWatch::new(eth_client, &pool, eth_watch.poll_interval()).await; + let mut eth_watch = EthWatch::new( + diamond_proxy_addr, + eth_client, + &pool, + eth_watch.poll_interval(), + ) + .await; Ok(tokio::spawn(async move { eth_watch.run(pool, stop_receiver).await diff --git a/core/lib/zksync_core/src/eth_watch/tests.rs b/core/lib/zksync_core/src/eth_watch/tests.rs index 32d3837fecc..d14b1754b2f 100644 --- a/core/lib/zksync_core/src/eth_watch/tests.rs +++ b/core/lib/zksync_core/src/eth_watch/tests.rs @@ -5,7 +5,7 @@ use std::sync::Arc; use tokio::sync::RwLock; use db_test_macro::db_test; -use zksync_contracts::zksync_contract; +use zksync_contracts::{governance_contract, zksync_contract}; use zksync_dal::{ConnectionPool, StorageProcessor}; use zksync_types::protocol_version::{ProtocolUpgradeTx, ProtocolUpgradeTxCommonData}; use zksync_types::web3::types::{Address, BlockNumber}; @@ -190,6 +190,7 @@ async fn test_normal_operation_l1_txs(connection_pool: ConnectionPool) { let mut client = FakeEthClient::new(); let mut watcher = EthWatch::new( + Address::default(), client.clone(), &connection_pool, std::time::Duration::from_nanos(1), @@ -235,6 +236,7 @@ async fn test_normal_operation_upgrades(connection_pool: ConnectionPool) { let mut client = FakeEthClient::new(); let mut watcher = EthWatch::new( + Address::default(), client.clone(), &connection_pool, std::time::Duration::from_nanos(1), @@ -293,6 +295,7 @@ async fn test_gap_in_upgrades(connection_pool: ConnectionPool) { let mut client = FakeEthClient::new(); let mut watcher = EthWatch::new( + Address::default(), client.clone(), &connection_pool, std::time::Duration::from_nanos(1), @@ -330,6 +333,7 @@ async fn test_gap_in_single_batch(connection_pool: ConnectionPool) { let mut client = FakeEthClient::new(); let mut watcher = EthWatch::new( + Address::default(), client.clone(), &connection_pool, std::time::Duration::from_nanos(1), @@ -357,6 +361,7 @@ async fn test_gap_between_batches(connection_pool: ConnectionPool) { let mut client = FakeEthClient::new(); let mut watcher = EthWatch::new( + Address::default(), client.clone(), &connection_pool, std::time::Duration::from_nanos(1), @@ -389,6 +394,7 @@ async fn test_overlapping_batches(connection_pool: ConnectionPool) { let mut client = FakeEthClient::new(); let mut watcher = EthWatch::new( + Address::default(), client.clone(), &connection_pool, std::time::Duration::from_nanos(1), @@ -592,7 +598,7 @@ fn upgrade_into_log(upgrade: ProtocolUpgrade, eth_block: u64) -> Log { Token::Address(Default::default()), ]); - let final_token = Token::Tuple(vec![ + let diamond_cut = Token::Tuple(vec![ Token::Array(vec![]), Token::Address(Default::default()), Token::Bytes( @@ -603,14 +609,31 @@ fn upgrade_into_log(upgrade: ProtocolUpgrade, eth_block: u64) -> Log { ), ]); - let data = encode(&[final_token, Token::FixedBytes(vec![0u8; 32])]); + let diamond_upgrade_calldata = vec![0u8; 4] + .into_iter() + .chain(encode(&[diamond_cut])) + .collect(); + let governance_call = Token::Tuple(vec![ + Token::Address(Default::default()), + Token::Uint(U256::default()), + Token::Bytes(diamond_upgrade_calldata), + ]); + let governance_operation = Token::Tuple(vec![ + Token::Array(vec![governance_call]), + Token::FixedBytes(vec![0u8; 32]), + Token::FixedBytes(vec![0u8; 32]), + ]); + let final_data = encode(&[Token::FixedBytes(vec![0u8; 32]), governance_operation]); Log { address: Address::repeat_byte(0x1), - topics: vec![zksync_contract() - .event("ProposeTransparentUpgrade") - .expect("ProposeTransparentUpgrade event is missing in abi") - .signature()], - data: data.into(), + topics: vec![ + governance_contract() + .event("TransparentOperationScheduled") + .expect("TransparentOperationScheduled event is missing in abi") + .signature(), + Default::default(), + ], + data: final_data.into(), block_hash: Some(H256::repeat_byte(0x11)), block_number: Some(eth_block.into()), transaction_hash: Some(H256::random()), diff --git a/core/lib/zksync_core/src/genesis.rs b/core/lib/zksync_core/src/genesis.rs index f613b2b6a48..405cc419216 100644 --- a/core/lib/zksync_core/src/genesis.rs +++ b/core/lib/zksync_core/src/genesis.rs @@ -91,6 +91,10 @@ pub async fn ensure_genesis_state( vec![], base_system_contracts_hashes.bootloader, base_system_contracts_hashes.default_aa, + vec![], + vec![], + H256::zero(), + H256::zero(), ); save_genesis_l1_batch_metadata( @@ -107,7 +111,7 @@ pub async fn ensure_genesis_state( // We need to `println` this value because it will be used to initialize the smart contract. println!("CONTRACTS_GENESIS_ROOT={:?}", genesis_root_hash); println!( - "CONTRACTS_GENESIS_BLOCK_COMMITMENT={:?}", + "CONTRACTS_GENESIS_BATCH_COMMITMENT={:?}", block_commitment.hash().commitment ); println!( @@ -360,6 +364,7 @@ pub(crate) async fn save_genesis_l1_batch_metadata( aux_data_hash: commitment_hash.aux_output, meta_parameters_hash: commitment_hash.meta_parameters, pass_through_data_hash: commitment_hash.pass_through_data, + state_diffs_compressed: vec![], }; storage .blocks_dal() diff --git a/core/lib/zksync_core/src/lib.rs b/core/lib/zksync_core/src/lib.rs index f40074d600c..deb7bfcb6a9 100644 --- a/core/lib/zksync_core/src/lib.rs +++ b/core/lib/zksync_core/src/lib.rs @@ -308,6 +308,7 @@ pub async fn initialize_components( CircuitBreakerConfig::from_env().context("CircuitBreakerConfig::from_env()")?; let main_zksync_contract_address = contracts_config.diamond_proxy_addr; + let governance_contract_address = contracts_config.governance_addr; let circuit_breaker_checker = CircuitBreakerChecker::new( circuit_breakers_for_components( &components, @@ -497,6 +498,7 @@ pub async fn initialize_components( eth_watch_pool, query_client.clone(), main_zksync_contract_address, + governance_contract_address, stop_receiver.clone(), ) .await diff --git a/core/lib/zksync_core/src/metadata_calculator/mod.rs b/core/lib/zksync_core/src/metadata_calculator/mod.rs index 02a0ba1082b..d96e4f94508 100644 --- a/core/lib/zksync_core/src/metadata_calculator/mod.rs +++ b/core/lib/zksync_core/src/metadata_calculator/mod.rs @@ -178,6 +178,12 @@ impl MetadataCalculator { tree_metadata.repeated_writes, header.base_system_contracts_hashes.bootloader, header.base_system_contracts_hashes.default_aa, + header.system_logs.clone(), + tree_metadata.state_diffs, + header + .bootloader_initial_content_commitment + .unwrap_or_default(), + header.events_queue_commitment.unwrap_or_default(), ); let commitment_hash = commitment.hash(); tracing::trace!("L1 batch commitment: {commitment:?}"); @@ -189,12 +195,13 @@ impl MetadataCalculator { initial_writes_compressed: commitment.initial_writes_compressed().to_vec(), repeated_writes_compressed: commitment.repeated_writes_compressed().to_vec(), commitment: commitment_hash.commitment, - l2_l1_messages_compressed: commitment.l2_l1_logs_compressed().to_vec(), + l2_l1_messages_compressed: commitment.system_logs_compressed().to_vec(), l2_l1_merkle_root: commitment.l2_l1_logs_merkle_root(), block_meta_params: commitment.meta_parameters(), aux_data_hash: commitment_hash.aux_output, meta_parameters_hash: commitment_hash.meta_parameters, pass_through_data_hash: commitment_hash.pass_through_data, + state_diffs_compressed: commitment.state_diffs_compressed().to_vec(), }; tracing::trace!("L1 batch metadata: {metadata:?}"); diff --git a/core/lib/zksync_core/src/proof_data_handler/request_processor.rs b/core/lib/zksync_core/src/proof_data_handler/request_processor.rs index 2f49b54f68c..b301560d8be 100644 --- a/core/lib/zksync_core/src/proof_data_handler/request_processor.rs +++ b/core/lib/zksync_core/src/proof_data_handler/request_processor.rs @@ -6,6 +6,9 @@ use std::sync::Arc; use zksync_config::configs::{ proof_data_handler::ProtocolVersionLoadingMode, ProofDataHandlerConfig, }; +use zksync_types::commitment::serialize_commitments; +use zksync_types::web3::signing::keccak256; +use zksync_utils::u256_to_h256; use zksync_dal::{ConnectionPool, SqlxError}; use zksync_object_store::{ObjectStore, ObjectStoreError}; @@ -16,7 +19,7 @@ use zksync_types::{ ProofGenerationData, ProofGenerationDataRequest, ProofGenerationDataResponse, SubmitProofRequest, SubmitProofResponse, }, - L1BatchNumber, + L1BatchNumber, H256, }; #[derive(Clone)] @@ -140,7 +143,49 @@ impl RequestProcessor { .await .map_err(RequestProcessorError::ObjectStore)?; + let system_logs_hash_from_prover = + H256::from_slice(&proof.aggregation_result_coords[0]); + let state_diff_hash_from_prover = + H256::from_slice(&proof.aggregation_result_coords[1]); + let bootloader_heap_initial_content_from_prover = + H256::from_slice(&proof.aggregation_result_coords[2]); + let events_queue_state_from_prover = + H256::from_slice(&proof.aggregation_result_coords[3]); + let mut storage = self.pool.access_storage().await.unwrap(); + + let header = storage + .blocks_dal() + .get_l1_batch_header(l1_batch_number) + .await + .unwrap() + .expect("Proved block without a header"); + let events_queue_state = header + .events_queue_commitment + .expect("No events_queue_commitment"); + let bootloader_heap_initial_content = header + .bootloader_initial_content_commitment + .expect("No bootloader_initial_content_commitment"); + let system_logs = serialize_commitments(&header.system_logs); + let system_logs_hash = H256(keccak256(&system_logs)); + + let state_diff_hash = header + .system_logs + .into_iter() + .find(|elem| elem.key == u256_to_h256(2.into())) + .expect("No state diff hash key") + .value; + + if events_queue_state != events_queue_state_from_prover + || bootloader_heap_initial_content + != bootloader_heap_initial_content_from_prover + || state_diff_hash != state_diff_hash_from_prover + || system_logs_hash != system_logs_hash_from_prover + { + let server_values = format!("{system_logs_hash} {state_diff_hash} {events_queue_state} {bootloader_heap_initial_content}"); + let prover_values = format!("{system_logs_hash_from_prover} {state_diff_hash_from_prover} {events_queue_state_from_prover} {bootloader_heap_initial_content_from_prover}"); + tracing::error!("Auxilary output doesn't match, server values: {server_values} prover values: {prover_values}"); + } storage .proof_generation_dal() .save_proof_artifacts_metadata(l1_batch_number, &blob_url) diff --git a/core/lib/zksync_core/src/state_keeper/batch_executor/mod.rs b/core/lib/zksync_core/src/state_keeper/batch_executor/mod.rs index de4b0289cea..5803edd9f39 100644 --- a/core/lib/zksync_core/src/state_keeper/batch_executor/mod.rs +++ b/core/lib/zksync_core/src/state_keeper/batch_executor/mod.rs @@ -404,7 +404,7 @@ impl BatchExecutor { ExecutionResult::Halt { reason } => match reason { Halt::BootloaderOutOfGas => TxExecutionResult::BootloaderOutOfGasForBlockTip, _ => { - panic!("VM must not revert when finalizing block (except `BootloaderOutOfGas`)") + panic!("VM must not revert when finalizing block (except `BootloaderOutOfGas`). Reason: {:#?}", reason) } }, } @@ -436,7 +436,10 @@ impl BatchExecutor { // There is some post-processing work that the VM needs to do before the block is fully processed. let result = vm.finish_batch(); if result.block_tip_execution_result.result.is_failed() { - panic!("VM must not fail when finalizing block"); + panic!( + "VM must not fail when finalizing block: {:#?}", + result.block_tip_execution_result.result + ); } result } diff --git a/core/lib/zksync_core/src/state_keeper/io/seal_logic.rs b/core/lib/zksync_core/src/state_keeper/io/seal_logic.rs index f3802960493..a29e0b14f7f 100644 --- a/core/lib/zksync_core/src/state_keeper/io/seal_logic.rs +++ b/core/lib/zksync_core/src/state_keeper/io/seal_logic.rs @@ -2,6 +2,9 @@ //! It contains the logic of the block sealing, which is used by both the mempool-based and external node IO. use itertools::Itertools; +use zkevm_test_harness::witness::utils::{ + events_queue_commitment_fixed, initial_heap_content_commitment_fixed, +}; use std::{ collections::HashMap, @@ -32,8 +35,8 @@ use zksync_types::{ // TODO (SMA-1206): use seconds instead of milliseconds. use zksync_utils::{h256_to_u256, time::millis_since_epoch, u256_to_h256}; -use crate::state_keeper::extractors; use crate::state_keeper::updates::{MiniblockSealCommand, UpdatesManager}; +use crate::{state_keeper::extractors, witness_generator::utils::expand_bootloader_contents}; #[derive(Debug, Clone, Copy)] struct SealProgressMetricNames { @@ -170,7 +173,10 @@ impl UpdatesManager { {event_count} events, {reads_count} reads ({dedup_reads_count} deduped), \ {writes_count} writes ({dedup_writes_count} deduped)", total_tx_count = l1_tx_count + l2_tx_count, - l2_to_l1_log_count = finished_batch.final_execution_state.l2_to_l1_logs.len(), + l2_to_l1_log_count = finished_batch + .final_execution_state + .user_l2_to_l1_logs + .len(), event_count = finished_batch.final_execution_state.events.len(), current_l1_batch_number = l1_batch_env.number ); @@ -186,6 +192,26 @@ impl UpdatesManager { extractors::display_timestamp(l1_batch_env.timestamp) ); + let (deduplicated_writes, protective_reads): (Vec<_>, Vec<_>) = deduped_log_queries + .into_iter() + .partition(|log_query| log_query.rw_flag); + + let l2_to_l1_messages = + extract_long_l2_to_l1_messages(&finished_batch.final_execution_state.events); + let initial_bootloader_contents = + finished_batch.final_bootloader_memory.unwrap_or_default(); + + let full_bootloader_memory = expand_bootloader_contents(&initial_bootloader_contents); + + let bootloader_initial_content_commitment = + initial_heap_content_commitment_fixed(&full_bootloader_memory); + + let events_queue_commitment = events_queue_commitment_fixed( + &finished_batch + .final_execution_state + .deduplicated_events_logs, + ); + let l1_batch = L1BatchHeader { number: l1_batch_env.number, is_finished: true, @@ -194,21 +220,22 @@ impl UpdatesManager { priority_ops_onchain_data: self.l1_batch.priority_ops_onchain_data.clone(), l1_tx_count: l1_tx_count as u16, l2_tx_count: l2_tx_count as u16, - l2_to_l1_logs: finished_batch.final_execution_state.l2_to_l1_logs, - l2_to_l1_messages: extract_long_l2_to_l1_messages( - &finished_batch.final_execution_state.events, - ), + l2_to_l1_logs: finished_batch.final_execution_state.user_l2_to_l1_logs, + l2_to_l1_messages, bloom: Default::default(), used_contract_hashes: finished_batch.final_execution_state.used_contract_hashes, base_fee_per_gas: l1_batch_env.base_fee(), l1_gas_price: self.l1_gas_price(), l2_fair_gas_price: self.fair_l2_gas_price(), base_system_contracts_hashes: self.base_system_contract_hashes(), + system_logs: finished_batch.final_execution_state.system_logs, protocol_version: Some(self.protocol_version()), - }; - let initial_bootloader_contents = - finished_batch.final_bootloader_memory.unwrap_or_default(); + events_queue_commitment: Some(H256(events_queue_commitment)), + bootloader_initial_content_commitment: Some(H256( + bootloader_initial_content_commitment, + )), + }; transaction .blocks_dal() @@ -237,9 +264,6 @@ impl UpdatesManager { .await; progress.end_stage("mark_txs_as_executed_in_l1_batch", None); - let (deduplicated_writes, protective_reads): (Vec<_>, Vec<_>) = deduped_log_queries - .into_iter() - .partition(|log_query| log_query.rw_flag); transaction .storage_logs_dedup_dal() .insert_protective_reads(l1_batch_env.number, &protective_reads) @@ -450,17 +474,27 @@ impl MiniblockSealCommand { .await; progress.end_stage("insert_events", Some(miniblock_event_count)); - let l2_to_l1_logs = self.extract_l2_to_l1_logs(is_fictive); - let l2_to_l1_log_count = l2_to_l1_logs + let system_l2_to_l1_logs = self.extract_system_l2_to_l1_logs(is_fictive); + let user_l2_to_l1_logs = self.extract_user_l2_to_l1_logs(is_fictive); + + let system_l2_to_l1_log_count: usize = system_l2_to_l1_logs .iter() .map(|(_, l2_to_l1_logs)| l2_to_l1_logs.len()) .sum(); - progress.end_stage("extract_l2_to_l1_logs", Some(l2_to_l1_log_count)); + let user_l2_to_l1_log_count: usize = user_l2_to_l1_logs + .iter() + .map(|(_, l2_to_l1_logs)| l2_to_l1_logs.len()) + .sum(); + + progress.end_stage( + "extract_l2_to_l1_logs", + Some(system_l2_to_l1_log_count + user_l2_to_l1_log_count), + ); transaction .events_dal() - .save_l2_to_l1_logs(miniblock_number, &l2_to_l1_logs) + .save_l2_to_l1_logs(miniblock_number, &user_l2_to_l1_logs) .await; - progress.end_stage("insert_l2_to_l1_logs", Some(l2_to_l1_log_count)); + progress.end_stage("insert_l2_to_l1_logs", Some(user_l2_to_l1_log_count)); let current_l2_virtual_block_info = transaction .storage_dal() @@ -588,11 +622,20 @@ impl MiniblockSealCommand { grouped_entries.collect() } - fn extract_l2_to_l1_logs( + fn extract_system_l2_to_l1_logs( + &self, + is_fictive: bool, + ) -> Vec<(IncludedTxLocation, Vec<&L2ToL1Log>)> { + self.group_by_tx_location(&self.miniblock.system_l2_to_l1_logs, is_fictive, |log| { + u32::from(log.tx_number_in_block) + }) + } + + fn extract_user_l2_to_l1_logs( &self, is_fictive: bool, ) -> Vec<(IncludedTxLocation, Vec<&L2ToL1Log>)> { - self.group_by_tx_location(&self.miniblock.l2_to_l1_logs, is_fictive, |log| { + self.group_by_tx_location(&self.miniblock.user_l2_to_l1_logs, is_fictive, |log| { u32::from(log.tx_number_in_block) }) } diff --git a/core/lib/zksync_core/src/state_keeper/tests/mod.rs b/core/lib/zksync_core/src/state_keeper/tests/mod.rs index 4f8f1fe364d..b9428090cef 100644 --- a/core/lib/zksync_core/src/state_keeper/tests/mod.rs +++ b/core/lib/zksync_core/src/state_keeper/tests/mod.rs @@ -10,7 +10,7 @@ use std::{ use vm::{ constants::BLOCK_GAS_LIMIT, CurrentExecutionState, ExecutionResult, FinishedL1Batch, - L1BatchEnv, L2BlockEnv, SystemEnv, TxExecutionMode, VmExecutionResultAndLogs, + L1BatchEnv, L2BlockEnv, SystemEnv, TxExecutionMode, VmExecutionLogs, VmExecutionResultAndLogs, VmExecutionStatistics, }; use zksync_config::{configs::chain::StateKeeperConfig, constants::ZKPORTER_IS_AVAILABLE}; @@ -25,7 +25,6 @@ use zksync_types::{ fee::Fee, l2::L2Tx, transaction_request::PaymasterParams, - tx::tx_execution_info::VmExecutionLogs, Address, L1BatchNumber, L2ChainId, LogQuery, MiniblockNumber, Nonce, ProtocolVersionId, StorageLogQuery, StorageLogQueryType, Timestamp, Transaction, H256, U256, }; @@ -102,6 +101,7 @@ pub(super) fn create_l1_batch_metadata(number: u32) -> L1BatchMetadata { aux_data_hash: H256::zero(), meta_parameters_hash: H256::zero(), pass_through_data_hash: H256::zero(), + state_diffs_compressed: vec![], } } @@ -117,9 +117,11 @@ pub(super) fn default_vm_block_result() -> FinishedL1Batch { events: vec![], storage_log_queries: vec![], used_contract_hashes: vec![], - l2_to_l1_logs: vec![], + user_l2_to_l1_logs: vec![], + system_logs: vec![], total_log_queries: 0, cycles_used: 0, + deduplicated_events_logs: vec![], }, final_bootloader_memory: Some(vec![]), } @@ -178,7 +180,8 @@ pub(super) fn create_execution_result( result: ExecutionResult::Success { output: vec![] }, logs: VmExecutionLogs { events: vec![], - l2_to_l1_logs: vec![], + system_l2_to_l1_logs: vec![], + user_l2_to_l1_logs: vec![], storage_logs, total_log_queries_count: total_log_queries, }, diff --git a/core/lib/zksync_core/src/state_keeper/updates/l1_batch_updates.rs b/core/lib/zksync_core/src/state_keeper/updates/l1_batch_updates.rs index c7ab405d9da..2fcd54e3e02 100644 --- a/core/lib/zksync_core/src/state_keeper/updates/l1_batch_updates.rs +++ b/core/lib/zksync_core/src/state_keeper/updates/l1_batch_updates.rs @@ -75,7 +75,10 @@ mod tests { assert_eq!(l1_batch_accumulator.executed_transactions.len(), 1); assert_eq!(l1_batch_accumulator.l1_gas_count, new_block_gas_count()); assert_eq!(l1_batch_accumulator.priority_ops_onchain_data.len(), 0); - assert_eq!(l1_batch_accumulator.block_execution_metrics.l2_l1_logs, 0); + assert_eq!( + l1_batch_accumulator.block_execution_metrics.l2_to_l1_logs, + 0 + ); assert_eq!(l1_batch_accumulator.txs_encoding_size, expected_tx_size); } } diff --git a/core/lib/zksync_core/src/state_keeper/updates/miniblock_updates.rs b/core/lib/zksync_core/src/state_keeper/updates/miniblock_updates.rs index a49edbee225..b28b449e6f8 100644 --- a/core/lib/zksync_core/src/state_keeper/updates/miniblock_updates.rs +++ b/core/lib/zksync_core/src/state_keeper/updates/miniblock_updates.rs @@ -18,7 +18,8 @@ pub struct MiniblockUpdates { pub executed_transactions: Vec, pub events: Vec, pub storage_logs: Vec, - pub l2_to_l1_logs: Vec, + pub user_l2_to_l1_logs: Vec, + pub system_l2_to_l1_logs: Vec, pub new_factory_deps: HashMap>, /// How much L1 gas will it take to submit this block? pub l1_gas_count: BlockGasCount, @@ -44,7 +45,8 @@ impl MiniblockUpdates { executed_transactions: vec![], events: vec![], storage_logs: vec![], - l2_to_l1_logs: vec![], + user_l2_to_l1_logs: vec![], + system_l2_to_l1_logs: vec![], new_factory_deps: HashMap::new(), l1_gas_count: BlockGasCount::default(), block_execution_metrics: ExecutionMetrics::default(), @@ -61,7 +63,10 @@ impl MiniblockUpdates { pub(crate) fn extend_from_fictive_transaction(&mut self, result: VmExecutionResultAndLogs) { self.events.extend(result.logs.events); self.storage_logs.extend(result.logs.storage_logs); - self.l2_to_l1_logs.extend(result.logs.l2_to_l1_logs); + self.user_l2_to_l1_logs + .extend(result.logs.user_l2_to_l1_logs); + self.system_l2_to_l1_logs + .extend(result.logs.system_l2_to_l1_logs); } pub(crate) fn extend_from_executed_transaction( @@ -76,8 +81,10 @@ impl MiniblockUpdates { let saved_factory_deps = extract_bytecodes_marked_as_known(&tx_execution_result.logs.events); self.events.extend(tx_execution_result.logs.events); - self.l2_to_l1_logs - .extend(tx_execution_result.logs.l2_to_l1_logs); + self.user_l2_to_l1_logs + .extend(tx_execution_result.logs.user_l2_to_l1_logs); + self.system_l2_to_l1_logs + .extend(tx_execution_result.logs.system_l2_to_l1_logs); let gas_refunded = tx_execution_result.refunds.gas_refunded; let operator_suggested_refund = tx_execution_result.refunds.operator_suggested_refund; @@ -182,10 +189,11 @@ mod tests { assert_eq!(accumulator.executed_transactions.len(), 1); assert_eq!(accumulator.events.len(), 0); assert_eq!(accumulator.storage_logs.len(), 0); - assert_eq!(accumulator.l2_to_l1_logs.len(), 0); + assert_eq!(accumulator.user_l2_to_l1_logs.len(), 0); + assert_eq!(accumulator.system_l2_to_l1_logs.len(), 0); assert_eq!(accumulator.l1_gas_count, Default::default()); assert_eq!(accumulator.new_factory_deps.len(), 0); - assert_eq!(accumulator.block_execution_metrics.l2_l1_logs, 0); + assert_eq!(accumulator.block_execution_metrics.l2_to_l1_logs, 0); assert_eq!(accumulator.txs_encoding_size, bootloader_encoding_size); } } diff --git a/core/lib/zksync_core/src/witness_generator/mod.rs b/core/lib/zksync_core/src/witness_generator/mod.rs index 4700318d5b3..f2de579691b 100644 --- a/core/lib/zksync_core/src/witness_generator/mod.rs +++ b/core/lib/zksync_core/src/witness_generator/mod.rs @@ -5,7 +5,7 @@ use zksync_types::proofs::AggregationRound; // use crate::witness_generator::basic_circuits; mod precalculated_merkle_paths_provider; -mod utils; +pub(crate) mod utils; pub mod basic_circuits; pub mod leaf_aggregation; diff --git a/core/multivm_deps/vm_1_3_2/src/legacy_types.rs b/core/multivm_deps/vm_1_3_2/src/legacy_types.rs new file mode 100644 index 00000000000..6b9ba5ac88f --- /dev/null +++ b/core/multivm_deps/vm_1_3_2/src/legacy_types.rs @@ -0,0 +1,15 @@ +use zksync_types::{l2_to_l1_log::L2ToL1Log, StorageLogQuery, VmEvent}; + +/// +/// Here we insert of the types that used to be present in lib/types at the time when this VM was in use. +/// + +/// Events/storage logs/l2->l1 logs created within transaction execution. +#[derive(Debug, Clone, Default, PartialEq)] +pub struct VmExecutionLogs { + pub storage_logs: Vec, + pub events: Vec, + pub l2_to_l1_logs: Vec, + // This field moved to statistics, but we need to keep it for backward compatibility + pub total_log_queries_count: usize, +} diff --git a/core/multivm_deps/vm_1_3_2/src/lib.rs b/core/multivm_deps/vm_1_3_2/src/lib.rs index 39a69776f5a..05db2a85c48 100644 --- a/core/multivm_deps/vm_1_3_2/src/lib.rs +++ b/core/multivm_deps/vm_1_3_2/src/lib.rs @@ -5,6 +5,7 @@ pub mod errors; pub mod event_sink; mod events; mod history_recorder; +pub mod legacy_types; pub mod memory; mod oracle_tools; pub mod oracles; diff --git a/core/multivm_deps/vm_1_3_2/src/vm.rs b/core/multivm_deps/vm_1_3_2/src/vm.rs index c8a8bf7e653..555dde03b04 100644 --- a/core/multivm_deps/vm_1_3_2/src/vm.rs +++ b/core/multivm_deps/vm_1_3_2/src/vm.rs @@ -9,7 +9,7 @@ use zk_evm::zkevm_opcode_defs::definitions::RET_IMPLICIT_RETURNDATA_PARAMS_REGIS use zksync_config::constants::MAX_TXS_IN_BLOCK; use zksync_state::WriteStorage; use zksync_types::l2_to_l1_log::L2ToL1Log; -use zksync_types::tx::tx_execution_info::{TxExecutionStatus, VmExecutionLogs}; +use zksync_types::tx::tx_execution_info::TxExecutionStatus; use zksync_types::vm_trace::{Call, VmExecutionTrace, VmTrace}; use zksync_types::{L1BatchNumber, StorageLogQuery, VmEvent, U256}; @@ -18,6 +18,7 @@ use crate::errors::{TxRevertReason, VmRevertReason, VmRevertReasonParsingResult} use crate::event_sink::InMemoryEventSink; use crate::events::merge_events; use crate::history_recorder::{HistoryEnabled, HistoryMode}; +use crate::legacy_types::VmExecutionLogs; use crate::memory::SimpleMemory; use crate::oracles::decommitter::DecommitterOracle; use crate::oracles::precompile::PrecompilesProcessorWithHistory; diff --git a/core/multivm_deps/vm_m5/src/legacy_types.rs b/core/multivm_deps/vm_m5/src/legacy_types.rs new file mode 100644 index 00000000000..6b9ba5ac88f --- /dev/null +++ b/core/multivm_deps/vm_m5/src/legacy_types.rs @@ -0,0 +1,15 @@ +use zksync_types::{l2_to_l1_log::L2ToL1Log, StorageLogQuery, VmEvent}; + +/// +/// Here we insert of the types that used to be present in lib/types at the time when this VM was in use. +/// + +/// Events/storage logs/l2->l1 logs created within transaction execution. +#[derive(Debug, Clone, Default, PartialEq)] +pub struct VmExecutionLogs { + pub storage_logs: Vec, + pub events: Vec, + pub l2_to_l1_logs: Vec, + // This field moved to statistics, but we need to keep it for backward compatibility + pub total_log_queries_count: usize, +} diff --git a/core/multivm_deps/vm_m5/src/lib.rs b/core/multivm_deps/vm_m5/src/lib.rs index bd6b9364ece..3ac5a471f0a 100644 --- a/core/multivm_deps/vm_m5/src/lib.rs +++ b/core/multivm_deps/vm_m5/src/lib.rs @@ -6,6 +6,7 @@ pub mod event_sink; mod events; pub(crate) mod glue; mod history_recorder; +pub mod legacy_types; pub mod memory; mod oracle_tools; pub mod oracles; diff --git a/core/multivm_deps/vm_m5/src/vm.rs b/core/multivm_deps/vm_m5/src/vm.rs index d8244f20353..7f00bf84011 100644 --- a/core/multivm_deps/vm_m5/src/vm.rs +++ b/core/multivm_deps/vm_m5/src/vm.rs @@ -9,7 +9,7 @@ use zk_evm::zkevm_opcode_defs::definitions::RET_IMPLICIT_RETURNDATA_PARAMS_REGIS use zksync_config::constants::MAX_TXS_IN_BLOCK; use zksync_types::l2_to_l1_log::L2ToL1Log; -use zksync_types::tx::tx_execution_info::{TxExecutionStatus, VmExecutionLogs}; +use zksync_types::tx::tx_execution_info::TxExecutionStatus; use zksync_types::vm_trace::VmExecutionTrace; use zksync_types::{L1BatchNumber, StorageLogQuery, VmEvent, U256}; @@ -18,6 +18,7 @@ use crate::errors::{TxRevertReason, VmRevertReason, VmRevertReasonParsingResult} use crate::event_sink::InMemoryEventSink; use crate::events::merge_events; use crate::glue::GlueInto; +use crate::legacy_types::VmExecutionLogs; use crate::memory::SimpleMemory; use crate::oracles::decommitter::DecommitterOracle; use crate::oracles::precompile::PrecompilesProcessorWithHistory; diff --git a/core/multivm_deps/vm_m6/src/legacy_types.rs b/core/multivm_deps/vm_m6/src/legacy_types.rs new file mode 100644 index 00000000000..6b9ba5ac88f --- /dev/null +++ b/core/multivm_deps/vm_m6/src/legacy_types.rs @@ -0,0 +1,15 @@ +use zksync_types::{l2_to_l1_log::L2ToL1Log, StorageLogQuery, VmEvent}; + +/// +/// Here we insert of the types that used to be present in lib/types at the time when this VM was in use. +/// + +/// Events/storage logs/l2->l1 logs created within transaction execution. +#[derive(Debug, Clone, Default, PartialEq)] +pub struct VmExecutionLogs { + pub storage_logs: Vec, + pub events: Vec, + pub l2_to_l1_logs: Vec, + // This field moved to statistics, but we need to keep it for backward compatibility + pub total_log_queries_count: usize, +} diff --git a/core/multivm_deps/vm_m6/src/lib.rs b/core/multivm_deps/vm_m6/src/lib.rs index f88ae4a42b1..28ceaf58bf6 100644 --- a/core/multivm_deps/vm_m6/src/lib.rs +++ b/core/multivm_deps/vm_m6/src/lib.rs @@ -6,6 +6,7 @@ pub mod event_sink; mod events; pub(crate) mod glue; mod history_recorder; +pub mod legacy_types; pub mod memory; mod oracle_tools; pub mod oracles; diff --git a/core/multivm_deps/vm_m6/src/vm.rs b/core/multivm_deps/vm_m6/src/vm.rs index 956d474cd4a..2d8da6d9155 100644 --- a/core/multivm_deps/vm_m6/src/vm.rs +++ b/core/multivm_deps/vm_m6/src/vm.rs @@ -8,7 +8,7 @@ use zk_evm::zkevm_opcode_defs::decoding::{AllowedPcOrImm, EncodingModeProduction use zk_evm::zkevm_opcode_defs::definitions::RET_IMPLICIT_RETURNDATA_PARAMS_REGISTER; use zksync_config::constants::MAX_TXS_IN_BLOCK; use zksync_types::l2_to_l1_log::L2ToL1Log; -use zksync_types::tx::tx_execution_info::{TxExecutionStatus, VmExecutionLogs}; +use zksync_types::tx::tx_execution_info::TxExecutionStatus; use zksync_types::vm_trace::{Call, VmExecutionTrace, VmTrace}; use zksync_types::{L1BatchNumber, StorageLogQuery, VmEvent, U256}; @@ -18,6 +18,7 @@ use crate::event_sink::InMemoryEventSink; use crate::events::merge_events; use crate::glue::GlueInto; use crate::history_recorder::{HistoryEnabled, HistoryMode}; +use crate::legacy_types::VmExecutionLogs; use crate::memory::SimpleMemory; use crate::oracles::decommitter::DecommitterOracle; use crate::oracles::precompile::PrecompilesProcessorWithHistory; diff --git a/core/tests/ts-integration/src/system.ts b/core/tests/ts-integration/src/system.ts index 631a752c934..f94e4fbe68c 100644 --- a/core/tests/ts-integration/src/system.ts +++ b/core/tests/ts-integration/src/system.ts @@ -1,13 +1,16 @@ import { BigNumber, BytesLike } from 'ethers'; import { ethers } from 'ethers'; -import { Provider, utils } from 'zksync-web3'; +import { Provider, utils, Contract } from 'zksync-web3'; const L1_CONTRACTS_FOLDER = `${process.env.ZKSYNC_HOME}/contracts/ethereum/artifacts/cache/solpp-generated-contracts`; const DIAMOND_UPGRADE_INIT_ABI = new ethers.utils.Interface( require(`${L1_CONTRACTS_FOLDER}/zksync/upgrade-initializers/DiamondUpgradeInit1.sol/DiamondUpgradeInit1.json`).abi ); -const DIAMOND_CUT_FACET_ABI = new ethers.utils.Interface( - require(`${L1_CONTRACTS_FOLDER}/zksync/facets/DiamondCut.sol/DiamondCutFacet.json`).abi +const GOVERNANCE_ABI = new ethers.utils.Interface( + require(`${L1_CONTRACTS_FOLDER}/governance/Governance.sol/Governance.json`).abi +); +const ADMIN_FACET_ABI = new ethers.utils.Interface( + require(`${L1_CONTRACTS_FOLDER}/zksync/facets/Admin.sol/AdminFacet.json`).abi ); export interface ForceDeployment { @@ -61,13 +64,7 @@ export async function deployOnAnyLocalAddress( const zkSyncContract = await l2Provider.getMainContractAddress(); const zkSync = new ethers.Contract(zkSyncContract, utils.ZKSYNC_MAIN_ABI, govWallet); - - // In case there is some pending upgrade there, we cancel it - const upgradeProposalState = await zkSync.getUpgradeProposalState(); - if (upgradeProposalState != 0) { - const currentProposalHash = await zkSync.getProposedUpgradeHash(); - await zkSync.connect(govWallet).cancelUpgradeProposal(currentProposalHash); - } + const governanceContractAddr = await zkSync.getGovernor(); // Encode data for the upgrade call const encodedParams = utils.CONTRACT_DEPLOYER.encodeFunctionData('forceDeployOnAddresses', [deployments]); @@ -80,24 +77,35 @@ export async function deployOnAnyLocalAddress( ]); const upgradeParam = diamondCut([], diamondUpgradeInitAddress, upgradeInitData); - const currentProposalId = (await zkSync.getCurrentProposalId()).add(1); - // Get transaction data of the `proposeTransparentUpgrade` - const proposeTransparentUpgrade = DIAMOND_CUT_FACET_ABI.encodeFunctionData('proposeTransparentUpgrade', [ - upgradeParam, - currentProposalId - ]); - // Get transaction data of the `executeUpgrade` - const executeUpgrade = DIAMOND_CUT_FACET_ABI.encodeFunctionData('executeUpgrade', [ - upgradeParam, - ethers.constants.HashZero + // Prepare calldata for upgrading diamond proxy + const diamondProxyUpgradeCalldata = ADMIN_FACET_ABI.encodeFunctionData('executeUpgrade', [upgradeParam]); + + const call = { + target: zkSyncContract, + value: 0, + data: diamondProxyUpgradeCalldata + }; + const governanceOperation = { + calls: [call], + predecessor: ethers.constants.HashZero, + salt: ethers.constants.HashZero + }; + + // Get transaction data of the `scheduleTransparent` + const scheduleTransparentOperation = GOVERNANCE_ABI.encodeFunctionData('scheduleTransparent', [ + governanceOperation, + 0 // delay ]); + // Get transaction data of the `execute` + const executeOperation = GOVERNANCE_ABI.encodeFunctionData('execute', [governanceOperation]); + // Proposing the upgrade await ( await govWallet.sendTransaction({ - to: zkSyncContract, - data: proposeTransparentUpgrade, + to: governanceContractAddr, + data: scheduleTransparentOperation, gasLimit: BigNumber.from(10000000) }) ).wait(); @@ -105,8 +113,8 @@ export async function deployOnAnyLocalAddress( // Finalize the upgrade const receipt = await ( await govWallet.sendTransaction({ - to: zkSyncContract, - data: executeUpgrade, + to: governanceContractAddr, + data: executeOperation, gasLimit: BigNumber.from(10000000) }) ).wait(); diff --git a/core/tests/ts-integration/tests/l1.test.ts b/core/tests/ts-integration/tests/l1.test.ts index c4cf0b669cb..802aa9f41bc 100644 --- a/core/tests/ts-integration/tests/l1.test.ts +++ b/core/tests/ts-integration/tests/l1.test.ts @@ -251,7 +251,7 @@ describe('Tests for L1 behavior', () => { const contract = await deployContract(alice, contracts.writesAndMessages, []); // The circuit allows us to have 512 L2->L1 logs for an L1 batch. // We check that we will run out of gas if we send a bit smaller amount of L2->L1 logs. - const calldata = contract.interface.encodeFunctionData('l2_l1_messages', [500]); + const calldata = contract.interface.encodeFunctionData('l2_l1_messages', [1000]); const gasPrice = scaledGasPrice(alice); const l2GasLimit = maxL2GasLimitForPriorityTxs(); @@ -278,11 +278,11 @@ describe('Tests for L1 behavior', () => { } const contract = await deployContract(alice, contracts.writesAndMessages, []); - const MAX_PUBDATA_PER_BLOCK = ethers.BigNumber.from(SYSTEM_CONFIG['MAX_PUBDATA_PER_BLOCK']); + const MAX_PUBDATA_PER_BATCH = ethers.BigNumber.from(SYSTEM_CONFIG['MAX_PUBDATA_PER_BATCH']); // We check that we will run out of gas if we send a bit - // smaller than `MAX_PUBDATA_PER_BLOCK` amount of pubdata in a single tx. + // smaller than `MAX_PUBDATA_PER_BATCH` amount of pubdata in a single tx. const calldata = contract.interface.encodeFunctionData('big_l2_l1_message', [ - MAX_PUBDATA_PER_BLOCK.mul(9).div(10) + MAX_PUBDATA_PER_BATCH.mul(9).div(10) ]); const gasPrice = scaledGasPrice(alice); @@ -352,21 +352,21 @@ function getOverheadForTransaction( gasPricePerPubdata: ethers.BigNumber, encodingLength: ethers.BigNumber ): number { - const BLOCK_OVERHEAD_L2_GAS = ethers.BigNumber.from(SYSTEM_CONFIG['BLOCK_OVERHEAD_L2_GAS']); + const BATCH_OVERHEAD_L2_GAS = ethers.BigNumber.from(SYSTEM_CONFIG['BATCH_OVERHEAD_L2_GAS']); const L1_GAS_PER_PUBDATA_BYTE = ethers.BigNumber.from(SYSTEM_CONFIG['L1_GAS_PER_PUBDATA_BYTE']); - const BLOCK_OVERHEAD_L1_GAS = ethers.BigNumber.from(SYSTEM_CONFIG['BLOCK_OVERHEAD_L1_GAS']); - const BLOCK_OVERHEAD_PUBDATA = BLOCK_OVERHEAD_L1_GAS.div(L1_GAS_PER_PUBDATA_BYTE); + const BATCH_OVERHEAD_L1_GAS = ethers.BigNumber.from(SYSTEM_CONFIG['BATCH_OVERHEAD_L1_GAS']); + const BATCH_OVERHEAD_PUBDATA = BATCH_OVERHEAD_L1_GAS.div(L1_GAS_PER_PUBDATA_BYTE); - const MAX_TRANSACTIONS_IN_BLOCK = ethers.BigNumber.from(SYSTEM_CONFIG['MAX_TRANSACTIONS_IN_BLOCK']); + const MAX_TRANSACTIONS_IN_BATCH = ethers.BigNumber.from(SYSTEM_CONFIG['MAX_TRANSACTIONS_IN_BATCH']); const BOOTLOADER_TX_ENCODING_SPACE = ethers.BigNumber.from(SYSTEM_CONFIG['BOOTLOADER_TX_ENCODING_SPACE']); // TODO (EVM-67): possibly charge overhead for pubdata - // const MAX_PUBDATA_PER_BLOCK = ethers.BigNumber.from(SYSTEM_CONFIG['MAX_PUBDATA_PER_BLOCK']); + // const MAX_PUBDATA_PER_BATCH = ethers.BigNumber.from(SYSTEM_CONFIG['MAX_PUBDATA_PER_BATCH']); const L2_TX_MAX_GAS_LIMIT = ethers.BigNumber.from(SYSTEM_CONFIG['L2_TX_MAX_GAS_LIMIT']); - const maxBlockOverhead = BLOCK_OVERHEAD_L2_GAS.add(BLOCK_OVERHEAD_PUBDATA.mul(gasPricePerPubdata)); + const maxBlockOverhead = BATCH_OVERHEAD_L2_GAS.add(BATCH_OVERHEAD_PUBDATA.mul(gasPricePerPubdata)); // The overhead from taking up the transaction's slot - const txSlotOverhead = ceilDiv(maxBlockOverhead, MAX_TRANSACTIONS_IN_BLOCK); + const txSlotOverhead = ceilDiv(maxBlockOverhead, MAX_TRANSACTIONS_IN_BATCH); let blockOverheadForTransaction = txSlotOverhead; // The overhead for occupying the bootloader memory can be derived from encoded_len @@ -378,7 +378,7 @@ function getOverheadForTransaction( // The overhead for possible published public data // TODO (EVM-67): possibly charge overhead for pubdata // let maxPubdataInTx = ceilDiv(bodyGasLimit, gasPricePerPubdata); - // let overheadForPublicData = ceilDiv(maxPubdataInTx.mul(maxBlockOverhead), MAX_PUBDATA_PER_BLOCK); + // let overheadForPublicData = ceilDiv(maxPubdataInTx.mul(maxBlockOverhead), MAX_PUBDATA_PER_BATCH); // if (overheadForPublicData.gt(blockOverheadForTransaction)) { // blockOverheadForTransaction = overheadForPublicData; // } diff --git a/core/tests/upgrade-test/tests/upgrade.test.ts b/core/tests/upgrade-test/tests/upgrade.test.ts index 14b57bee483..42e15fd2333 100644 --- a/core/tests/upgrade-test/tests/upgrade.test.ts +++ b/core/tests/upgrade-test/tests/upgrade.test.ts @@ -12,8 +12,11 @@ const L1_CONTRACTS_FOLDER = `${process.env.ZKSYNC_HOME}/contracts/ethereum/artif const L1_DEFAULT_UPGRADE_ABI = new ethers.utils.Interface( require(`${L1_CONTRACTS_FOLDER}/upgrades/DefaultUpgrade.sol/DefaultUpgrade.json`).abi ); -const DIAMOND_CUT_FACET_ABI = new ethers.utils.Interface( - require(`${L1_CONTRACTS_FOLDER}/zksync/facets/DiamondCut.sol/DiamondCutFacet.json`).abi +const GOVERNANCE_ABI = new ethers.utils.Interface( + require(`${L1_CONTRACTS_FOLDER}/governance/Governance.sol/Governance.json`).abi +); +const ADMIN_FACET_ABI = new ethers.utils.Interface( + require(`${L1_CONTRACTS_FOLDER}/zksync/facets/Admin.sol/AdminFacet.json`).abi ); const L2_FORCE_DEPLOY_UPGRADER_ABI = new ethers.utils.Interface( require(`${process.env.ZKSYNC_HOME}/contracts/zksync/artifacts-zk/cache-zk/solpp-generated-contracts/ForceDeployUpgrader.sol/ForceDeployUpgrader.json`).abi @@ -30,9 +33,10 @@ describe('Upgrade test', function () { let alice: zkweb3.Wallet; let govWallet: ethers.Wallet; let mainContract: ethers.Contract; + let governanceContract: ethers.Contract; let bootloaderHash: string; - let proposeUpgradeCalldata: string; - let executeUpgradeCalldata: string; + let scheduleTransparentOperation: string; + let executeOperation: string; let forceDeployAddress: string; let forceDeployBytecode: string; let logs: fs.WriteStream; @@ -78,6 +82,8 @@ describe('Upgrade test', function () { if (!mainContract) { throw new Error('Server did not start'); } + const governanceContractAddr = await mainContract.getGovernor(); + governanceContract = new zkweb3.Contract(governanceContractAddr, GOVERNANCE_ABI, tester.syncWallet); let blocksCommitted = await mainContract.getTotalBlocksCommitted(); const initialL1BatchNumber = await tester.web3Provider.getL1BatchNumber(); @@ -140,7 +146,7 @@ describe('Upgrade test', function () { await waitForNewL1Batch(alice); }); - step('Propose upgrade', async () => { + step('Schedule governance call', async () => { forceDeployAddress = '0xf04ce00000000000000000000000000000000000'; forceDeployBytecode = COUNTER_BYTECODE; @@ -180,13 +186,13 @@ describe('Upgrade test', function () { upgradeTimestamp: 0, newProtocolVersion }); - proposeUpgradeCalldata = calldata.proposeTransparentUpgrade; - executeUpgradeCalldata = calldata.executeUpgrade; + scheduleTransparentOperation = calldata.scheduleTransparentOperation; + executeOperation = calldata.executeOperation; await ( await govWallet.sendTransaction({ - to: mainContract.address, - data: proposeUpgradeCalldata + to: governanceContract.address, + data: scheduleTransparentOperation }) ).wait(); @@ -224,8 +230,8 @@ describe('Upgrade test', function () { // Send execute tx. await ( await govWallet.sendTransaction({ - to: mainContract.address, - data: executeUpgradeCalldata + to: governanceContract.address, + data: executeOperation }) ).wait(); @@ -366,13 +372,6 @@ async function prepareUpgradeCalldata( const zkSyncContract = await l2Provider.getMainContractAddress(); const zkSync = new ethers.Contract(zkSyncContract, zkweb3.utils.ZKSYNC_MAIN_ABI, govWallet); - // In case there is some pending upgrade there, we cancel it - const upgradeProposalState = await zkSync.getUpgradeProposalState(); - if (upgradeProposalState != 0) { - const currentProposalHash = await zkSync.getProposedUpgradeHash(); - await (await zkSync.connect(govWallet).cancelUpgradeProposal(currentProposalHash)).wait(); - } - const newProtocolVersion = params.newProtocolVersion ?? (await zkSync.getProtocolVersion()).add(1); params.l2ProtocolUpgradeTx.nonce ??= newProtocolVersion; const upgradeInitData = L1_DEFAULT_UPGRADE_ABI.encodeFunctionData('upgrade', [ @@ -397,21 +396,32 @@ async function prepareUpgradeCalldata( initAddress: upgradeAddress, initCalldata: upgradeInitData }; - const currentProposalId = (await zkSync.getCurrentProposalId()).add(1); - // Get transaction data of the `proposeTransparentUpgrade` - const proposeTransparentUpgrade = DIAMOND_CUT_FACET_ABI.encodeFunctionData('proposeTransparentUpgrade', [ - upgradeParam, - currentProposalId - ]); - // Get transaction data of the `executeUpgrade` - const executeUpgrade = DIAMOND_CUT_FACET_ABI.encodeFunctionData('executeUpgrade', [ - upgradeParam, - ethers.constants.HashZero + // Prepare calldata for upgrading diamond proxy + const diamondProxyUpgradeCalldata = ADMIN_FACET_ABI.encodeFunctionData('executeUpgrade', [upgradeParam]); + + const call = { + target: zkSyncContract, + value: 0, + data: diamondProxyUpgradeCalldata + }; + const governanceOperation = { + calls: [call], + predecessor: ethers.constants.HashZero, + salt: ethers.constants.HashZero + }; + + // Get transaction data of the `scheduleTransparent` + const scheduleTransparentOperation = GOVERNANCE_ABI.encodeFunctionData('scheduleTransparent', [ + governanceOperation, + 0 // delay ]); + // Get transaction data of the `execute` + const executeOperation = GOVERNANCE_ABI.encodeFunctionData('execute', [governanceOperation]); + return { - proposeTransparentUpgrade, - executeUpgrade + scheduleTransparentOperation, + executeOperation }; } diff --git a/core/tests/vm-benchmark/harness/src/lib.rs b/core/tests/vm-benchmark/harness/src/lib.rs index 55b4eb238d7..c754abaf9b2 100644 --- a/core/tests/vm-benchmark/harness/src/lib.rs +++ b/core/tests/vm-benchmark/harness/src/lib.rs @@ -114,7 +114,7 @@ pub fn get_deploy_tx(code: &[u8]) -> Transaction { calldata, Nonce(0), Fee { - gas_limit: U256::from(10000000u32), + gas_limit: U256::from(30000000u32), max_fee_per_gas: U256::from(250_000_000), max_priority_fee_per_gas: U256::from(0), gas_per_pubdata_limit: U256::from(MAX_GAS_PER_PUBDATA_BYTE), diff --git a/docker/contract-verifier/Dockerfile b/docker/contract-verifier/Dockerfile index 74976449ef4..1ff41172efb 100644 --- a/docker/contract-verifier/Dockerfile +++ b/docker/contract-verifier/Dockerfile @@ -1,6 +1,18 @@ # syntax=docker/dockerfile:experimental -FROM rust:1.72-bookworm as builder -RUN apt-get update && apt-get install -y clang && rm -rf /var/lib/apt/lists/* +FROM debian:bookworm-slim as builder + +RUN apt-get update && apt-get install -y curl clang openssl libssl-dev gcc g++ \ + pkg-config build-essential libclang-dev && \ + rm -rf /var/lib/apt/lists/* + +ENV RUSTUP_HOME=/usr/local/rustup \ + CARGO_HOME=/usr/local/cargo \ + PATH=/usr/local/cargo/bin:$PATH + +RUN curl https://sh.rustup.rs -sSf | bash -s -- -y && \ + rustup install nightly-2023-07-21 && \ + rustup default nightly-2023-07-21 + WORKDIR /usr/src/zksync COPY . . #Needed to get zkEVM package from github link with auth embedded diff --git a/docker/cross-external-nodes-checker/Dockerfile b/docker/cross-external-nodes-checker/Dockerfile index 4f9fc72b923..07b9549acf3 100644 --- a/docker/cross-external-nodes-checker/Dockerfile +++ b/docker/cross-external-nodes-checker/Dockerfile @@ -3,8 +3,20 @@ # BUILDING STAGE # syntax=docker/dockerfile:experimental -FROM rust:1.72-bookworm as builder -RUN apt-get update && apt-get install -y clang && rm -rf /var/lib/apt/lists/* +FROM debian:bookworm-slim as builder + +RUN apt-get update && apt-get install -y curl clang openssl libssl-dev gcc g++ \ + pkg-config build-essential libclang-dev && \ + rm -rf /var/lib/apt/lists/* + +ENV RUSTUP_HOME=/usr/local/rustup \ + CARGO_HOME=/usr/local/cargo \ + PATH=/usr/local/cargo/bin:$PATH + +RUN curl https://sh.rustup.rs -sSf | bash -s -- -y && \ + rustup install nightly-2023-07-21 && \ + rustup default nightly-2023-07-21 + WORKDIR /usr/src/zksync COPY . . diff --git a/docker/external-node/Dockerfile b/docker/external-node/Dockerfile index 58a341b14a3..7548266aba7 100644 --- a/docker/external-node/Dockerfile +++ b/docker/external-node/Dockerfile @@ -2,8 +2,20 @@ # Not expected to work locally # syntax=docker/dockerfile:experimental -FROM rust:1.72-bookworm as builder -RUN apt-get update && apt-get install -y clang && rm -rf /var/lib/apt/lists/* +FROM debian:bookworm-slim as builder + +RUN apt-get update && apt-get install -y curl clang openssl libssl-dev gcc g++ \ + pkg-config build-essential libclang-dev && \ + rm -rf /var/lib/apt/lists/* + +ENV RUSTUP_HOME=/usr/local/rustup \ + CARGO_HOME=/usr/local/cargo \ + PATH=/usr/local/cargo/bin:$PATH + +RUN curl https://sh.rustup.rs -sSf | bash -s -- -y && \ + rustup install nightly-2023-07-21 && \ + rustup default nightly-2023-07-21 + WORKDIR /usr/src/zksync COPY . . diff --git a/docker/server-v2/Dockerfile b/docker/server-v2/Dockerfile index abd92a76320..48b49cd180c 100644 --- a/docker/server-v2/Dockerfile +++ b/docker/server-v2/Dockerfile @@ -2,13 +2,25 @@ # Not expected to work locally # syntax=docker/dockerfile:experimental -FROM rust:1.72-bookworm as builder +FROM debian:bookworm-slim as builder RUN apt-get update && apt-get install -y linux-libc-dev liburing-dev clang && \ # ^ We need a newer version of `linux-libc-dev` from backports than the one installed by default rm -rf /var/lib/apt/lists/* WORKDIR /usr/src/zksync COPY . . +RUN apt-get update && apt-get install -y curl clang openssl libssl-dev gcc g++ \ + pkg-config build-essential libclang-dev && \ + rm -rf /var/lib/apt/lists/* + +ENV RUSTUP_HOME=/usr/local/rustup \ + CARGO_HOME=/usr/local/cargo \ + PATH=/usr/local/cargo/bin:$PATH + +RUN curl https://sh.rustup.rs -sSf | bash -s -- -y && \ + rustup install nightly-2023-07-21 && \ + rustup default nightly-2023-07-21 + RUN CARGO_HOME=./cargo cargo build --release --features=rocksdb/io-uring FROM debian:bookworm-slim diff --git a/docs/advanced/03_withdrawals.md b/docs/advanced/03_withdrawals.md index 70c3f9f1ec2..e71beab9a94 100644 --- a/docs/advanced/03_withdrawals.md +++ b/docs/advanced/03_withdrawals.md @@ -94,7 +94,7 @@ bytes memory message = _getL1WithdrawMessage(_l1Receiver, amount); L1_MESSENGER_CONTRACT.sendToL1(message); ``` -And `L1MessagerContract` (that is deployed at 0x8008). +And `L1MessengerContract` (that is deployed at 0x8008). ### Committing to L1 diff --git a/etc/env/base/contracts.toml b/etc/env/base/contracts.toml index d232124ef0a..1f26dc5e357 100644 --- a/etc/env/base/contracts.toml +++ b/etc/env/base/contracts.toml @@ -2,13 +2,13 @@ # Values of this file are updated automatically by the contract deploy script. [contracts] +ADMIN_FACET_ADDR="0x5E6D086F5eC079ADFF4FB3774CDf3e8D6a34F7E9" DIAMOND_INIT_ADDR="0x5E6D086F5eC079ADFF4FB3774CDf3e8D6a34F7E9" DIAMOND_UPGRADE_INIT_ADDR="0x5E6D086F5eC079ADFF4FB3774CDf3e8D6a34F7E9" DEFAULT_UPGRADE_ADDR="0x5E6D086F5eC079ADFF4FB3774CDf3e8D6a34F7E9" MAILBOX_FACET_ADDR="0x5E6D086F5eC079ADFF4FB3774CDf3e8D6a34F7E9" -DIAMOND_CUT_FACET_ADDR="0x5E6D086F5eC079ADFF4FB3774CDf3e8D6a34F7E9" EXECUTOR_FACET_ADDR="0x5E6D086F5eC079ADFF4FB3774CDf3e8D6a34F7E9" -GOVERNANCE_FACET_ADDR="0x5E6D086F5eC079ADFF4FB3774CDf3e8D6a34F7E9" +GOVERNANCE_ADDR="0x5E6D086F5eC079ADFF4FB3774CDf3e8D6a34F7E9" GETTERS_FACET_ADDR="0x5E6D086F5eC079ADFF4FB3774CDf3e8D6a34F7E9" VERIFIER_ADDR="0xDAbb67b676F5b01FcC8997Cc8439846D0d8078ca" DIAMOND_PROXY_ADDR="0xFC073319977e314F251EAE6ae6bE76B0B3BAeeCF" @@ -21,7 +21,7 @@ L1_ALLOW_LIST_ADDR="0xFC073319977e314F251EAE6ae6bE76B0B3BAeeCF" CREATE2_FACTORY_ADDR="0xce0042B868300000d44A59004Da54A005ffdcf9f" VALIDATOR_TIMELOCK_ADDR="0xFC073319977e314F251EAE6ae6bE76B0B3BAeeCF" VALIDATOR_TIMELOCK_EXECUTION_DELAY=0 -RECURSION_SCHEDULER_LEVEL_VK_HASH="0x2b53d65c2b3310daa4b3b747f3b5c73881469197d1d2c3f29b2033d4b947a427" +RECURSION_SCHEDULER_LEVEL_VK_HASH="0x18518ce15be02847459f304b1567cb914ae357eca82af07c09582e78592b987b" RECURSION_NODE_LEVEL_VK_HASH="0x1186ec268d49f1905f8d9c1e9d39fc33e98c74f91d91a21b8f7ef78bd09a8db8" RECURSION_LEAF_LEVEL_VK_HASH="0x101e08b00193e529145ee09823378ef51a3bc8966504064f1f6ba3f1ba863210" RECURSION_CIRCUITS_SET_VKS_HASH="0x236c97bfbe75ff507e03909fae32a78be3a70d1b468b183f430010810284ed45" @@ -29,7 +29,7 @@ GENESIS_TX_HASH="0xb99ebfea46cbe05a21cd80fe5597d97b204befc52a16303f579c607dc1ac2 GENESIS_ROOT="0x2d5ab622df708ab44944bb02377be85b6f27812e9ae520734873b7a193898ba4" PRIORITY_TX_MAX_GAS_LIMIT=72000000 DEPLOY_L2_BRIDGE_COUNTERPART_GAS_LIMIT=10000000 -GENESIS_BLOCK_COMMITMENT="0x6c7f89335e3ade24a7768ed73c425afd9fac92a094e0681f76cb6feabf8b6223" +GENESIS_BATCH_COMMITMENT="0x6c7f89335e3ade24a7768ed73c425afd9fac92a094e0681f76cb6feabf8b6223" # Current rollup leaf index after genesis GENESIS_ROLLUP_LEAF_INDEX="21" L1_WETH_BRIDGE_IMPL_ADDR="0x5E6D086F5eC079ADFF4FB3774CDf3e8D6a34F7E9" diff --git a/etc/multivm_bootloaders/vm_virtual_blocks_finish_upgrade_fix/fee_estimate.yul/fee_estimate.yul.zbin b/etc/multivm_bootloaders/vm_virtual_blocks_finish_upgrade_fix/fee_estimate.yul/fee_estimate.yul.zbin index 51ceb18a6876a76475e20ac18ede2e5f42476b86..b0de84dc0764533bed94fa03e133423b93167360 100644 GIT binary patch literal 75872 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 ZKJwUYKYQeyg}Z+jobi>8C-!9@{r`*d%^m;% literal 73056 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 F|9{#4Jv9IT diff --git a/etc/multivm_bootloaders/vm_virtual_blocks_finish_upgrade_fix/gas_test.yul/gas_test.yul.zbin b/etc/multivm_bootloaders/vm_virtual_blocks_finish_upgrade_fix/gas_test.yul/gas_test.yul.zbin index 95ad9499e13fda938ddf67980ff4a7b155f0a8fb..ed145c83b18f0f05bfc7ce2b625a72a996a9bc8a 100644 GIT binary patch literal 74976 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 literal 69600 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 z zw@&+GwVRuci)vTsxajJMeSH%!w5t9}`$_|QCaUw#z@D)&kZk?F(bB*~X|R9aMccLk z(_w!T`_>gFiiw9|DfaaD1%s#%jBvAHXq-6#eGW(;>%kX;L&Mv(LZs!CKkLb%WP?ie zr#uVCCn%FW;65xLAKE@#oY*s#Kvh`2tvE0-GPZwRX%zlb`G-BNn!lYRqczLJ{zr@Z zcNMXG#x58h-BZSYSUy%7FOBUj4X)ciT--G@U_0Gf91OPZpD2w7CB?KYk?Y`9wZ|X4 zsuEVpeONhF@oFY7tN7eLG?P~kj|@Mjv}<%?e^7Y>wrb_8F_oX&r^X4<2EGffD2)x5 zb_V04#eoDF%M*(J1#YoWbq9bnxT-WZ60HFKxS(&whfJqm!(LgLG({&_R;8V^6&I#K5B}! z#Y64&`5zyioEVuX?p#YM`=Y(2u^px2V0@HfD9Pf_?cIpB+AuQKJ2W=1XJ{fOeoeAJ z+iqG{Z~IWB|Ba>L?Grl^4I|}Sc8*NN=)}H$njyr%#-Uw9Q_IInyY~!@l?E%%-k1>x zk0KO{Eyq0j$BM(_&^ALO!^VLAYfIZk#!7u-C6Yn%v<#$YMPZfewkvBZp!0jSoPXIx z8#ZiN-(T)D^4Gea{+`P=uD|fS{_`VG%YP=FmvV{xwR2Ulqd1<#YPnX==xAw}4FoVQ ztUSAVY>n)9Hoe^bJ=B z#M#04o`HeVxLt))%j0<7HGD0#HYh_lJP(%0 z3j!cACWrYvd2BjZD``~zrm05B5l9Jw-5ZKO8(%)UDK+g;il>22zt7peSv z=6GO5Ekm(mXgdpy;?}8cqED>c45$I@u!$YT;V2Sz){s5a&-jko?&-wnP!t`}q51Fe zvMD~Lj2`U1a(7JzD~|80*v>v2e)5mc{^)*+@B4U#_)*%nrK{x!(kqolLb>RdONu*(ASS0}H|qfZ{>YzwCC1Frf%Wh4;@(pK zzVo31O5?<-RvN?R-Ag0#KNz-W?FAKD8#6S{fK@D`hk&2tGp1L00@^zpdj?c>?@k1E$pmFM>H#lu$&k6bw%kaetR*AoaGH|@M`)-QkHN}f5);9mlXdM9`#vejQFg}g2d{=QF9G8)?p^5#7 zSHfojN1$r7Jo?=B5|(2jmmQt8h-io!ij2 zx$T71As3Vbml7=_Lsu02i=Vmofv~gb{SlMz3LnA`G|bd7Xd}7S5BB!9;?P)mW+CTE ztBtFw7IB3w6U8xhu*-rrHr(H~eYrjMAaN6$Ornf#hadWSP~ma-XmqUf938q$l(4k+ zAHlQ#@jH}wQ0qr^YLz4YS)Mtz33iR{EJc;*&SD({sz&GUy?*HrY7`sybu0faSE~Zb zs7|dal!#pG*H)_#Wi^Rgr|rW(Ui@vZPMzI#>?7nn)cmREh2;lMpO~tu|M1~QsynAO zdp71n#xDUxR^J-q9zo@o)O_Mk%gBC{WEC$c3)Z3z_DXSA>ERjDT)meN&ze9J$Of#-v%cn|yXJ?J_I6dW$WQCJu5`CL9!+kYImqBe_-Tm29XG?&4v`PZWh_dcT-azf>*b>d&Y ztlTR13i~_?RwA^)RXS|ND%WBy;-L+B)Vqqq`>}9%|A+(aRr;#*_|Wq%dg;YKeCM%m hzr1(N=iJZt-f-lBjm4|Z`{K{efBQ?f{o6yY`2YM3C1(Ht diff --git a/etc/multivm_bootloaders/vm_virtual_blocks_finish_upgrade_fix/playground_batch.yul/playground_batch.yul.zbin b/etc/multivm_bootloaders/vm_virtual_blocks_finish_upgrade_fix/playground_batch.yul/playground_batch.yul.zbin index 5fb13eaf859be63622a2fdeeba852199fda722ae..1c67a2941abbf53d53b7c27aaa9a3f38ef590a5b 100644 GIT binary patch literal 76192 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 diff --git a/etc/multivm_bootloaders/vm_virtual_blocks_finish_upgrade_fix/proved_batch.yul/proved_batch.yul.zbin b/etc/multivm_bootloaders/vm_virtual_blocks_finish_upgrade_fix/proved_batch.yul/proved_batch.yul.zbin index 287180a3a241b96d54979bcbf616b43f36775635..82d318b245602d57d844a88dc185ae3301ceea96 100644 GIT binary patch literal 75808 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 literal 70496 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 diff --git a/etc/system-contracts b/etc/system-contracts index 66899a675d5..867a30de339 160000 --- a/etc/system-contracts +++ b/etc/system-contracts @@ -1 +1 @@ -Subproject commit 66899a675d5072a3a7ad9c4a51b5360a95e83f6e +Subproject commit 867a30de339448f54f2e9f929088ea49adb4d36e diff --git a/infrastructure/zk/src/contract.ts b/infrastructure/zk/src/contract.ts index 2063810d4e6..51037259228 100644 --- a/infrastructure/zk/src/contract.ts +++ b/infrastructure/zk/src/contract.ts @@ -42,6 +42,15 @@ export async function initializeValidator(args: any[] = []) { await utils.spawn(`${baseCommandL1} initialize-validator ${args.join(' ')} | tee initializeValidator.log`); } +export async function initializeGovernance(args: any[] = []) { + await utils.confirmAction(); + + const isLocalSetup = process.env.ZKSYNC_LOCAL_SETUP; + const baseCommandL1 = isLocalSetup ? `yarn --cwd /contracts/ethereum` : `yarn l1-contracts`; + + await utils.spawn(`${baseCommandL1} initialize-governance ${args.join(' ')} | tee initializeGovernance.log`); +} + export async function initializeL1AllowList(args: any[] = []) { await utils.confirmAction(); @@ -117,10 +126,10 @@ export async function deployL1(args: any[]) { const deployLog = fs.readFileSync('deployL1.log').toString(); const envVars = [ 'CONTRACTS_CREATE2_FACTORY_ADDR', - 'CONTRACTS_DIAMOND_CUT_FACET_ADDR', + 'CONTRACTS_ADMIN_FACET_ADDR', 'CONTRACTS_DIAMOND_UPGRADE_INIT_ADDR', 'CONTRACTS_DEFAULT_UPGRADE_ADDR', - 'CONTRACTS_GOVERNANCE_FACET_ADDR', + 'CONTRACTS_GOVERNANCE_ADDR', 'CONTRACTS_MAILBOX_FACET_ADDR', 'CONTRACTS_EXECUTOR_FACET_ADDR', 'CONTRACTS_GETTERS_FACET_ADDR', diff --git a/infrastructure/zk/src/init.ts b/infrastructure/zk/src/init.ts index d44be33da13..a98e2395fc4 100644 --- a/infrastructure/zk/src/init.ts +++ b/infrastructure/zk/src/init.ts @@ -40,10 +40,11 @@ export async function init(skipSubmodulesCheckout: boolean) { await announced('Reloading env', env.reload()); await announced('Running server genesis setup', server.genesisFromSources()); await announced('Deploying L1 contracts', contract.redeployL1([])); - await announced('Initializing validator', contract.initializeValidator()); await announced('Initialize L1 allow list', contract.initializeL1AllowList()); await announced('Deploying L2 contracts', contract.deployL2([], true, true)); await announced('Initializing L2 WETH token', contract.initializeWethToken()); + await announced('Initializing governance', contract.initializeGovernance()); + await announced('Initializing validator', contract.initializeValidator()); } // A smaller version of `init` that "resets" the localhost environment, for which `init` was already called before. @@ -61,10 +62,11 @@ export async function reinit() { await announced('Reloading env', env.reload()); await announced('Running server genesis setup', server.genesisFromSources()); await announced('Deploying L1 contracts', contract.redeployL1([])); - await announced('Initializing validator', contract.initializeValidator()); await announced('Initializing L1 Allow list', contract.initializeL1AllowList()); await announced('Deploying L2 contracts', contract.deployL2([], true, true)); await announced('Initializing L2 WETH token', contract.initializeWethToken()); + await announced('Initializing governance', contract.initializeGovernance()); + await announced('Initializing validator', contract.initializeValidator()); } // A lightweight version of `init` that sets up local databases, generates genesis and deploys precompiled contracts @@ -78,6 +80,7 @@ export async function lightweightInit() { await announced('Initializing validator', contract.initializeValidator()); await announced('Initializing L1 Allow list', contract.initializeL1AllowList()); await announced('Deploying L2 contracts', contract.deployL2([], true, false)); + await announced('Initializing governance', contract.initializeGovernance()); } // Wrapper that writes an announcement and completion notes for each executed task. diff --git a/infrastructure/zk/src/server.ts b/infrastructure/zk/src/server.ts index 70674bda03c..290605df27e 100644 --- a/infrastructure/zk/src/server.ts +++ b/infrastructure/zk/src/server.ts @@ -52,7 +52,7 @@ async function create_genesis(cmd: string) { await utils.confirmAction(); await utils.spawn(`${cmd} | tee genesis.log`); const genesisContents = fs.readFileSync('genesis.log').toString().split('\n'); - const genesisBlockCommitment = genesisContents.find((line) => line.includes('CONTRACTS_GENESIS_BLOCK_COMMITMENT=')); + const genesisBlockCommitment = genesisContents.find((line) => line.includes('CONTRACTS_GENESIS_BATCH_COMMITMENT=')); const genesisBootloaderHash = genesisContents.find((line) => line.includes('CHAIN_STATE_KEEPER_BOOTLOADER_HASH=')); const genesisDefaultAAHash = genesisContents.find((line) => line.includes('CHAIN_STATE_KEEPER_DEFAULT_AA_HASH=')); const genesisRoot = genesisContents.find((line) => line.includes('CONTRACTS_GENESIS_ROOT=')); @@ -79,7 +79,7 @@ async function create_genesis(cmd: string) { if ( genesisBlockCommitment == null || - !/^CONTRACTS_GENESIS_BLOCK_COMMITMENT=0x[a-fA-F0-9]{64}$/.test(genesisBlockCommitment) + !/^CONTRACTS_GENESIS_BATCH_COMMITMENT=0x[a-fA-F0-9]{64}$/.test(genesisBlockCommitment) ) { throw Error(`Genesis is not needed (either Postgres DB or tree's Rocks DB is not empty)`); } @@ -106,7 +106,7 @@ async function create_genesis(cmd: string) { env.modify('CONTRACTS_GENESIS_ROOT', genesisRoot); env.modify('CHAIN_STATE_KEEPER_BOOTLOADER_HASH', genesisBootloaderHash); env.modify('CHAIN_STATE_KEEPER_DEFAULT_AA_HASH', genesisDefaultAAHash); - env.modify('CONTRACTS_GENESIS_BLOCK_COMMITMENT', genesisBlockCommitment); + env.modify('CONTRACTS_GENESIS_BATCH_COMMITMENT', genesisBlockCommitment); env.modify('CONTRACTS_GENESIS_ROLLUP_LEAF_INDEX', genesisRollupLeafIndex); } diff --git a/prover/Cargo.lock b/prover/Cargo.lock index c5dde4ef70d..0c161a94dc7 100644 --- a/prover/Cargo.lock +++ b/prover/Cargo.lock @@ -15,9 +15,9 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.20.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" dependencies = [ "gimli", ] @@ -95,9 +95,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.0.2" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" +checksum = "0c378d78423fdad8089616f827526ee33c19f2fddbd5de1629152c9593ba4783" dependencies = [ "memchr", ] @@ -134,15 +134,15 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.1" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd" +checksum = "b84bf0a05bbb2a83e5eb6fa36bb6e87baa08193c35ff52bbf6b38d8af2890e46" [[package]] name = "anyhow" -version = "1.0.72" +version = "1.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b13c32d80ecc7ab747b80c3784bce54ee8a7a0cc4fbda9bf4cda2cf6fe90854" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" [[package]] name = "api" @@ -173,7 +173,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0609c78bd572f4edc74310dfb63a01f5609d53fa8b4dd7c4d98aef3b3e8d72d1" dependencies = [ "proc-macro-hack", - "quote 1.0.32", + "quote 1.0.33", "syn 1.0.109", ] @@ -212,7 +212,7 @@ checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" dependencies = [ "async-stream-impl", "futures-core", - "pin-project-lite", + "pin-project-lite 0.2.13", ] [[package]] @@ -221,20 +221,20 @@ version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.33", ] [[package]] name = "async-trait" -version = "0.1.72" +version = "0.1.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc6dde6e4ed435a4c1ee4e73592f5ba9da2151af10076cc04858746af9352d09" +checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.33", ] [[package]] @@ -281,14 +281,14 @@ dependencies = [ "fastrand 1.9.0", "futures-core", "pin-project", - "tokio", + "tokio 1.32.0", ] [[package]] name = "backtrace" -version = "0.3.68" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" dependencies = [ "addr2line", "cc", @@ -313,9 +313,9 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.21.2" +version = "0.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d" +checksum = "9ba43ea6f343b788c8764558649e08df62f86c6ef251fdaeb1ffd010a9ae50a2" [[package]] name = "base64ct" @@ -349,7 +349,7 @@ dependencies = [ [[package]] name = "bellman_ce" version = "0.3.2" -source = "git+https://github.com/matter-labs/bellman?branch=snark-wrapper#1f05c528c392ea9eadb99b22431659c113bc0af4" +source = "git+https://github.com/matter-labs/bellman?branch=snark-wrapper#eb435a580189eacded001b494f9aa918d76cd60b" dependencies = [ "arrayvec 0.7.4", "bit-vec", @@ -405,8 +405,8 @@ dependencies = [ "lazycell", "log", "peeking_take_while", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "regex", "rustc-hash", "shlex", @@ -426,12 +426,35 @@ dependencies = [ "lazycell", "peeking_take_while", "prettyplease", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "regex", "rustc-hash", "shlex", - "syn 2.0.28", + "syn 2.0.33", +] + +[[package]] +name = "bindgen" +version = "0.68.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "726e4313eb6ec35d2730258ad4e15b547ee75d6afaa1361a922e78e59b7d8078" +dependencies = [ + "bitflags 2.4.0", + "cexpr", + "clang-sys", + "lazy_static", + "lazycell", + "log", + "peeking_take_while", + "prettyplease", + "proc-macro2 1.0.67", + "quote 1.0.33", + "regex", + "rustc-hash", + "shlex", + "syn 2.0.33", + "which", ] [[package]] @@ -460,9 +483,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.3.3" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42" +checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" [[package]] name = "bitvec" @@ -532,7 +555,7 @@ dependencies = [ [[package]] name = "blake2s_const" version = "0.6.0" -source = "git+https://github.com/matter-labs/bellman?branch=snark-wrapper#1f05c528c392ea9eadb99b22431659c113bc0af4" +source = "git+https://github.com/matter-labs/bellman?branch=snark-wrapper#eb435a580189eacded001b494f9aa918d76cd60b" dependencies = [ "arrayref", "arrayvec 0.5.2", @@ -588,16 +611,16 @@ checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" [[package]] name = "boojum" version = "0.1.0" -source = "git+https://github.com/matter-labs/era-boojum?branch=main#2771569baab9a59690d88cee6ba9b295c8a1e4c4" +source = "git+https://github.com/matter-labs/boojum?branch=main#2aad0b6899863865da91f1c530d6d47a852e93ad" dependencies = [ "arrayvec 0.7.4", "bincode", "blake2 0.10.6", "const_format", "convert_case 0.6.0", - "crossbeam 0.7.3", - "crypto-bigint 0.5.2", - "cs_derive 0.1.0 (git+https://github.com/matter-labs/era-boojum?branch=main)", + "crossbeam 0.8.2", + "crypto-bigint 0.5.3", + "cs_derive 0.1.0 (git+https://github.com/matter-labs/boojum?branch=main)", "derivative", "ethereum-types 0.14.1", "firestorm", @@ -620,7 +643,7 @@ dependencies = [ [[package]] name = "boojum-cuda" version = "0.1.0" -source = "git+https://github.com/matter-labs/era-boojum-cuda?branch=main#75ee5596114bd7fcb7df08b834e64123522653e1" +source = "git+https://github.com/matter-labs/boojum-cuda?branch=main#c3b5008116a906724ff86ff187a1524e294cd70a" dependencies = [ "boojum", "cmake", @@ -632,9 +655,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.13.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" [[package]] name = "byte-slice-cast" @@ -656,9 +679,15 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "bytes" -version = "1.4.0" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38" + +[[package]] +name = "bytes" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" [[package]] name = "bzip2-sys" @@ -710,11 +739,12 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.0.79" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" dependencies = [ "jobserver", + "libc", ] [[package]] @@ -840,18 +870,18 @@ dependencies = [ [[package]] name = "clap" -version = "4.3.19" +version = "4.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fd304a20bff958a57f04c4e96a2e7594cc4490a0e809cbd48bb6437edaa452d" +checksum = "84ed82781cea27b43c9b106a979fe450a13a31aab0500595fb3fc06616de08e6" dependencies = [ "clap_builder", ] [[package]] name = "clap_builder" -version = "4.3.19" +version = "4.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01c6a3f08f1fe5662a35cfe393aec09c4df95f60ee93b7556505260f75eee9e1" +checksum = "2bb9faaa7c2ef94b2743a21f5a29e6f0010dff4caa69ac8e9d6cf8b6fa74da08" dependencies = [ "anstyle", "clap_lex", @@ -859,9 +889,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b" +checksum = "cd7cc57abe963c6d3b9d8be5b06ba7c8957a930305ca90304f24ef040aa6f961" [[package]] name = "cloudabi" @@ -891,7 +921,7 @@ dependencies = [ "handlebars", "hex", "paste", - "rescue_poseidon 0.4.1 (git+https://github.com/matter-labs/rescue-poseidon.git)", + "rescue_poseidon 0.4.1 (git+https://github.com/matter-labs/rescue-poseidon)", "serde", "serde_derive", "serde_json", @@ -912,7 +942,7 @@ version = "4.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" dependencies = [ - "bytes", + "bytes 1.5.0", "memchr", ] @@ -924,9 +954,9 @@ checksum = "e4c78c047431fee22c1a7bb92e00ad095a02a983affe4d8a72e2a2c62c1b94f3" [[package]] name = "const-oid" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "795bc6e66a8e340f075fcf6227e417a2dc976b92b91f3cdc778bb858778b6747" +checksum = "28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6f" [[package]] name = "const_format" @@ -943,8 +973,8 @@ version = "0.2.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e026b6ce194a874cb9cf32cd5772d1ef9767cc8fcb5765948d74f37a9d8b2bf6" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "unicode-xid 0.2.4", ] @@ -1018,7 +1048,7 @@ dependencies = [ "anes", "cast", "ciborium", - "clap 4.3.19", + "clap 4.4.3", "criterion-plot", "is-terminal", "itertools 0.10.5", @@ -1214,9 +1244,9 @@ dependencies = [ [[package]] name = "crypto-bigint" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4c2f4e1afd912bc40bfd6fed5d9dc1f288e0ba01bfcc835cc5bc3eb13efe15" +checksum = "740fe28e594155f10cfc383984cbefd529d7396050557148f79cb0f621204124" dependencies = [ "rand_core 0.6.4", "subtle", @@ -1255,11 +1285,11 @@ dependencies = [ [[package]] name = "cs_derive" version = "0.1.0" -source = "git+https://github.com/matter-labs/era-boojum?branch=main#2771569baab9a59690d88cee6ba9b295c8a1e4c4" +source = "git+https://github.com/matter-labs/boojum?branch=main#2aad0b6899863865da91f1c530d6d47a852e93ad" dependencies = [ "proc-macro-error", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "syn 1.0.109", ] @@ -1269,8 +1299,8 @@ version = "0.1.0" source = "git+https://github.com/matter-labs/era-sync_vm.git?branch=v1.3.3#3a21c8dee43c77604350fdf33c1615e25bf1dacd" dependencies = [ "proc-macro-error", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "serde", "syn 1.0.109", ] @@ -1286,9 +1316,9 @@ dependencies = [ [[package]] name = "ctrlc" -version = "3.4.0" +version = "3.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a011bbe2c35ce9c1f143b7af6f94f29a167beb4cd1d29e6740ce836f723120e" +checksum = "82e95fbd621905b854affdc67943b043a0fbb6ed7385fd5a25650d19a8a6cfdf" dependencies = [ "nix", "windows-sys", @@ -1297,9 +1327,9 @@ dependencies = [ [[package]] name = "cudart" version = "0.1.0" -source = "git+https://github.com/matter-labs/era-boojum-cuda?branch=main#75ee5596114bd7fcb7df08b834e64123522653e1" +source = "git+https://github.com/matter-labs/boojum-cuda?branch=main#c3b5008116a906724ff86ff187a1524e294cd70a" dependencies = [ - "bitflags 2.3.3", + "bitflags 2.4.0", "criterion", "cudart-sys", ] @@ -1307,9 +1337,9 @@ dependencies = [ [[package]] name = "cudart-sys" version = "0.1.0" -source = "git+https://github.com/matter-labs/era-boojum-cuda?branch=main#75ee5596114bd7fcb7df08b834e64123522653e1" +source = "git+https://github.com/matter-labs/boojum-cuda?branch=main#c3b5008116a906724ff86ff187a1524e294cd70a" dependencies = [ - "bindgen 0.59.2", + "bindgen 0.68.1", ] [[package]] @@ -1330,8 +1360,8 @@ checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" dependencies = [ "fnv", "ident_case", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "strsim 0.10.0", "syn 1.0.109", ] @@ -1343,15 +1373,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" dependencies = [ "darling_core", - "quote 1.0.32", + "quote 1.0.33", "syn 1.0.109", ] [[package]] name = "dashmap" -version = "5.5.0" +version = "5.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6943ae99c34386c84a470c499d3414f66502a41340aa895406e0d2e4a207b91d" +checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" dependencies = [ "cfg-if 1.0.0", "hashbrown 0.14.0", @@ -1387,15 +1417,15 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de" dependencies = [ - "const-oid 0.9.4", + "const-oid 0.9.5", "zeroize", ] [[package]] name = "deranged" -version = "0.3.6" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8810e7e2cf385b1e9b50d68264908ec367ba642c96d02edfe61c39e88e2a3c01" +checksum = "f2696e8a945f658fd14dc3b87242e6b80cd0f36ff04ea560fa39082368847946" dependencies = [ "serde", ] @@ -1406,8 +1436,8 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "syn 1.0.109", ] @@ -1418,8 +1448,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" dependencies = [ "convert_case 0.4.0", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "rustc_version", "syn 1.0.109", ] @@ -1528,9 +1558,9 @@ dependencies = [ [[package]] name = "encoding_rs" -version = "0.8.32" +version = "0.8.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" +checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" dependencies = [ "cfg-if 1.0.0", ] @@ -1578,9 +1608,9 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b30f669a7961ef1631673d2766cc92f52d64f7ef354d4fe0ddfd30ed52f0f4f" +checksum = "136526188508e25c6fef639d7927dfb3e0e3084488bf202267829cf7fc23dbdd" dependencies = [ "errno-dragonfly", "libc", @@ -1727,11 +1757,11 @@ version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b96fbccd88dbb1fac4ee4a07c2fcc4ca719a74ffbd9d2b9d41d8c8eb073d8b20" dependencies = [ - "num-bigint 0.4.3", + "num-bigint 0.4.4", "num-integer", "num-traits", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "serde", "syn 1.0.109", ] @@ -1748,6 +1778,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "finl_unicode" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fcfdc7a0362c9f4444381a9e697c79d435fe65b52a37466fc2c1184cee9edc6" + [[package]] name = "firestorm" version = "0.5.1" @@ -1825,7 +1861,37 @@ dependencies = [ "indexmap 1.9.3", "itertools 0.10.5", "lazy_static", - "num-bigint 0.4.3", + "num-bigint 0.4.4", + "num-derive 0.2.5", + "num-integer", + "num-traits", + "rand 0.4.6", + "serde", + "sha2 0.9.9", + "sha3 0.9.1", + "smallvec", + "splitmut", + "tiny-keccak 1.5.0", +] + +[[package]] +name = "franklin-crypto" +version = "0.0.5" +source = "git+https://github.com/matter-labs/franklin-crypto?branch=dev#5922873d25ecec827cd60420ca8cd84a188bb965" +dependencies = [ + "arr_macro", + "bellman_ce 0.3.2 (git+https://github.com/matter-labs/bellman?branch=dev)", + "bit-vec", + "blake2 0.9.2", + "blake2-rfc_bellman_edition", + "blake2s_simd", + "byteorder", + "digest 0.9.0", + "hex", + "indexmap 1.9.3", + "itertools 0.10.5", + "lazy_static", + "num-bigint 0.4.4", "num-derive 0.2.5", "num-integer", "num-traits", @@ -1841,7 +1907,7 @@ dependencies = [ [[package]] name = "franklin-crypto" version = "0.0.5" -source = "git+https://github.com/matter-labs/franklin-crypto?branch=snark_wrapper#13b493d7619945b035cbbc79d74212298f0b7a26" +source = "git+https://github.com/matter-labs/franklin-crypto?branch=snark_wrapper#6eaf7f71468725569e23ca9dea5d894d84b18998" dependencies = [ "arr_macro", "bellman_ce 0.3.2 (git+https://github.com/matter-labs/bellman?branch=snark-wrapper)", @@ -1857,7 +1923,7 @@ dependencies = [ "indexmap 1.9.3", "itertools 0.10.5", "lazy_static", - "num-bigint 0.4.3", + "num-bigint 0.4.4", "num-derive 0.2.5", "num-integer", "num-traits", @@ -1971,9 +2037,9 @@ version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.33", ] [[package]] @@ -2008,7 +2074,7 @@ dependencies = [ "futures-sink", "futures-task", "memchr", - "pin-project-lite", + "pin-project-lite 0.2.13", "pin-utils", "slab", ] @@ -2047,9 +2113,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.27.3" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" +checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" [[package]] name = "glob" @@ -2064,7 +2130,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "644f40175857d0b8d7b6cad6cd9594284da5041387fa2ddff30ab6d8faef65eb" dependencies = [ "async-trait", - "base64 0.21.2", + "base64 0.21.4", "google-cloud-metadata", "google-cloud-token", "home", @@ -2074,7 +2140,7 @@ dependencies = [ "serde_json", "thiserror", "time", - "tokio", + "tokio 1.32.0", "tracing", "urlencoding", ] @@ -2087,7 +2153,7 @@ checksum = "96e4ad0802d3f416f62e7ce01ac1460898ee0efc98f8b45cd4aab7611607012f" dependencies = [ "reqwest", "thiserror", - "tokio", + "tokio 1.32.0", ] [[package]] @@ -2097,8 +2163,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "215abab97e07d144428425509c1dad07e57ea72b84b21bcdb6a8a5f12a5c4932" dependencies = [ "async-stream", - "base64 0.21.2", - "bytes", + "base64 0.21.4", + "bytes 1.5.0", "futures-util", "google-cloud-auth", "google-cloud-metadata", @@ -2115,7 +2181,7 @@ dependencies = [ "sha2 0.10.6", "thiserror", "time", - "tokio", + "tokio 1.32.0", "tracing", "url", ] @@ -2171,11 +2237,11 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.20" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97ec8491ebaf99c8eaa73058b045fe58073cd6be7f596ac993ced0b0a0c01049" +checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833" dependencies = [ - "bytes", + "bytes 1.5.0", "fnv", "futures-core", "futures-sink", @@ -2183,7 +2249,7 @@ dependencies = [ "http", "indexmap 1.9.3", "slab", - "tokio", + "tokio 1.32.0", "tokio-util", "tracing", ] @@ -2196,9 +2262,9 @@ checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" [[package]] name = "handlebars" -version = "4.3.7" +version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83c3372087601b532857d332f5957cbae686da52bb7810bf038c3e3c3cc2fa0d" +checksum = "c39b3bc2a8f715298032cf5087e58573809374b08160aa7d750582bdb82d2683" dependencies = [ "log", "pest", @@ -2249,13 +2315,12 @@ dependencies = [ [[package]] name = "headers" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3e372db8e5c0d213e0cd0b9be18be2aca3d44cf2fe30a9d46a65581cd454584" +checksum = "06683b93020a07e3dbcf5f8c0f6d40080d725bea7936fc01ad345c01b97dc270" dependencies = [ - "base64 0.13.1", - "bitflags 1.3.2", - "bytes", + "base64 0.21.4", + "bytes 1.5.0", "headers-core", "http", "httpdate", @@ -2365,7 +2430,7 @@ version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" dependencies = [ - "bytes", + "bytes 1.5.0", "fnv", "itoa", ] @@ -2376,9 +2441,9 @@ version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" dependencies = [ - "bytes", + "bytes 1.5.0", "http", - "pin-project-lite", + "pin-project-lite 0.2.13", ] [[package]] @@ -2389,9 +2454,9 @@ checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" [[package]] name = "httpdate" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "humantime" @@ -2405,7 +2470,7 @@ version = "0.14.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" dependencies = [ - "bytes", + "bytes 1.5.0", "futures-channel", "futures-core", "futures-util", @@ -2415,9 +2480,9 @@ dependencies = [ "httparse", "httpdate", "itoa", - "pin-project-lite", - "socket2", - "tokio", + "pin-project-lite 0.2.13", + "socket2 0.4.9", + "tokio 1.32.0", "tower-service", "tracing", "want", @@ -2433,7 +2498,7 @@ dependencies = [ "http", "hyper", "rustls", - "tokio", + "tokio 1.32.0", "tokio-rustls", ] @@ -2443,10 +2508,10 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" dependencies = [ - "bytes", + "bytes 1.5.0", "hyper", "native-tls", - "tokio", + "tokio 1.32.0", "tokio-native-tls", ] @@ -2504,7 +2569,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" dependencies = [ - "parity-scale-codec 3.6.4", + "parity-scale-codec 3.6.5", ] [[package]] @@ -2540,8 +2605,8 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "syn 1.0.109", ] @@ -2660,7 +2725,7 @@ version = "8.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6971da4d9c3aa03c3d8f3ff0f4155b534aad021292003895a469716b2a230378" dependencies = [ - "base64 0.21.2", + "base64 0.21.4", "pem", "ring", "serde", @@ -2706,9 +2771,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.147" +version = "0.2.148" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" +checksum = "9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b" [[package]] name = "libloading" @@ -2773,15 +2838,15 @@ dependencies = [ [[package]] name = "linux-raw-sys" -version = "0.4.5" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503" +checksum = "1a9bad9f94746442c783ca431b22403b519cd7fbeed0533fdd6328b2f2212128" [[package]] name = "local-ip-address" -version = "0.5.4" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "885efb07efcd6ae1c6af70be7565544121424fa9e5b1c3e4b58bbbf141a58cef" +checksum = "3fefe707432eb6bd4704b3dacfc87aab269d56667ad05dcd6869534e8890e767" dependencies = [ "libc", "neli", @@ -2846,9 +2911,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.5.0" +version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c" [[package]] name = "memoffset" @@ -2893,7 +2958,7 @@ dependencies = [ "metrics-util", "quanta", "thiserror", - "tokio", + "tokio 1.32.0", "tracing", ] @@ -2903,9 +2968,9 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ddece26afd34c31585c74a4db0630c376df271c285d682d1e55012197830b6df" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 1.0.109", ] [[package]] @@ -2941,9 +3006,9 @@ dependencies = [ [[package]] name = "mini-moka" -version = "0.10.1" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "452ebc1428a585e31e637b928b76355ef2fd72d765b2530d72fe475e514cd1eb" +checksum = "23e0b72e7c9042467008b10279fc732326bd605459ae03bda88825909dd19b56" dependencies = [ "crossbeam-channel 0.5.8", "crossbeam-utils 0.8.16", @@ -3017,22 +3082,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c168194d373b1e134786274020dae7fc5513d565ea2ebb9bc9ff17ffb69106d4" dependencies = [ "either", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "serde", "syn 1.0.109", ] [[package]] name = "nix" -version = "0.26.2" +version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfdda3d196821d6af13126e40375cdf7da646a96114af134d5f417a9a1dc8e1a" +checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.0", "cfg-if 1.0.0", "libc", - "static_assertions", ] [[package]] @@ -3081,8 +3145,8 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af" dependencies = [ - "num-bigint 0.4.3", - "num-complex 0.4.3", + "num-bigint 0.4.4", + "num-complex 0.4.4", "num-integer", "num-iter", "num-rational 0.4.1", @@ -3103,9 +3167,9 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" dependencies = [ "autocfg 1.1.0", "num-integer", @@ -3142,9 +3206,9 @@ dependencies = [ [[package]] name = "num-complex" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02e0d21255c828d6f128a1e41534206671e8c3ea0c62f32291e808dc82cff17d" +checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214" dependencies = [ "num-traits", ] @@ -3166,8 +3230,8 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "syn 1.0.109", ] @@ -3222,7 +3286,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" dependencies = [ "autocfg 1.1.0", - "num-bigint 0.4.3", + "num-bigint 0.4.4", "num-integer", "num-traits", ] @@ -3263,16 +3327,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6" dependencies = [ "proc-macro-crate", - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.33", ] [[package]] name = "object" -version = "0.31.1" +version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1" +checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" dependencies = [ "memchr", ] @@ -3297,11 +3361,11 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "openssl" -version = "0.10.55" +version = "0.10.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "345df152bc43501c5eb9e4654ff05f794effb78d4efe3d53abc158baddc0703d" +checksum = "bac25ee399abb46215765b1cb35bc0212377e58a061560d8b29b024fd0430e7c" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.0", "cfg-if 1.0.0", "foreign-types", "libc", @@ -3316,9 +3380,9 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.33", ] [[package]] @@ -3329,9 +3393,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.90" +version = "0.9.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "374533b0e45f3a7ced10fcaeccca020e66656bc03dac384f852e4e5a7a8104a6" +checksum = "db4d56a4c0478783083cfafcc42493dd4a981d41669da64b4572a2a089b51b1d" dependencies = [ "cc", "libc", @@ -3431,15 +3495,15 @@ dependencies = [ [[package]] name = "parity-scale-codec" -version = "3.6.4" +version = "3.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8e946cc0cc711189c0b0249fb8b599cbeeab9784d83c415719368bb8d4ac64" +checksum = "0dec8a8073036902368c2cdc0387e85ff9a37054d7e7c98e592145e0c92cd4fb" dependencies = [ "arrayvec 0.7.4", "bitvec 1.0.1", "byte-slice-cast", "impl-trait-for-tuples", - "parity-scale-codec-derive 3.6.4", + "parity-scale-codec-derive 3.6.5", "serde", ] @@ -3450,20 +3514,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1557010476e0595c9b568d16dcfb81b93cdeb157612726f5170d31aa707bed27" dependencies = [ "proc-macro-crate", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "syn 1.0.109", ] [[package]] name = "parity-scale-codec-derive" -version = "3.6.4" +version = "3.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a296c3079b5fefbc499e1de58dc26c09b1b9a5952d26694ee89f04a43ebbb3e" +checksum = "312270ee71e1cd70289dacf597cab7b207aa107d2f28191c2ae45b2ece18a260" dependencies = [ "proc-macro-crate", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "syn 1.0.109", ] @@ -3585,19 +3649,20 @@ checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" [[package]] name = "pest" -version = "2.7.1" +version = "2.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d2d1d55045829d65aad9d389139882ad623b33b904e7c9f1b10c5b8927298e5" +checksum = "d7a4d085fd991ac8d5b05a147b437791b4260b76326baf0fc60cf7c9c27ecd33" dependencies = [ + "memchr", "thiserror", "ucd-trie", ] [[package]] name = "pest_derive" -version = "2.7.1" +version = "2.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f94bca7e7a599d89dea5dfa309e217e7906c3c007fb9c3299c40b10d6a315d3" +checksum = "a2bee7be22ce7918f641a33f08e3f43388c7656772244e2bbb2477f44cc9021a" dependencies = [ "pest", "pest_generator", @@ -3605,22 +3670,22 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.1" +version = "2.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d490fe7e8556575ff6911e45567ab95e71617f43781e5c05490dc8d75c965c" +checksum = "d1511785c5e98d79a05e8a6bc34b4ac2168a0e3e92161862030ad84daa223141" dependencies = [ "pest", "pest_meta", - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.33", ] [[package]] name = "pest_meta" -version = "2.7.1" +version = "2.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2674c66ebb4b4d9036012091b537aae5878970d6999f81a265034d85b136b341" +checksum = "b42f0394d3123e33353ca5e1e89092e533d2cc490389f2bd6131c43c634ebc5f" dependencies = [ "once_cell", "pest", @@ -3629,29 +3694,35 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "030ad2bc4db10a8944cb0d837f158bdfec4d4a4873ab701a95046770d11f8842" +checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec2e072ecce94ec471b13398d5402c188e76ac03cf74dd1a975161b23a3f6d9c" +checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.33", ] [[package]] name = "pin-project-lite" -version = "0.2.10" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "257b64915a082f7811703966789728173279bdebb956b143dbcd23f6f970a777" + +[[package]] +name = "pin-project-lite" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c40d25201921e5ff0c862a505c6557ea88568a4e3ace775ab55e93f2f4f9d57" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" [[package]] name = "pin-utils" @@ -3727,9 +3798,18 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.4.2" +version = "0.3.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e30165d31df606f5726b090ec7592c308a0eaf61721ff64c9a3018e344a8753e" +dependencies = [ + "portable-atomic 1.4.3", +] + +[[package]] +name = "portable-atomic" +version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f32154ba0af3a075eefa1eda8bb414ee928f62303a54ea85b8d6638ff1a6ee9e" +checksum = "31114a898e107c51bb1609ffaf55a0e011cf6a4d7f1170d0015a165082c0338b" [[package]] name = "ppv-lite86" @@ -3739,12 +3819,12 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "prettyplease" -version = "0.2.12" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c64d9ba0963cdcea2e1b2230fbae2bab30eb25a174be395c41e764bfb65dd62" +checksum = "ae005bd773ab59b4725093fd7df83fd7892f7d8eafb48dbd7de6e024e4215f9d" dependencies = [ - "proc-macro2 1.0.66", - "syn 2.0.28", + "proc-macro2 1.0.67", + "syn 2.0.33", ] [[package]] @@ -3780,7 +3860,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" dependencies = [ "once_cell", - "toml_edit 0.19.14", + "toml_edit 0.19.15", ] [[package]] @@ -3790,8 +3870,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" dependencies = [ "proc-macro-error-attr", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "syn 1.0.109", "version_check", ] @@ -3802,8 +3882,8 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "version_check", ] @@ -3824,9 +3904,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.66" +version = "1.0.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328" dependencies = [ "unicode-ident", ] @@ -3861,8 +3941,8 @@ dependencies = [ "anyhow", "metrics", "metrics-exporter-prometheus", - "tokio", - "vise-exporter", + "tokio 1.32.0", + "tracing", ] [[package]] @@ -3951,11 +4031,11 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.32" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ - "proc-macro2 1.0.66", + "proc-macro2 1.0.67", ] [[package]] @@ -4238,14 +4318,14 @@ dependencies = [ [[package]] name = "regex" -version = "1.9.1" +version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2eae68fc220f7cf2532e4494aded17545fce192d59cd996e0fe7887f4ceb575" +checksum = "697061221ea1b4a94a624f67d0ae2bfe4e22b8a17b6a192afb11046542cc8c47" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.3.4", - "regex-syntax 0.7.4", + "regex-automata 0.3.8", + "regex-syntax 0.7.5", ] [[package]] @@ -4259,13 +4339,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.3.4" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7b6d6190b7594385f61bd3911cd1be99dfddcfc365a4160cc2ab5bff4aed294" +checksum = "c2f401f4955220693b56f8ec66ee9c78abffd8d1c4f23dc41a23839eb88f0795" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.7.4", + "regex-syntax 0.7.5", ] [[package]] @@ -4276,18 +4356,18 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" +checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" [[package]] name = "reqwest" -version = "0.11.18" +version = "0.11.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cde824a14b7c14f85caff81225f411faacc04a2013f41670f41443742b1c1c55" +checksum = "3e9ad3fe7488d7e34558a2033d45a0c90b72d97b4f80705666fea71472e2e6a1" dependencies = [ - "base64 0.21.2", - "bytes", + "base64 0.21.4", + "bytes 1.5.0", "encoding_rs", "futures-core", "futures-util", @@ -4305,13 +4385,13 @@ dependencies = [ "native-tls", "once_cell", "percent-encoding", - "pin-project-lite", + "pin-project-lite 0.2.13", "rustls", "rustls-pemfile", "serde", "serde_json", "serde_urlencoded", - "tokio", + "tokio 1.32.0", "tokio-native-tls", "tokio-rustls", "tokio-util", @@ -4351,7 +4431,7 @@ dependencies = [ [[package]] name = "rescue_poseidon" version = "0.4.1" -source = "git+https://github.com/matter-labs/rescue-poseidon.git#d059b5042df5ed80e151f05751410b524a54d16c" +source = "git+https://github.com/matter-labs/rescue-poseidon#f611a3353e48cf42153e44d89ed90da9bc5934e8" dependencies = [ "addchain", "arrayvec 0.7.4", @@ -4411,7 +4491,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" dependencies = [ - "bytes", + "bytes 1.5.0", "rustc-hex", ] @@ -4474,11 +4554,11 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.4" +version = "0.38.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a962918ea88d644592894bc6dc55acc6c0956488adcebbfb6e273506b7fd6e5" +checksum = "d7db8590df6dfcd144d22afd1b83b36c21a18d7cbc1dc4bb5295a8712e9eb662" dependencies = [ - "bitflags 2.3.3", + "bitflags 2.4.0", "errno", "libc", "linux-raw-sys", @@ -4487,9 +4567,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.21.5" +version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79ea77c539259495ce8ca47f53e66ae0330a8819f67e23ac96ca02f50e7b7d36" +checksum = "cd8d6c9f025a446bc4d18ad9632e69aec8f287aa84499ee335599fabd20c3fd8" dependencies = [ "log", "ring", @@ -4503,14 +4583,14 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2" dependencies = [ - "base64 0.21.2", + "base64 0.21.4", ] [[package]] name = "rustls-webpki" -version = "0.101.2" +version = "0.101.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "513722fd73ad80a71f72b61009ea1b584bcfa1483ca93949c8f290298837fa59" +checksum = "45a27e3b59326c16e23d30aeb7a36a24cc0d29e71d68ff611cdfb4a01d013bed" dependencies = [ "ring", "untrusted", @@ -4684,9 +4764,9 @@ dependencies = [ [[package]] name = "sentry" -version = "0.31.5" +version = "0.31.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01b0ad16faa5d12372f914ed40d00bda21a6d1bdcc99264c5e5e1c9495cf3654" +checksum = "0097a48cd1999d983909f07cb03b15241c5af29e5e679379efac1c06296abecc" dependencies = [ "httpdate", "native-tls", @@ -4697,15 +4777,15 @@ dependencies = [ "sentry-debug-images", "sentry-panic", "sentry-tracing", - "tokio", + "tokio 1.32.0", "ureq", ] [[package]] name = "sentry-backtrace" -version = "0.31.5" +version = "0.31.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f2ee8f147bb5f22ac59b5c35754a759b9a6f6722402e2a14750b2a63fc59bd" +checksum = "18a7b80fa1dd6830a348d38a8d3a9761179047757b7dca29aef82db0118b9670" dependencies = [ "backtrace", "once_cell", @@ -4715,9 +4795,9 @@ dependencies = [ [[package]] name = "sentry-contexts" -version = "0.31.5" +version = "0.31.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcd133362c745151eeba0ac61e3ba8350f034e9fe7509877d08059fe1d7720c6" +checksum = "7615dc588930f1fd2e721774f25844ae93add2dbe2d3c2f995ce5049af898147" dependencies = [ "hostname", "libc", @@ -4729,9 +4809,9 @@ dependencies = [ [[package]] name = "sentry-core" -version = "0.31.5" +version = "0.31.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7163491708804a74446642ff2c80b3acd668d4b9e9f497f85621f3d250fd012b" +checksum = "8f51264e4013ed9b16558cce43917b983fa38170de2ca480349ceb57d71d6053" dependencies = [ "once_cell", "rand 0.8.5", @@ -4742,9 +4822,9 @@ dependencies = [ [[package]] name = "sentry-debug-images" -version = "0.31.5" +version = "0.31.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a5003d7ff08aa3b2b76994080b183e8cfa06c083e280737c9cee02ca1c70f5e" +checksum = "2fe6180fa564d40bb942c9f0084ffb5de691c7357ead6a2b7a3154fae9e401dd" dependencies = [ "findshlibs", "once_cell", @@ -4753,9 +4833,9 @@ dependencies = [ [[package]] name = "sentry-panic" -version = "0.31.5" +version = "0.31.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4dfe8371c9b2e126a8b64f6fefa54cef716ff2a50e63b5558a48b899265bccd" +checksum = "323160213bba549f9737317b152af116af35c0410f4468772ee9b606d3d6e0fa" dependencies = [ "sentry-backtrace", "sentry-core", @@ -4763,9 +4843,9 @@ dependencies = [ [[package]] name = "sentry-tracing" -version = "0.31.5" +version = "0.31.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aca8b88978677a27ee1a91beafe4052306c474c06f582321fde72d2e2cc2f7f" +checksum = "38033822128e73f7b6ca74c1631cef8868890c6cb4008a291cf73530f87b4eac" dependencies = [ "sentry-backtrace", "sentry-core", @@ -4775,13 +4855,13 @@ dependencies = [ [[package]] name = "sentry-types" -version = "0.31.5" +version = "0.31.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e7a88e0c1922d19b3efee12a8215f6a8a806e442e665ada71cc222cab72985f" +checksum = "0e663b3eb62ddfc023c9cf5432daf5f1a4f6acb1df4d78dd80b740b32dd1a740" dependencies = [ "debugid", - "getrandom 0.2.10", "hex", + "rand 0.8.5", "serde", "serde_json", "thiserror", @@ -4792,29 +4872,29 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.180" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ea67f183f058fe88a4e3ec6e2788e003840893b91bac4559cabedd00863b3ed" +checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.180" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24e744d7782b686ab3b73267ef05697159cc0e5abbed3f47f9933165e5219036" +checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.33", ] [[package]] name = "serde_json" -version = "1.0.104" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "076066c5f1078eac5b722a31827a8832fe108bed65dfa75e233c89f8206e976c" +checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" dependencies = [ "itoa", "ryu", @@ -4851,8 +4931,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e182d6ec6f05393cc0e5ed1bf81ad6db3a8feedf8ee515ecdd369809bcce8082" dependencies = [ "darling", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "syn 1.0.109", ] @@ -4953,7 +5033,7 @@ dependencies = [ [[package]] name = "shivini" version = "0.1.0" -source = "git+https://github.com/matter-labs/era-shivini.git?branch=main#77f0f45c125345db2377bf7fa021792f8a583b12" +source = "git+https://github.com/matter-labs/shivini.git?branch=main#9b5afd6686bcb15b4070a91b215fbef2a4fd9c9f" dependencies = [ "bincode", "blake2 0.10.6", @@ -4971,9 +5051,9 @@ dependencies = [ [[package]] name = "shlex" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3" +checksum = "a7cee0529a6d40f580e7a5e6c495c8fbfe21b7b52795ed4bb5e62cdf92bc6380" [[package]] name = "signal-hook-registry" @@ -5000,7 +5080,7 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" dependencies = [ - "num-bigint 0.4.3", + "num-bigint 0.4.4", "num-traits", "thiserror", "time", @@ -5029,9 +5109,9 @@ checksum = "68a406c1882ed7f29cd5e248c9848a80e7cb6ae0fea82346d2746f2f941c07e1" [[package]] name = "slab" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" dependencies = [ "autocfg 1.1.0", ] @@ -5066,6 +5146,16 @@ dependencies = [ "winapi", ] +[[package]] +name = "socket2" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4031e820eb552adee9295814c0ced9e5cf38ddf1e8b7d566d6de8e2538ea989e" +dependencies = [ + "libc", + "windows-sys", +] + [[package]] name = "spin" version = "0.5.2" @@ -5131,7 +5221,7 @@ dependencies = [ "bigdecimal", "bitflags 1.3.2", "byteorder", - "bytes", + "bytes 1.5.0", "chrono", "crc", "crossbeam-queue 0.3.8", @@ -5183,8 +5273,8 @@ dependencies = [ "heck 0.4.1", "hex", "once_cell", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "serde", "serde_json", "sha2 0.10.6", @@ -5202,7 +5292,7 @@ checksum = "4db708cd3e459078f85f39f96a00960bd841f66ee2a669e90bf36907f5a79aae" dependencies = [ "native-tls", "once_cell", - "tokio", + "tokio 1.32.0", "tokio-native-tls", ] @@ -5220,10 +5310,11 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "stringprep" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3737bde7edce97102e0e2b15365bf7a20bfdb5f60f4f9e8d7004258a51a8da" +checksum = "bb41d74e231a107a1b4ee36bd1214b11285b77768d2e3824aedafa988fd36ee6" dependencies = [ + "finl_unicode", "unicode-bidi", "unicode-normalization", ] @@ -5259,8 +5350,8 @@ checksum = "dcb5ae327f9cc13b68763b5749770cb9e048a99bd9dfdfa58d0cf05d5f64afe0" dependencies = [ "heck 0.3.3", "proc-macro-error", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "syn 1.0.109", ] @@ -5280,8 +5371,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" dependencies = [ "heck 0.4.1", - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "rustversion", "syn 1.0.109", ] @@ -5309,19 +5400,19 @@ version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "unicode-ident", ] [[package]] name = "syn" -version = "2.0.28" +version = "2.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04361975b3f5e348b2189d8dc55bc942f278b2d482a6a0365de5bdd62d351567" +checksum = "9caece70c63bfba29ec2fed841a09851b14a235c60010fa4de58089b6c025668" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "unicode-ident", ] @@ -5336,13 +5427,13 @@ dependencies = [ "franklin-crypto 0.0.5 (git+https://github.com/matter-labs/franklin-crypto?branch=dev)", "hex", "itertools 0.10.5", - "num-bigint 0.4.3", + "num-bigint 0.4.4", "num-derive 0.3.3", "num-integer", "num-traits", "once_cell", "rand 0.4.6", - "rescue_poseidon 0.4.1 (git+https://github.com/matter-labs/rescue-poseidon.git)", + "rescue_poseidon 0.4.1 (git+https://github.com/matter-labs/rescue-poseidon)", "serde", "sha2 0.10.6", "sha3 0.10.6", @@ -5365,9 +5456,9 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.7.0" +version = "3.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5486094ee78b2e5038a6382ed7645bc084dc2ec433426ca4c3cb61e2007b8998" +checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" dependencies = [ "cfg-if 1.0.0", "fastrand 2.0.0", @@ -5391,8 +5482,8 @@ version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9601d162c1d77e62c1ea0bc8116cd1caf143ce3af947536c3c9052a1677fe0c" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", + "proc-macro2 1.0.67", + "quote 1.0.33", "syn 1.0.109", ] @@ -5407,22 +5498,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.44" +version = "1.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "611040a08a0439f8248d1990b111c95baa9c704c805fa1f62104b39655fd7f90" +checksum = "9d6d7a740b8a666a7e828dd00da9c0dc290dff53154ea77ac109281de90589b7" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.44" +version = "1.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "090198534930841fab3a5d1bb637cde49e339654e606195f8d9c76eeb081dc96" +checksum = "49922ecae66cc8a249b77e68d1d0623c1b2c514f0060c27cdc68bd62a1219d35" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.33", ] [[package]] @@ -5437,9 +5528,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.24" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b79eabcd964882a646b3584543ccabeae7869e9ac32a46f6f22b7a5bd405308b" +checksum = "17f6bb557fd245c28e6411aa56b6403c689ad95061f50e4be16c274e70a17e48" dependencies = [ "deranged", "itoa", @@ -5456,9 +5547,9 @@ checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" [[package]] name = "time-macros" -version = "0.2.11" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb71511c991639bb078fd5bf97757e03914361c48100d52878b8e52b46fb92cd" +checksum = "1a942f44339478ef67935ab2bbaec2fb0322496cf3cbe84b261e06ac3814c572" dependencies = [ "time-core", ] @@ -5508,20 +5599,30 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.29.1" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "532826ff75199d5833b9d2c5fe410f29235e25704ee5f0ef599fb51c21f4a4da" +checksum = "6703a273949a90131b290be1fe7b039d0fc884aa1935860dfcbe056f28cd8092" +dependencies = [ + "bytes 0.5.6", + "pin-project-lite 0.1.12", + "slab", +] + +[[package]] +name = "tokio" +version = "1.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9" dependencies = [ - "autocfg 1.1.0", "backtrace", - "bytes", + "bytes 1.5.0", "libc", "mio", "num_cpus", "parking_lot 0.12.1", - "pin-project-lite", + "pin-project-lite 0.2.13", "signal-hook-registry", - "socket2", + "socket2 0.5.4", "tokio-macros", "windows-sys", ] @@ -5532,9 +5633,9 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.33", ] [[package]] @@ -5544,7 +5645,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" dependencies = [ "native-tls", - "tokio", + "tokio 1.32.0", ] [[package]] @@ -5554,7 +5655,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ "rustls", - "tokio", + "tokio 1.32.0", ] [[package]] @@ -5564,8 +5665,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" dependencies = [ "futures-core", - "pin-project-lite", - "tokio", + "pin-project-lite 0.2.13", + "tokio 1.32.0", ] [[package]] @@ -5574,11 +5675,11 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" dependencies = [ - "bytes", + "bytes 1.5.0", "futures-core", "futures-sink", - "pin-project-lite", - "tokio", + "pin-project-lite 0.2.13", + "tokio 1.32.0", "tracing", ] @@ -5601,9 +5702,9 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.19.14" +version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8123f27e969974a3dfba720fdb560be359f57b44302d280ba72e76a74480e8a" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ "indexmap 2.0.0", "toml_datetime", @@ -5623,7 +5724,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" dependencies = [ "cfg-if 1.0.0", - "pin-project-lite", + "pin-project-lite 0.2.13", "tracing-attributes", "tracing-core", ] @@ -5634,9 +5735,9 @@ version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.33", ] [[package]] @@ -5745,9 +5846,9 @@ checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" [[package]] name = "unicase" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" +checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" dependencies = [ "version_check", ] @@ -5760,9 +5861,9 @@ checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" [[package]] name = "unicode-ident" -version = "1.0.11" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" @@ -5809,7 +5910,7 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5ad948c1cb799b1a70f836077721a92a35ac177d4daddf4c20a633786d4cf618" dependencies = [ - "quote 1.0.32", + "quote 1.0.33", "syn 1.0.109", ] @@ -5825,7 +5926,7 @@ version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b11c96ac7ee530603dcdf68ed1557050f374ce55a5a07193ebf8cbc9f8927e9" dependencies = [ - "base64 0.21.2", + "base64 0.21.4", "log", "native-tls", "once_cell", @@ -5834,9 +5935,9 @@ dependencies = [ [[package]] name = "url" -version = "2.4.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" +checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" dependencies = [ "form_urlencoded", "idna", @@ -5856,7 +5957,6 @@ version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d" dependencies = [ - "getrandom 0.2.10", "serde", ] @@ -5984,9 +6084,9 @@ dependencies = [ [[package]] name = "walkdir" -version = "2.3.3" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" +checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" dependencies = [ "same-file", "winapi-util", @@ -6032,9 +6132,9 @@ dependencies = [ "bumpalo", "log", "once_cell", - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.33", "wasm-bindgen-shared", ] @@ -6056,7 +6156,7 @@ version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" dependencies = [ - "quote 1.0.32", + "quote 1.0.33", "wasm-bindgen-macro-support", ] @@ -6066,9 +6166,9 @@ version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.33", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -6081,9 +6181,9 @@ checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" [[package]] name = "wasm-streams" -version = "0.2.3" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bbae3363c08332cadccd13b67db371814cd214c2524020932f0804b8cf7c078" +checksum = "b4609d447824375f43e1ffbc051b50ad8f4b3ae8219680c94452ea05eb240ac7" dependencies = [ "futures-util", "js-sys", @@ -6109,8 +6209,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5388522c899d1e1c96a4c307e3797e0f697ba7c77dd8e0e625ecba9dd0342937" dependencies = [ "arrayvec 0.7.4", - "base64 0.21.2", - "bytes", + "base64 0.21.4", + "bytes 1.5.0", "derive_more", "ethabi", "ethereum-types 0.14.1", @@ -6133,34 +6233,22 @@ dependencies = [ "url", ] -[[package]] -name = "webpki" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" -dependencies = [ - "ring", - "untrusted", -] - [[package]] name = "webpki-roots" -version = "0.22.6" +version = "0.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87" -dependencies = [ - "webpki", -] +checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" [[package]] name = "which" -version = "4.4.0" +version = "4.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2441c784c52b289a054b7201fc93253e288f094e2f4be9058343127c4226a269" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" dependencies = [ "either", - "libc", + "home", "once_cell", + "rustix", ] [[package]] @@ -6224,9 +6312,9 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.48.1" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ "windows_aarch64_gnullvm", "windows_aarch64_msvc", @@ -6239,62 +6327,63 @@ dependencies = [ [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_i686_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_x86_64_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "winnow" -version = "0.5.2" +version = "0.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bd122eb777186e60c3fdf765a58ac76e41c582f1f535fbf3314434c6b58f3f7" +checksum = "7c2e3184b9c4e92ad5167ca73039d0c42476302ab603e2fec4487511f38ccefc" dependencies = [ "memchr", ] [[package]] name = "winreg" -version = "0.10.1" +version = "0.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" dependencies = [ - "winapi", + "cfg-if 1.0.0", + "windows-sys", ] [[package]] @@ -6369,7 +6458,7 @@ dependencies = [ "lazy_static", "log", "nom", - "num-bigint 0.4.3", + "num-bigint 0.4.4", "num-traits", "sha3 0.10.6", "smallvec", @@ -6401,9 +6490,9 @@ dependencies = [ [[package]] name = "zkevm_opcode_defs" version = "1.3.2" -source = "git+https://github.com/matter-labs/era-zkevm_opcode_defs.git?branch=v1.3.2#c7ab62f4c60b27dfc690c3ab3efb5fff1ded1a25" +source = "git+https://github.com/matter-labs/zkevm_opcode_defs.git?branch=v1.3.2#667b5acbe161b2d2e478bf90914b715afc29b601" dependencies = [ - "bitflags 2.3.3", + "bitflags 2.4.0", "blake2 0.10.6", "ethereum-types 0.14.1", "k256", @@ -6424,7 +6513,7 @@ dependencies = [ "derivative", "env_logger 0.10.0", "hex", - "num-bigint 0.4.3", + "num-bigint 0.4.4", "num-integer", "num-traits", "rayon", @@ -6484,8 +6573,7 @@ dependencies = [ "metrics", "serde_json", "thiserror", - "tokio", - "tracing", + "tokio 1.32.0", "zksync_config", "zksync_contracts", "zksync_dal", @@ -6505,8 +6593,7 @@ dependencies = [ "prometheus_exporter", "prover-service", "structopt", - "thiserror", - "tokio", + "tokio 1.32.0", "tracing", "vlog", "zkevm_test_harness 1.3.3", @@ -6582,7 +6669,7 @@ dependencies = [ "sqlx", "strum", "thiserror", - "tokio", + "tokio 1.32.0", "tracing", "vise", "zksync_config", @@ -6602,7 +6689,7 @@ dependencies = [ "jsonrpc-core", "serde", "thiserror", - "tokio", + "tokio 1.32.0", "tracing", "vise", "zksync_config", @@ -6637,7 +6724,7 @@ dependencies = [ "futures 0.3.28", "serde", "serde_json", - "tokio", + "tokio 1.32.0", "tracing", ] @@ -6660,7 +6747,8 @@ dependencies = [ "google-cloud-auth", "google-cloud-storage", "http", - "tokio", + "metrics", + "tokio 1.32.0", "tracing", "vise", "zksync_config", @@ -6679,7 +6767,7 @@ dependencies = [ "metrics", "prometheus_exporter", "structopt", - "tokio", + "tokio 1.32.0", "tracing", "vk_setup_data_generator_server_fri", "vlog", @@ -6716,7 +6804,7 @@ dependencies = [ "serde_json", "setup_key_generator_and_server", "thiserror", - "tokio", + "tokio 1.32.0", "tracing", "vlog", "zkevm_test_harness 1.3.3", @@ -6745,7 +6833,7 @@ dependencies = [ "prometheus_exporter", "serde", "shivini", - "tokio", + "tokio 1.32.0", "tracing", "vk_setup_data_generator_server_fri", "vlog", @@ -6774,7 +6862,7 @@ dependencies = [ "prometheus_exporter", "reqwest", "serde", - "tokio", + "tokio 1.32.0", "tracing", "vlog", "zksync_config", @@ -6818,7 +6906,7 @@ dependencies = [ "futures 0.3.28", "regex", "reqwest", - "tokio", + "tokio 1.32.0", "toml_edit 0.14.4", "tracing", "zksync_config", @@ -6833,7 +6921,7 @@ version = "0.1.0" dependencies = [ "anyhow", "async-trait", - "tokio", + "tokio 1.32.0", "tracing", "zksync_utils", ] @@ -6844,7 +6932,7 @@ version = "0.1.0" dependencies = [ "anyhow", "mini-moka", - "tokio", + "tokio 1.32.0", "tracing", "vise", "zksync_dal", @@ -6905,7 +6993,7 @@ dependencies = [ "reqwest", "serde", "thiserror", - "tokio", + "tokio 1.32.0", "tracing", "vlog", "zk_evm 1.3.3", @@ -6948,7 +7036,7 @@ dependencies = [ "serde", "serde_json", "structopt", - "tokio", + "tokio 1.32.0", "tracing", "vk_setup_data_generator_server_fri", "vlog", @@ -6981,7 +7069,7 @@ dependencies = [ "queues", "serde", "structopt", - "tokio", + "tokio 1.32.0", "tracing", "vk_setup_data_generator_server_fri", "vlog", diff --git a/prover/witness_generator/src/precalculated/tests.rs b/prover/witness_generator/src/precalculated/tests.rs index 3d250097900..ac53af3a064 100644 --- a/prover/witness_generator/src/precalculated/tests.rs +++ b/prover/witness_generator/src/precalculated/tests.rs @@ -61,7 +61,7 @@ const fn generate_storage_log_metadata( merkle_path: &[u8], is_write: bool, first_write: bool, - leaf_enumeration_index: u64, + leaf_enumeration_index u64, ) -> (StorageLogMetadata, [u8; 32]) { let log = StorageLogMetadata { root_hash: Hex.decode(root_hash), diff --git a/rust-toolchain b/rust-toolchain index 22d6771a47d..cd9bf832ae2 100644 --- a/rust-toolchain +++ b/rust-toolchain @@ -1 +1 @@ -1.72.1 +nightly-2023-07-21 diff --git a/sdk/zksync-rs/src/abi/IZkSync.json b/sdk/zksync-rs/src/abi/IZkSync.json index afb3698e7c6..0d66ed3ff72 100644 --- a/sdk/zksync-rs/src/abi/IZkSync.json +++ b/sdk/zksync-rs/src/abi/IZkSync.json @@ -726,7 +726,7 @@ "type": "tuple[]" } ], - "name": "commitBlocks", + "name": "commitBatches", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -781,7 +781,7 @@ "type": "tuple[]" } ], - "name": "executeBlocks", + "name": "executeBatches", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -1565,7 +1565,7 @@ "type": "tuple" } ], - "name": "proveBlocks", + "name": "proveBatches", "outputs": [], "stateMutability": "nonpayable", "type": "function" diff --git a/sdk/zksync-web3.js/abi/IZkSync.json b/sdk/zksync-web3.js/abi/IZkSync.json index 0ba0ad7e393..969b3aa60a3 100644 --- a/sdk/zksync-web3.js/abi/IZkSync.json +++ b/sdk/zksync-web3.js/abi/IZkSync.json @@ -616,7 +616,7 @@ "type": "tuple[]" } ], - "name": "commitBlocks", + "name": "commitBatches", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -671,7 +671,7 @@ "type": "tuple[]" } ], - "name": "executeBlocks", + "name": "executeBatches", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -1500,7 +1500,7 @@ "type": "tuple" } ], - "name": "proveBlocks", + "name": "proveBatches", "outputs": [], "stateMutability": "nonpayable", "type": "function" diff --git a/sdk/zksync-web3.js/typechain/IZkSync.d.ts b/sdk/zksync-web3.js/typechain/IZkSync.d.ts index 34d2062cb95..5de08178f2d 100644 --- a/sdk/zksync-web3.js/typechain/IZkSync.d.ts +++ b/sdk/zksync-web3.js/typechain/IZkSync.d.ts @@ -25,8 +25,8 @@ interface IZkSyncInterface extends ethers.utils.Interface { functions: { "acceptGovernor()": FunctionFragment; "cancelUpgradeProposal(bytes32)": FunctionFragment; - "commitBlocks(tuple,tuple[])": FunctionFragment; - "executeBlocks(tuple[])": FunctionFragment; + "commitBatches(tuple,tuple[])": FunctionFragment; + "executeBatches(tuple[])": FunctionFragment; "executeUpgrade(tuple,bytes32)": FunctionFragment; "facetAddress(bytes4)": FunctionFragment; "facetAddresses()": FunctionFragment; @@ -63,7 +63,7 @@ interface IZkSyncInterface extends ethers.utils.Interface { "priorityQueueFrontOperation()": FunctionFragment; "proposeShadowUpgrade(bytes32,uint40)": FunctionFragment; "proposeTransparentUpgrade(tuple,uint40)": FunctionFragment; - "proveBlocks(tuple,tuple[],tuple)": FunctionFragment; + "proveBatchess(tuple,tuple[],tuple)": FunctionFragment; "proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)": FunctionFragment; "proveL2LogInclusion(uint256,uint256,tuple,bytes32[])": FunctionFragment; "proveL2MessageInclusion(uint256,uint256,tuple,bytes32[])": FunctionFragment; @@ -92,7 +92,7 @@ interface IZkSyncInterface extends ethers.utils.Interface { values: [BytesLike] ): string; encodeFunctionData( - functionFragment: "commitBlocks", + functionFragment: "commitBatches", values: [ { blockNumber: BigNumberish; @@ -121,7 +121,7 @@ interface IZkSyncInterface extends ethers.utils.Interface { ] ): string; encodeFunctionData( - functionFragment: "executeBlocks", + functionFragment: "executeBatches", values: [ { blockNumber: BigNumberish; @@ -298,7 +298,7 @@ interface IZkSyncInterface extends ethers.utils.Interface { ] ): string; encodeFunctionData( - functionFragment: "proveBlocks", + functionFragment: "proveBatchess", values: [ { blockNumber: BigNumberish; @@ -452,11 +452,11 @@ interface IZkSyncInterface extends ethers.utils.Interface { data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "commitBlocks", + functionFragment: "commitBatches", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "executeBlocks", + functionFragment: "executeBatches", data: BytesLike ): Result; decodeFunctionResult( @@ -601,7 +601,7 @@ interface IZkSyncInterface extends ethers.utils.Interface { data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "proveBlocks", + functionFragment: "proveBatchess", data: BytesLike ): Result; decodeFunctionResult( @@ -758,7 +758,7 @@ export class IZkSync extends Contract { overrides?: Overrides ): Promise; - commitBlocks( + commitBatches( _lastCommittedBlockData: { blockNumber: BigNumberish; blockHash: BytesLike; @@ -786,7 +786,7 @@ export class IZkSync extends Contract { overrides?: Overrides ): Promise; - "commitBlocks((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),tuple[])"( + "commitBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),tuple[])"( _lastCommittedBlockData: { blockNumber: BigNumberish; blockHash: BytesLike; @@ -814,7 +814,7 @@ export class IZkSync extends Contract { overrides?: Overrides ): Promise; - executeBlocks( + executeBatches( _blocksData: { blockNumber: BigNumberish; blockHash: BytesLike; @@ -828,7 +828,7 @@ export class IZkSync extends Contract { overrides?: Overrides ): Promise; - "executeBlocks(tuple[])"( + "executeBatches(tuple[])"( _blocksData: { blockNumber: BigNumberish; blockHash: BytesLike; @@ -1274,7 +1274,7 @@ export class IZkSync extends Contract { overrides?: Overrides ): Promise; - proveBlocks( + proveBatchess( _prevBlock: { blockNumber: BigNumberish; blockHash: BytesLike; @@ -1302,7 +1302,7 @@ export class IZkSync extends Contract { overrides?: Overrides ): Promise; - "proveBlocks((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),tuple[],(uint256[],uint256[]))"( + "proveBatchess((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),tuple[],(uint256[],uint256[]))"( _prevBlock: { blockNumber: BigNumberish; blockHash: BytesLike; @@ -1617,7 +1617,7 @@ export class IZkSync extends Contract { overrides?: Overrides ): Promise; - commitBlocks( + commitBatches( _lastCommittedBlockData: { blockNumber: BigNumberish; blockHash: BytesLike; @@ -1645,7 +1645,7 @@ export class IZkSync extends Contract { overrides?: Overrides ): Promise; - "commitBlocks((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),tuple[])"( + "commitBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),tuple[])"( _lastCommittedBlockData: { blockNumber: BigNumberish; blockHash: BytesLike; @@ -1673,7 +1673,7 @@ export class IZkSync extends Contract { overrides?: Overrides ): Promise; - executeBlocks( + executeBatches( _blocksData: { blockNumber: BigNumberish; blockHash: BytesLike; @@ -1687,7 +1687,7 @@ export class IZkSync extends Contract { overrides?: Overrides ): Promise; - "executeBlocks(tuple[])"( + "executeBatches(tuple[])"( _blocksData: { blockNumber: BigNumberish; blockHash: BytesLike; @@ -2013,7 +2013,7 @@ export class IZkSync extends Contract { overrides?: Overrides ): Promise; - proveBlocks( + proveBatchess( _prevBlock: { blockNumber: BigNumberish; blockHash: BytesLike; @@ -2041,7 +2041,7 @@ export class IZkSync extends Contract { overrides?: Overrides ): Promise; - "proveBlocks((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),tuple[],(uint256[],uint256[]))"( + "proveBatchess((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),tuple[],(uint256[],uint256[]))"( _prevBlock: { blockNumber: BigNumberish; blockHash: BytesLike; @@ -2336,7 +2336,7 @@ export class IZkSync extends Contract { overrides?: CallOverrides ): Promise; - commitBlocks( + commitBatches( _lastCommittedBlockData: { blockNumber: BigNumberish; blockHash: BytesLike; @@ -2364,7 +2364,7 @@ export class IZkSync extends Contract { overrides?: CallOverrides ): Promise; - "commitBlocks((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),tuple[])"( + "commitBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),tuple[])"( _lastCommittedBlockData: { blockNumber: BigNumberish; blockHash: BytesLike; @@ -2392,7 +2392,7 @@ export class IZkSync extends Contract { overrides?: CallOverrides ): Promise; - executeBlocks( + executeBatches( _blocksData: { blockNumber: BigNumberish; blockHash: BytesLike; @@ -2406,7 +2406,7 @@ export class IZkSync extends Contract { overrides?: CallOverrides ): Promise; - "executeBlocks(tuple[])"( + "executeBatches(tuple[])"( _blocksData: { blockNumber: BigNumberish; blockHash: BytesLike; @@ -2739,7 +2739,7 @@ export class IZkSync extends Contract { overrides?: CallOverrides ): Promise; - proveBlocks( + proveBatchess( _prevBlock: { blockNumber: BigNumberish; blockHash: BytesLike; @@ -2767,7 +2767,7 @@ export class IZkSync extends Contract { overrides?: CallOverrides ): Promise; - "proveBlocks((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),tuple[],(uint256[],uint256[]))"( + "proveBatchess((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),tuple[],(uint256[],uint256[]))"( _prevBlock: { blockNumber: BigNumberish; blockHash: BytesLike; @@ -3168,7 +3168,7 @@ export class IZkSync extends Contract { overrides?: Overrides ): Promise; - commitBlocks( + commitBatches( _lastCommittedBlockData: { blockNumber: BigNumberish; blockHash: BytesLike; @@ -3196,7 +3196,7 @@ export class IZkSync extends Contract { overrides?: Overrides ): Promise; - "commitBlocks((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),tuple[])"( + "commitBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),tuple[])"( _lastCommittedBlockData: { blockNumber: BigNumberish; blockHash: BytesLike; @@ -3224,7 +3224,7 @@ export class IZkSync extends Contract { overrides?: Overrides ): Promise; - executeBlocks( + executeBatches( _blocksData: { blockNumber: BigNumberish; blockHash: BytesLike; @@ -3238,7 +3238,7 @@ export class IZkSync extends Contract { overrides?: Overrides ): Promise; - "executeBlocks(tuple[])"( + "executeBatches(tuple[])"( _blocksData: { blockNumber: BigNumberish; blockHash: BytesLike; @@ -3540,7 +3540,7 @@ export class IZkSync extends Contract { overrides?: Overrides ): Promise; - proveBlocks( + proveBatchess( _prevBlock: { blockNumber: BigNumberish; blockHash: BytesLike; @@ -3568,7 +3568,7 @@ export class IZkSync extends Contract { overrides?: Overrides ): Promise; - "proveBlocks((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),tuple[],(uint256[],uint256[]))"( + "proveBatchess((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),tuple[],(uint256[],uint256[]))"( _prevBlock: { blockNumber: BigNumberish; blockHash: BytesLike; @@ -3864,7 +3864,7 @@ export class IZkSync extends Contract { overrides?: Overrides ): Promise; - commitBlocks( + commitBatches( _lastCommittedBlockData: { blockNumber: BigNumberish; blockHash: BytesLike; @@ -3892,7 +3892,7 @@ export class IZkSync extends Contract { overrides?: Overrides ): Promise; - "commitBlocks((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),tuple[])"( + "commitBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),tuple[])"( _lastCommittedBlockData: { blockNumber: BigNumberish; blockHash: BytesLike; @@ -3920,7 +3920,7 @@ export class IZkSync extends Contract { overrides?: Overrides ): Promise; - executeBlocks( + executeBatches( _blocksData: { blockNumber: BigNumberish; blockHash: BytesLike; @@ -3934,7 +3934,7 @@ export class IZkSync extends Contract { overrides?: Overrides ): Promise; - "executeBlocks(tuple[])"( + "executeBatches(tuple[])"( _blocksData: { blockNumber: BigNumberish; blockHash: BytesLike; @@ -4296,7 +4296,7 @@ export class IZkSync extends Contract { overrides?: Overrides ): Promise; - proveBlocks( + proveBatchess( _prevBlock: { blockNumber: BigNumberish; blockHash: BytesLike; @@ -4324,7 +4324,7 @@ export class IZkSync extends Contract { overrides?: Overrides ): Promise; - "proveBlocks((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),tuple[],(uint256[],uint256[]))"( + "proveBatchess((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),tuple[],(uint256[],uint256[]))"( _prevBlock: { blockNumber: BigNumberish; blockHash: BytesLike; diff --git a/sdk/zksync-web3.js/typechain/IZkSyncFactory.ts b/sdk/zksync-web3.js/typechain/IZkSyncFactory.ts index 7fdf22ef11e..4dc84b3e7f3 100644 --- a/sdk/zksync-web3.js/typechain/IZkSyncFactory.ts +++ b/sdk/zksync-web3.js/typechain/IZkSyncFactory.ts @@ -743,7 +743,7 @@ const _abi = [ type: "tuple[]", }, ], - name: "commitBlocks", + name: "commitBatches", outputs: [], stateMutability: "nonpayable", type: "function", @@ -798,7 +798,7 @@ const _abi = [ type: "tuple[]", }, ], - name: "executeBlocks", + name: "executeBatches", outputs: [], stateMutability: "nonpayable", type: "function", @@ -1601,7 +1601,7 @@ const _abi = [ type: "tuple", }, ], - name: "proveBlocks", + name: "proveBatches", outputs: [], stateMutability: "nonpayable", type: "function", diff --git a/yarn.lock b/yarn.lock index 4f2f692171b..1c3b08bf03c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1740,25 +1740,15 @@ "@types/sinon-chai" "^3.2.3" "@types/web3" "1.0.19" -"@openzeppelin/contracts-upgradeable@4.8.0": - version "4.8.0" - resolved "https://registry.yarnpkg.com/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.8.0.tgz#26688982f46969018e3ed3199e72a07c8d114275" - integrity sha512-5GeFgqMiDlqGT8EdORadp1ntGF0qzWZLmEY7Wbp/yVhN7/B3NNzCxujuI77ktlyG81N3CUZP8cZe3ZAQ/cW10w== - -"@openzeppelin/contracts-upgradeable@^4.6.0": - version "4.8.1" - resolved "https://registry.yarnpkg.com/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.8.1.tgz#363f7dd08f25f8f77e16d374350c3d6b43340a7a" - integrity sha512-1wTv+20lNiC0R07jyIAbHU7TNHKRwGiTGRfiNnA8jOWjKT98g5OgLpYWOi40Vgpk8SPLA9EvfJAbAeIyVn+7Bw== +"@openzeppelin/contracts-upgradeable@4.9.2": + version "4.9.2" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.9.2.tgz#a817c75688f8daede420052fbcb34e52482e769e" + integrity sha512-siviV3PZV/fHfPaoIC51rf1Jb6iElkYWnNYZ0leO23/ukXuvOyoC/ahy8jqiV7g+++9Nuo3n/rk5ajSN/+d/Sg== -"@openzeppelin/contracts@4.6.0": - version "4.6.0" - resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.6.0.tgz#c91cf64bc27f573836dba4122758b4743418c1b3" - integrity sha512-8vi4d50NNya/bQqCmaVzvHNmwHvS0OBKb7HNtuNwEE3scXWrP31fKQoGxNMT+KbzmrNZzatE3QK5p2gFONI/hg== - -"@openzeppelin/contracts@4.8.0": - version "4.8.0" - resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.8.0.tgz#6854c37df205dd2c056bdfa1b853f5d732109109" - integrity sha512-AGuwhRRL+NaKx73WKRNzeCxOCOCxpaqF+kp8TJ89QzAipSwZy/NoflkWaL9bywXFRhIzXt8j38sfF7KBKCPWLw== +"@openzeppelin/contracts@4.9.2": + version "4.9.2" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.9.2.tgz#1cb2d5e4d3360141a17dbc45094a8cad6aac16c1" + integrity sha512-mO+y6JaqXjWeMh9glYVzVu8HYPGknAAnWyxTRhGeckOruyXQMNnlcW6w/Dx9ftLeIQk6N+ZJFuVmTwF7lEIFrg== "@openzeppelin/contracts@^4.8.0": version "4.8.1" @@ -2524,7 +2514,7 @@ aggregate-error@^3.0.0: clean-stack "^2.0.0" indent-string "^4.0.0" -ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.6.1, ajv@^6.9.1: +ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.6, ajv@^6.6.1, ajv@^6.9.1: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -2625,6 +2615,11 @@ antlr4@4.7.1: resolved "https://registry.yarnpkg.com/antlr4/-/antlr4-4.7.1.tgz#69984014f096e9e775f53dd9744bf994d8959773" integrity sha512-haHyTW7Y9joE5MVs37P2lNYfU2RWBLfcRDD8OWldcdZm5TiCE91B5Xl1oWSwiDUSd4rlExpt2pu1fksYQjRBYQ== +antlr4@^4.11.0: + version "4.13.1" + resolved "https://registry.yarnpkg.com/antlr4/-/antlr4-4.13.1.tgz#1e0a1830a08faeb86217cb2e6c34716004e4253d" + integrity sha512-kiXTspaRYvnIArgE97z5YVVf/cDVQABr3abFRR6mE7yesLMkgu4ujuyV/sgxafQ8wgve0DJQUJ38Z8tkgA2izA== + antlr4@~4.8.0: version "4.8.0" resolved "https://registry.yarnpkg.com/antlr4/-/antlr4-4.8.0.tgz#f938ec171be7fc2855cd3a533e87647185b32b6a" @@ -2770,7 +2765,7 @@ assign-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== -ast-parents@0.0.1: +ast-parents@0.0.1, ast-parents@^0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/ast-parents/-/ast-parents-0.0.1.tgz#508fd0f05d0c48775d9eccda2e174423261e8dd3" integrity sha512-XHusKxKz3zoYk1ic8Un640joHbFMhbqneyoZfoKnEGtf2ey9Uh/IdpcQplODdO/kENaMIWsD0nJm4+wX3UNLHA== @@ -4340,6 +4335,11 @@ commander@3.0.2: resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== +commander@^10.0.0: + version "10.0.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" + integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== + commander@^2.19.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" @@ -4471,6 +4471,16 @@ cosmiconfig@^5.0.7: js-yaml "^3.13.1" parse-json "^4.0.0" +cosmiconfig@^8.0.0: + version "8.3.6" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3" + integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== + dependencies: + import-fresh "^3.3.0" + js-yaml "^4.1.0" + parse-json "^5.2.0" + path-type "^4.0.0" + cpu-features@~0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/cpu-features/-/cpu-features-0.0.4.tgz#0023475bb4f4c525869c162e4108099e35bf19d8" @@ -6214,6 +6224,11 @@ fast-diff@^1.1.2: resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== +fast-diff@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" + integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== + fast-glob@^3.0.3, fast-glob@^3.2.9: version "3.2.12" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" @@ -6789,6 +6804,17 @@ glob@^7.0.0, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@~7.2.3: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^8.0.3: + version "8.1.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + glob@~7.1.2: version "7.1.7" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" @@ -7289,7 +7315,7 @@ ignore@^4.0.6: resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -ignore@^5.1.1: +ignore@^5.1.1, ignore@^5.2.4: version "5.2.4" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== @@ -7327,7 +7353,7 @@ import-fresh@^2.0.0: caller-path "^2.0.0" resolve-from "^3.0.0" -import-fresh@^3.0.0, import-fresh@^3.2.1: +import-fresh@^3.0.0, import-fresh@^3.2.1, import-fresh@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== @@ -8252,7 +8278,7 @@ js-yaml@3.x, js-yaml@^3.12.0, js-yaml@^3.13.0, js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@4.1.0: +js-yaml@4.1.0, js-yaml@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== @@ -9266,6 +9292,13 @@ minimatch@5.0.1: dependencies: brace-expansion "^2.0.1" +minimatch@^5.0.1: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + minimatch@~3.0.4: version "3.0.8" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.8.tgz#5e6a59bd11e2ab0de1cfb843eb2d82e546c321c1" @@ -10254,6 +10287,11 @@ pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" +pluralize@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" + integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== + posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" @@ -10284,6 +10322,13 @@ prepend-http@^2.0.0: resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" integrity sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA== +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" + prettier-plugin-solidity@=1.0.0-dev.22: version "1.0.0-dev.22" resolved "https://registry.yarnpkg.com/prettier-plugin-solidity/-/prettier-plugin-solidity-1.0.0-dev.22.tgz#08c07816884d17bd9171c073c2421559057230c3" @@ -10296,6 +10341,15 @@ prettier-plugin-solidity@=1.0.0-dev.22: solidity-comments-extractor "^0.0.7" string-width "^4.2.3" +prettier-plugin-solidity@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/prettier-plugin-solidity/-/prettier-plugin-solidity-1.1.3.tgz#9a35124f578404caf617634a8cab80862d726cba" + integrity sha512-fQ9yucPi2sBbA2U2Xjh6m4isUTJ7S7QLc/XDDsktqqxYfTwdYKJ0EnnywXHwCGAaYbQNK+HIYPL1OemxuMsgeg== + dependencies: + "@solidity-parser/parser" "^0.16.0" + semver "^7.3.8" + solidity-comments-extractor "^0.0.7" + prettier@^1.14.3, prettier@^1.18.2: version "1.19.1" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" @@ -10311,6 +10365,11 @@ prettier@^2.3.2: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== +prettier@^2.8.3, prettier@^2.8.8: + version "2.8.8" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== + pretty-format@^29.0.0, pretty-format@^29.2.1: version "29.2.1" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.2.1.tgz#86e7748fe8bbc96a6a4e04fa99172630907a9611" @@ -11132,6 +11191,13 @@ semver@^7.3.4: dependencies: lru-cache "^6.0.0" +semver@^7.3.8, semver@^7.5.2: + version "7.5.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + dependencies: + lru-cache "^6.0.0" + semver@~5.4.1: version "5.4.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" @@ -11422,6 +11488,13 @@ solc@^0.6.3: semver "^5.5.0" tmp "0.0.33" +solhint-plugin-prettier@^0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/solhint-plugin-prettier/-/solhint-plugin-prettier-0.0.5.tgz#e3b22800ba435cd640a9eca805a7f8bc3e3e6a6b" + integrity sha512-7jmWcnVshIrO2FFinIvDQmhQpfpS2rRRn3RejiYgnjIE68xO2bvrYvjqVNfrio4xH9ghOqn83tKuTzLjEbmGIA== + dependencies: + prettier-linter-helpers "^1.0.0" + solhint@^3.3.2: version "3.3.7" resolved "https://registry.yarnpkg.com/solhint/-/solhint-3.3.7.tgz#b5da4fedf7a0fee954cb613b6c55a5a2b0063aa7" @@ -11444,6 +11517,31 @@ solhint@^3.3.2: optionalDependencies: prettier "^1.14.3" +solhint@^3.6.2: + version "3.6.2" + resolved "https://registry.yarnpkg.com/solhint/-/solhint-3.6.2.tgz#2b2acbec8fdc37b2c68206a71ba89c7f519943fe" + integrity sha512-85EeLbmkcPwD+3JR7aEMKsVC9YrRSxd4qkXuMzrlf7+z2Eqdfm1wHWq1ffTuo5aDhoZxp2I9yF3QkxZOxOL7aQ== + dependencies: + "@solidity-parser/parser" "^0.16.0" + ajv "^6.12.6" + antlr4 "^4.11.0" + ast-parents "^0.0.1" + chalk "^4.1.2" + commander "^10.0.0" + cosmiconfig "^8.0.0" + fast-diff "^1.2.0" + glob "^8.0.3" + ignore "^5.2.4" + js-yaml "^4.1.0" + lodash "^4.17.21" + pluralize "^8.0.0" + semver "^7.5.2" + strip-ansi "^6.0.1" + table "^6.8.1" + text-table "^0.2.0" + optionalDependencies: + prettier "^2.8.3" + solidity-comments-extractor@^0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/solidity-comments-extractor/-/solidity-comments-extractor-0.0.7.tgz#99d8f1361438f84019795d928b931f4e5c39ca19" @@ -11944,7 +12042,7 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" -table@^6.0.9, table@^6.8.0: +table@^6.0.9, table@^6.8.0, table@^6.8.1: version "6.8.1" resolved "https://registry.yarnpkg.com/table/-/table-6.8.1.tgz#ea2b71359fe03b017a5fbc296204471158080bdf" integrity sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA== From 1ba1b5ef696d27ccd061d4b10f3b972b73256d77 Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Fri, 29 Sep 2023 16:01:28 +0200 Subject: [PATCH 002/108] change verifier --- contracts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts b/contracts index a0da7f11171..70bb1c82b2b 160000 --- a/contracts +++ b/contracts @@ -1 +1 @@ -Subproject commit a0da7f111710bfede493da2d9ffab57cda89070c +Subproject commit 70bb1c82b2be6ba7c56e833a57f3b1703872432b From 9557e3e3f6505c6e2ccbcd98242948e844baaf59 Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Fri, 29 Sep 2023 16:11:41 +0200 Subject: [PATCH 003/108] roll back changes --- contracts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts b/contracts index 70bb1c82b2b..a0da7f11171 160000 --- a/contracts +++ b/contracts @@ -1 +1 @@ -Subproject commit 70bb1c82b2be6ba7c56e833a57f3b1703872432b +Subproject commit a0da7f111710bfede493da2d9ffab57cda89070c From 6bfa1bfb92722f74f14c2624d6c041929c4e919f Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Sun, 1 Oct 2023 22:47:50 +0200 Subject: [PATCH 004/108] fix issues with detecting upgrades --- .../eth_watch/event_processors/upgrades.rs | 12 +++++- core/tests/ts-integration/package.json | 5 ++- .../ts-integration/scripts/compile-yul.ts | 18 ++++---- yarn.lock | 42 ++++++++++++++++++- 4 files changed, 67 insertions(+), 10 deletions(-) diff --git a/core/lib/zksync_core/src/eth_watch/event_processors/upgrades.rs b/core/lib/zksync_core/src/eth_watch/event_processors/upgrades.rs index 4ccef8c00b0..64ffdcba9e5 100644 --- a/core/lib/zksync_core/src/eth_watch/event_processors/upgrades.rs +++ b/core/lib/zksync_core/src/eth_watch/event_processors/upgrades.rs @@ -4,7 +4,7 @@ use crate::eth_watch::{ }; use std::convert::TryFrom; use std::time::Instant; -use zksync_contracts::governance_contract; +use zksync_contracts::{governance_contract, zksync_contract}; use zksync_dal::StorageProcessor; use zksync_types::{ protocol_version::GovernanceOperation, web3::types::Log, Address, ProtocolUpgrade, @@ -17,6 +17,7 @@ pub struct UpgradesEventProcessor { diamond_proxy_address: Address, last_seen_version_id: ProtocolVersionId, upgrade_proposal_signature: H256, + execute_upgrade_short_signature: [u8; 4], } impl UpgradesEventProcessor { @@ -28,6 +29,10 @@ impl UpgradesEventProcessor { .event("TransparentOperationScheduled") .expect("TransparentOperationScheduled event is missing in abi") .signature(), + execute_upgrade_short_signature: zksync_contract() + .function("executeUpgrade") + .unwrap() + .short_signature(), } } } @@ -53,8 +58,13 @@ impl EventProcessor for UpgradesEventProcessor { .into_iter() .filter(|call| call.target == self.diamond_proxy_address) { + if call.data.len() < 4 || &call.data[..4] != &self.execute_upgrade_short_signature { + continue; + } + let upgrade = ProtocolUpgrade::try_from(call) .map_err(|err| Error::LogParse(format!("{:?}", err)))?; + // Scheduler VK is not present in proposal event. It is hardcoded in verifier contract. let scheduler_vk_hash = if let Some(address) = upgrade.verifier_address { Some(client.scheduler_vk_hash(address).await?) diff --git a/core/tests/ts-integration/package.json b/core/tests/ts-integration/package.json index b039cb4978b..62976a00e91 100644 --- a/core/tests/ts-integration/package.json +++ b/core/tests/ts-integration/package.json @@ -12,7 +12,7 @@ }, "devDependencies": { "@matterlabs/hardhat-zksync-deploy": "^0.6.1", - "@matterlabs/hardhat-zksync-solc": "^0.3.15", + "@matterlabs/hardhat-zksync-solc": "0.4.2", "@matterlabs/hardhat-zksync-vyper": "^0.2.0", "@nomiclabs/hardhat-vyper": "^3.0.3", "@types/jest": "^29.0.3", @@ -29,5 +29,8 @@ "ts-node": "^10.1.0", "typescript": "^4.3.5", "zksync-web3": "link:../../../sdk/zksync-web3.js" + }, + "dependencies": { + "@matterlabs/hardhat-zksync-solc": "0.4.2" } } diff --git a/core/tests/ts-integration/scripts/compile-yul.ts b/core/tests/ts-integration/scripts/compile-yul.ts index 0b47f8689cf..c263985d8a9 100644 --- a/core/tests/ts-integration/scripts/compile-yul.ts +++ b/core/tests/ts-integration/scripts/compile-yul.ts @@ -1,23 +1,27 @@ import * as hre from 'hardhat'; import * as fs from 'fs'; -import { spawn as _spawn } from 'child_process'; +import { exec as _exec, spawn as _spawn } from 'child_process'; -import { getZksolcPath, getZksolcUrl, saltFromUrl } from '@matterlabs/hardhat-zksync-solc'; +import { getZksolcUrl, saltFromUrl } from '@matterlabs/hardhat-zksync-solc'; +import { getCompilersDir } from 'hardhat/internal/util/global-dir'; +import path from 'path'; const COMPILER_VERSION = '1.3.14'; const IS_COMPILER_PRE_RELEASE = false; async function compilerLocation(): Promise { + const compilersCache = await getCompilersDir(); + + let salt = ''; + if (IS_COMPILER_PRE_RELEASE) { const url = getZksolcUrl('https://github.com/matter-labs/zksolc-prerelease', hre.config.zksolc.version); - const salt = saltFromUrl(url); - return await getZksolcPath(COMPILER_VERSION, salt); - } else { - return await getZksolcPath(COMPILER_VERSION, ''); + salt = saltFromUrl(url); } + + return path.join(compilersCache, 'zksolc', `zksolc-v${COMPILER_VERSION}${salt ? '-' : ''}${salt}`); } -// executes a command in a new shell // but pipes data to parent's stdout/stderr export function spawn(command: string) { command = command.replace(/\n/g, ' '); diff --git a/yarn.lock b/yarn.lock index 1c3b08bf03c..bde3f68cd50 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1393,6 +1393,18 @@ chalk "4.1.2" dockerode "^3.3.4" +"@matterlabs/hardhat-zksync-solc@0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@matterlabs/hardhat-zksync-solc/-/hardhat-zksync-solc-0.4.2.tgz#64121082e88c5ab22eb4e9594d120e504f6af499" + integrity sha512-6NFWPSZiOAoo7wNuhMg4ztj7mMEH+tLrx09WuCbcURrHPijj/KxYNsJD6Uw5lapKr7G8H7SQISGid1/MTXVmXQ== + dependencies: + "@nomiclabs/hardhat-docker" "^2.0.0" + chalk "4.1.2" + dockerode "^3.3.4" + fs-extra "^11.1.1" + proper-lockfile "^4.1.2" + semver "^7.5.1" + "@matterlabs/hardhat-zksync-solc@^0.3.15": version "0.3.16" resolved "https://registry.yarnpkg.com/@matterlabs/hardhat-zksync-solc/-/hardhat-zksync-solc-0.3.16.tgz#dd8ed44f1a580f282794a15fee995f418b040158" @@ -6528,6 +6540,15 @@ fs-extra@^0.30.0: path-is-absolute "^1.0.0" rimraf "^2.2.8" +fs-extra@^11.1.1: + version "11.1.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.1.tgz#da69f7c39f3b002378b0954bb6ae7efdc0876e2d" + integrity sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs-extra@^4.0.2, fs-extra@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" @@ -6947,6 +6968,11 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== +graceful-fs@^4.2.4: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + "graceful-readlink@>= 1.0.0": version "1.0.1" resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" @@ -10422,6 +10448,15 @@ prompts@^2.0.1: kleur "^3.0.3" sisteransi "^1.0.5" +proper-lockfile@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/proper-lockfile/-/proper-lockfile-4.1.2.tgz#c8b9de2af6b2f1601067f98e01ac66baa223141f" + integrity sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA== + dependencies: + graceful-fs "^4.2.4" + retry "^0.12.0" + signal-exit "^3.0.2" + proxy-addr@~2.0.7: version "2.0.7" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" @@ -11001,6 +11036,11 @@ ret@~0.1.10: resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== + reusify@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" @@ -11191,7 +11231,7 @@ semver@^7.3.4: dependencies: lru-cache "^6.0.0" -semver@^7.3.8, semver@^7.5.2: +semver@^7.3.8, semver@^7.5.1, semver@^7.5.2: version "7.5.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== From 14268bab4ae38f557e0c75df9e7ca940cd9c027e Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Mon, 2 Oct 2023 17:56:55 +0200 Subject: [PATCH 005/108] fix CI --- core/lib/zksync_core/src/eth_watch/tests.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/core/lib/zksync_core/src/eth_watch/tests.rs b/core/lib/zksync_core/src/eth_watch/tests.rs index d14b1754b2f..49f1fb4f8ca 100644 --- a/core/lib/zksync_core/src/eth_watch/tests.rs +++ b/core/lib/zksync_core/src/eth_watch/tests.rs @@ -609,7 +609,12 @@ fn upgrade_into_log(upgrade: ProtocolUpgrade, eth_block: u64) -> Log { ), ]); - let diamond_upgrade_calldata = vec![0u8; 4] + let execute_upgrade_selector = zksync_contract() + .function("executeUpgrade") + .unwrap() + .short_signature(); + let diamond_upgrade_calldata = execute_upgrade_selector + .to_vec() .into_iter() .chain(encode(&[diamond_cut])) .collect(); From 3930c5d61dcb850b651b5fa0e3746717dfaa6377 Mon Sep 17 00:00:00 2001 From: Marcin M <128217157+mm-zk@users.noreply.github.com> Date: Wed, 4 Oct 2023 14:10:58 +0200 Subject: [PATCH 006/108] chore(ci): Fixing CI (#150) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # What ❔ * Fixing compilation error in Cargo * and clippy warning ## Why ❔ * To make CI pass --- core/lib/mini_merkle_tree/src/lib.rs | 2 + prover/Cargo.lock | 260 +++++++++------------------ 2 files changed, 91 insertions(+), 171 deletions(-) diff --git a/core/lib/mini_merkle_tree/src/lib.rs b/core/lib/mini_merkle_tree/src/lib.rs index 2826e071f10..1195b889458 100644 --- a/core/lib/mini_merkle_tree/src/lib.rs +++ b/core/lib/mini_merkle_tree/src/lib.rs @@ -86,6 +86,8 @@ impl<'a, const LEAF_SIZE: usize> MiniMerkleTree<'a, LEAF_SIZE> { } /// Returns the root hash of this tree. + /// # Panics + /// Will panic if the constant below is invalid. pub fn merkle_root(self) -> H256 { if self.hashes.is_empty() { H256::from_str("fef7bd9f889811e59e4076a0174087135f080177302763019adaf531257e3a87") diff --git a/prover/Cargo.lock b/prover/Cargo.lock index 0c161a94dc7..353513a507f 100644 --- a/prover/Cargo.lock +++ b/prover/Cargo.lock @@ -212,7 +212,7 @@ checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" dependencies = [ "async-stream-impl", "futures-core", - "pin-project-lite 0.2.13", + "pin-project-lite", ] [[package]] @@ -281,7 +281,7 @@ dependencies = [ "fastrand 1.9.0", "futures-core", "pin-project", - "tokio 1.32.0", + "tokio", ] [[package]] @@ -349,7 +349,7 @@ dependencies = [ [[package]] name = "bellman_ce" version = "0.3.2" -source = "git+https://github.com/matter-labs/bellman?branch=snark-wrapper#eb435a580189eacded001b494f9aa918d76cd60b" +source = "git+https://github.com/matter-labs/bellman?branch=snark-wrapper#e01e5fa08a97a113e76ec8a69d06fe6cc2c82d17" dependencies = [ "arrayvec 0.7.4", "bit-vec", @@ -434,29 +434,6 @@ dependencies = [ "syn 2.0.33", ] -[[package]] -name = "bindgen" -version = "0.68.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "726e4313eb6ec35d2730258ad4e15b547ee75d6afaa1361a922e78e59b7d8078" -dependencies = [ - "bitflags 2.4.0", - "cexpr", - "clang-sys", - "lazy_static", - "lazycell", - "log", - "peeking_take_while", - "prettyplease", - "proc-macro2 1.0.67", - "quote 1.0.33", - "regex", - "rustc-hash", - "shlex", - "syn 2.0.33", - "which", -] - [[package]] name = "bit-set" version = "0.5.3" @@ -555,7 +532,7 @@ dependencies = [ [[package]] name = "blake2s_const" version = "0.6.0" -source = "git+https://github.com/matter-labs/bellman?branch=snark-wrapper#eb435a580189eacded001b494f9aa918d76cd60b" +source = "git+https://github.com/matter-labs/bellman?branch=snark-wrapper#e01e5fa08a97a113e76ec8a69d06fe6cc2c82d17" dependencies = [ "arrayref", "arrayvec 0.5.2", @@ -611,16 +588,16 @@ checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" [[package]] name = "boojum" version = "0.1.0" -source = "git+https://github.com/matter-labs/boojum?branch=main#2aad0b6899863865da91f1c530d6d47a852e93ad" +source = "git+https://github.com/matter-labs/era-boojum?branch=main#2771569baab9a59690d88cee6ba9b295c8a1e4c4" dependencies = [ "arrayvec 0.7.4", "bincode", "blake2 0.10.6", "const_format", - "convert_case 0.6.0", + "convert_case 0.4.0", "crossbeam 0.8.2", "crypto-bigint 0.5.3", - "cs_derive 0.1.0 (git+https://github.com/matter-labs/boojum?branch=main)", + "cs_derive 0.1.0 (git+https://github.com/matter-labs/era-boojum?branch=main)", "derivative", "ethereum-types 0.14.1", "firestorm", @@ -643,7 +620,7 @@ dependencies = [ [[package]] name = "boojum-cuda" version = "0.1.0" -source = "git+https://github.com/matter-labs/boojum-cuda?branch=main#c3b5008116a906724ff86ff187a1524e294cd70a" +source = "git+https://github.com/matter-labs/era-boojum-cuda?branch=main#75ee5596114bd7fcb7df08b834e64123522653e1" dependencies = [ "boojum", "cmake", @@ -677,12 +654,6 @@ version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" -[[package]] -name = "bytes" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38" - [[package]] name = "bytes" version = "1.5.0" @@ -942,7 +913,7 @@ version = "4.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" dependencies = [ - "bytes 1.5.0", + "bytes", "memchr", ] @@ -1285,7 +1256,7 @@ dependencies = [ [[package]] name = "cs_derive" version = "0.1.0" -source = "git+https://github.com/matter-labs/boojum?branch=main#2aad0b6899863865da91f1c530d6d47a852e93ad" +source = "git+https://github.com/matter-labs/era-boojum?branch=main#2771569baab9a59690d88cee6ba9b295c8a1e4c4" dependencies = [ "proc-macro-error", "proc-macro2 1.0.67", @@ -1327,7 +1298,7 @@ dependencies = [ [[package]] name = "cudart" version = "0.1.0" -source = "git+https://github.com/matter-labs/boojum-cuda?branch=main#c3b5008116a906724ff86ff187a1524e294cd70a" +source = "git+https://github.com/matter-labs/era-boojum-cuda?branch=main#75ee5596114bd7fcb7df08b834e64123522653e1" dependencies = [ "bitflags 2.4.0", "criterion", @@ -1337,9 +1308,9 @@ dependencies = [ [[package]] name = "cudart-sys" version = "0.1.0" -source = "git+https://github.com/matter-labs/boojum-cuda?branch=main#c3b5008116a906724ff86ff187a1524e294cd70a" +source = "git+https://github.com/matter-labs/era-boojum-cuda?branch=main#75ee5596114bd7fcb7df08b834e64123522653e1" dependencies = [ - "bindgen 0.68.1", + "bindgen 0.59.2", ] [[package]] @@ -1877,37 +1848,7 @@ dependencies = [ [[package]] name = "franklin-crypto" version = "0.0.5" -source = "git+https://github.com/matter-labs/franklin-crypto?branch=dev#5922873d25ecec827cd60420ca8cd84a188bb965" -dependencies = [ - "arr_macro", - "bellman_ce 0.3.2 (git+https://github.com/matter-labs/bellman?branch=dev)", - "bit-vec", - "blake2 0.9.2", - "blake2-rfc_bellman_edition", - "blake2s_simd", - "byteorder", - "digest 0.9.0", - "hex", - "indexmap 1.9.3", - "itertools 0.10.5", - "lazy_static", - "num-bigint 0.4.4", - "num-derive 0.2.5", - "num-integer", - "num-traits", - "rand 0.4.6", - "serde", - "sha2 0.9.9", - "sha3 0.9.1", - "smallvec", - "splitmut", - "tiny-keccak 1.5.0", -] - -[[package]] -name = "franklin-crypto" -version = "0.0.5" -source = "git+https://github.com/matter-labs/franklin-crypto?branch=snark_wrapper#6eaf7f71468725569e23ca9dea5d894d84b18998" +source = "git+https://github.com/matter-labs/franklin-crypto?branch=snark_wrapper#b1f1677d9ece6a6ddcfbf394dc2db2bd8b792e6c" dependencies = [ "arr_macro", "bellman_ce 0.3.2 (git+https://github.com/matter-labs/bellman?branch=snark-wrapper)", @@ -2074,7 +2015,7 @@ dependencies = [ "futures-sink", "futures-task", "memchr", - "pin-project-lite 0.2.13", + "pin-project-lite", "pin-utils", "slab", ] @@ -2140,7 +2081,7 @@ dependencies = [ "serde_json", "thiserror", "time", - "tokio 1.32.0", + "tokio", "tracing", "urlencoding", ] @@ -2153,7 +2094,7 @@ checksum = "96e4ad0802d3f416f62e7ce01ac1460898ee0efc98f8b45cd4aab7611607012f" dependencies = [ "reqwest", "thiserror", - "tokio 1.32.0", + "tokio", ] [[package]] @@ -2164,7 +2105,7 @@ checksum = "215abab97e07d144428425509c1dad07e57ea72b84b21bcdb6a8a5f12a5c4932" dependencies = [ "async-stream", "base64 0.21.4", - "bytes 1.5.0", + "bytes", "futures-util", "google-cloud-auth", "google-cloud-metadata", @@ -2181,7 +2122,7 @@ dependencies = [ "sha2 0.10.6", "thiserror", "time", - "tokio 1.32.0", + "tokio", "tracing", "url", ] @@ -2201,7 +2142,7 @@ version = "0.1.0" source = "git+https://github.com/matter-labs/era-heavy-ops-service.git?branch=v1.3.3#0dd1f5dbba7eee194e660dfaaaf026a174e5ad9e" dependencies = [ "bindgen 0.59.2", - "crossbeam 0.7.3", + "crossbeam 0.8.2", "derivative", "futures 0.3.28", "futures-locks", @@ -2215,7 +2156,7 @@ source = "git+https://github.com/matter-labs/era-heavy-ops-service.git?branch=v1 dependencies = [ "bit-vec", "cfg-if 1.0.0", - "crossbeam 0.7.3", + "crossbeam 0.8.2", "franklin-crypto 0.0.5 (git+https://github.com/matter-labs/franklin-crypto?branch=dev)", "gpu-ffi", "itertools 0.11.0", @@ -2241,7 +2182,7 @@ version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833" dependencies = [ - "bytes 1.5.0", + "bytes", "fnv", "futures-core", "futures-sink", @@ -2249,7 +2190,7 @@ dependencies = [ "http", "indexmap 1.9.3", "slab", - "tokio 1.32.0", + "tokio", "tokio-util", "tracing", ] @@ -2320,7 +2261,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06683b93020a07e3dbcf5f8c0f6d40080d725bea7936fc01ad345c01b97dc270" dependencies = [ "base64 0.21.4", - "bytes 1.5.0", + "bytes", "headers-core", "http", "httpdate", @@ -2430,7 +2371,7 @@ version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" dependencies = [ - "bytes 1.5.0", + "bytes", "fnv", "itoa", ] @@ -2441,9 +2382,9 @@ version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" dependencies = [ - "bytes 1.5.0", + "bytes", "http", - "pin-project-lite 0.2.13", + "pin-project-lite", ] [[package]] @@ -2470,7 +2411,7 @@ version = "0.14.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" dependencies = [ - "bytes 1.5.0", + "bytes", "futures-channel", "futures-core", "futures-util", @@ -2480,9 +2421,9 @@ dependencies = [ "httparse", "httpdate", "itoa", - "pin-project-lite 0.2.13", + "pin-project-lite", "socket2 0.4.9", - "tokio 1.32.0", + "tokio", "tower-service", "tracing", "want", @@ -2498,7 +2439,7 @@ dependencies = [ "http", "hyper", "rustls", - "tokio 1.32.0", + "tokio", "tokio-rustls", ] @@ -2508,10 +2449,10 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" dependencies = [ - "bytes 1.5.0", + "bytes", "hyper", "native-tls", - "tokio 1.32.0", + "tokio", "tokio-native-tls", ] @@ -2831,9 +2772,9 @@ version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc28438cad73dcc90ff3466fc329a9252b1b8ba668eb0d5668ba97088cf4eef0" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.33", ] [[package]] @@ -2950,7 +2891,7 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a4964177ddfdab1e3a2b37aec7cf320e14169abb0ed73999f558136409178d5" dependencies = [ - "base64 0.21.2", + "base64 0.21.4", "hyper", "indexmap 1.9.3", "ipnet", @@ -2958,7 +2899,7 @@ dependencies = [ "metrics-util", "quanta", "thiserror", - "tokio 1.32.0", + "tokio", "tracing", ] @@ -2970,7 +2911,7 @@ checksum = "ddece26afd34c31585c74a4db0630c376df271c285d682d1e55012197830b6df" dependencies = [ "proc-macro2 1.0.67", "quote 1.0.33", - "syn 1.0.109", + "syn 2.0.33", ] [[package]] @@ -3712,12 +3653,6 @@ dependencies = [ "syn 2.0.33", ] -[[package]] -name = "pin-project-lite" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "257b64915a082f7811703966789728173279bdebb956b143dbcd23f6f970a777" - [[package]] name = "pin-project-lite" version = "0.2.13" @@ -3796,15 +3731,6 @@ dependencies = [ "plotters-backend", ] -[[package]] -name = "portable-atomic" -version = "0.3.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e30165d31df606f5726b090ec7592c308a0eaf61721ff64c9a3018e344a8753e" -dependencies = [ - "portable-atomic 1.4.3", -] - [[package]] name = "portable-atomic" version = "1.4.3" @@ -3929,9 +3855,9 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.33", ] [[package]] @@ -3941,8 +3867,8 @@ dependencies = [ "anyhow", "metrics", "metrics-exporter-prometheus", - "tokio 1.32.0", - "tracing", + "tokio", + "vise-exporter", ] [[package]] @@ -4367,7 +4293,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3e9ad3fe7488d7e34558a2033d45a0c90b72d97b4f80705666fea71472e2e6a1" dependencies = [ "base64 0.21.4", - "bytes 1.5.0", + "bytes", "encoding_rs", "futures-core", "futures-util", @@ -4385,13 +4311,13 @@ dependencies = [ "native-tls", "once_cell", "percent-encoding", - "pin-project-lite 0.2.13", + "pin-project-lite", "rustls", "rustls-pemfile", "serde", "serde_json", "serde_urlencoded", - "tokio 1.32.0", + "tokio", "tokio-native-tls", "tokio-rustls", "tokio-util", @@ -4408,7 +4334,7 @@ dependencies = [ [[package]] name = "rescue_poseidon" version = "0.4.1" -source = "git+https://github.com/matter-labs/rescue-poseidon.git?branch=poseidon2#d6903256fa17815b86d4d78ddcae9e5cd920e22c" +source = "git+https://github.com/matter-labs/rescue-poseidon.git?branch=poseidon2#09b96e7e82dadac151d8d681f017cb6a16961801" dependencies = [ "addchain", "arrayvec 0.7.4", @@ -4491,7 +4417,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" dependencies = [ - "bytes 1.5.0", + "bytes", "rustc-hex", ] @@ -4777,7 +4703,7 @@ dependencies = [ "sentry-debug-images", "sentry-panic", "sentry-tracing", - "tokio 1.32.0", + "tokio", "ureq", ] @@ -5033,7 +4959,7 @@ dependencies = [ [[package]] name = "shivini" version = "0.1.0" -source = "git+https://github.com/matter-labs/shivini.git?branch=main#9b5afd6686bcb15b4070a91b215fbef2a4fd9c9f" +source = "git+https://github.com/matter-labs/era-shivini.git?branch=main#8858445eafa3dd90e856c4a2834234625e77152a" dependencies = [ "bincode", "blake2 0.10.6", @@ -5128,11 +5054,12 @@ dependencies = [ [[package]] name = "snark_wrapper" version = "0.1.0" -source = "git+https://github.com/matter-labs/snark-wrapper.git?branch=main#9929fefddaedc48716bdcaf716134c552ab24a26" +source = "git+https://github.com/matter-labs/snark-wrapper.git?branch=main#450ea6c9f3ede11e149b86ad3a072e673f9846e7" dependencies = [ "boojum", "derivative", "franklin-crypto 0.0.5 (git+https://github.com/matter-labs/franklin-crypto?branch=snark_wrapper)", + "rand 0.4.6", "rescue_poseidon 0.4.1 (git+https://github.com/matter-labs/rescue-poseidon.git?branch=poseidon2)", ] @@ -5221,7 +5148,7 @@ dependencies = [ "bigdecimal", "bitflags 1.3.2", "byteorder", - "bytes 1.5.0", + "bytes", "chrono", "crc", "crossbeam-queue 0.3.8", @@ -5292,7 +5219,7 @@ checksum = "4db708cd3e459078f85f39f96a00960bd841f66ee2a669e90bf36907f5a79aae" dependencies = [ "native-tls", "once_cell", - "tokio 1.32.0", + "tokio", "tokio-native-tls", ] @@ -5597,17 +5524,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" -[[package]] -name = "tokio" -version = "0.2.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6703a273949a90131b290be1fe7b039d0fc884aa1935860dfcbe056f28cd8092" -dependencies = [ - "bytes 0.5.6", - "pin-project-lite 0.1.12", - "slab", -] - [[package]] name = "tokio" version = "1.32.0" @@ -5615,12 +5531,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9" dependencies = [ "backtrace", - "bytes 1.5.0", + "bytes", "libc", "mio", "num_cpus", "parking_lot 0.12.1", - "pin-project-lite 0.2.13", + "pin-project-lite", "signal-hook-registry", "socket2 0.5.4", "tokio-macros", @@ -5645,7 +5561,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" dependencies = [ "native-tls", - "tokio 1.32.0", + "tokio", ] [[package]] @@ -5655,7 +5571,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ "rustls", - "tokio 1.32.0", + "tokio", ] [[package]] @@ -5665,8 +5581,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" dependencies = [ "futures-core", - "pin-project-lite 0.2.13", - "tokio 1.32.0", + "pin-project-lite", + "tokio", ] [[package]] @@ -5675,11 +5591,11 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" dependencies = [ - "bytes 1.5.0", + "bytes", "futures-core", "futures-sink", - "pin-project-lite 0.2.13", - "tokio 1.32.0", + "pin-project-lite", + "tokio", "tracing", ] @@ -5724,7 +5640,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" dependencies = [ "cfg-if 1.0.0", - "pin-project-lite 0.2.13", + "pin-project-lite", "tracing-attributes", "tracing-core", ] @@ -6014,9 +5930,9 @@ name = "vise-macros" version = "0.1.0" source = "git+https://github.com/matter-labs/vise.git?rev=9d097ab747b037b6e62504df1db5b975425b6bdd#9d097ab747b037b6e62504df1db5b975425b6bdd" dependencies = [ - "proc-macro2 1.0.66", - "quote 1.0.32", - "syn 2.0.28", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.33", ] [[package]] @@ -6210,7 +6126,7 @@ checksum = "5388522c899d1e1c96a4c307e3797e0f697ba7c77dd8e0e625ecba9dd0342937" dependencies = [ "arrayvec 0.7.4", "base64 0.21.4", - "bytes 1.5.0", + "bytes", "derive_more", "ethabi", "ethereum-types 0.14.1", @@ -6490,7 +6406,7 @@ dependencies = [ [[package]] name = "zkevm_opcode_defs" version = "1.3.2" -source = "git+https://github.com/matter-labs/zkevm_opcode_defs.git?branch=v1.3.2#667b5acbe161b2d2e478bf90914b715afc29b601" +source = "git+https://github.com/matter-labs/era-zkevm_opcode_defs.git?branch=v1.3.2#c7ab62f4c60b27dfc690c3ab3efb5fff1ded1a25" dependencies = [ "bitflags 2.4.0", "blake2 0.10.6", @@ -6573,7 +6489,8 @@ dependencies = [ "metrics", "serde_json", "thiserror", - "tokio 1.32.0", + "tokio", + "tracing", "zksync_config", "zksync_contracts", "zksync_dal", @@ -6593,7 +6510,8 @@ dependencies = [ "prometheus_exporter", "prover-service", "structopt", - "tokio 1.32.0", + "thiserror", + "tokio", "tracing", "vlog", "zkevm_test_harness 1.3.3", @@ -6669,7 +6587,7 @@ dependencies = [ "sqlx", "strum", "thiserror", - "tokio 1.32.0", + "tokio", "tracing", "vise", "zksync_config", @@ -6689,7 +6607,7 @@ dependencies = [ "jsonrpc-core", "serde", "thiserror", - "tokio 1.32.0", + "tokio", "tracing", "vise", "zksync_config", @@ -6724,7 +6642,7 @@ dependencies = [ "futures 0.3.28", "serde", "serde_json", - "tokio 1.32.0", + "tokio", "tracing", ] @@ -6747,8 +6665,7 @@ dependencies = [ "google-cloud-auth", "google-cloud-storage", "http", - "metrics", - "tokio 1.32.0", + "tokio", "tracing", "vise", "zksync_config", @@ -6767,7 +6684,7 @@ dependencies = [ "metrics", "prometheus_exporter", "structopt", - "tokio 1.32.0", + "tokio", "tracing", "vk_setup_data_generator_server_fri", "vlog", @@ -6804,7 +6721,7 @@ dependencies = [ "serde_json", "setup_key_generator_and_server", "thiserror", - "tokio 1.32.0", + "tokio", "tracing", "vlog", "zkevm_test_harness 1.3.3", @@ -6833,7 +6750,7 @@ dependencies = [ "prometheus_exporter", "serde", "shivini", - "tokio 1.32.0", + "tokio", "tracing", "vk_setup_data_generator_server_fri", "vlog", @@ -6862,7 +6779,7 @@ dependencies = [ "prometheus_exporter", "reqwest", "serde", - "tokio 1.32.0", + "tokio", "tracing", "vlog", "zksync_config", @@ -6906,7 +6823,7 @@ dependencies = [ "futures 0.3.28", "regex", "reqwest", - "tokio 1.32.0", + "tokio", "toml_edit 0.14.4", "tracing", "zksync_config", @@ -6921,7 +6838,7 @@ version = "0.1.0" dependencies = [ "anyhow", "async-trait", - "tokio 1.32.0", + "tokio", "tracing", "zksync_utils", ] @@ -6931,8 +6848,9 @@ name = "zksync_state" version = "0.1.0" dependencies = [ "anyhow", + "metrics", "mini-moka", - "tokio 1.32.0", + "tokio", "tracing", "vise", "zksync_dal", @@ -6993,7 +6911,7 @@ dependencies = [ "reqwest", "serde", "thiserror", - "tokio 1.32.0", + "tokio", "tracing", "vlog", "zk_evm 1.3.3", @@ -7036,7 +6954,7 @@ dependencies = [ "serde", "serde_json", "structopt", - "tokio 1.32.0", + "tokio", "tracing", "vk_setup_data_generator_server_fri", "vlog", @@ -7069,7 +6987,7 @@ dependencies = [ "queues", "serde", "structopt", - "tokio 1.32.0", + "tokio", "tracing", "vk_setup_data_generator_server_fri", "vlog", From 2a5c072be8b54acaeb8498eeed8f3229f573d246 Mon Sep 17 00:00:00 2001 From: Marcin M <128217157+mm-zk@users.noreply.github.com> Date: Wed, 4 Oct 2023 14:11:51 +0200 Subject: [PATCH 007/108] feat(prover): Witness change for snark wrapper, updated keys (#151) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # What ❔ * Changed witness for snark wrapper - to pass the previous AUX and META fields * updated snark_wrapper_verification key to the latest version * updated the vk_hash to match the newly generated JSON, and made sure that it is being loaded at genesis. ## Why ❔ * to make boojnet work locally --- core/lib/zksync_core/src/lib.rs | 3 +- etc/env/base/contracts.toml | 2 +- .../snark_verification_scheduler_key.json | 192 +++++++++--------- .../witness_generator/src/basic_circuits.rs | 38 +++- 4 files changed, 134 insertions(+), 101 deletions(-) diff --git a/core/lib/zksync_core/src/lib.rs b/core/lib/zksync_core/src/lib.rs index deb7bfcb6a9..dee14e7a2f1 100644 --- a/core/lib/zksync_core/src/lib.rs +++ b/core/lib/zksync_core/src/lib.rs @@ -139,8 +139,9 @@ pub async fn genesis_init( recursion_circuits_set_vks_hash: contracts_config .recursion_circuits_set_vks_hash, }, + // FIXME: we should have a flag to decide on the type of proofs at genesis. recursion_scheduler_level_vk_hash: contracts_config - .recursion_scheduler_level_vk_hash, + .fri_recursion_scheduler_level_vk_hash, }, }, ) diff --git a/etc/env/base/contracts.toml b/etc/env/base/contracts.toml index 1f26dc5e357..c68c21170c5 100644 --- a/etc/env/base/contracts.toml +++ b/etc/env/base/contracts.toml @@ -40,7 +40,7 @@ L2_WETH_TOKEN_IMPL_ADDR="0x5E6D086F5eC079ADFF4FB3774CDf3e8D6a34F7E9" L2_WETH_TOKEN_PROXY_ADDR="0x5E6D086F5eC079ADFF4FB3774CDf3e8D6a34F7E9" FRI_RECURSION_LEAF_LEVEL_VK_HASH ="0x72167c43a46cf38875b267d67716edc4563861364a3c03ab7aee73498421e828" FRI_RECURSION_NODE_LEVEL_VK_HASH ="0x5a3ef282b21e12fe1f4438e5bb158fc5060b160559c5158c6389d62d9fe3d080" -FRI_RECURSION_SCHEDULER_LEVEL_VK_HASH ="0x201d4c7d8e781d51a3bbd451a43a8f45240bb765b565ae6ce69192d918c3563d" +FRI_RECURSION_SCHEDULER_LEVEL_VK_HASH ="0x4be443afd605a782b6e56d199df2460a025c81b3dea144e135bece83612563f2" [contracts.test] dummy_verifier=true diff --git a/prover/vk_setup_data_generator_server_fri/data/snark_verification_scheduler_key.json b/prover/vk_setup_data_generator_server_fri/data/snark_verification_scheduler_key.json index d6914e6b915..d792b273153 100644 --- a/prover/vk_setup_data_generator_server_fri/data/snark_verification_scheduler_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/snark_verification_scheduler_key.json @@ -6,76 +6,76 @@ "gate_setup_commitments": [ { "x": [ - 2224517667504888251, - 5912818835784168526, - 1111535000905649453, - 319269576845656765 + 3134321788309977316, + 10573132553967014755, + 3001703164893106466, + 381414913732862840 ], "y": [ - 11120788872048639870, - 13123473843834118559, - 11006337926588718399, - 1693094874597911874 + 10023015411950883744, + 6896159948336889230, + 6414240783194755732, + 872372229201319096 ], "infinity": false }, { "x": [ - 5457926983430946348, - 1784628442640157138, - 2074237947226170917, - 3131060963334690615 + 13120971644342103937, + 11793287663204294817, + 3883340854702399708, + 1610760885102732376 ], "y": [ - 18014312862553006877, - 5243048625117866465, - 6340542352833718166, - 2320619889276266916 + 2272149790438908451, + 16362277919451948034, + 11222024348659324185, + 769204936692720831 ], "infinity": false }, { "x": [ - 6347927895162865476, - 5050704860500628368, - 10361897337252099655, - 2828521412425376780 + 17731804648385463364, + 6957978511947926439, + 554530057858945391, + 1554116369209063151 ], "y": [ - 9661852756269533844, - 10526327507022735828, - 11278750718834251862, - 1315379733045685397 + 11068663668443960791, + 4165938511251890045, + 9157185920319394352, + 1356194940161196789 ], "infinity": false }, { "x": [ - 4042671629442164837, - 11959950196860309953, - 2078800086028040039, - 94403960025997529 + 8019563329680255469, + 10443600923825661309, + 10066002756835006084, + 2404912031772130651 ], "y": [ - 3135015680945171083, - 12893163496512433740, - 8699261953191062297, - 3320226233593777137 + 11909280006603456147, + 5818438825251413345, + 15870199885834935123, + 2757108579883054631 ], "infinity": false }, { "x": [ - 4177624058108552844, - 7496286594337546064, - 12327303478390769977, - 1884447338697134452 + 9723414060399071945, + 10180812700717519482, + 7936340440930941206, + 516257686460616129 ], "y": [ - 11592594644619014749, - 1292793399956228893, - 17148866035827453124, - 2259449579930654777 + 567977185774136652, + 4306281713268395827, + 18140207600873092049, + 3061955278209883828 ], "infinity": false }, @@ -96,31 +96,31 @@ }, { "x": [ - 16821965459015940209, - 16502520825403405563, - 4933134856324568875, - 971914902671623933 + 15818628187542915298, + 15402701417353228903, + 4645743436884029384, + 2409582523262225752 ], "y": [ - 8708758630145674281, - 11568462267224108675, - 15920534706957442557, - 2205222521283673407 + 10225110015471016873, + 3480449575574012457, + 13646267911522236018, + 3070086728021966273 ], "infinity": false }, { "x": [ - 13887807756011277977, - 6633952600242750048, - 12933639896153908639, - 1634594860965316349 + 15593293662666768812, + 17768691370516984644, + 17174288836059912543, + 2950415245130983093 ], "y": [ - 5219211762505995590, - 3805451927973946744, - 18239167495029817450, - 1620516238642646611 + 10405941745355450827, + 3865610534756768698, + 563805946543955734, + 1806918679491891699 ], "infinity": false } @@ -128,16 +128,16 @@ "gate_selectors_commitments": [ { "x": [ - 9648237812026707665, - 3394846795043056222, - 4629068839178038498, - 1935924284954725357 + 5354921692103962663, + 10597914855112022168, + 8283977291194706970, + 1254033438787241395 ], "y": [ - 7429667519719510580, - 9655284945806121212, - 10303170318619716429, - 1450391691397826178 + 17990692095059328463, + 7491895001046969405, + 17510882385599010078, + 1762527058736778745 ], "infinity": false }, @@ -160,61 +160,61 @@ "permutation_commitments": [ { "x": [ - 14847495908726407963, - 16855284351914487461, - 18211889533001639981, - 2155135400931744246 + 11073033365046587506, + 17543366073703943346, + 2925375977998636107, + 411355966917613086 ], "y": [ - 10702169610220940865, - 9956121846187196036, - 8949798846882497976, - 2163047794650360669 + 4634938960149933815, + 10038620738808728516, + 5260176309304737799, + 14410327903164543 ], "infinity": false }, { "x": [ - 378831953168999386, - 9293735894762022592, - 14386665413246396021, - 3071878788754443116 + 4505573069708166334, + 3514663015240928368, + 13885581324134225254, + 2759554901468343883 ], "y": [ - 15896087542596050393, - 17239768855300757555, - 1302380423903460425, - 1070516261187880368 + 14766134794032708062, + 3419963379718679828, + 14090109324006346322, + 2080971354192483161 ], "infinity": false }, { "x": [ - 15681530546748660775, - 15325947204107855582, - 6169941741627651138, - 1438247605769128980 + 10034756028637387237, + 13956897381252459181, + 17676764419229650887, + 1786540180828440303 ], "y": [ - 1709841937332991257, - 3205925128833409221, - 10381982057624226277, - 3302314191697651889 + 16234833038341145650, + 1114974762353197748, + 16711158590984748387, + 961724704749485864 ], "infinity": false }, { "x": [ - 7915449484973597791, - 14858122728404062261, - 17806747946577351454, - 1879592080912408858 + 13207237492056542947, + 9498840683026707597, + 13316073393799666368, + 2265958217127439582 ], "y": [ - 15677256576208223457, - 8628800709300512291, - 18168431650113296999, - 252714218130055622 + 9080715171198565366, + 9520983963961194766, + 7885036753736171049, + 3318336507646038340 ], "infinity": false } diff --git a/prover/witness_generator/src/basic_circuits.rs b/prover/witness_generator/src/basic_circuits.rs index 5037d950c29..90f69e13b05 100644 --- a/prover/witness_generator/src/basic_circuits.rs +++ b/prover/witness_generator/src/basic_circuits.rs @@ -496,6 +496,16 @@ async fn generate_witness( .get_l1_batch_header(input.block_number) .await .unwrap().unwrap(); + + let previous_batch_with_metadata = connection + .blocks_dal() + .get_l1_batch_metadata(zksync_types::L1BatchNumber( + input.block_number.checked_sub(1).unwrap(), + )) + .await + .unwrap() + .unwrap(); + let bootloader_code_bytes = connection .storage_dal() .get_factory_dep(header.base_system_contracts_hashes.bootloader) @@ -578,8 +588,17 @@ async fn generate_witness( // The following part is CPU-heavy, so we move it to a separate thread. let rt_handle = tokio::runtime::Handle::current(); - tokio::task::spawn_blocking(move || { - let connection = rt_handle.block_on(connection_pool.access_storage()).unwrap(); + + let ( + basic_circuits, + basic_circuits_public_inputs, + basic_circuits_public_compact_witness, + mut scheduler_witness, + block_aux_witness, + ) = tokio::task::spawn_blocking(move || { + let connection = rt_handle + .block_on(connection_pool.access_storage()) + .unwrap(); let storage = PostgresStorage::new(rt_handle, connection, last_miniblock_number, true); let storage_view = StorageView::new(storage).to_rc_ptr(); let storage_oracle: StorageOracle>, HistoryDisabled> = @@ -600,7 +619,20 @@ async fn generate_witness( ) }) .await - .unwrap() + .unwrap(); + + scheduler_witness.previous_block_meta_hash = + previous_batch_with_metadata.metadata.meta_parameters_hash.0; + scheduler_witness.previous_block_aux_hash = + previous_batch_with_metadata.metadata.aux_data_hash.0; + + ( + basic_circuits, + basic_circuits_public_inputs, + basic_circuits_public_compact_witness, + scheduler_witness, + block_aux_witness, + ) } #[allow(clippy::too_many_arguments)] From d4f292b633ab657fe5db09ffdf9ad832e671a58e Mon Sep 17 00:00:00 2001 From: Marcin M <128217157+mm-zk@users.noreply.github.com> Date: Wed, 4 Oct 2023 14:22:02 +0200 Subject: [PATCH 008/108] feat(boojum): Adding `zk status prover` command (#128) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # What ❔ * Adding zk status prover command to see the current state of FRI prover * mostly focused on local deployments (might require some changes before we run it on boojnet) ## Why ❔ * to better see what's going on in the prover pipeline ## Checklist ```shell zk status prover ``` ![image](https://github.com/matter-labs/zksync-era/assets/128217157/75cf1137-2479-449d-98cd-0eda75091bf6) --- infrastructure/zk/package.json | 4 +- infrastructure/zk/src/index.ts | 2 + infrastructure/zk/src/status.ts | 170 ++++++++++++++++++++++++++++++++ 3 files changed, 175 insertions(+), 1 deletion(-) create mode 100644 infrastructure/zk/src/status.ts diff --git a/infrastructure/zk/package.json b/infrastructure/zk/package.json index 38aaca78400..c7a7ba22ee8 100644 --- a/infrastructure/zk/package.json +++ b/infrastructure/zk/package.json @@ -17,6 +17,7 @@ "dotenv": "^8.2.0", "ethers": "~5.5.0", "node-fetch": "^2.6.1", + "pg": "^8.11.3", "tabtab": "^3.0.2", "zksync-web3": "link:../../sdk/zksync-web3.js" }, @@ -25,8 +26,9 @@ "@types/deep-extend": "^0.4.31", "@types/node": "^14.6.1", "@types/node-fetch": "^2.5.7", + "@types/pg": "^8.10.3", "@types/tabtab": "^3.0.1", "hardhat": "=2.12.4", "typescript": "^4.3.5" } -} +} \ No newline at end of file diff --git a/infrastructure/zk/src/index.ts b/infrastructure/zk/src/index.ts index 479a0889317..ea06029609e 100644 --- a/infrastructure/zk/src/index.ts +++ b/infrastructure/zk/src/index.ts @@ -20,6 +20,7 @@ import { command as config } from './config'; import { command as clean } from './clean'; import { command as db } from './database'; import { command as verifyUpgrade } from './verify-upgrade'; +import { command as status } from './status'; import * as env from './env'; const COMMANDS = [ @@ -44,6 +45,7 @@ const COMMANDS = [ compiler, verifyUpgrade, env.command, + status, completion(program as Command) ]; diff --git a/infrastructure/zk/src/status.ts b/infrastructure/zk/src/status.ts new file mode 100644 index 00000000000..11f8bdf7e26 --- /dev/null +++ b/infrastructure/zk/src/status.ts @@ -0,0 +1,170 @@ +import { Command } from 'commander'; + +import { Pool } from 'pg'; +import { ethers } from 'ethers'; +import { assert } from 'console'; + +// Postgress connection pool - must be intialized later - as the ENV variables are set later. +let pool: Pool | null = null; + +const GETTER_ABI = [ + 'function getTotalBlocksCommitted() view returns (uint256)', + 'function getTotalBlocksVerified() view returns (uint256)' +]; + +const VERIFIER_ABI = ['function verificationKeyHash() view returns (bytes32)']; + +export async function query(text: string, params?: any[]): Promise { + const start = Date.now(); + + const res = await pool!.query(text, params); + const duration = Date.now() - start; + return res; +} + +async function queryAndReturnRows(text: string, params?: any[]): Promise { + const result = await query(text, params); + return result.rows; +} + +async function getProofProgress(l1_batch_number: number) { + const result = await query('select * from prover_jobs_fri where l1_batch_number = $1 ', [l1_batch_number]); + + let successful = 0; + let failed = 0; + let in_progress = 0; + let queued = 0; + + result.rows.forEach((element: { status: string; error: string | undefined }) => { + if (element.status == 'successful') { + successful += 1; + } else { + if (element.error != null) { + failed += 1; + } else { + if (element.status == 'queued') { + queued += 1; + } + if (element.status == 'in_progress') { + in_progress += 1; + } + } + } + }); + + const compression_results = await query('select * from proof_compression_jobs_fri where l1_batch_number = $1 ', [ + l1_batch_number + ]); + + let compression_result_string = ''; + if (compression_results.rowCount == 0) { + compression_result_string = `${redStart}[No compression job found]${resetColor}`; + } else { + if (compression_results.rowCount > 1) { + compression_result_string = `${redStart}[${compression_results.rowCount} compression jobs found - expected just 1]${resetColor}`; + } else { + compression_result_string = `Compression job status: ${compression_results.rows[0].status}`; + } + } + + console.log( + `Proof progress for ${l1_batch_number} : ${successful} successful, ${failed} failed, ${in_progress} in progress, ${queued} queued. ${compression_result_string}` + ); +} + +async function getL1ValidatorStatus(): Promise<[number, number]> { + // Setup a provider + let provider = new ethers.providers.JsonRpcProvider(process.env.ETH_CLIENT_WEB3_URL); + + // Create a contract instance + let contract = new ethers.Contract(process.env.CONTRACTS_DIAMOND_PROXY_ADDR!, GETTER_ABI, provider); + + try { + const blocksCommitted = await contract.getTotalBlocksCommitted(); + const blocksVerified = await contract.getTotalBlocksVerified(); + return [Number(blocksCommitted), Number(blocksVerified)]; + } catch (error) { + console.error(`Error calling L1 contract: ${error}`); + return [-1, -1]; + } +} + +function bytesToHex(bytes: Uint8Array): string { + return bytes.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), ''); +} + +async function compareVerificationKeys() { + // Setup a provider + let provider = new ethers.providers.JsonRpcProvider(process.env.ETH_CLIENT_WEB3_URL); + + // Create a contract instance (diamond proxy doesn't expose this one) + let contract = new ethers.Contract(process.env.CONTRACTS_VERIFIER_ADDR!, VERIFIER_ABI, provider); + let verificationKeyHash; + try { + verificationKeyHash = await contract.verificationKeyHash(); + console.log(`Verification key hash on contract is ${verificationKeyHash}`); + } catch (error) { + console.error(`Error calling L1 contract: ${error}`); + return; + } + + let protocol_version = await query('select recursion_scheduler_level_vk_hash from prover_protocol_versions'); + if (protocol_version.rowCount != 1) { + console.log(`${redStart}Got ${protocol_version.rowCount} rows with protocol versions, expected 1${resetColor}`); + return; + } + let dbHash = '0x' + bytesToHex(protocol_version.rows[0].recursion_scheduler_level_vk_hash); + + console.log(`Verification key in database is ${dbHash}`); + if (dbHash != verificationKeyHash) { + console.log( + `${redStart}Verification hash in DB differs from the one in contract.${resetColor} State keeper might not send prove requests.` + ); + } +} + +const redStart = '\x1b[31m'; +const resetColor = '\x1b[0m'; + +export async function statusProver() { + console.log('==== FRI Prover status ===='); + + pool = new Pool({ connectionString: process.env.DATABASE_URL }); + + if (process.env.ETH_SENDER_SENDER_PROOF_LOADING_MODE != 'FriProofFromGcs') { + console.log(`${redStart}Can only show status for FRI provers.${resetColor}`); + return; + } + const stateKeeperStatus = (await queryAndReturnRows('select min(number), max(number) from l1_batches'))[0]; + + console.log(`State keeper: First batch: ${stateKeeperStatus['min']}, recent batch: ${stateKeeperStatus['max']}`); + const [blockCommited, blockVerified] = await getL1ValidatorStatus(); + console.log(`L1 state: block verified: ${blockVerified}, block committed: ${blockCommited}`); + + assert(blockCommited >= 0); + assert(blockCommited <= stateKeeperStatus['max']); + + if (blockCommited < stateKeeperStatus['max']) { + console.log( + `${redStart}Eth sender is behind - block commited ${blockCommited} is smaller than most recent state keeper batch ${stateKeeperStatus['max']}.${resetColor}` + ); + return; + } + await compareVerificationKeys(); + + const nextBlockForVerification = blockVerified + 1; + + console.log(`Next block that should be verified is: ${nextBlockForVerification}`); + console.log(`Checking status of the proofs...`); + for ( + let i = nextBlockForVerification; + i <= Math.min(nextBlockForVerification + 5, Number(stateKeeperStatus['max'])); + i += 1 + ) { + getProofProgress(i); + } +} + +export const command = new Command('status').description('show status of the local system'); + +command.command('prover').action(statusProver); From 1625ec2e0104bc1e346209db4fd359fb9775b683 Mon Sep 17 00:00:00 2001 From: Marcin M <128217157+mm-zk@users.noreply.github.com> Date: Wed, 4 Oct 2023 20:29:29 +0200 Subject: [PATCH 009/108] fix(boojum): Don't pass aggregation_results as recursive aggregation inputs (#157) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # What ❔ * We were passing incorrect argument to the prover ## Why ❔ * to make prover work, the original problem was a simple bug/typo. --- core/lib/types/src/aggregated_operations.rs | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/core/lib/types/src/aggregated_operations.rs b/core/lib/types/src/aggregated_operations.rs index 4283a31bb23..841c2098f56 100644 --- a/core/lib/types/src/aggregated_operations.rs +++ b/core/lib/types/src/aggregated_operations.rs @@ -93,19 +93,14 @@ impl L1BatchProofOperation { assert_eq!(self.l1_batches.len(), 1); let L1BatchProofForL1 { - aggregation_result_coords, + aggregation_result_coords: _, scheduler_proof, } = self.proofs.first().unwrap(); let (_inputs, proof) = serialize_proof(scheduler_proof); let proof_input = Token::Tuple(vec![ - Token::Array( - aggregation_result_coords - .iter() - .map(|bytes| Token::Uint(U256::from_big_endian(bytes))) - .collect(), - ), + Token::Array(vec![]), Token::Array(proof.into_iter().map(Token::Uint).collect()), ]); From 867f2bf3b1135bb48f4aea9dedecd5de34361368 Mon Sep 17 00:00:00 2001 From: Marcin M <128217157+mm-zk@users.noreply.github.com> Date: Thu, 5 Oct 2023 10:05:16 +0200 Subject: [PATCH 010/108] feat(boojum): added flag to control prover selection at genesis (#158) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # What ❔ * Added CONTRACTS_PROVER_AT_GENESIS flag to control which prover should be used during genesis * Updated zk status command to compare the keys in the database and in the contracts ## Why ❔ * without this flag, we were pushing the old keys to the contracts, which resulted in failed proofs. --- core/lib/config/src/configs/contracts.rs | 4 +- core/lib/zksync_core/src/lib.rs | 36 ++++++++++----- etc/env/base/contracts.toml | 3 ++ infrastructure/zk/src/status.ts | 59 +++++++++++++++++++++++- 4 files changed, 89 insertions(+), 13 deletions(-) diff --git a/core/lib/config/src/configs/contracts.rs b/core/lib/config/src/configs/contracts.rs index b3fbcf030cc..eafaf49e0ff 100644 --- a/core/lib/config/src/configs/contracts.rs +++ b/core/lib/config/src/configs/contracts.rs @@ -34,6 +34,7 @@ pub struct ContractsConfig { pub fri_recursion_scheduler_level_vk_hash: H256, pub fri_recursion_node_level_vk_hash: H256, pub fri_recursion_leaf_level_vk_hash: H256, + pub prover_at_genesis: String, } impl ContractsConfig { @@ -93,6 +94,7 @@ mod tests { fri_recursion_leaf_level_vk_hash: hash( "0x72167c43a46cf38875b267d67716edc4563861364a3c03ab7aee73498421e828", ), + prover_at_genesis: "fri".to_string(), } } @@ -126,7 +128,7 @@ CONTRACTS_L1_MULTICALL3_ADDR="0xcA11bde05977b3631167028862bE2a173976CA11" CONTRACTS_FRI_RECURSION_SCHEDULER_LEVEL_VK_HASH="0x201d4c7d8e781d51a3bbd451a43a8f45240bb765b565ae6ce69192d918c3563d" CONTRACTS_FRI_RECURSION_NODE_LEVEL_VK_HASH="0x5a3ef282b21e12fe1f4438e5bb158fc5060b160559c5158c6389d62d9fe3d080" CONTRACTS_FRI_RECURSION_LEAF_LEVEL_VK_HASH="0x72167c43a46cf38875b267d67716edc4563861364a3c03ab7aee73498421e828" - +CONTRACTS_PROVER_AT_GENESIS="fri" "#; lock.set_env(config); diff --git a/core/lib/zksync_core/src/lib.rs b/core/lib/zksync_core/src/lib.rs index dee14e7a2f1..bfc83c9020c 100644 --- a/core/lib/zksync_core/src/lib.rs +++ b/core/lib/zksync_core/src/lib.rs @@ -122,6 +122,30 @@ pub async fn genesis_init( ) .context("Failed to restore operator address from private key")?; + // Select the first prover to be used during genesis. + // Later we can change provers using the system upgrades, but for genesis + // we should select one using the environment config. + let first_l1_verifier_config = if contracts_config.prover_at_genesis == "fri" { + L1VerifierConfig { + params: VerifierParams { + recursion_node_level_vk_hash: contracts_config.fri_recursion_node_level_vk_hash, + recursion_leaf_level_vk_hash: contracts_config.fri_recursion_leaf_level_vk_hash, + recursion_circuits_set_vks_hash: zksync_types::H256::zero(), + }, + recursion_scheduler_level_vk_hash: contracts_config + .fri_recursion_scheduler_level_vk_hash, + } + } else { + L1VerifierConfig { + params: VerifierParams { + recursion_node_level_vk_hash: contracts_config.recursion_node_level_vk_hash, + recursion_leaf_level_vk_hash: contracts_config.recursion_leaf_level_vk_hash, + recursion_circuits_set_vks_hash: contracts_config.recursion_circuits_set_vks_hash, + }, + recursion_scheduler_level_vk_hash: contracts_config.recursion_scheduler_level_vk_hash, + } + }; + genesis::ensure_genesis_state( &mut storage, L2ChainId(network_config.zksync_network_id), @@ -132,17 +156,7 @@ pub async fn genesis_init( base_system_contracts: BaseSystemContracts::load_from_disk(), system_contracts: get_system_smart_contracts(), first_verifier_address: contracts_config.verifier_addr, - first_l1_verifier_config: L1VerifierConfig { - params: VerifierParams { - recursion_node_level_vk_hash: contracts_config.recursion_node_level_vk_hash, - recursion_leaf_level_vk_hash: contracts_config.recursion_leaf_level_vk_hash, - recursion_circuits_set_vks_hash: contracts_config - .recursion_circuits_set_vks_hash, - }, - // FIXME: we should have a flag to decide on the type of proofs at genesis. - recursion_scheduler_level_vk_hash: contracts_config - .fri_recursion_scheduler_level_vk_hash, - }, + first_l1_verifier_config, }, ) .await?; diff --git a/etc/env/base/contracts.toml b/etc/env/base/contracts.toml index c68c21170c5..82f795e8389 100644 --- a/etc/env/base/contracts.toml +++ b/etc/env/base/contracts.toml @@ -42,6 +42,9 @@ FRI_RECURSION_LEAF_LEVEL_VK_HASH ="0x72167c43a46cf38875b267d67716edc4563861364a3 FRI_RECURSION_NODE_LEVEL_VK_HASH ="0x5a3ef282b21e12fe1f4438e5bb158fc5060b160559c5158c6389d62d9fe3d080" FRI_RECURSION_SCHEDULER_LEVEL_VK_HASH ="0x4be443afd605a782b6e56d199df2460a025c81b3dea144e135bece83612563f2" +# Prover that should be used at genesis. 'fri' or 'snark' +PROVER_AT_GENESIS="fri" + [contracts.test] dummy_verifier=true easy_priority_mode=false diff --git a/infrastructure/zk/src/status.ts b/infrastructure/zk/src/status.ts index 11f8bdf7e26..5311b47843c 100644 --- a/infrastructure/zk/src/status.ts +++ b/infrastructure/zk/src/status.ts @@ -9,7 +9,8 @@ let pool: Pool | null = null; const GETTER_ABI = [ 'function getTotalBlocksCommitted() view returns (uint256)', - 'function getTotalBlocksVerified() view returns (uint256)' + 'function getTotalBlocksVerified() view returns (uint256)', + 'function getVerifierParams() view returns (bytes32, bytes32, bytes32)' ]; const VERIFIER_ABI = ['function verificationKeyHash() view returns (bytes32)']; @@ -120,10 +121,65 @@ async function compareVerificationKeys() { console.log( `${redStart}Verification hash in DB differs from the one in contract.${resetColor} State keeper might not send prove requests.` ); + } else { + console.log(`${greenStart}Verifier hash matches.${resetColor}`); + } +} + +async function compareVerificationParams() { + // Setup a provider + let provider = new ethers.providers.JsonRpcProvider(process.env.ETH_CLIENT_WEB3_URL); + + // Create a contract instance (diamond proxy doesn't expose this one) + let contract = new ethers.Contract(process.env.CONTRACTS_DIAMOND_PROXY_ADDR!, GETTER_ABI, provider); + let node, leaf, circuits; + try { + [node, leaf, circuits] = await contract.getVerifierParams(); + console.log(`Verifier params on contract are ${node}, ${leaf}, ${circuits}`); + } catch (error) { + console.error(`Error calling L1 contract: ${error}`); + return; + } + + let protocol_version = await query( + 'select recursion_node_level_vk_hash, recursion_leaf_level_vk_hash, recursion_circuits_set_vks_hash from prover_fri_protocol_versions' + ); + if (protocol_version.rowCount != 1) { + console.log(`${redStart}Got ${protocol_version.rowCount} rows with protocol versions, expected 1${resetColor}`); + return; + } + let dbNode = '0x' + bytesToHex(protocol_version.rows[0].recursion_node_level_vk_hash); + let dbLeaf = '0x' + bytesToHex(protocol_version.rows[0].recursion_leaf_level_vk_hash); + let dbCircuit = '0x' + bytesToHex(protocol_version.rows[0].recursion_circuits_set_vks_hash); + + let fail = false; + + if (dbNode != node) { + fail = true; + console.log( + `${redStart}Verification node in DB differs from the one in contract ${dbNode} vs ${node}.${resetColor}` + ); + } + if (dbLeaf != leaf) { + fail = true; + console.log( + `${redStart}Verification leaf in DB differs from the one in contract ${dbLeaf} vs ${leaf}.${resetColor}` + ); + } + if (dbCircuit != circuits) { + fail = true; + console.log( + `${redStart}Verification circuits in DB differs from the one in contract ${dbCircuit} vs ${circuits}.${resetColor}` + ); + } + + if (fail == false) { + console.log(`${greenStart}Verifcation params match.${resetColor}`); } } const redStart = '\x1b[31m'; +const greenStart = '\x1b[32m'; const resetColor = '\x1b[0m'; export async function statusProver() { @@ -151,6 +207,7 @@ export async function statusProver() { return; } await compareVerificationKeys(); + await compareVerificationParams(); const nextBlockForVerification = blockVerified + 1; From 6040e37303971fb81c25f0374442f3daf7cf0405 Mon Sep 17 00:00:00 2001 From: Lyova Potyomkin Date: Thu, 5 Oct 2023 10:40:08 +0100 Subject: [PATCH 011/108] fix(prover): Use SNARK wrapper VK for picking prover jobs (#142) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # What ❔ Prover and Witgen now use snark wrapper VKs to pick their jobs. ## Why ❔ `prover_protocol_versions` table had SNARK wrapper VKs, but prover and witgens picked jobs based on FRI scheduler VKs. Since if one changes the other also does, we can use the SNARK one instead, since it's also used in `eth_sender`. --------- Co-authored-by: Stanislav Bezkorovainyi --- core/bin/zksync_server/src/main.rs | 5 +- core/lib/config/src/configs/contracts.rs | 5 + core/lib/zksync_core/src/lib.rs | 29 +- etc/env/base/contracts.toml | 3 +- prover/Cargo.lock | 301 ++++++++++-------- .../src/commitment_utils.rs | 25 +- 6 files changed, 227 insertions(+), 141 deletions(-) diff --git a/core/bin/zksync_server/src/main.rs b/core/bin/zksync_server/src/main.rs index 746da62bf3d..e4a6b80cc0c 100644 --- a/core/bin/zksync_server/src/main.rs +++ b/core/bin/zksync_server/src/main.rs @@ -4,7 +4,7 @@ use clap::Parser; use std::{str::FromStr, time::Duration}; use zksync_config::configs::chain::NetworkConfig; -use zksync_config::{ContractsConfig, ETHSenderConfig}; +use zksync_config::{ContractsConfig, ETHClientConfig, ETHSenderConfig}; use zksync_core::{ genesis_init, initialize_components, is_genesis_needed, setup_sigint_handler, Component, Components, @@ -80,7 +80,8 @@ async fn main() -> anyhow::Result<()> { let network = NetworkConfig::from_env().context("NetworkConfig")?; let eth_sender = ETHSenderConfig::from_env().context("ETHSenderConfig")?; let contracts = ContractsConfig::from_env().context("ContractsConfig")?; - genesis_init(ð_sender, &network, &contracts) + let eth_client = ETHClientConfig::from_env().context("EthClientConfig")?; + genesis_init(ð_sender, &network, &contracts, ð_client.web3_url) .await .context("genesis_init")?; if opt.genesis { diff --git a/core/lib/config/src/configs/contracts.rs b/core/lib/config/src/configs/contracts.rs index eafaf49e0ff..59425900341 100644 --- a/core/lib/config/src/configs/contracts.rs +++ b/core/lib/config/src/configs/contracts.rs @@ -35,6 +35,7 @@ pub struct ContractsConfig { pub fri_recursion_node_level_vk_hash: H256, pub fri_recursion_leaf_level_vk_hash: H256, pub prover_at_genesis: String, + pub snark_wrapper_vk_hash: H256, } impl ContractsConfig { @@ -95,6 +96,9 @@ mod tests { "0x72167c43a46cf38875b267d67716edc4563861364a3c03ab7aee73498421e828", ), prover_at_genesis: "fri".to_string(), + snark_wrapper_vk_hash: hash( + "0x4be443afd605a782b6e56d199df2460a025c81b3dea144e135bece83612563f2", + ), } } @@ -129,6 +133,7 @@ CONTRACTS_FRI_RECURSION_SCHEDULER_LEVEL_VK_HASH="0x201d4c7d8e781d51a3bbd451a43a8 CONTRACTS_FRI_RECURSION_NODE_LEVEL_VK_HASH="0x5a3ef282b21e12fe1f4438e5bb158fc5060b160559c5158c6389d62d9fe3d080" CONTRACTS_FRI_RECURSION_LEAF_LEVEL_VK_HASH="0x72167c43a46cf38875b267d67716edc4563861364a3c03ab7aee73498421e828" CONTRACTS_PROVER_AT_GENESIS="fri" +SNARK_WRAPPER_VK_HASH="0x4be443afd605a782b6e56d199df2460a025c81b3dea144e135bece83612563f2" "#; lock.set_env(config); diff --git a/core/lib/zksync_core/src/lib.rs b/core/lib/zksync_core/src/lib.rs index bfc83c9020c..7e991bb5102 100644 --- a/core/lib/zksync_core/src/lib.rs +++ b/core/lib/zksync_core/src/lib.rs @@ -32,6 +32,7 @@ use zksync_dal::{ connection::DbVariant, healthcheck::ConnectionPoolHealthCheck, ConnectionPool, StorageProcessor, }; use zksync_eth_client::clients::http::QueryClient; +use zksync_eth_client::EthInterface; use zksync_eth_client::{clients::http::PKSigningClient, BoundEthInterface}; use zksync_health_check::{CheckHealth, HealthStatus, ReactiveHealthCheck}; use zksync_object_store::ObjectStoreFactory; @@ -110,6 +111,7 @@ pub async fn genesis_init( eth_sender: ÐSenderConfig, network_config: &NetworkConfig, contracts_config: &ContractsConfig, + eth_client_url: &str, ) -> anyhow::Result<()> { let mut storage = StorageProcessor::establish_connection(true) .await @@ -126,15 +128,34 @@ pub async fn genesis_init( // Later we can change provers using the system upgrades, but for genesis // we should select one using the environment config. let first_l1_verifier_config = if contracts_config.prover_at_genesis == "fri" { - L1VerifierConfig { + let l1_verifier_config = L1VerifierConfig { params: VerifierParams { recursion_node_level_vk_hash: contracts_config.fri_recursion_node_level_vk_hash, recursion_leaf_level_vk_hash: contracts_config.fri_recursion_leaf_level_vk_hash, recursion_circuits_set_vks_hash: zksync_types::H256::zero(), }, - recursion_scheduler_level_vk_hash: contracts_config - .fri_recursion_scheduler_level_vk_hash, - } + recursion_scheduler_level_vk_hash: contracts_config.snark_wrapper_vk_hash, + }; + + let eth_client = QueryClient::new(eth_client_url)?; + let vk_hash: zksync_types::H256 = eth_client + .call_contract_function( + "verificationKeyHash", + (), + None, + Default::default(), + None, + contracts_config.verifier_addr, + zksync_contracts::verifier_contract(), + ) + .await?; + + assert_eq!( + vk_hash, l1_verifier_config.recursion_scheduler_level_vk_hash, + "L1 verifier key does not match the one in the config" + ); + + l1_verifier_config } else { L1VerifierConfig { params: VerifierParams { diff --git a/etc/env/base/contracts.toml b/etc/env/base/contracts.toml index 82f795e8389..fea581fc24f 100644 --- a/etc/env/base/contracts.toml +++ b/etc/env/base/contracts.toml @@ -40,7 +40,8 @@ L2_WETH_TOKEN_IMPL_ADDR="0x5E6D086F5eC079ADFF4FB3774CDf3e8D6a34F7E9" L2_WETH_TOKEN_PROXY_ADDR="0x5E6D086F5eC079ADFF4FB3774CDf3e8D6a34F7E9" FRI_RECURSION_LEAF_LEVEL_VK_HASH ="0x72167c43a46cf38875b267d67716edc4563861364a3c03ab7aee73498421e828" FRI_RECURSION_NODE_LEVEL_VK_HASH ="0x5a3ef282b21e12fe1f4438e5bb158fc5060b160559c5158c6389d62d9fe3d080" -FRI_RECURSION_SCHEDULER_LEVEL_VK_HASH ="0x4be443afd605a782b6e56d199df2460a025c81b3dea144e135bece83612563f2" +FRI_RECURSION_SCHEDULER_LEVEL_VK_HASH ="0x201d4c7d8e781d51a3bbd451a43a8f45240bb765b565ae6ce69192d918c3563d" +SNARK_WRAPPER_VK_HASH = "0x4be443afd605a782b6e56d199df2460a025c81b3dea144e135bece83612563f2" # Prover that should be used at genesis. 'fri' or 'snark' PROVER_AT_GENESIS="fri" diff --git a/prover/Cargo.lock b/prover/Cargo.lock index 353513a507f..550bf4e9457 100644 --- a/prover/Cargo.lock +++ b/prover/Cargo.lock @@ -95,9 +95,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.0.5" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c378d78423fdad8089616f827526ee33c19f2fddbd5de1629152c9593ba4783" +checksum = "ea5d730647d4fadd988536d06fecce94b7b4f2a7efdae548f1cf4b63205518ab" dependencies = [ "memchr", ] @@ -134,9 +134,9 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b84bf0a05bbb2a83e5eb6fa36bb6e87baa08193c35ff52bbf6b38d8af2890e46" +checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" [[package]] name = "anyhow" @@ -147,7 +147,7 @@ checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" [[package]] name = "api" version = "0.1.0" -source = "git+https://github.com/matter-labs/era-heavy-ops-service.git?branch=v1.3.3#0dd1f5dbba7eee194e660dfaaaf026a174e5ad9e" +source = "git+https://github.com/matter-labs/era-heavy-ops-service.git?branch=v1.3.3#ac6a3af6415dc12c9ae2932fa5ad906939023d82" dependencies = [ "bellman_ce 0.3.2 (git+https://github.com/matter-labs/bellman?branch=dev)", "cfg-if 1.0.0", @@ -223,7 +223,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2 1.0.67", "quote 1.0.33", - "syn 2.0.33", + "syn 2.0.37", ] [[package]] @@ -234,7 +234,7 @@ checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0" dependencies = [ "proc-macro2 1.0.67", "quote 1.0.33", - "syn 2.0.33", + "syn 2.0.37", ] [[package]] @@ -431,7 +431,30 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.33", + "syn 2.0.37", +] + +[[package]] +name = "bindgen" +version = "0.68.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "726e4313eb6ec35d2730258ad4e15b547ee75d6afaa1361a922e78e59b7d8078" +dependencies = [ + "bitflags 2.4.0", + "cexpr", + "clang-sys", + "lazy_static", + "lazycell", + "log", + "peeking_take_while", + "prettyplease", + "proc-macro2 1.0.67", + "quote 1.0.33", + "regex", + "rustc-hash", + "shlex", + "syn 2.0.37", + "which", ] [[package]] @@ -594,7 +617,7 @@ dependencies = [ "bincode", "blake2 0.10.6", "const_format", - "convert_case 0.4.0", + "convert_case 0.6.0", "crossbeam 0.8.2", "crypto-bigint 0.5.3", "cs_derive 0.1.0 (git+https://github.com/matter-labs/era-boojum?branch=main)", @@ -620,7 +643,7 @@ dependencies = [ [[package]] name = "boojum-cuda" version = "0.1.0" -source = "git+https://github.com/matter-labs/era-boojum-cuda?branch=main#75ee5596114bd7fcb7df08b834e64123522653e1" +source = "git+https://github.com/matter-labs/era-boojum-cuda?branch=main#4326c66de077a159bdbfe9d2575cb248696f0df9" dependencies = [ "boojum", "cmake", @@ -644,9 +667,9 @@ checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" [[package]] name = "bytecount" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c676a478f63e9fa2dd5368a42f28bba0d6c560b775f38583c8bbaa7fcd67c9c" +checksum = "ad152d03a2c813c80bb94fedbf3a3f02b28f793e39e7c214c8a0bcc196343de7" [[package]] name = "byteorder" @@ -841,18 +864,18 @@ dependencies = [ [[package]] name = "clap" -version = "4.4.3" +version = "4.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84ed82781cea27b43c9b106a979fe450a13a31aab0500595fb3fc06616de08e6" +checksum = "d04704f56c2cde07f43e8e2c154b43f216dc5c92fc98ada720177362f953b956" dependencies = [ "clap_builder", ] [[package]] name = "clap_builder" -version = "4.4.2" +version = "4.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bb9faaa7c2ef94b2743a21f5a29e6f0010dff4caa69ac8e9d6cf8b6fa74da08" +checksum = "0e231faeaca65ebd1ea3c737966bf858971cd38c3849107aa3ea7de90a804e45" dependencies = [ "anstyle", "clap_lex", @@ -885,7 +908,7 @@ dependencies = [ [[package]] name = "codegen" version = "0.1.0" -source = "git+https://github.com/matter-labs/solidity_plonk_verifier.git?branch=dev#07954802c13fb087efb5874c2ce521f843d614fd" +source = "git+https://github.com/matter-labs/solidity_plonk_verifier.git?branch=dev#82f96b7156551087f1c9bfe4f0ea68845b6debfc" dependencies = [ "ethereum-types 0.14.1", "franklin-crypto 0.0.5 (git+https://github.com/matter-labs/franklin-crypto?branch=dev)", @@ -1019,7 +1042,7 @@ dependencies = [ "anes", "cast", "ciborium", - "clap 4.4.3", + "clap 4.4.6", "criterion-plot", "is-terminal", "itertools 0.10.5", @@ -1298,7 +1321,7 @@ dependencies = [ [[package]] name = "cudart" version = "0.1.0" -source = "git+https://github.com/matter-labs/era-boojum-cuda?branch=main#75ee5596114bd7fcb7df08b834e64123522653e1" +source = "git+https://github.com/matter-labs/era-boojum-cuda?branch=main#4326c66de077a159bdbfe9d2575cb248696f0df9" dependencies = [ "bitflags 2.4.0", "criterion", @@ -1308,9 +1331,10 @@ dependencies = [ [[package]] name = "cudart-sys" version = "0.1.0" -source = "git+https://github.com/matter-labs/era-boojum-cuda?branch=main#75ee5596114bd7fcb7df08b834e64123522653e1" +source = "git+https://github.com/matter-labs/era-boojum-cuda?branch=main#4326c66de077a159bdbfe9d2575cb248696f0df9" dependencies = [ - "bindgen 0.59.2", + "bindgen 0.68.1", + "serde_json", ] [[package]] @@ -1355,7 +1379,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" dependencies = [ "cfg-if 1.0.0", - "hashbrown 0.14.0", + "hashbrown 0.14.1", "lock_api", "once_cell", "parking_lot_core 0.9.8", @@ -1579,9 +1603,9 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "136526188508e25c6fef639d7927dfb3e0e3084488bf202267829cf7fc23dbdd" +checksum = "add4f07d43996f76ef320709726a556a9d4f965d9410d8d0271132d2f8293480" dependencies = [ "errno-dragonfly", "libc", @@ -1695,9 +1719,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764" +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" [[package]] name = "ff" @@ -1980,7 +2004,7 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" dependencies = [ "proc-macro2 1.0.67", "quote 1.0.33", - "syn 2.0.33", + "syn 2.0.37", ] [[package]] @@ -2139,7 +2163,7 @@ dependencies = [ [[package]] name = "gpu-ffi" version = "0.1.0" -source = "git+https://github.com/matter-labs/era-heavy-ops-service.git?branch=v1.3.3#0dd1f5dbba7eee194e660dfaaaf026a174e5ad9e" +source = "git+https://github.com/matter-labs/era-heavy-ops-service.git?branch=v1.3.3#ac6a3af6415dc12c9ae2932fa5ad906939023d82" dependencies = [ "bindgen 0.59.2", "crossbeam 0.8.2", @@ -2152,7 +2176,7 @@ dependencies = [ [[package]] name = "gpu-prover" version = "0.1.0" -source = "git+https://github.com/matter-labs/era-heavy-ops-service.git?branch=v1.3.3#0dd1f5dbba7eee194e660dfaaaf026a174e5ad9e" +source = "git+https://github.com/matter-labs/era-heavy-ops-service.git?branch=v1.3.3#ac6a3af6415dc12c9ae2932fa5ad906939023d82" dependencies = [ "bit-vec", "cfg-if 1.0.0", @@ -2241,9 +2265,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" +checksum = "7dfda62a12f55daeae5015f81b0baea145391cb4520f86c248fc615d72640d12" [[package]] name = "hashlink" @@ -2307,9 +2331,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" +checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" [[package]] name = "hex" @@ -2563,12 +2587,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.0.0" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897" dependencies = [ "equivalent", - "hashbrown 0.14.0", + "hashbrown 0.14.1", ] [[package]] @@ -2598,7 +2622,7 @@ version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" dependencies = [ - "hermit-abi 0.3.2", + "hermit-abi 0.3.3", "rustix", "windows-sys", ] @@ -2774,20 +2798,20 @@ checksum = "bc28438cad73dcc90ff3466fc329a9252b1b8ba668eb0d5668ba97088cf4eef0" dependencies = [ "proc-macro2 1.0.67", "quote 1.0.33", - "syn 2.0.33", + "syn 2.0.37", ] [[package]] name = "linux-raw-sys" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a9bad9f94746442c783ca431b22403b519cd7fbeed0533fdd6328b2f2212128" +checksum = "3852614a3bd9ca9804678ba6be5e3b8ce76dfc902cae004e3e0c44051b6e88db" [[package]] name = "local-ip-address" -version = "0.5.5" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fefe707432eb6bd4704b3dacfc87aab269d56667ad05dcd6869534e8890e767" +checksum = "66357e687a569abca487dc399a9c9ac19beb3f13991ed49f00c144e02cbd42ab" dependencies = [ "libc", "neli", @@ -2843,18 +2867,19 @@ checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" [[package]] name = "md-5" -version = "0.10.5" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" dependencies = [ + "cfg-if 1.0.0", "digest 0.10.7", ] [[package]] name = "memchr" -version = "2.6.3" +version = "2.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" [[package]] name = "memoffset" @@ -2911,7 +2936,7 @@ checksum = "ddece26afd34c31585c74a4db0630c376df271c285d682d1e55012197830b6df" dependencies = [ "proc-macro2 1.0.67", "quote 1.0.33", - "syn 2.0.33", + "syn 2.0.37", ] [[package]] @@ -3248,7 +3273,7 @@ version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.3.2", + "hermit-abi 0.3.3", "libc", ] @@ -3270,7 +3295,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2 1.0.67", "quote 1.0.33", - "syn 2.0.33", + "syn 2.0.37", ] [[package]] @@ -3323,7 +3348,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2 1.0.67", "quote 1.0.33", - "syn 2.0.33", + "syn 2.0.37", ] [[package]] @@ -3590,9 +3615,9 @@ checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" [[package]] name = "pest" -version = "2.7.3" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7a4d085fd991ac8d5b05a147b437791b4260b76326baf0fc60cf7c9c27ecd33" +checksum = "c022f1e7b65d6a24c0dbbd5fb344c66881bc01f3e5ae74a1c8100f2f985d98a4" dependencies = [ "memchr", "thiserror", @@ -3601,9 +3626,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.7.3" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2bee7be22ce7918f641a33f08e3f43388c7656772244e2bbb2477f44cc9021a" +checksum = "35513f630d46400a977c4cb58f78e1bfbe01434316e60c37d27b9ad6139c66d8" dependencies = [ "pest", "pest_generator", @@ -3611,22 +3636,22 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.3" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1511785c5e98d79a05e8a6bc34b4ac2168a0e3e92161862030ad84daa223141" +checksum = "bc9fc1b9e7057baba189b5c626e2d6f40681ae5b6eb064dc7c7834101ec8123a" dependencies = [ "pest", "pest_meta", "proc-macro2 1.0.67", "quote 1.0.33", - "syn 2.0.33", + "syn 2.0.37", ] [[package]] name = "pest_meta" -version = "2.7.3" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42f0394d3123e33353ca5e1e89092e533d2cc490389f2bd6131c43c634ebc5f" +checksum = "1df74e9e7ec4053ceb980e7c0c8bd3594e977fde1af91daba9c928e8e8c6708d" dependencies = [ "once_cell", "pest", @@ -3650,7 +3675,7 @@ checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ "proc-macro2 1.0.67", "quote 1.0.33", - "syn 2.0.33", + "syn 2.0.37", ] [[package]] @@ -3750,7 +3775,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae005bd773ab59b4725093fd7df83fd7892f7d8eafb48dbd7de6e024e4215f9d" dependencies = [ "proc-macro2 1.0.67", - "syn 2.0.33", + "syn 2.0.37", ] [[package]] @@ -3857,7 +3882,7 @@ checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" dependencies = [ "proc-macro2 1.0.67", "quote 1.0.33", - "syn 2.0.33", + "syn 2.0.37", ] [[package]] @@ -3873,19 +3898,19 @@ dependencies = [ [[package]] name = "proptest" -version = "1.2.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e35c06b98bf36aba164cc17cb25f7e232f5c4aeea73baa14b8a9f0d92dbfa65" +checksum = "7c003ac8c77cb07bb74f5f198bce836a689bcd5a42574612bf14d17bfd08c20e" dependencies = [ "bit-set", - "bitflags 1.3.2", - "byteorder", + "bit-vec", + "bitflags 2.4.0", "lazy_static", "num-traits", "rand 0.8.5", "rand_chacha 0.3.1", "rand_xorshift 0.3.0", - "regex-syntax 0.6.29", + "regex-syntax 0.7.5", "rusty-fork", "tempfile", "unarray", @@ -3894,7 +3919,7 @@ dependencies = [ [[package]] name = "prover-service" version = "0.1.0" -source = "git+https://github.com/matter-labs/era-heavy-ops-service.git?branch=v1.3.3#0dd1f5dbba7eee194e660dfaaaf026a174e5ad9e" +source = "git+https://github.com/matter-labs/era-heavy-ops-service.git?branch=v1.3.3#ac6a3af6415dc12c9ae2932fa5ad906939023d82" dependencies = [ "api", "bincode", @@ -4184,9 +4209,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" +checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1" dependencies = [ "either", "rayon-core", @@ -4194,14 +4219,12 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" +checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed" dependencies = [ - "crossbeam-channel 0.5.8", "crossbeam-deque 0.8.3", "crossbeam-utils 0.8.16", - "num_cpus", ] [[package]] @@ -4244,13 +4267,13 @@ dependencies = [ [[package]] name = "regex" -version = "1.9.5" +version = "1.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "697061221ea1b4a94a624f67d0ae2bfe4e22b8a17b6a192afb11046542cc8c47" +checksum = "ebee201405406dbf528b8b672104ae6d6d63e6d118cb10e4d51abbc7b58044ff" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.3.8", + "regex-automata 0.3.9", "regex-syntax 0.7.5", ] @@ -4265,9 +4288,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2f401f4955220693b56f8ec66ee9c78abffd8d1c4f23dc41a23839eb88f0795" +checksum = "59b23e92ee4318893fa3fe3e6fb365258efbfe6ac6ab30f090cdcbb7aa37efa9" dependencies = [ "aho-corasick", "memchr", @@ -4288,9 +4311,9 @@ checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" [[package]] name = "reqwest" -version = "0.11.20" +version = "0.11.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e9ad3fe7488d7e34558a2033d45a0c90b72d97b4f80705666fea71472e2e6a1" +checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b" dependencies = [ "base64 0.21.4", "bytes", @@ -4317,6 +4340,7 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", + "system-configuration", "tokio", "tokio-native-tls", "tokio-rustls", @@ -4357,7 +4381,7 @@ dependencies = [ [[package]] name = "rescue_poseidon" version = "0.4.1" -source = "git+https://github.com/matter-labs/rescue-poseidon#f611a3353e48cf42153e44d89ed90da9bc5934e8" +source = "git+https://github.com/matter-labs/rescue-poseidon#d059b5042df5ed80e151f05751410b524a54d16c" dependencies = [ "addchain", "arrayvec 0.7.4", @@ -4480,9 +4504,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.13" +version = "0.38.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7db8590df6dfcd144d22afd1b83b36c21a18d7cbc1dc4bb5295a8712e9eb662" +checksum = "f25469e9ae0f3d0047ca8b93fc56843f38e6774f0914a107ff8b41be8be8e0b7" dependencies = [ "bitflags 2.4.0", "errno", @@ -4514,9 +4538,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.101.5" +version = "0.101.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45a27e3b59326c16e23d30aeb7a36a24cc0d29e71d68ff611cdfb4a01d013bed" +checksum = "3c7d5dece342910d9ba34d259310cae3e0154b873b35408b787b59bce53d34fe" dependencies = [ "ring", "untrusted", @@ -4681,9 +4705,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.18" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918" +checksum = "ad977052201c6de01a8ef2aa3378c4bd23217a056337d1d6da40468d267a4fb0" dependencies = [ "serde", ] @@ -4813,7 +4837,7 @@ checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" dependencies = [ "proc-macro2 1.0.67", "quote 1.0.33", - "syn 2.0.33", + "syn 2.0.37", ] [[package]] @@ -4892,9 +4916,9 @@ dependencies = [ [[package]] name = "sha1" -version = "0.10.5" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ "cfg-if 1.0.0", "cpufeatures", @@ -4949,9 +4973,9 @@ dependencies = [ [[package]] name = "sharded-slab" -version = "0.1.4" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" dependencies = [ "lazy_static", ] @@ -4959,7 +4983,7 @@ dependencies = [ [[package]] name = "shivini" version = "0.1.0" -source = "git+https://github.com/matter-labs/era-shivini.git?branch=main#8858445eafa3dd90e856c4a2834234625e77152a" +source = "git+https://github.com/matter-labs/era-shivini.git?branch=main#2c73a10ff0310e7f99a0d9a8cea043e697eaa5e4" dependencies = [ "bincode", "blake2 0.10.6", @@ -5044,9 +5068,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" +checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" dependencies = [ "serde", ] @@ -5334,9 +5358,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.33" +version = "2.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9caece70c63bfba29ec2fed841a09851b14a235c60010fa4de58089b6c025668" +checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8" dependencies = [ "proc-macro2 1.0.67", "quote 1.0.33", @@ -5369,6 +5393,27 @@ dependencies = [ "zkevm_opcode_defs", ] +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "tagptr" version = "0.2.0" @@ -5388,7 +5433,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" dependencies = [ "cfg-if 1.0.0", - "fastrand 2.0.0", + "fastrand 2.0.1", "redox_syscall 0.3.5", "rustix", "windows-sys", @@ -5396,9 +5441,9 @@ dependencies = [ [[package]] name = "termcolor" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" +checksum = "6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64" dependencies = [ "winapi-util", ] @@ -5425,22 +5470,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.48" +version = "1.0.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d6d7a740b8a666a7e828dd00da9c0dc290dff53154ea77ac109281de90589b7" +checksum = "1177e8c6d7ede7afde3585fd2513e611227efd6481bd78d2e82ba1ce16557ed4" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.48" +version = "1.0.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49922ecae66cc8a249b77e68d1d0623c1b2c514f0060c27cdc68bd62a1219d35" +checksum = "10712f02019e9288794769fba95cd6847df9874d49d871d062172f9dd41bc4cc" dependencies = [ "proc-macro2 1.0.67", "quote 1.0.33", - "syn 2.0.33", + "syn 2.0.37", ] [[package]] @@ -5455,9 +5500,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17f6bb557fd245c28e6411aa56b6403c689ad95061f50e4be16c274e70a17e48" +checksum = "426f806f4089c493dcac0d24c29c01e2c38baf8e30f1b716ee37e83d200b18fe" dependencies = [ "deranged", "itoa", @@ -5468,15 +5513,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a942f44339478ef67935ab2bbaec2fb0322496cf3cbe84b261e06ac3814c572" +checksum = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20" dependencies = [ "time-core", ] @@ -5551,7 +5596,7 @@ checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" dependencies = [ "proc-macro2 1.0.67", "quote 1.0.33", - "syn 2.0.33", + "syn 2.0.37", ] [[package]] @@ -5587,9 +5632,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.8" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" +checksum = "1d68074620f57a0b21594d9735eb2e98ab38b17f80d3fcb189fca266771ca60d" dependencies = [ "bytes", "futures-core", @@ -5622,7 +5667,7 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.0.0", + "indexmap 2.0.2", "toml_datetime", "winnow", ] @@ -5653,7 +5698,7 @@ checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" dependencies = [ "proc-macro2 1.0.67", "quote 1.0.33", - "syn 2.0.33", + "syn 2.0.37", ] [[package]] @@ -5723,9 +5768,9 @@ checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" [[package]] name = "typenum" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "ucd-trie" @@ -5798,9 +5843,9 @@ checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" [[package]] name = "unicode-width" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" +checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" [[package]] name = "unicode-xid" @@ -5838,9 +5883,9 @@ checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" [[package]] name = "ureq" -version = "2.7.1" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b11c96ac7ee530603dcdf68ed1557050f374ce55a5a07193ebf8cbc9f8927e9" +checksum = "f5ccd538d4a604753ebc2f17cd9946e89b77bf87f6a8e2309667c6f2e87855e3" dependencies = [ "base64 0.21.4", "log", @@ -5932,7 +5977,7 @@ source = "git+https://github.com/matter-labs/vise.git?rev=9d097ab747b037b6e62504 dependencies = [ "proc-macro2 1.0.67", "quote 1.0.33", - "syn 2.0.33", + "syn 2.0.37", ] [[package]] @@ -6050,7 +6095,7 @@ dependencies = [ "once_cell", "proc-macro2 1.0.67", "quote 1.0.33", - "syn 2.0.33", + "syn 2.0.37", "wasm-bindgen-shared", ] @@ -6084,7 +6129,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2 1.0.67", "quote 1.0.33", - "syn 2.0.33", + "syn 2.0.37", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -6195,9 +6240,9 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" dependencies = [ "winapi", ] diff --git a/prover/vk_setup_data_generator_server_fri/src/commitment_utils.rs b/prover/vk_setup_data_generator_server_fri/src/commitment_utils.rs index 3fcaf811957..d04943dd1d6 100644 --- a/prover/vk_setup_data_generator_server_fri/src/commitment_utils.rs +++ b/prover/vk_setup_data_generator_server_fri/src/commitment_utils.rs @@ -11,6 +11,7 @@ use zksync_prover_fri_types::circuit_definitions::boojum::field::goldilocks::Gol use zksync_prover_fri_types::circuit_definitions::circuit_definitions::recursion_layer::ZkSyncRecursionLayerStorageType; use zksync_types::protocol_version::{L1VerifierConfig, VerifierParams}; use zksync_types::H256; + lazy_static! { // TODO: do not initialize a static const with data read in runtime. static ref COMMITMENTS: Lazy = Lazy::new(|| { circuit_commitments().unwrap() }); @@ -24,6 +25,8 @@ pub struct VkCommitments { fn circuit_commitments() -> anyhow::Result { let commitments = generate_commitments().context("generate_commitments()")?; + let snark_wrapper_vk = std::env::var("CONTRACTS_SNARK_WRAPPER_VK_HASH") + .context("SNARK wrapper VK not found in the config")?; Ok(L1VerifierConfig { params: VerifierParams { recursion_node_level_vk_hash: H256::from_str(&commitments.node) @@ -33,14 +36,21 @@ fn circuit_commitments() -> anyhow::Result { // The base layer commitment is not used in the FRI prover verification. recursion_circuits_set_vks_hash: H256::zero(), }, - recursion_scheduler_level_vk_hash: H256::from_str(&commitments.scheduler) - .context("invalid scheduler commitment")?, + // Instead of loading the FRI scheduler verification key here, + // we load the SNARK-wrapper verification key. + // This is due to the fact that these keys are used only for picking the + // prover jobs / witgen jobs from the DB. The keys are matched with the ones in + // `prover_protocol_versions` table, which has the SNARK-wrapper verification key. + // This is OK because if the FRI VK changes, the SNARK-wrapper VK will change as well. + // You can actually compute the SNARK-wrapper VK from the FRI VK, but this is not yet + // implemented in the `zkevm_test_harness`, so instead we're loading it from the env. + recursion_scheduler_level_vk_hash: H256::from_str(&snark_wrapper_vk) + .context("invalid SNARK wrapper VK")?, }) } pub fn generate_commitments() -> anyhow::Result { - let leaf_vk_params = get_leaf_vk_params() - .context("get_leaf_vk_params()")?; + let leaf_vk_params = get_leaf_vk_params().context("get_leaf_vk_params()")?; let leaf_layer_params = leaf_vk_params .iter() .map(|el| el.1.clone()) @@ -51,12 +61,14 @@ pub fn generate_commitments() -> anyhow::Result { let node_vk = get_recursive_layer_vk_for_circuit_type( ZkSyncRecursionLayerStorageType::NodeLayerCircuit as u8, - ).context("get_recursive_layer_vk_for_circuit_type(NodeLayerCircuit)")?; + ) + .context("get_recursive_layer_vk_for_circuit_type(NodeLayerCircuit)")?; let node_vk_commitment = compute_node_vk_commitment(node_vk.clone()); let scheduler_vk = get_recursive_layer_vk_for_circuit_type( ZkSyncRecursionLayerStorageType::SchedulerCircuit as u8, - ).context("get_recursive_layer_vk_for_circuit_type(SchedulerCircuit)")?; + ) + .context("get_recursive_layer_vk_for_circuit_type(SchedulerCircuit)")?; let scheduler_vk_commitment = compute_node_vk_commitment(scheduler_vk.clone()); let hex_concatenator = |hex_array: [GoldilocksField; 4]| { @@ -88,6 +100,7 @@ pub fn generate_commitments() -> anyhow::Result { } pub fn get_cached_commitments() -> L1VerifierConfig { + tracing::info!("Using cached commitments {:?}", **COMMITMENTS); **COMMITMENTS } From 2bc95e9fa9d0a6b7777164c64c1ef53c6be90adc Mon Sep 17 00:00:00 2001 From: Lyova Potyomkin Date: Thu, 5 Oct 2023 10:55:24 +0100 Subject: [PATCH 012/108] chore: Bump contracts and system-contracts submodules (#160) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # What ❔ Checking out latest 'dev' branches in era-contracts and era-system-contracts ## Why ❔ To have the latest contracts changes after boojum-integration branches were merged to dev ## Checklist - [ ] PR title corresponds to the body of PR (we generate changelog entries from PRs). - [ ] Tests for the changes have been added / updated. - [ ] Documentation comments have been added / updated. - [ ] Code has been formatted via `zk fmt` and `zk lint`. --- contracts | 2 +- etc/system-contracts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/contracts b/contracts index a0da7f11171..75764004f0a 160000 --- a/contracts +++ b/contracts @@ -1 +1 @@ -Subproject commit a0da7f111710bfede493da2d9ffab57cda89070c +Subproject commit 75764004f0ae81642a2756d368d59b1635543d75 diff --git a/etc/system-contracts b/etc/system-contracts index 867a30de339..ef5e5f7a7dd 160000 --- a/etc/system-contracts +++ b/etc/system-contracts @@ -1 +1 @@ -Subproject commit 867a30de339448f54f2e9f929088ea49adb4d36e +Subproject commit ef5e5f7a7ddbf887bfb93c32b633a15c6f604196 From 7608e5ff52b436131c50b71a0470ad14d2bd157b Mon Sep 17 00:00:00 2001 From: Lyova Potyomkin Date: Thu, 5 Oct 2023 15:36:25 +0100 Subject: [PATCH 013/108] chore(boojum): Merge main into boojum-integration (#164) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # What ❔ Merge main branch into boojum-integration ## Why ❔ To not get far behind ## Checklist - [ ] PR title corresponds to the body of PR (we generate changelog entries from PRs). - [ ] Tests for the changes have been added / updated. - [ ] Documentation comments have been added / updated. - [ ] Code has been formatted via `zk fmt` and `zk lint`. --------- Signed-off-by: Danil Co-authored-by: Yury Akudovich Co-authored-by: Shahar Kaminsky Co-authored-by: Aleksandr Stepanov Co-authored-by: Maksym Co-authored-by: Danil Co-authored-by: Alex Ostrovski Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: agolajko <57454127+agolajko@users.noreply.github.com> Co-authored-by: AnastasiiaVashchuk <72273339+AnastasiiaVashchuk@users.noreply.github.com> --- .github/release-please/config.json | 2 +- .github/release-please/manifest.json | 2 +- .github/workflows/build-docker-from-tag.yml | 87 ++++++ .../workflows/build-external-node-docker.yml | 51 ++++ .github/workflows/build-gar-reusable.yml | 81 ++++++ .github/workflows/build-local-node-docker.yml | 51 ++++ .../workflows/build-prover-fri-gpu-gar.yml | 46 ++++ .github/workflows/build-prover-template.yml | 2 +- .github/workflows/ci-prover-reusable.yml | 34 +-- .github/workflows/ci.yml | 20 +- .github/workflows/coverage.yml | 2 +- .github/workflows/release-please.yml | 4 + .github/workflows/release-test-stage.yml | 97 +++++++ .github/workflows/secrets_scanner.yaml | 4 +- .github/workflows/vm-perf-comparison.yml | 2 +- .github/workflows/vm-perf-to-prometheus.yml | 39 +++ .../zk-environment-cuda-12-0.publish.yml | 50 ---- .github/workflows/zk-environment.publish.yml | 103 ++++++- CODEOWNERS | 3 +- Cargo.lock | 19 +- Cargo.toml | 2 +- bin/ci_run | 4 +- core/CHANGELOG.md | 9 + .../src/intrinsic_costs.rs | 2 +- .../system-constants-generator/src/main.rs | 21 +- .../system-constants-generator/src/utils.rs | 214 ++++++++------- .../circuit_breaker/src/replication_lag.rs | 2 +- core/lib/mempool/src/tests.rs | 2 +- core/lib/merkle_tree/src/domain.rs | 4 +- core/lib/merkle_tree/src/hasher.rs | 4 +- core/lib/merkle_tree/src/storage/tests.rs | 10 +- core/lib/mini_merkle_tree/benches/tree.rs | 4 +- core/lib/mini_merkle_tree/src/lib.rs | 60 +++-- core/lib/mini_merkle_tree/src/tests.rs | 60 ++++- core/lib/state/src/in_memory.rs | 2 +- core/lib/state/src/rocksdb/mod.rs | 2 +- core/lib/types/src/aggregated_operations.rs | 2 +- core/lib/types/src/commitment.rs | 18 +- core/lib/types/src/event.rs | 16 +- core/lib/types/src/l2_to_l1_log.rs | 5 + .../lib/types/src/priority_op_onchain_data.rs | 2 +- .../types/src/storage/writes/compression.rs | 39 ++- core/lib/types/src/storage/writes/mod.rs | 2 +- core/lib/vm/src/constants.rs | 4 +- core/lib/vm/src/errors/halt.rs | 9 + core/lib/vm/src/implementation/execution.rs | 25 +- core/lib/vm/src/old_vm/event_sink.rs | 18 +- core/lib/vm/src/tracers/default_tracers.rs | 44 ++- core/lib/vm/src/tracers/mod.rs | 1 + core/lib/vm/src/tracers/pubdata_tracer.rs | 33 ++- core/lib/vm/src/tracers/result_tracer.rs | 13 +- .../lib/vm/src/tracers/storage_invocations.rs | 15 +- core/lib/vm/src/tracers/traits.rs | 32 ++- core/lib/vm/src/tracers/utils.rs | 5 +- core/lib/vm/src/tracers/validation/mod.rs | 19 +- .../src/api_server/execution_sandbox/error.rs | 4 + .../api_server/execution_sandbox/validate.rs | 2 +- .../src/api_server/web3/namespaces/zks.rs | 129 +++++---- docker-compose-runner-nightly.yml | 17 ++ docker/zk-environment/Dockerfile | 5 + docker/zk-rust-nightly-environment/Dockerfile | 19 -- infrastructure/zk/src/env.ts | 2 +- infrastructure/zk/src/hyperchain_wizard.ts | 227 ++++++++-------- infrastructure/zk/src/init.ts | 70 ++++- infrastructure/zk/src/run/run.ts | 4 + prover/proof_fri_compressor/README.md | 7 + prover/prover/README.md | 8 + prover/prover_fri/README.md | 150 +++++++++++ prover/prover_fri_gateway/README.md | 11 + prover/prover_fri_types/README.md | 8 + .../README.md | 22 ++ prover/witness_generator/README.md | 52 ++++ prover/witness_vector_generator/README.md | 7 + yarn.lock | 254 +++++++++++++++++- 74 files changed, 1811 insertions(+), 590 deletions(-) create mode 100644 .github/workflows/build-docker-from-tag.yml create mode 100644 .github/workflows/build-external-node-docker.yml create mode 100644 .github/workflows/build-gar-reusable.yml create mode 100644 .github/workflows/build-local-node-docker.yml create mode 100644 .github/workflows/build-prover-fri-gpu-gar.yml create mode 100644 .github/workflows/release-test-stage.yml create mode 100644 .github/workflows/vm-perf-to-prometheus.yml delete mode 100644 .github/workflows/zk-environment-cuda-12-0.publish.yml create mode 100644 docker-compose-runner-nightly.yml delete mode 100644 docker/zk-rust-nightly-environment/Dockerfile create mode 100644 prover/proof_fri_compressor/README.md create mode 100644 prover/prover/README.md create mode 100644 prover/prover_fri/README.md create mode 100644 prover/prover_fri_gateway/README.md create mode 100644 prover/prover_fri_types/README.md create mode 100644 prover/vk_setup_data_generator_server_fri/README.md create mode 100644 prover/witness_generator/README.md create mode 100644 prover/witness_vector_generator/README.md diff --git a/.github/release-please/config.json b/.github/release-please/config.json index 4f732993f37..8874e29bde2 100644 --- a/.github/release-please/config.json +++ b/.github/release-please/config.json @@ -1,7 +1,7 @@ { "separate-pull-requests": true, "group-pull-request-title-pattern": "chore: release ${component} ${branch}", - "bootstrap-sha": "a980ac61f484a3b6bdbe11e606977d0d92d4e9ff", + "bootstrap-sha": "531757b5eb98da80b7e6d0ff7ad9fd0b970cc109", "bump-minor-pre-major": true, "bump-patch-for-minor-pre-major": true, "packages": { diff --git a/.github/release-please/manifest.json b/.github/release-please/manifest.json index bd40d32b480..99563351109 100644 --- a/.github/release-please/manifest.json +++ b/.github/release-please/manifest.json @@ -1,6 +1,6 @@ { "sdk/zksync-web3.js": "0.15.4", "sdk/zksync-rs": "0.4.0", - "core": "15.0.1", + "core": "15.1.0", "prover": "7.1.1" } diff --git a/.github/workflows/build-docker-from-tag.yml b/.github/workflows/build-docker-from-tag.yml new file mode 100644 index 00000000000..d499a7afaad --- /dev/null +++ b/.github/workflows/build-docker-from-tag.yml @@ -0,0 +1,87 @@ +name: Build Image from tag +on: + workflow_call: + inputs: + tag_name: + description: "Tag of an image to built" + type: string + required: true + workflow_dispatch: + inputs: + tag_name: + description: "Tag of an image to built" + type: string + required: true + push: + tags: + - core-v** + - prover-v** + +concurrency: docker-build + +jobs: + setup: + name: Setup + runs-on: [ubuntu-latest] + outputs: + image_tag_suffix: ${{ steps.set.outputs.image_tag_suffix }} + steps: + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3 + with: + submodules: "recursive" + + - name: Generate output with git tag + id: set + run: | + git_tag="" + if [[ -z "${{ inputs.tag_name }}" ]]; then + git_tag="${GITHUB_REF#refs/*/}" + else + git_tag="${{ inputs.tag_name }}" + fi + version=$(cut -d "-" -f2 <<< ${git_tag}) + echo "image_tag_suffix=${version}" >> $GITHUB_OUTPUT + + build-push-core-images: + name: Build and push image + needs: [setup] + uses: ./.github/workflows/build-core-template.yml + if: contains(github.ref_name, 'core') + secrets: + DOCKERHUB_USER: ${{ secrets.DOCKERHUB_USER }} + DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} + with: + image_tag: ${{ needs.setup.outputs.image_tag }} + image_tag_suffix: ${{ needs.setup.outputs.image_tag_suffix }} + + build-push-prover-images: + name: Build and push image + needs: [setup] + uses: ./.github/workflows/build-prover-template.yml + if: contains(github.ref_name, 'prover') + with: + image_tag: ${{ needs.setup.outputs.image_tag }} + image_tag_suffix: ${{ needs.setup.outputs.image_tag_suffix }} + ERA_BELLMAN_CUDA_RELEASE: ${{ vars.ERA_BELLMAN_CUDA_RELEASE }} + secrets: + DOCKERHUB_USER: ${{ secrets.DOCKERHUB_USER }} + DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} + + build-gar-prover: + name: Build GAR prover + needs: [setup, build-push-prover-images] + uses: ./.github/workflows/build-gar-reusable.yml + if: contains(github.ref_name, 'prover') + with: + setup_keys_id: 4989f12 + image_tag_suffix: ${{ needs.setup.outputs.image_tag_suffix }} + push_asia: true + + build-gar-prover-fri-gpu: + name: Build GAR prover FRI GPU + needs: [setup, build-push-prover-images] + uses: ./.github/workflows/build-prover-fri-gpu-gar.yml + if: contains(github.ref_name, 'prover') + with: + setup_keys_id: 2d33a27-gpu + image_tag_suffix: ${{ needs.setup.outputs.image_tag_suffix }} diff --git a/.github/workflows/build-external-node-docker.yml b/.github/workflows/build-external-node-docker.yml new file mode 100644 index 00000000000..cccbc84c6c9 --- /dev/null +++ b/.github/workflows/build-external-node-docker.yml @@ -0,0 +1,51 @@ +name: External Node - Build & push docker image +on: + workflow_dispatch: + inputs: + image_tag: + description: "Tag of a built image to deploy (latest2.0 by default)" + type: string + required: false + default: "latest2.0" + +jobs: + build-images: + name: External Node - Build and Push Docker Image + runs-on: [matterlabs-ci-runner] + steps: + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3 + with: + submodules: "recursive" + + - name: setup-env + run: | + echo ZKSYNC_HOME=$(pwd) >> $GITHUB_ENV + echo CI=1 >> $GITHUB_ENV + echo $(pwd)/bin >> $GITHUB_PATH + echo CI=1 >> .env + echo IN_DOCKER=1 >> .env + + - name: start-services + run: | + docker-compose -f docker-compose-runner.yml up -d zk geth postgres + + - name: init + run: | + ci_run git config --global --add safe.directory /usr/src/zksync + ci_run git config --global --add safe.directory /usr/src/zksync/sdk/binaryen + ci_run git config --global --add safe.directory /usr/src/zksync/etc/system-contracts + ci_run git config --global --add safe.directory /usr/src/zksync/contracts + + ci_run zk + ci_run zk run yarn + ci_run cp etc/tokens/{test,localhost}.json + ci_run zk compiler all + ci_run zk contract build + ci_run zk f yarn run l2-contracts build + + - name: update-image + run: | + ci_run docker login -u ${{ secrets.DOCKERHUB_USER }} -p ${{ secrets.DOCKERHUB_TOKEN }} + ci_run zk docker build server-v2 + ci_run gcloud auth configure-docker us-docker.pkg.dev -q + ci_run zk docker push external-node --custom-tag ${{ inputs.image_tag }} diff --git a/.github/workflows/build-gar-reusable.yml b/.github/workflows/build-gar-reusable.yml new file mode 100644 index 00000000000..9a14508fdc7 --- /dev/null +++ b/.github/workflows/build-gar-reusable.yml @@ -0,0 +1,81 @@ +name: Workflow template for Build Prover builtin Setup Keys + +on: + workflow_call: + inputs: + image_tag_suffix: + description: "Commit sha or git tag for Docker tag" + required: true + type: string + setup_keys_id: + description: "Commit sha for downloading keys from bucket dir" + required: true + type: string + push_asia: + description: "Push images to Asia GAR" + required: false + default: false + type: boolean + +jobs: + build-gar-prover: + name: Build GAR prover + runs-on: [matterlabs-ci-runner] + strategy: + fail-fast: false + matrix: + setup_keys: + [ + { prover_id: "0", keys_ids: "0,18" }, + { prover_id: "1", keys_ids: "1,4" }, + { prover_id: "2", keys_ids: "2,5" }, + { prover_id: "3", keys_ids: "6,7" }, + { prover_id: "4", keys_ids: "8,9" }, + { prover_id: "5", keys_ids: "10,11" }, + { prover_id: "6", keys_ids: "12,13" }, + { prover_id: "7", keys_ids: "14,15" }, + { prover_id: "8", keys_ids: "16,17" }, + { prover_id: "9", keys_ids: "3" }, + ] + steps: + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3 + with: + submodules: "recursive" + + - name: Download Setup Keys + run: | + gsutil cp gs://matterlabs-setup-keys-us/setup-keys/setup_2\^26.key docker/prover-gar/setup_2\^26.key + IFS=', ' read -r -a keys_ids <<< "${{ matrix.setup_keys.keys_ids }}" + printf "%s\n" "${keys_ids[@]}"| xargs -n 1 -P 8 -I {} gsutil cp -P gs://matterlabs-zksync-v2-infra-blob-store/prover_setup_keys/${{ inputs.setup_keys_id }}/setup_{}_key.bin docker/prover-gar/ + + - name: Login to us-central1 GAR + run: | + gcloud auth print-access-token --lifetime=7200 --impersonate-service-account=gha-ci-runners@matterlabs-infra.iam.gserviceaccount.com | docker login -u oauth2accesstoken --password-stdin https://us-docker.pkg.dev + + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Build and push + uses: docker/build-push-action@v4 + with: + context: docker/prover-gar + build-args: | + PROVER_IMAGE=${{ inputs.image_tag_suffix }} + push: true + tags: | + us-docker.pkg.dev/matterlabs-infra/matterlabs-docker/prover-v2-gar:2.0-${{ inputs.image_tag_suffix }}-prover-${{ matrix.setup_keys.prover_id }}-${{ inputs.setup_keys_id }} + + - name: Login to asia-southeast1 GAR + if: "${{ inputs.push_asia }}" + run: | + gcloud auth print-access-token --lifetime=7200 --impersonate-service-account=gha-ci-runners@matterlabs-infra.iam.gserviceaccount.com | docker login -u oauth2accesstoken --password-stdin https://asia-docker.pkg.dev + + - name: Push image to Asia + if: "${{ inputs.push_asia }}" + run: | + docker buildx imagetools create \ + --tag asia-docker.pkg.dev/matterlabs-infra/matterlabs-docker/prover-v2-gar:2.0-${{ inputs.image_tag_suffix }}-prover-${{ matrix.setup_keys.prover_id }}-${{ inputs.setup_keys_id }} \ + us-docker.pkg.dev/matterlabs-infra/matterlabs-docker/prover-v2-gar:2.0-${{ inputs.image_tag_suffix }}-prover-${{ matrix.setup_keys.prover_id }}-${{ inputs.setup_keys_id }} diff --git a/.github/workflows/build-local-node-docker.yml b/.github/workflows/build-local-node-docker.yml new file mode 100644 index 00000000000..9880361206c --- /dev/null +++ b/.github/workflows/build-local-node-docker.yml @@ -0,0 +1,51 @@ +name: Local Node - Build docker image +on: + workflow_dispatch: + inputs: + image_tag: + description: "Tag of a built image to deploy (latest2.0 by default)" + type: string + required: false + default: "latest2.0" + +jobs: + build-images: + name: Local Node - Build and Push Docker Image + runs-on: [matterlabs-ci-runner] + steps: + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3 + with: + submodules: "recursive" + + - name: setup-env + run: | + echo ZKSYNC_HOME=$(pwd) >> $GITHUB_ENV + echo CI=1 >> $GITHUB_ENV + echo $(pwd)/bin >> $GITHUB_PATH + echo CI=1 >> .env + echo IN_DOCKER=1 >> .env + + - name: start-services + run: | + docker-compose -f docker-compose-runner.yml up -d zk geth postgres + + - name: init + run: | + ci_run git config --global --add safe.directory /usr/src/zksync + ci_run git config --global --add safe.directory /usr/src/zksync/sdk/binaryen + ci_run git config --global --add safe.directory /usr/src/zksync/etc/system-contracts + ci_run git config --global --add safe.directory /usr/src/zksync/contracts + + ci_run zk + ci_run zk run yarn + ci_run cp etc/tokens/{test,localhost}.json + ci_run zk compiler all + ci_run zk contract build + ci_run zk f yarn run l2-contracts build + + - name: update-image + run: | + ci_run docker login -u ${{ secrets.DOCKERHUB_USER }} -p ${{ secrets.DOCKERHUB_TOKEN }} + ci_run zk docker build server-v2 + ci_run gcloud auth configure-docker us-docker.pkg.dev -q + ci_run zk docker push local-node --custom-tag ${{ inputs.image_tag }} diff --git a/.github/workflows/build-prover-fri-gpu-gar.yml b/.github/workflows/build-prover-fri-gpu-gar.yml new file mode 100644 index 00000000000..9643d943318 --- /dev/null +++ b/.github/workflows/build-prover-fri-gpu-gar.yml @@ -0,0 +1,46 @@ +name: Build Prover FRI GPU with builtin setup data + +on: + workflow_call: + inputs: + image_tag_suffix: + description: "Commit sha or git tag for Docker tag" + required: true + type: string + setup_keys_id: + description: "Commit sha for downloading setup data from bucket dir" + required: true + type: string + +jobs: + build-gar-prover-fri-gpu: + name: Build prover FRI GPU GAR + runs-on: [matterlabs-ci-runner] + steps: + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3 + with: + submodules: "recursive" + + - name: Download Setup data + run: | + gsutil -m rsync -r gs://matterlabs-zksync-v2-infra-blob-store/prover_setup_data/${{ inputs.setup_keys_id }} docker/prover-gpu-fri-gar + + - name: Login to us-central1 GAR + run: | + gcloud auth print-access-token --lifetime=7200 --impersonate-service-account=gha-ci-runners@matterlabs-infra.iam.gserviceaccount.com | docker login -u oauth2accesstoken --password-stdin https://us-docker.pkg.dev + + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Build and push + uses: docker/build-push-action@v4 + with: + context: docker/prover-gpu-fri-gar + build-args: | + PROVER_IMAGE=${{ inputs.image_tag_suffix }} + push: true + tags: | + us-docker.pkg.dev/matterlabs-infra/matterlabs-docker/prover-fri-gpu-gar:2.0-${{ inputs.image_tag_suffix }} diff --git a/.github/workflows/build-prover-template.yml b/.github/workflows/build-prover-template.yml index f084bb3c382..b3a0c262503 100644 --- a/.github/workflows/build-prover-template.yml +++ b/.github/workflows/build-prover-template.yml @@ -46,6 +46,7 @@ jobs: env: image_tag: ${{ inputs.image_tag }} IMAGE_TAG_SUFFIX: ${{ inputs.image_tag_suffix }} + RUNNER_COMPOSE_FILE: "docker-compose-runner-nightly.yml" runs-on: [matterlabs-ci-runner] needs: [era-bellman-cuda] strategy: @@ -126,7 +127,6 @@ jobs: if [ "$underscored_name" == "prover_gpu_fri" ]; then underscored_name="prover_fri" fi - ci_run rustup default nightly-2023-07-21 ci_run echo [workspace] > Cargo.toml ci_run echo members = [\"prover/${underscored_name}\"] >> Cargo.toml ci_run cp prover/Cargo.lock Cargo.lock diff --git a/.github/workflows/ci-prover-reusable.yml b/.github/workflows/ci-prover-reusable.yml index 426855cdaa2..0626457761e 100644 --- a/.github/workflows/ci-prover-reusable.yml +++ b/.github/workflows/ci-prover-reusable.yml @@ -5,51 +5,33 @@ on: jobs: unit-tests: runs-on: [matterlabs-ci-runner] + env: + RUNNER_COMPOSE_FILE: "docker-compose-runner-nightly.yml" steps: - - name: Prepare environment - run: | - sudo apt update && sudo apt install -y \ - pkg-config libclang-dev build-essential lldb lld \ - clang openssl libssl-dev gcc g++ pkg-config libclang-dev curl wget - - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3 with: submodules: "recursive" - - name: Use Node.js 18.18.0 - uses: actions/setup-node@v2 - with: - node-version: '18.18.0' - - - name: Install Rust nightly-2023-07-21 - uses: actions-rs/toolchain@v1 - with: - toolchain: nightly-2023-07-21 - override: true - - name: Setup environment run: | echo ZKSYNC_HOME=$(pwd) >> $GITHUB_ENV echo $(pwd)/bin >> $GITHUB_PATH echo IN_DOCKER=1 >> .env - npm install -g yarn - cargo install sqlx-cli --version 0.5.13 - name: Start services run: | - docker-compose -f docker-compose-runner.yml pull - docker-compose -f docker-compose-runner.yml up --build -d zk + docker-compose -f ${RUNNER_COMPOSE_FILE} pull + docker-compose -f ${RUNNER_COMPOSE_FILE} up --build -d geth zk postgres ci_run sccache --start-server - name: Init run: | - zk - zk config compile - zk db setup + ci_run zk + ci_run zk config compile + ci_run zk db setup - name: Prover unit tests run: | - cd prover # Not all tests are enabled since, prover and setup_key_generator_and_server requires bellman-cuda to be present - zk f cargo +nightly-2023-07-21 test --release -p zksync_witness_generator -p vk_setup_data_generator_server_fri -p zksync_prover_fri -p zksync_witness_vector_generator -p zksync_prover_fri_utils + ci_run bash -c "cd prover && zk f cargo test --release -p zksync_witness_generator -p vk_setup_data_generator_server_fri -p zksync_prover_fri -p zksync_witness_vector_generator -p zksync_prover_fri_utils" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 633680bf2d6..1afb539d0d9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -41,6 +41,9 @@ jobs: all: - '!core/**' - '!prover/**' + - '!.github/workflows/zk-environment.publish.yml' + - '!docker/zk-environment/Dockerfile' + - '!docker/zk-environment-cuda-12-0/Dockerfile' ci-for-core: name: CI for Core Components needs: changed_files @@ -94,20 +97,3 @@ jobs: echo "Intentionally failing to block PR from merging" exit 1 fi - - notify: - if: always() && !cancelled() - name: Notify on failures - runs-on: ubuntu-latest - needs: [ci-for-core, ci-for-prover, build-core-images, build-prover-images] - steps: - - uses: technote-space/workflow-conclusion-action@45ce8e0eb155657ab8ccf346ade734257fd196a5 # v3 - - name: Notify to Mattermost (on incidents) - uses: tferreira/matterfy@releases/v1 - if: ${{ env.WORKFLOW_CONCLUSION == 'failure' }} - with: - type: failure - job_name: "*CI suites for PR #${{ github.event.pull_request.number }} failed*" - icon_emoji: octocat - channel: "ci-notifications" - url: ${{ secrets.MATTERMOST_WEBHOOK }} diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 5064bfe2272..e7ed89eb760 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -7,7 +7,7 @@ on: jobs: generate: - runs-on: [self-hosted, ci-runner] + runs-on: [matterlabs-ci-runner] steps: - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3 diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index d9f04a40e9d..1194864aa80 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -3,6 +3,10 @@ on: branches: - main +permissions: + contents: write + pull-requests: write + name: release-please jobs: release-please: diff --git a/.github/workflows/release-test-stage.yml b/.github/workflows/release-test-stage.yml new file mode 100644 index 00000000000..36021030135 --- /dev/null +++ b/.github/workflows/release-test-stage.yml @@ -0,0 +1,97 @@ +name: Build and release Stage +on: + push: + branches: + - main + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +jobs: + changed_files: + runs-on: [matterlabs-default-infra-runners] + name: Test changed-files + outputs: + core: ${{ steps.changed-files-yaml.outputs.core_any_changed }} + prover: ${{ steps.changed-files-yaml.outputs.prover_any_changed }} + all: ${{ steps.changed-files-yaml.outputs.all_any_changed }} + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 2 + submodules: "recursive" + + - name: Get all test, doc and src files that have changed + id: changed-files-yaml + uses: tj-actions/changed-files@v37 + with: + files_yaml: | + # If you want to exclude some files, please adjust here. + prover: + - prover/** + core: + - core/** + all: + - '!core/**' + - '!prover/**' + setup: + name: Setup + runs-on: [self-hosted, k8s, stage] + outputs: + image_tag_suffix: ${{ steps.generate-tag-suffix.outputs.image_tag_suffix }} + steps: + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3 + with: + submodules: "recursive" + + - name: Generate image tag suffix + id: generate-tag-suffix + run: | + sha=$(git rev-parse --short HEAD) + ts=$(date +%s%N | cut -b1-13) + echo "image_tag_suffix=${sha}-${ts}" >> $GITHUB_OUTPUT + + build-push-core-images: + name: Build and push images + needs: [setup, changed_files] + uses: ./.github/workflows/build-core-template.yml + if: needs.changed_files.outputs.core == 'true' || needs.changed_files.outputs.all == 'true' + with: + image_tag: ${{ needs.setup.outputs.image_tag }} + image_tag_suffix: ${{ needs.setup.outputs.image_tag_suffix }} + secrets: + DOCKERHUB_USER: ${{ secrets.DOCKERHUB_USER }} + DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} + + build-push-prover-images: + name: Build and push images + needs: [setup, changed_files] + uses: ./.github/workflows/build-prover-template.yml + if: needs.changed_files.outputs.prover == 'true' || needs.changed_files.outputs.all == 'true' + with: + image_tag: ${{ needs.setup.outputs.image_tag }} + image_tag_suffix: ${{ needs.setup.outputs.image_tag_suffix }} + ERA_BELLMAN_CUDA_RELEASE: ${{ vars.ERA_BELLMAN_CUDA_RELEASE }} + secrets: + DOCKERHUB_USER: ${{ secrets.DOCKERHUB_USER }} + DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} + + build-gar-prover: + name: Build GAR prover + needs: [setup, build-push-core-images, build-push-prover-images] + uses: ./.github/workflows/build-gar-reusable.yml + if: needs.changed_files.outputs.prover == 'true' || needs.changed_files.outputs.all == 'true' + with: + setup_keys_id: 4989f12 + image_tag_suffix: ${{ needs.setup.outputs.image_tag_suffix }} + push_asia: false + + build-gar-prover-fri-gpu: + name: Build GAR prover FRI GPU + needs: [setup, build-push-prover-images] + uses: ./.github/workflows/build-prover-fri-gpu-gar.yml + if: needs.changed_files.outputs.prover == 'true' || needs.changed_files.outputs.all == 'true' + with: + setup_keys_id: 2d33a27-gpu + image_tag_suffix: ${{ needs.setup.outputs.image_tag_suffix }} diff --git a/.github/workflows/secrets_scanner.yaml b/.github/workflows/secrets_scanner.yaml index 54054cf7cc1..6a1faa200cc 100644 --- a/.github/workflows/secrets_scanner.yaml +++ b/.github/workflows/secrets_scanner.yaml @@ -1,5 +1,7 @@ name: Leaked Secrets Scan -on: [pull_request] +on: + pull_request: + merge_group: jobs: TruffleHog: runs-on: ubuntu-latest diff --git a/.github/workflows/vm-perf-comparison.yml b/.github/workflows/vm-perf-comparison.yml index 3078c9bfa8a..1e5b65a3598 100644 --- a/.github/workflows/vm-perf-comparison.yml +++ b/.github/workflows/vm-perf-comparison.yml @@ -6,7 +6,7 @@ on: jobs: vm-benchmarks: name: Run VM benchmarks - runs-on: [self-hosted, ci-runner] + runs-on: [matterlabs-ci-runner] steps: - uses: actions/checkout@v3 diff --git a/.github/workflows/vm-perf-to-prometheus.yml b/.github/workflows/vm-perf-to-prometheus.yml new file mode 100644 index 00000000000..d2a6594ffca --- /dev/null +++ b/.github/workflows/vm-perf-to-prometheus.yml @@ -0,0 +1,39 @@ +name: Push main branch VM benchmarks to Prometheus + +on: + push: + branches: + - main + workflow_dispatch: + +# Disable simultaneous deployments into a single environment +concurrency: vm-benchmarks + +jobs: + vm-benchmarks: + name: Run VM benchmarks + runs-on: [matterlabs-ci-runner] + + steps: + - uses: actions/checkout@v3 + with: + submodules: "recursive" + + - name: setup-env + run: | + echo PUSH_VM_BENCHMARKS_TO_PROMETHEUS=1 >> .env + + echo ZKSYNC_HOME=$(pwd) >> $GITHUB_ENV + echo $(pwd)/bin >> $GITHUB_PATH + + - name: init + run: | + docker-compose -f docker-compose-runner.yml up -d zk + ci_run zk + ci_run zk compiler system-contracts + + - name: run benchmarks + run: | + ci_run cargo bench --package vm-benchmark --bench diy_benchmark + ci_run cargo bench --package vm-benchmark --bench iai | tee iai-result + ci_run cargo run --package vm-benchmark --bin iai_results_to_prometheus --release < iai-result diff --git a/.github/workflows/zk-environment-cuda-12-0.publish.yml b/.github/workflows/zk-environment-cuda-12-0.publish.yml deleted file mode 100644 index f6471582bdf..00000000000 --- a/.github/workflows/zk-environment-cuda-12-0.publish.yml +++ /dev/null @@ -1,50 +0,0 @@ -name: publish zk-environment with cuda 12.0 docker image - -on: - pull_request: - branches: - - main - types: [closed] - paths: - - "docker/zk-environment-cuda-12-0/Dockerfile" - - ".github/workflows/zk-environment-cuda-12-0.publish.yml" - workflow_dispatch: - branches: - - "main" - -jobs: - push_to_registry: - if: github.event.pull_request.merged == true || github.event_name == 'workflow_dispatch' - name: Push Docker image to Docker Hub - runs-on: [self-hosted, ci-runner] - steps: - - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3 - with: - submodules: "recursive" - - - name: Login to us-central1 GAR - run: | - gcloud auth print-access-token --lifetime=7200 --impersonate-service-account=gha-ci-runners@matterlabs-infra.iam.gserviceaccount.com | docker login -u oauth2accesstoken --password-stdin https://us-docker.pkg.dev - - - name: Log in to Docker Hub - uses: docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a # v2.1.0 - with: - username: ${{ secrets.DOCKERHUB_USER }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Set up QEMU - uses: docker/setup-qemu-action@v2 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - - - name: Build and push - uses: docker/build-push-action@v4 - with: - context: . - file: docker/zk-environment-cuda-12-0/Dockerfile - push: true - target: nvidia-tools - tags: | - us-docker.pkg.dev/matterlabs-infra/matterlabs-docker/zk-environment-cuda-12-0:latest - matterlabs/zk-environment:cuda-12-0-latest diff --git a/.github/workflows/zk-environment.publish.yml b/.github/workflows/zk-environment.publish.yml index 561da619021..bf2ec7fa18b 100644 --- a/.github/workflows/zk-environment.publish.yml +++ b/.github/workflows/zk-environment.publish.yml @@ -1,4 +1,4 @@ -name: publish zk-environment docker image +name: publish zk-environment docker images on: pull_request: @@ -8,15 +8,41 @@ on: paths: - "docker/zk-environment/Dockerfile" - ".github/workflows/zk-environment.publish.yml" + - "docker/zk-environment-cuda-12-0/Dockerfile" + - ".github/workflows/zk-environment-cuda-12-0.publish.yml" workflow_dispatch: branches: - "main" jobs: - push_to_registry: - if: github.event.pull_request.merged == true || github.event_name == 'workflow_dispatch' - name: Push Docker image to Docker Hub - runs-on: [self-hosted, ci-runner] + changed_files: + name: Changed files + outputs: + zk_environment: ${{ steps.changed-files-yaml.outputs.zk_env_any_changed }} + zk_environment_cuda_12: ${{ steps.changed-files-yaml.outputs.zk_env_cuda_12_any_changed }} + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3 + with: + submodules: "recursive" + + - name: Get changed files + id: changed-files-yaml + uses: tj-actions/changed-files@v39 + with: + files_yaml: | + zk_env: + - docker/zk-environment/Dockerfile + - .github/workflows/zk-environment.publish.yml + zk_env_cuda_12: + - docker/zk-environment-cuda-12-0/Dockerfile + - .github/workflows/zk-environment-cuda-12-0.publish.yml + + zk_environment: + if: needs.changed_files.outputs.zk_environment == 'true' && github.event.pull_request.merged == true || github.event_name == 'workflow_dispatch' + name: Push zk-environment docker image to Docker Hub + runs-on: ubuntu-latest + needs: changed_files steps: - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3 with: @@ -51,3 +77,70 @@ jobs: tags: "matterlabs/zk-environment:latest2.0" file: docker/zk-environment/Dockerfile no-cache: true + + rust_nightly: + if: needs.changed_files.outputs.zk_environment == 'true' && github.event.pull_request.merged == true || github.event_name == 'workflow_dispatch' + name: Push rust nightly docker image to Docker Hub + needs: changed_files + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3 + with: + submodules: "recursive" + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@f03ac48505955848960e80bbb68046aa35c7b9e7 # v2 + + - name: Log in to Docker Hub + uses: docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a # v2.1.0 + with: + username: ${{ secrets.DOCKERHUB_USER }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Build and push Docker image + uses: docker/build-push-action@3b5e8027fcad23fda98b2e3ac259d8d67585f671 # v4.0.0 + with: + context: . + push: true + target: rust-nightly + tags: "matterlabs/zksync_rust:nightly" + file: docker/zk-environment/Dockerfile + no-cache: true + + + zk_environment_cuda_12: + if: needs.changed_files.outputs.zk_environment_cuda_12 == 'true' && github.event.pull_request.merged == true || github.event_name == 'workflow_dispatch' + name: Push zk-environment cuda 12 docker image to Docker Hub + runs-on: [matterlabs-ci-runner] + needs: changed_files + steps: + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3 + with: + submodules: "recursive" + + - name: Login to us-central1 GAR + run: | + gcloud auth print-access-token --lifetime=7200 --impersonate-service-account=gha-ci-runners@matterlabs-infra.iam.gserviceaccount.com | docker login -u oauth2accesstoken --password-stdin https://us-docker.pkg.dev + + - name: Log in to Docker Hub + uses: docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a # v2.1.0 + with: + username: ${{ secrets.DOCKERHUB_USER }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Build and push + uses: docker/build-push-action@v4 + with: + context: . + file: docker/zk-environment-cuda-12-0/Dockerfile + push: true + target: nvidia-tools + tags: | + us-docker.pkg.dev/matterlabs-infra/matterlabs-docker/zk-environment-cuda-12-0:latest + matterlabs/zk-environment:cuda-12-0-latest diff --git a/CODEOWNERS b/CODEOWNERS index 12cd2618709..8cde1cc1ade 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,4 +1,5 @@ -* @matter-labs/core +* @matter-labs/era-reviewers .github/release-please/** @RomanBrodetski @perekopskiy @Deniallugo @popzxc **/CHANGELOG.md @RomanBrodetski @perekopskiy @Deniallugo @popzxc CODEOWNERS @RomanBrodetski @perekopskiy @Deniallugo @popzxc +.github/workflows/** @matter-labs/devops diff --git a/Cargo.lock b/Cargo.lock index 8367f09a7a5..2195eb81a69 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6436,6 +6436,21 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" +[[package]] +name = "system-constants-generator" +version = "0.1.0" +dependencies = [ + "codegen 0.2.0", + "once_cell", + "serde", + "serde_json", + "vm", + "zksync_contracts", + "zksync_state", + "zksync_types", + "zksync_utils", +] + [[package]] name = "tagptr" version = "0.2.0" @@ -7420,9 +7435,9 @@ dependencies = [ [[package]] name = "webpki" -version = "0.22.1" +version = "0.22.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0e74f82d49d545ad128049b7e88f6576df2da6b02e9ce565c6f533be576957e" +checksum = "07ecc0cd7cac091bf682ec5efa18b1cff79d617b84181f38b3951dbe135f607f" dependencies = [ "ring", "untrusted", diff --git a/Cargo.toml b/Cargo.toml index 9a62cde88d7..9211084819d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,7 +7,7 @@ members = [ "core/bin/merkle_tree_consistency_checker", "core/bin/rocksdb_util", "core/bin/storage_logs_dedup_migration", - # "core/bin/system-constants-generator", + "core/bin/system-constants-generator", "core/bin/verification_key_generator_and_server", "core/bin/verified_sources_fetcher", "core/bin/zksync_server", diff --git a/bin/ci_run b/bin/ci_run index b76fce10ac7..0f578106f46 100755 --- a/bin/ci_run +++ b/bin/ci_run @@ -2,5 +2,5 @@ # Runs the command from within CI docker-compose environment. cd $ZKSYNC_HOME - -docker-compose -f docker-compose-runner.yml exec -T zk $@ +compose_file="${RUNNER_COMPOSE_FILE:-docker-compose-runner.yml}" +docker-compose -f $compose_file exec -T zk $@ diff --git a/core/CHANGELOG.md b/core/CHANGELOG.md index 1b8d1857453..36060639819 100644 --- a/core/CHANGELOG.md +++ b/core/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## [15.1.0](https://github.com/matter-labs/zksync-era/compare/core-v15.0.2...core-v15.1.0) (2023-10-03) + + +### Features + +* Implement dynamic L2-to-L1 log tree depth ([#126](https://github.com/matter-labs/zksync-era/issues/126)) ([7dfbc5e](https://github.com/matter-labs/zksync-era/commit/7dfbc5eddab94cd24f96912e0d43ba36e1cf363f)) +* **vm:** Introduce new way of returning from the tracer [#2569](https://github.com/matter-labs/zksync-era/issues/2569) ([#116](https://github.com/matter-labs/zksync-era/issues/116)) ([cf44a49](https://github.com/matter-labs/zksync-era/commit/cf44a491a324199b4cf457d28658da44b6dafc61)) +* **vm:** Restore system-constants-generator ([#115](https://github.com/matter-labs/zksync-era/issues/115)) ([5e61bdc](https://github.com/matter-labs/zksync-era/commit/5e61bdc75b2baa03004d4d3e801170c094766964)) + ## [15.0.1](https://github.com/matter-labs/zksync-2-dev/compare/core-v15.0.0...core-v15.0.1) (2023-09-27) diff --git a/core/bin/system-constants-generator/src/intrinsic_costs.rs b/core/bin/system-constants-generator/src/intrinsic_costs.rs index c663939db6e..0491be494ab 100644 --- a/core/bin/system-constants-generator/src/intrinsic_costs.rs +++ b/core/bin/system-constants-generator/src/intrinsic_costs.rs @@ -9,7 +9,7 @@ use crate::utils::{ get_l2_txs, }; use crate::utils::{metrics_from_txs, TransactionGenerator}; -use vm::vm_with_bootloader::BOOTLOADER_TX_ENCODING_SPACE; +use vm::constants::BOOTLOADER_TX_ENCODING_SPACE; use zksync_types::{ethabi::Address, IntrinsicSystemGasConstants, U256}; #[derive(Debug, Clone, Copy, PartialEq)] diff --git a/core/bin/system-constants-generator/src/main.rs b/core/bin/system-constants-generator/src/main.rs index d101647134f..f076eadd8c8 100644 --- a/core/bin/system-constants-generator/src/main.rs +++ b/core/bin/system-constants-generator/src/main.rs @@ -1,16 +1,6 @@ use std::fs; use serde::{Deserialize, Serialize}; -use vm::{ - vm_with_bootloader::{BLOCK_OVERHEAD_GAS, BLOCK_OVERHEAD_L1_GAS, BOOTLOADER_TX_ENCODING_SPACE}, - zk_evm::zkevm_opcode_defs::{ - circuit_prices::{ - ECRECOVER_CIRCUIT_COST_IN_ERGS, KECCAK256_CIRCUIT_COST_IN_ERGS, - SHA256_CIRCUIT_COST_IN_ERGS, - }, - system_params::{MAX_PUBDATA_PER_BLOCK, MAX_TX_ERGS_LIMIT}, - }, -}; use zksync_types::{ IntrinsicSystemGasConstants, GUARANTEED_PUBDATA_IN_TX, L1_GAS_PER_PUBDATA_BYTE, MAX_GAS_PER_PUBDATA_BYTE, MAX_NEW_FACTORY_DEPS, MAX_TXS_IN_BLOCK, @@ -21,6 +11,13 @@ mod utils; use codegen::Block; use codegen::Scope; +use vm::constants::{ + BLOCK_OVERHEAD_GAS, BLOCK_OVERHEAD_L1_GAS, BOOTLOADER_TX_ENCODING_SPACE, MAX_PUBDATA_PER_BLOCK, +}; +use zksync_types::zkevm_test_harness::zk_evm::zkevm_opcode_defs::circuit_prices::{ + ECRECOVER_CIRCUIT_COST_IN_ERGS, KECCAK256_CIRCUIT_COST_IN_ERGS, SHA256_CIRCUIT_COST_IN_ERGS, +}; +use zksync_types::zkevm_test_harness::zk_evm::zkevm_opcode_defs::system_params::MAX_TX_ERGS_LIMIT; // Params needed for L1 contracts #[derive(Copy, Clone, Debug, Serialize, Deserialize)] @@ -128,7 +125,7 @@ fn generate_rust_fee_constants(intrinsic_gas_constants: &IntrinsicSystemGasConst scope.import("super", "IntrinsicSystemGasConstants"); scope.raw( - vec![ + [ "// TODO (SMA-1699): Use this method to ensure that the transactions provide enough", "// intrinsic gas on the API level.", ] @@ -193,7 +190,7 @@ fn generate_rust_fee_constants(intrinsic_gas_constants: &IntrinsicSystemGasConst get_intrinsic_constants_fn.push_block(struct_block); } - vec![ + [ "//! THIS FILE IS AUTOGENERATED: DO NOT EDIT MANUALLY!\n".to_string(), "//! The file with constants related to fees most of which need to be computed\n" .to_string(), diff --git a/core/bin/system-constants-generator/src/utils.rs b/core/bin/system-constants-generator/src/utils.rs index d429f4813b2..afb00b5cda7 100644 --- a/core/bin/system-constants-generator/src/utils.rs +++ b/core/bin/system-constants-generator/src/utils.rs @@ -1,36 +1,62 @@ use once_cell::sync::Lazy; +use std::cell::RefCell; +use std::rc::Rc; +use vm::constants::{BLOCK_GAS_LIMIT, BOOTLOADER_HEAP_PAGE}; use vm::{ - utils::{create_test_block_params, read_bootloader_test_code, BLOCK_GAS_LIMIT}, - vm_with_bootloader::{ - init_vm_inner, push_raw_transaction_to_bootloader_memory, BlockContextMode, - BootloaderJobType, DerivedBlockContext, TxExecutionMode, - }, - zk_evm::{aux_structures::Timestamp, zkevm_opcode_defs::BOOTLOADER_HEAP_PAGE}, - HistoryEnabled, OracleTools, + BootloaderState, BoxedTracer, DynTracer, ExecutionEndTracer, ExecutionProcessing, + HistoryEnabled, HistoryMode, L1BatchEnv, L2BlockEnv, SystemEnv, TxExecutionMode, Vm, + VmExecutionMode, VmExecutionStopReason, VmTracer, ZkSyncVmState, }; use zksync_contracts::{ - load_sys_contract, read_bootloader_code, read_sys_contract_bytecode, BaseSystemContracts, - ContractLanguage, SystemContractCode, + load_sys_contract, read_bootloader_code, read_sys_contract_bytecode, read_zbin_bytecode, + BaseSystemContracts, ContractLanguage, SystemContractCode, }; use zksync_state::{InMemoryStorage, StorageView, WriteStorage}; +use zksync_types::block::legacy_miniblock_hash; use zksync_types::{ - ethabi::Token, - fee::Fee, - l1::L1Tx, - l2::L2Tx, - tx::{ - tx_execution_info::{TxExecutionStatus, VmExecutionLogs}, - ExecutionMetrics, - }, - utils::storage_key_for_eth_balance, - AccountTreeId, Address, Execute, L1TxCommonData, L2ChainId, Nonce, StorageKey, Transaction, - BOOTLOADER_ADDRESS, H256, SYSTEM_CONTEXT_ADDRESS, SYSTEM_CONTEXT_GAS_PRICE_POSITION, - SYSTEM_CONTEXT_TX_ORIGIN_POSITION, U256, + ethabi::Token, fee::Fee, l1::L1Tx, l2::L2Tx, utils::storage_key_for_eth_balance, AccountTreeId, + Address, Execute, L1BatchNumber, L1TxCommonData, L2ChainId, MiniblockNumber, Nonce, + ProtocolVersionId, StorageKey, Timestamp, Transaction, BOOTLOADER_ADDRESS, H256, + SYSTEM_CONTEXT_ADDRESS, SYSTEM_CONTEXT_GAS_PRICE_POSITION, SYSTEM_CONTEXT_TX_ORIGIN_POSITION, + U256, ZKPORTER_IS_AVAILABLE, }; use zksync_utils::{bytecode::hash_bytecode, bytes_to_be_words, u256_to_h256}; use crate::intrinsic_costs::VmSpentResourcesResult; +/// Tracer for setting the data for bootloader with custom input +/// and receive an output from this custom bootloader +struct SpecialBootloaderTracer { + input: Vec<(usize, U256)>, + output: Rc>, +} + +impl DynTracer for SpecialBootloaderTracer {} + +impl ExecutionEndTracer for SpecialBootloaderTracer {} + +impl ExecutionProcessing for SpecialBootloaderTracer { + fn initialize_tracer(&mut self, state: &mut ZkSyncVmState) { + state.memory.populate_page( + BOOTLOADER_HEAP_PAGE as usize, + self.input.clone(), + Timestamp(0), + ); + } + fn after_vm_execution( + &mut self, + state: &mut ZkSyncVmState, + _bootloader_state: &BootloaderState, + _stop_reason: VmExecutionStopReason, + ) { + let value_recorded_from_test = state.memory.read_slot(BOOTLOADER_HEAP_PAGE as usize, 0); + let mut res = self.output.borrow_mut(); + *res = value_recorded_from_test.value.as_u32(); + } +} + +impl VmTracer for SpecialBootloaderTracer {} + pub static GAS_TEST_SYSTEM_CONTRACTS: Lazy = Lazy::new(|| { let bytecode = read_bootloader_code("gas_test"); let hash = hash_bytecode(&bytecode); @@ -135,19 +161,39 @@ pub(super) fn get_l1_txs(number_of_txs: usize) -> (Vec, Vec Vec { + read_zbin_bytecode(format!( + "etc/system-contracts/bootloader/tests/artifacts/{}.yul/{}.yul.zbin", + test, test + )) +} + +fn default_l1_batch() -> L1BatchEnv { + L1BatchEnv { + previous_batch_hash: None, + number: L1BatchNumber(1), + timestamp: 100, + l1_gas_price: 50_000_000_000, // 50 gwei + fair_l2_gas_price: 250_000_000, // 0.25 gwei + fee_account: Address::random(), + enforced_base_fee: None, + first_l2_block: L2BlockEnv { + number: 1, + timestamp: 100, + prev_block_hash: legacy_miniblock_hash(MiniblockNumber(0)), + max_virtual_blocks_to_create: 100, + }, + } +} + /// Executes the "internal transfer test" of the bootloader -- the test that /// returns the amount of gas needed to perform and internal transfer, assuming no gas price /// per pubdata, i.e. under assumption that the refund will not touch any new slots. pub(super) fn execute_internal_transfer_test() -> u32 { - let (block_context, block_properties) = create_test_block_params(); - let block_context: DerivedBlockContext = block_context.into(); - let raw_storage = InMemoryStorage::with_system_contracts(hash_bytecode); let mut storage_view = StorageView::new(raw_storage); let bootloader_balance_key = storage_key_for_eth_balance(&BOOTLOADER_ADDRESS); storage_view.set_value(bootloader_balance_key, u256_to_h256(U256([0, 0, 1, 0]))); - let mut oracle_tools = OracleTools::new(&mut storage_view, HistoryEnabled); - let bytecode = read_bootloader_test_code("transfer_test"); let hash = hash_bytecode(&bytecode); let bootloader = SystemContractCode { @@ -155,6 +201,8 @@ pub(super) fn execute_internal_transfer_test() -> u32 { hash, }; + let l1_batch = default_l1_batch(); + let bytecode = read_sys_contract_bytecode("", "DefaultAccount", ContractLanguage::Sol); let hash = hash_bytecode(&bytecode); let default_aa = SystemContractCode { @@ -162,19 +210,20 @@ pub(super) fn execute_internal_transfer_test() -> u32 { hash, }; - let base_system_contract = BaseSystemContracts { + let base_system_smart_contracts = BaseSystemContracts { bootloader, default_aa, }; - let mut vm = init_vm_inner( - &mut oracle_tools, - BlockContextMode::NewBlock(block_context, Default::default()), - &block_properties, - BLOCK_GAS_LIMIT, - &base_system_contract, - TxExecutionMode::VerifyExecute, - ); + let system_env = SystemEnv { + zk_porter_available: ZKPORTER_IS_AVAILABLE, + version: ProtocolVersionId::latest(), + base_system_smart_contracts, + gas_limit: BLOCK_GAS_LIMIT, + execution_mode: TxExecutionMode::VerifyExecute, + default_validation_computational_gas_limit: BLOCK_GAS_LIMIT, + chain_id: L2ChainId::default(), + }; let eth_token_sys_contract = load_sys_contract("L2EthToken"); let transfer_from_to = ð_token_sys_contract @@ -197,24 +246,22 @@ pub(super) fn execute_internal_transfer_test() -> u32 { input }; let input: Vec<_> = bytes_to_be_words(input).into_iter().enumerate().collect(); - vm.state - .memory - .populate_page(BOOTLOADER_HEAP_PAGE as usize, input, Timestamp(0)); - - let result = vm.execute_till_block_end(BootloaderJobType::BlockPostprocessing); - assert!( - result.block_tip_result.revert_reason.is_none(), - "The internal call has reverted" - ); - assert!( - result.full_result.revert_reason.is_none(), - "The internal call has reverted" + let tracer_result = Rc::new(RefCell::new(0)); + let tracer = SpecialBootloaderTracer { + input, + output: tracer_result.clone(), + }; + let mut vm = Vm::new( + l1_batch, + system_env, + Rc::new(RefCell::new(storage_view)), + HistoryEnabled, ); + let result = vm.inspect(vec![tracer.into_boxed()], VmExecutionMode::Bootloader); - let value_recorded_from_test = vm.state.memory.read_slot(BOOTLOADER_HEAP_PAGE as usize, 0); - - value_recorded_from_test.value.as_u32() + assert!(!result.result.is_failed(), "The internal call has reverted"); + tracer_result.take() } // Executes an array of transactions in the VM. @@ -226,9 +273,6 @@ pub(super) fn execute_user_txs_in_test_gas_vm( .iter() .fold(U256::zero(), |sum, elem| sum + elem.gas_limit()); - let (block_context, block_properties) = create_test_block_params(); - let block_context: DerivedBlockContext = block_context.into(); - let raw_storage = InMemoryStorage::with_system_contracts(hash_bytecode); let mut storage_view = StorageView::new(raw_storage); @@ -256,61 +300,43 @@ pub(super) fn execute_user_txs_in_test_gas_vm( storage_view.set_value(tx_gas_price_key, u256_to_h256(U256([1, 0, 0, 0]))); } - let mut oracle_tools = OracleTools::new(&mut storage_view, HistoryEnabled); + let l1_batch = default_l1_batch(); + let system_env = SystemEnv { + zk_porter_available: ZKPORTER_IS_AVAILABLE, + version: ProtocolVersionId::latest(), + base_system_smart_contracts: GAS_TEST_SYSTEM_CONTRACTS.clone(), + gas_limit: BLOCK_GAS_LIMIT, + execution_mode: TxExecutionMode::VerifyExecute, + default_validation_computational_gas_limit: BLOCK_GAS_LIMIT, + chain_id: L2ChainId::default(), + }; - let mut vm = init_vm_inner( - &mut oracle_tools, - BlockContextMode::NewBlock(block_context, Default::default()), - &block_properties, - BLOCK_GAS_LIMIT, - &GAS_TEST_SYSTEM_CONTRACTS, - TxExecutionMode::VerifyExecute, + let mut vm = Vm::new( + l1_batch, + system_env, + Rc::new(RefCell::new(storage_view)), + HistoryEnabled, ); - vm.start_next_l2_block(vm.get_current_l2_block_info().dummy_next_block_info()); let mut total_gas_refunded = 0; for tx in txs { - push_raw_transaction_to_bootloader_memory( - &mut vm, - tx.clone().into(), - TxExecutionMode::VerifyExecute, - 0, - None, - ); - let tx_execution_result = vm - .execute_next_tx(u32::MAX, false) - .expect("Bootloader failed while processing transaction"); + vm.push_transaction(tx); + let tx_execution_result = vm.execute(VmExecutionMode::OneTx); - total_gas_refunded += tx_execution_result.gas_refunded; + total_gas_refunded += tx_execution_result.refunds.gas_refunded; if !accept_failure { - assert_eq!( - tx_execution_result.status, - TxExecutionStatus::Success, + assert!( + !tx_execution_result.result.is_failed(), "A transaction has failed" ); } } - let result = vm.execute_till_block_end(BootloaderJobType::BlockPostprocessing); - let execution_logs = VmExecutionLogs { - storage_logs: result.full_result.storage_log_queries, - events: result.full_result.events, - l2_to_l1_logs: result.full_result.system_logs, - total_log_queries_count: result.full_result.total_log_queries, - }; - - let metrics = ExecutionMetrics::new( - &execution_logs, - result.full_result.gas_used as usize, - 0, // The number of contracts deployed is irrelevant for our needs - result.full_result.contracts_used, - result.full_result.cycles_used, - result.full_result.computational_gas_used, - result.full_result.total_log_queries, - ); + let result = vm.execute(VmExecutionMode::Bootloader); + let metrics = result.get_execution_metrics(None); VmSpentResourcesResult { - gas_consumed: vm.gas_consumed(), + gas_consumed: result.statistics.gas_used, total_gas_paid: total_gas_paid_upfront.as_u32() - total_gas_refunded, pubdata_published: metrics.size() as u32, total_pubdata_paid: 0, diff --git a/core/lib/circuit_breaker/src/replication_lag.rs b/core/lib/circuit_breaker/src/replication_lag.rs index df8e886258b..244c53349ce 100644 --- a/core/lib/circuit_breaker/src/replication_lag.rs +++ b/core/lib/circuit_breaker/src/replication_lag.rs @@ -20,7 +20,7 @@ impl CircuitBreaker for ReplicationLagChecker { .get_replication_lag_sec() .await; - metrics::histogram!("circuit_breaker.replication_lag", lag as f64); + metrics::gauge!("circuit_breaker.replication_lag", lag as f64); match self.replication_lag_limit_sec { Some(replication_lag_limit_sec) if lag > replication_lag_limit_sec => Err( CircuitBreakerError::ReplicationLag(lag, replication_lag_limit_sec), diff --git a/core/lib/mempool/src/tests.rs b/core/lib/mempool/src/tests.rs index 6de94c766d3..cb149752e2d 100644 --- a/core/lib/mempool/src/tests.rs +++ b/core/lib/mempool/src/tests.rs @@ -206,7 +206,7 @@ fn two_ready_txs() { view(mempool.next_transaction(&L2TxFilter::default())), view(mempool.next_transaction(&L2TxFilter::default())) ]), - HashSet::<(_, _)>::from_iter(vec![(account0, 0), (account1, 0)].into_iter()), + HashSet::<(_, _)>::from_iter(vec![(account0, 0), (account1, 0)]), ); } diff --git a/core/lib/merkle_tree/src/domain.rs b/core/lib/merkle_tree/src/domain.rs index cf3386de5f1..98955fb7323 100644 --- a/core/lib/merkle_tree/src/domain.rs +++ b/core/lib/merkle_tree/src/domain.rs @@ -194,7 +194,7 @@ impl ZkSyncTree { let instructions_with_hashed_keys = instructions .iter() - .map(|(k, instr)| (k.hashed_key_u256(), instr.clone())) + .map(|(k, instr)| (k.hashed_key_u256(), *instr)) .collect::>(); tracing::info!( @@ -361,7 +361,7 @@ impl ZkSyncTree { let kvs_with_derived_key = kvs .iter() - .map(|(k, v)| (k.hashed_key_u256(), v.clone())) + .map(|(k, v)| (k.hashed_key_u256(), *v)) .collect::>(); let output = if let Some(thread_pool) = &self.thread_pool { diff --git a/core/lib/merkle_tree/src/hasher.rs b/core/lib/merkle_tree/src/hasher.rs index 5c06f2e3561..646050abbc7 100644 --- a/core/lib/merkle_tree/src/hasher.rs +++ b/core/lib/merkle_tree/src/hasher.rs @@ -227,7 +227,7 @@ impl MerklePath { } } - pub(crate) fn push(&mut self, hasher: &mut HasherWithStats<'_>, maybe_hash: Option) { + pub(crate) fn push(&mut self, hasher: &HasherWithStats<'_>, maybe_hash: Option) { if let Some(hash) = maybe_hash { self.hashes.push(hash); } else if !self.hashes.is_empty() { @@ -316,7 +316,7 @@ impl InternalNodeCache { fn extend_merkle_path( &self, - hasher: &mut HasherWithStats<'_>, + hasher: &HasherWithStats<'_>, merkle_path: &mut MerklePath, nibble: u8, ) { diff --git a/core/lib/merkle_tree/src/storage/tests.rs b/core/lib/merkle_tree/src/storage/tests.rs index 19006689174..64241c05b93 100644 --- a/core/lib/merkle_tree/src/storage/tests.rs +++ b/core/lib/merkle_tree/src/storage/tests.rs @@ -256,23 +256,23 @@ fn proving_keys_existence_and_absence() { let mut hasher = (&() as &dyn HashTree).into(); let (op, merkle_path) = updater.prove(&mut hasher, FIRST_KEY, &Nibbles::EMPTY); assert_matches!(op, TreeLogEntry::Read { .. }); - let merkle_path = finalize_merkle_path(merkle_path, &mut hasher); + let merkle_path = finalize_merkle_path(merkle_path, &hasher); assert!(merkle_path.is_empty()); // all adjacent hashes correspond to empty subtrees let (op, merkle_path) = updater.prove(&mut hasher, SECOND_KEY, &Nibbles::EMPTY); assert_matches!(op, TreeLogEntry::ReadMissingKey); - let merkle_path = finalize_merkle_path(merkle_path, &mut hasher); + let merkle_path = finalize_merkle_path(merkle_path, &hasher); assert_eq!(merkle_path.len(), 40); updater.insert(THIRD_KEY, H256([3; 32]), &Nibbles::EMPTY, || 2); let (op, merkle_path) = updater.prove(&mut hasher, FIRST_KEY, &Nibbles::EMPTY); assert_matches!(op, TreeLogEntry::Read { .. }); - let merkle_path = finalize_merkle_path(merkle_path, &mut hasher); + let merkle_path = finalize_merkle_path(merkle_path, &hasher); assert_eq!(merkle_path.len(), 18); // keys diverge at 18th bit let (op, merkle_path) = updater.prove(&mut hasher, SECOND_KEY, &Nibbles::EMPTY); assert_matches!(op, TreeLogEntry::ReadMissingKey); - let merkle_path = finalize_merkle_path(merkle_path, &mut hasher); + let merkle_path = finalize_merkle_path(merkle_path, &hasher); assert_eq!(merkle_path.len(), 40); assert_eq!(updater.metrics.key_reads, 2); @@ -280,7 +280,7 @@ fn proving_keys_existence_and_absence() { } // Emulate Merkle path finalization. -fn finalize_merkle_path(mut path: MerklePath, hasher: &mut HasherWithStats<'_>) -> Vec { +fn finalize_merkle_path(mut path: MerklePath, hasher: &HasherWithStats<'_>) -> Vec { for _ in 0..4 { path.push(hasher, None); } diff --git a/core/lib/mini_merkle_tree/benches/tree.rs b/core/lib/mini_merkle_tree/benches/tree.rs index 7206b64e7c4..a964456bfb4 100644 --- a/core/lib/mini_merkle_tree/benches/tree.rs +++ b/core/lib/mini_merkle_tree/benches/tree.rs @@ -10,7 +10,7 @@ const TREE_SIZES: &[usize] = &[32, 64, 128, 256, 512, 1_024]; fn compute_merkle_root(bencher: &mut Bencher<'_>, tree_size: usize) { let leaves = (0..tree_size).map(|i| [i as u8; 88]); - let tree = MiniMerkleTree::new(leaves, tree_size); + let tree = MiniMerkleTree::new(leaves, None); bencher.iter_batched( || tree.clone(), MiniMerkleTree::merkle_root, @@ -20,7 +20,7 @@ fn compute_merkle_root(bencher: &mut Bencher<'_>, tree_size: usize) { fn compute_merkle_path(bencher: &mut Bencher<'_>, tree_size: usize) { let leaves = (0..tree_size).map(|i| [i as u8; 88]); - let tree = MiniMerkleTree::new(leaves, tree_size); + let tree = MiniMerkleTree::new(leaves, None); bencher.iter_batched( || tree.clone(), |tree| tree.merkle_root_and_path(tree_size / 3), diff --git a/core/lib/mini_merkle_tree/src/lib.rs b/core/lib/mini_merkle_tree/src/lib.rs index 1195b889458..4eced5a93c0 100644 --- a/core/lib/mini_merkle_tree/src/lib.rs +++ b/core/lib/mini_merkle_tree/src/lib.rs @@ -15,8 +15,9 @@ mod tests; use zksync_basic_types::H256; use zksync_crypto::hasher::{keccak::KeccakHasher, Hasher}; -/// Maximum supported depth of Merkle trees. 11 means that the tree must have <=2048 leaves. -const MAX_TREE_DEPTH: usize = 11; +/// Maximum supported depth of the tree. 32 corresponds to `2^32` elements in the tree, which +/// we unlikely to ever hit. +const MAX_TREE_DEPTH: usize = 32; /// In-memory Merkle tree of bounded depth (no more than 10). /// @@ -27,61 +28,61 @@ const MAX_TREE_DEPTH: usize = 11; pub struct MiniMerkleTree<'a, const LEAF_SIZE: usize> { hasher: &'a dyn HashEmptySubtree, hashes: Box<[H256]>, - tree_size: usize, + binary_tree_size: usize, } impl MiniMerkleTree<'static, LEAF_SIZE> where KeccakHasher: HashEmptySubtree, { - /// Creates a new Merkle tree from the supplied leaves. If `tree_size` is larger than the - /// number of the supplied leaves, the remaining leaves are `[0_u8; LEAF_SIZE]`. + /// Creates a new Merkle tree from the supplied leaves. If `min_tree_size` is supplied and is larger + /// than the number of the supplied leaves, the leaves are padded to `min_tree_size` with `[0_u8; LEAF_SIZE]` entries. /// The hash function used in keccak-256. /// /// # Panics /// /// Panics in the same situations as [`Self::with_hasher()`]. - pub fn new(leaves: impl Iterator, tree_size: usize) -> Self { - Self::with_hasher(&KeccakHasher, leaves, tree_size) + pub fn new( + leaves: impl Iterator, + min_tree_size: Option, + ) -> Self { + Self::with_hasher(&KeccakHasher, leaves, min_tree_size) } } impl<'a, const LEAF_SIZE: usize> MiniMerkleTree<'a, LEAF_SIZE> { - /// Creates a new Merkle tree from the supplied leaves. If `tree_size` is larger than the - /// number of the supplied leaves, the remaining leaves are `[0_u8; LEAF_SIZE]`. + /// Creates a new Merkle tree from the supplied leaves. If `min_tree_size` is supplied and is larger than the + /// number of the supplied leaves, the leaves are padded to `min_tree_size` with `[0_u8; LEAF_SIZE]` entries. /// /// # Panics /// /// Panics if any of the following conditions applies: /// - /// - The number of `leaves` is greater than `tree_size`. - /// - `tree_size > 1_024`. - /// - `tree_size` is not a power of 2. + /// - `min_tree_size` (if supplied) is not a power of 2. pub fn with_hasher( hasher: &'a dyn HashEmptySubtree, leaves: impl Iterator, - tree_size: usize, + min_tree_size: Option, ) -> Self { - assert!( - tree_size <= 1 << MAX_TREE_DEPTH, - "tree size must be <={}", - 1 << MAX_TREE_DEPTH - ); - assert!( - tree_size.is_power_of_two(), - "tree size must be a power of 2" - ); - let hashes: Box<[H256]> = leaves.map(|bytes| hasher.hash_bytes(&bytes)).collect(); + let mut binary_tree_size = hashes.len().next_power_of_two(); + if let Some(min_tree_size) = min_tree_size { + assert!( + min_tree_size.is_power_of_two(), + "tree size must be a power of 2" + ); + binary_tree_size = min_tree_size.max(binary_tree_size); + } assert!( - hashes.len() <= tree_size, - "tree size must be greater or equal the number of supplied leaves" + tree_depth_by_size(binary_tree_size) <= MAX_TREE_DEPTH, + "Tree contains more than {} items; this is not supported", + 1 << MAX_TREE_DEPTH ); Self { hasher, hashes, - tree_size, + binary_tree_size, } } @@ -99,7 +100,7 @@ impl<'a, const LEAF_SIZE: usize> MiniMerkleTree<'a, LEAF_SIZE> { /// Returns the root hash and the Merkle proof for a leaf with the specified 0-based `index`. pub fn merkle_root_and_path(self, index: usize) -> (H256, Vec) { - let mut merkle_path = Vec::with_capacity(MAX_TREE_DEPTH); + let mut merkle_path = vec![]; let root_hash = self.compute_merkle_root_and_path(index, Some(&mut merkle_path)); (root_hash, merkle_path) } @@ -111,7 +112,10 @@ impl<'a, const LEAF_SIZE: usize> MiniMerkleTree<'a, LEAF_SIZE> { ) -> H256 { assert!(index < self.hashes.len(), "invalid tree leaf index"); - let depth = tree_depth_by_size(self.tree_size); + let depth = tree_depth_by_size(self.binary_tree_size); + if let Some(merkle_path) = merkle_path.as_deref_mut() { + merkle_path.reserve(depth); + } let mut hashes = self.hashes; let mut level_len = hashes.len(); diff --git a/core/lib/mini_merkle_tree/src/tests.rs b/core/lib/mini_merkle_tree/src/tests.rs index f5745cf43aa..c534c87523c 100644 --- a/core/lib/mini_merkle_tree/src/tests.rs +++ b/core/lib/mini_merkle_tree/src/tests.rs @@ -26,7 +26,7 @@ fn hash_of_empty_tree_with_single_item() { for depth in 0..=5 { let len = 1 << depth; println!("checking tree with {len} items"); - let tree = MiniMerkleTree::new(iter::once([0_u8; 88]), len); + let tree = MiniMerkleTree::new(iter::once([0_u8; 88]), Some(len)); assert_eq!(tree.merkle_root(), KeccakHasher.empty_subtree_hash(depth)); } } @@ -38,16 +38,18 @@ fn hash_of_large_empty_tree_with_multiple_items() { let leaves = iter::repeat([0_u8; 88]).take(len); let tree_size = len.next_power_of_two(); - let tree = MiniMerkleTree::new(leaves, tree_size); + let tree = MiniMerkleTree::new(leaves.clone(), Some(tree_size)); + let depth = tree_depth_by_size(tree_size); + assert_eq!(tree.merkle_root(), KeccakHasher.empty_subtree_hash(depth)); + let tree = MiniMerkleTree::new(leaves, None); let depth = tree_depth_by_size(tree_size); - assert!(depth <= MAX_TREE_DEPTH); assert_eq!(tree.merkle_root(), KeccakHasher.empty_subtree_hash(depth)); } } #[test] fn single_item_tree_snapshot() { - let tree = MiniMerkleTree::new(iter::once([1_u8; 88]), 32); + let tree = MiniMerkleTree::new(iter::once([1_u8; 88]), Some(32)); let (root_hash, path) = tree.merkle_root_and_path(0); let expected_root_hash: H256 = @@ -70,7 +72,7 @@ fn single_item_tree_snapshot() { #[test] fn full_tree_snapshot() { let leaves = (1_u8..=32).map(|byte| [byte; 88]); - let tree = MiniMerkleTree::new(leaves, 32); + let tree = MiniMerkleTree::new(leaves, None); let (root_hash, path) = tree.merkle_root_and_path(2); let expected_root_hash: H256 = @@ -93,7 +95,7 @@ fn full_tree_snapshot() { #[test] fn partial_tree_snapshot() { let leaves = (1_u8..=50).map(|byte| [byte; 88]); - let tree = MiniMerkleTree::new(leaves.clone(), 64); + let tree = MiniMerkleTree::new(leaves.clone(), None); let (root_hash, path) = tree.merkle_root_and_path(10); let expected_root_hash: H256 = @@ -113,7 +115,7 @@ fn partial_tree_snapshot() { .map(|s| s.parse::().unwrap()); assert_eq!(path, expected_path); - let tree = MiniMerkleTree::new(leaves, 64); + let tree = MiniMerkleTree::new(leaves, None); let (root_hash, path) = tree.merkle_root_and_path(49); assert_eq!(root_hash, expected_root_hash); @@ -157,7 +159,7 @@ fn verify_merkle_proof( #[test] fn merkle_proofs_are_valid_in_small_tree() { let leaves = (1_u8..=50).map(|byte| [byte; 88]); - let tree = MiniMerkleTree::new(leaves.clone(), 64); + let tree = MiniMerkleTree::new(leaves.clone(), None); for (i, item) in leaves.enumerate() { let (merkle_root, path) = tree.clone().merkle_root_and_path(i); @@ -168,10 +170,50 @@ fn merkle_proofs_are_valid_in_small_tree() { #[test] fn merkle_proofs_are_valid_in_larger_tree() { let leaves = (1_u8..=255).map(|byte| [byte; 88]); - let tree = MiniMerkleTree::new(leaves.clone(), 512); + let tree = MiniMerkleTree::new(leaves.clone(), Some(512)); for (i, item) in leaves.enumerate() { let (merkle_root, path) = tree.clone().merkle_root_and_path(i); verify_merkle_proof(&item, i, 512, &path, merkle_root); } } + +#[test] +#[allow(clippy::cast_possible_truncation)] // truncation is intentional +fn merkle_proofs_are_valid_in_very_large_tree() { + let leaves = (1_u32..=15_000).map(|byte| [byte as u8; 88]); + + let tree = MiniMerkleTree::new(leaves.clone(), None); + for (i, item) in leaves.clone().enumerate().step_by(61) { + let (merkle_root, path) = tree.clone().merkle_root_and_path(i); + verify_merkle_proof(&item, i, 1 << 14, &path, merkle_root); + } + + let tree_with_min_size = MiniMerkleTree::new(leaves.clone(), Some(512)); + assert_eq!(tree_with_min_size.clone().merkle_root(), tree.merkle_root()); + for (i, item) in leaves.enumerate().step_by(61) { + let (merkle_root, path) = tree_with_min_size.clone().merkle_root_and_path(i); + verify_merkle_proof(&item, i, 1 << 14, &path, merkle_root); + } +} + +#[test] +fn merkle_proofs_are_valid_in_very_small_trees() { + for item_count in 1..=20 { + let leaves = (1..=item_count).map(|byte| [byte; 88]); + + let tree = MiniMerkleTree::new(leaves.clone(), None); + let item_count = usize::from(item_count).next_power_of_two(); + for (i, item) in leaves.clone().enumerate() { + let (merkle_root, path) = tree.clone().merkle_root_and_path(i); + verify_merkle_proof(&item, i, item_count, &path, merkle_root); + } + + let tree_with_min_size = MiniMerkleTree::new(leaves.clone(), Some(512)); + assert_ne!(tree_with_min_size.clone().merkle_root(), tree.merkle_root()); + for (i, item) in leaves.enumerate() { + let (merkle_root, path) = tree_with_min_size.clone().merkle_root_and_path(i); + verify_merkle_proof(&item, i, 512, &path, merkle_root); + } + } +} diff --git a/core/lib/state/src/in_memory.rs b/core/lib/state/src/in_memory.rs index e827cf10627..dc87db59fc3 100644 --- a/core/lib/state/src/in_memory.rs +++ b/core/lib/state/src/in_memory.rs @@ -112,7 +112,7 @@ impl ReadStorage for &InMemoryStorage { } fn get_enumeration_index(&mut self, key: &StorageKey) -> Option { - self.enum_indices.get(&key).copied() + self.enum_indices.get(key).copied() } } diff --git a/core/lib/state/src/rocksdb/mod.rs b/core/lib/state/src/rocksdb/mod.rs index 43940345d97..cb15e5967f9 100644 --- a/core/lib/state/src/rocksdb/mod.rs +++ b/core/lib/state/src/rocksdb/mod.rs @@ -136,7 +136,7 @@ impl RocksdbStorage { .collect(); for (key, _) in storage_logs { if let Some(index) = enum_indices.get(&key.hashed_key()) { - self.store_enumeration_index(key, *index) + self.store_enumeration_index(key, *index); } } diff --git a/core/lib/types/src/aggregated_operations.rs b/core/lib/types/src/aggregated_operations.rs index 841c2098f56..c84a70c7d24 100644 --- a/core/lib/types/src/aggregated_operations.rs +++ b/core/lib/types/src/aggregated_operations.rs @@ -9,7 +9,7 @@ use zkevm_test_harness::bellman::plonk::better_better_cs::proof::Proof; use zkevm_test_harness::witness::oracle::VmWitnessOracle; use zksync_basic_types::{ethabi::Token, L1BatchNumber}; -use crate::{commitment::L1BatchWithMetadata, U256}; +use crate::commitment::L1BatchWithMetadata; fn l1_batch_range_from_batches( batches: &[L1BatchWithMetadata], diff --git a/core/lib/types/src/commitment.rs b/core/lib/types/src/commitment.rs index c64c9e68f81..69249a33ab4 100644 --- a/core/lib/types/src/commitment.rs +++ b/core/lib/types/src/commitment.rs @@ -15,7 +15,6 @@ use zksync_mini_merkle_tree::MiniMerkleTree; use crate::{ block::L1BatchHeader, - circuit::GEOMETRY_CONFIG, ethabi::Token, l2_to_l1_log::L2ToL1Log, web3::signing::keccak256, @@ -30,8 +29,6 @@ use crate::{ pub trait SerializeCommitment { /// Size of the structure in bytes. const SERIALIZED_SIZE: usize; - /// The number of objects of this type that can be included in a single L1 batch. - const LIMIT_PER_L1_BATCH: usize; /// Serializes this struct into the provided buffer, which is guaranteed to have byte length /// [`Self::SERIALIZED_SIZE`]. fn serialize_commitment(&self, buffer: &mut [u8]); @@ -198,8 +195,6 @@ impl L1BatchWithMetadata { impl SerializeCommitment for L2ToL1Log { const SERIALIZED_SIZE: usize = 88; - // Unlike the other limits, it is not enforced by GeometryConfig, but the constants in contracts. - const LIMIT_PER_L1_BATCH: usize = 2048; fn serialize_commitment(&self, buffer: &mut [u8]) { buffer[0] = self.shard_id; @@ -213,8 +208,6 @@ impl SerializeCommitment for L2ToL1Log { impl SerializeCommitment for InitialStorageWrite { const SERIALIZED_SIZE: usize = 64; - const LIMIT_PER_L1_BATCH: usize = - GEOMETRY_CONFIG.limit_for_initial_writes_pubdata_hasher as usize; fn serialize_commitment(&self, buffer: &mut [u8]) { self.key.to_little_endian(&mut buffer[0..32]); @@ -224,8 +217,6 @@ impl SerializeCommitment for InitialStorageWrite { impl SerializeCommitment for RepeatedStorageWrite { const SERIALIZED_SIZE: usize = 40; - const LIMIT_PER_L1_BATCH: usize = - GEOMETRY_CONFIG.limit_for_repeated_writes_pubdata_hasher as usize; fn serialize_commitment(&self, buffer: &mut [u8]) { buffer[..8].copy_from_slice(&self.index.to_be_bytes()); @@ -235,8 +226,6 @@ impl SerializeCommitment for RepeatedStorageWrite { impl SerializeCommitment for StateDiffRecord { const SERIALIZED_SIZE: usize = PADDED_ENCODED_STORAGE_DIFF_LEN_BYTES; - const LIMIT_PER_L1_BATCH: usize = - ((GEOMETRY_CONFIG.limit_for_repeated_writes_pubdata_hasher * 40) / 156) as usize; fn serialize_commitment(&self, buffer: &mut [u8]) { buffer.copy_from_slice(&self.encode_padded()); @@ -306,8 +295,9 @@ impl L1BatchAuxiliaryOutput { .chunks(L2ToL1Log::SERIALIZED_SIZE) .map(|chunk| <[u8; L2ToL1Log::SERIALIZED_SIZE]>::try_from(chunk).unwrap()); // ^ Skip first 4 bytes of the serialized logs (i.e., the number of logs). + let min_tree_size = Some(L2ToL1Log::LEGACY_LIMIT_PER_L1_BATCH); let l2_l1_logs_merkle_root = - MiniMerkleTree::new(merkle_tree_leaves, L2ToL1Log::LIMIT_PER_L1_BATCH).merkle_root(); + MiniMerkleTree::new(merkle_tree_leaves, min_tree_size).merkle_root(); Self { l2_l1_logs_compressed, @@ -420,6 +410,7 @@ pub struct L1BatchCommitmentHash { } impl L1BatchCommitment { + #[allow(clippy::too_many_arguments)] pub fn new( l2_to_l1_logs: Vec, rollup_last_leaf_index: u64, @@ -584,7 +575,8 @@ mod tests { } // TODO(PLA-568): restore this test - // #[test] + #[ignore] + #[test] fn commitment_test() { let zksync_home = std::env::var("ZKSYNC_HOME").unwrap_or_else(|_| ".".into()); let path = std::path::Path::new(&zksync_home) diff --git a/core/lib/types/src/event.rs b/core/lib/types/src/event.rs index 28b764019b2..04417daff38 100644 --- a/core/lib/types/src/event.rs +++ b/core/lib/types/src/event.rs @@ -98,15 +98,15 @@ impl L1MessengerL2ToL1Log { } } -impl Into for L1MessengerL2ToL1Log { - fn into(self) -> L2ToL1Log { +impl From for L2ToL1Log { + fn from(log: L1MessengerL2ToL1Log) -> Self { L2ToL1Log { - shard_id: self.l2_shard_id, - is_service: self.is_service, - tx_number_in_block: self.tx_number_in_block, - sender: self.sender, - key: u256_to_h256(self.key), - value: u256_to_h256(self.value), + shard_id: log.l2_shard_id, + is_service: log.is_service, + tx_number_in_block: log.tx_number_in_block, + sender: log.sender, + key: u256_to_h256(log.key), + value: u256_to_h256(log.value), } } } diff --git a/core/lib/types/src/l2_to_l1_log.rs b/core/lib/types/src/l2_to_l1_log.rs index cb22556f7d9..2cb7fecb977 100644 --- a/core/lib/types/src/l2_to_l1_log.rs +++ b/core/lib/types/src/l2_to_l1_log.rs @@ -15,6 +15,11 @@ pub struct L2ToL1Log { } impl L2ToL1Log { + /// Legacy upper bound of L2-to-L1 logs per single L1 batch. This is not used as a limit now, + /// but still determines the minimum number of items in the Merkle tree built from L2-to-L1 logs + /// for a certain batch. + pub const LEGACY_LIMIT_PER_L1_BATCH: usize = 2048; + pub fn from_slice(data: &[u8]) -> Self { assert_eq!(data.len(), Self::SERIALIZED_SIZE); Self { diff --git a/core/lib/types/src/priority_op_onchain_data.rs b/core/lib/types/src/priority_op_onchain_data.rs index 84ff177bbc9..a729aa27bf4 100644 --- a/core/lib/types/src/priority_op_onchain_data.rs +++ b/core/lib/types/src/priority_op_onchain_data.rs @@ -35,7 +35,7 @@ impl Eq for PriorityOpOnchainData {} impl PartialOrd for PriorityOpOnchainData { fn partial_cmp(&self, other: &Self) -> Option { - Some(self.layer_2_tip_fee.cmp(&other.layer_2_tip_fee)) + Some(self.cmp(other)) } } diff --git a/core/lib/types/src/storage/writes/compression.rs b/core/lib/types/src/storage/writes/compression.rs index 1f8ac697954..db8e3f201fa 100644 --- a/core/lib/types/src/storage/writes/compression.rs +++ b/core/lib/types/src/storage/writes/compression.rs @@ -204,18 +204,17 @@ impl CompressionMode for CompressionByteNone { } fn default_passes(prev_value: U256, new_value: U256) -> Vec> { - let mut result: Vec> = vec![]; - result.push(Box::new(CompressionByteAdd { - prev_value, - new_value, - })); - result.push(Box::new(CompressionByteSub { - prev_value, - new_value, - })); - result.push(Box::new(CompressionByteTransform { new_value })); - - result + vec![ + Box::new(CompressionByteAdd { + prev_value, + new_value, + }), + Box::new(CompressionByteSub { + prev_value, + new_value, + }), + Box::new(CompressionByteTransform { new_value }), + ] } /// For a given previous value and new value, try each compression strategy selecting the most @@ -227,7 +226,7 @@ pub fn compress_with_best_strategy(prev_value: U256, new_value: U256) -> Vec let mut result: Option<(&Box, usize)> = None; for compressor in compressors.iter() { if let Some(expected_size) = compressor.output_size() { - if let Some(_) = compressor.compress_value_only() { + if compressor.compress_value_only().is_some() { if let Some(existing) = result.as_mut() { if expected_size < existing.1 { existing.0 = compressor; @@ -267,11 +266,11 @@ mod tests { assert!(compress_add_strategy.output_size() == Some(2)); - assert!(compress_add_strategy.compress_value_only() == Some(vec![01, 164])); + assert!(compress_add_strategy.compress_value_only() == Some(vec![1, 164])); let compressed_val = compress_with_best_strategy(initial_val, final_val); - assert!(compressed_val == vec![17, 01, 164]); + assert!(compressed_val == vec![17, 1, 164]); let (metadata, compressed_val) = compressed_val.split_at(1); @@ -330,7 +329,7 @@ mod tests { let final_val = U256::from(1337); let compressed_value = compress_with_best_strategy(initial_val, final_val); - assert!(compressed_value == vec![19, 05, 57]); + assert!(compressed_value == vec![19, 5, 57]); let (metadata, compressed_val) = compressed_value.split_at(1); @@ -419,8 +418,8 @@ mod tests { new_value: final_val, }; - assert!(compression_add_strategy.compress_value_only() == None); - assert!(compression_add_strategy.compress_extended() == None); + assert!(compression_add_strategy.compress_value_only().is_none()); + assert!(compression_add_strategy.compress_extended().is_none()); } fn verify_sub_is_none(initial_val: U256, final_val: U256) { @@ -429,7 +428,7 @@ mod tests { new_value: final_val, }; - assert!(compression_sub_strategy.compress_value_only() == None); - assert!(compression_sub_strategy.compress_extended() == None); + assert!(compression_sub_strategy.compress_value_only().is_none()); + assert!(compression_sub_strategy.compress_extended().is_none()); } } diff --git a/core/lib/types/src/storage/writes/mod.rs b/core/lib/types/src/storage/writes/mod.rs index 01ef985d78b..c861020d22c 100644 --- a/core/lib/types/src/storage/writes/mod.rs +++ b/core/lib/types/src/storage/writes/mod.rs @@ -437,7 +437,7 @@ mod tests { ); let compressed_state_diffs = &compressed_state_diffs[32..]; - assert!(compressed_state_diffs.len() == 0); + assert!(compressed_state_diffs.is_empty()); } fn verify_value( diff --git a/core/lib/vm/src/constants.rs b/core/lib/vm/src/constants.rs index 11ca23c59ef..7ebd13d1af2 100644 --- a/core/lib/vm/src/constants.rs +++ b/core/lib/vm/src/constants.rs @@ -87,8 +87,8 @@ pub(crate) const TX_GAS_LIMIT_OFFSET: usize = 4; const INITIAL_BASE_PAGE: u32 = 8; pub const BOOTLOADER_HEAP_PAGE: u32 = heap_page_from_base(MemoryPage(INITIAL_BASE_PAGE)).0; -pub(crate) const BLOCK_OVERHEAD_GAS: u32 = 1200000; -pub(crate) const BLOCK_OVERHEAD_L1_GAS: u32 = 1000000; +pub const BLOCK_OVERHEAD_GAS: u32 = 1200000; +pub const BLOCK_OVERHEAD_L1_GAS: u32 = 1000000; pub const BLOCK_OVERHEAD_PUBDATA: u32 = BLOCK_OVERHEAD_L1_GAS / L1_GAS_PER_PUBDATA_BYTE; /// VM Hooks are used for communication between bootloader and tracers. diff --git a/core/lib/vm/src/errors/halt.rs b/core/lib/vm/src/errors/halt.rs index 10c8a8d702b..0a5057a0616 100644 --- a/core/lib/vm/src/errors/halt.rs +++ b/core/lib/vm/src/errors/halt.rs @@ -26,6 +26,8 @@ pub enum Halt { UnexpectedVMBehavior(String), // Bootloader is out of gas. BootloaderOutOfGas, + // Validation step is out of gas + ValidationOutOfGas, // Transaction has a too big gas limit and will not be executed by the server. TooBigGasLimit, // The bootloader did not have enough gas to start the transaction in the first place @@ -37,6 +39,7 @@ pub enum Halt { // Failed to publish information about the batch and the L2 block onto L1 FailedToAppendTransactionToL2Block(String), VMPanic, + TracerCustom(String), } impl Display for Halt { @@ -102,6 +105,12 @@ impl Display for Halt { reason ) } + Halt::TracerCustom(reason) => { + write!(f, "Tracer aborted execution: {}", reason) + } + Halt::ValidationOutOfGas => { + write!(f, "Validation run out of gas") + } } } } diff --git a/core/lib/vm/src/implementation/execution.rs b/core/lib/vm/src/implementation/execution.rs index 43c3f002f87..e2427700dc4 100644 --- a/core/lib/vm/src/implementation/execution.rs +++ b/core/lib/vm/src/implementation/execution.rs @@ -1,18 +1,19 @@ use zk_evm::aux_structures::Timestamp; use zksync_state::WriteStorage; +use crate::old_vm::{ + history_recorder::HistoryMode, + utils::{vm_may_have_ended_inner, VmExecutionResult}, +}; +use crate::tracers::{ + traits::{ + BoxedTracer, ExecutionEndTracer, ExecutionProcessing, TracerExecutionStatus, VmTracer, + }, + DefaultExecutionTracer, PubdataTracer, RefundsTracer, +}; use crate::types::{inputs::VmExecutionMode, outputs::VmExecutionResultAndLogs}; use crate::vm::Vm; use crate::VmExecutionStopReason; -use crate::{ - old_vm::utils::{vm_may_have_ended_inner, VmExecutionResult}, - tracers::{ - pubdata_tracer::PubdataTracer, - traits::{BoxedTracer, ExecutionEndTracer, ExecutionProcessing, VmTracer}, - DefaultExecutionTracer, RefundsTracer, - }, - HistoryMode, -}; impl Vm { pub(crate) fn inspect_inner( @@ -107,11 +108,11 @@ impl Vm { break VmExecutionStopReason::VmFinished; } - if tracer.should_stop_execution() { - break VmExecutionStopReason::TracerRequestedStop; + if let TracerExecutionStatus::Stop(reason) = tracer.should_stop_execution() { + break VmExecutionStopReason::TracerRequestedStop(reason); } }; - tracer.after_vm_execution(&mut self.state, &self.bootloader_state, result); + tracer.after_vm_execution(&mut self.state, &self.bootloader_state, result.clone()); result } diff --git a/core/lib/vm/src/old_vm/event_sink.rs b/core/lib/vm/src/old_vm/event_sink.rs index b52fe6f81ee..d1f94f1f1e2 100644 --- a/core/lib/vm/src/old_vm/event_sink.rs +++ b/core/lib/vm/src/old_vm/event_sink.rs @@ -3,7 +3,7 @@ use crate::old_vm::{ oracles::OracleWithHistory, }; use itertools::Itertools; -use std::{cmp::Ordering, collections::HashMap, f32::consts::E}; +use std::{cmp::Ordering, collections::HashMap}; use zk_evm::{ abstractions::EventSink, aux_structures::{LogQuery, Timestamp}, @@ -70,8 +70,8 @@ impl InMemoryEventSink { fn events_logs_from_history(history: &[Box]) -> Vec { // Filter out all the L2->L1 logs and leave only events let mut events = history - .into_iter() - .filter_map(|log_query| (log_query.aux_byte == EVENT_AUX_BYTE).then(|| **log_query)) + .iter() + .filter_map(|log_query| (log_query.aux_byte == EVENT_AUX_BYTE).then_some(**log_query)) .collect_vec(); // Sort the events by timestamp and rollback flag, basically ensuring that @@ -84,7 +84,7 @@ impl InMemoryEventSink { Ordering::Greater } } - r @ _ => r, + r => r, }); let mut stack = Vec::::new(); @@ -92,7 +92,7 @@ impl InMemoryEventSink { for el in events.iter() { assert_eq!(el.shard_id, 0, "only rollup shard is supported"); if stack.is_empty() { - assert!(el.rollback == false); + assert!(!el.rollback); stack.push(*el); } else { // we can always pop as it's either one to add to queue, or discard @@ -100,10 +100,10 @@ impl InMemoryEventSink { if previous.timestamp == el.timestamp { // Only rollback can have the same timestamp, so here we do nothing and simply // double check the invariants - assert!(previous.rollback == false); - assert!(el.rollback == true); - assert!(previous.rw_flag == true); - assert!(el.rw_flag == true); + assert!(!previous.rollback); + assert!(el.rollback); + assert!(previous.rw_flag); + assert!(el.rw_flag); assert_eq!(previous.tx_number_in_block, el.tx_number_in_block); assert_eq!(previous.shard_id, el.shard_id); assert_eq!(previous.address, el.address); diff --git a/core/lib/vm/src/tracers/default_tracers.rs b/core/lib/vm/src/tracers/default_tracers.rs index 0eb9c2e2b09..2268775dc15 100644 --- a/core/lib/vm/src/tracers/default_tracers.rs +++ b/core/lib/vm/src/tracers/default_tracers.rs @@ -16,16 +16,17 @@ use crate::bootloader_state::BootloaderState; use crate::constants::BOOTLOADER_HEAP_PAGE; use crate::old_vm::history_recorder::HistoryMode; use crate::old_vm::memory::SimpleMemory; -use crate::tracers::traits::{DynTracer, ExecutionEndTracer, ExecutionProcessing, VmTracer}; +use crate::tracers::traits::{ + DynTracer, ExecutionEndTracer, ExecutionProcessing, TracerExecutionStatus, + TracerExecutionStopReason, VmTracer, +}; use crate::tracers::utils::{ computational_gas_price, gas_spent_on_bytecodes_and_long_messages_this_opcode, print_debug_if_needed, VmHook, }; use crate::tracers::ResultTracer; use crate::types::internals::ZkSyncVmState; -use crate::VmExecutionStopReason; - -use crate::VmExecutionMode; +use crate::{Halt, VmExecutionMode, VmExecutionStopReason}; /// Default tracer for the VM. It manages the other tracers execution and stop the vm when needed. pub(crate) struct DefaultExecutionTracer { @@ -143,17 +144,32 @@ impl Tracer for DefaultExecutionTracer { } impl ExecutionEndTracer for DefaultExecutionTracer { - fn should_stop_execution(&self) -> bool { - let mut should_stop = match self.execution_mode { - VmExecutionMode::OneTx => self.tx_has_been_processed(), - VmExecutionMode::Batch => false, - VmExecutionMode::Bootloader => self.ret_from_the_bootloader == Some(RetOpcode::Ok), + fn should_stop_execution(&self) -> TracerExecutionStatus { + match self.execution_mode { + VmExecutionMode::OneTx => { + if self.tx_has_been_processed() { + return TracerExecutionStatus::Stop(TracerExecutionStopReason::Finish); + } + } + VmExecutionMode::Bootloader => { + if self.ret_from_the_bootloader == Some(RetOpcode::Ok) { + return TracerExecutionStatus::Stop(TracerExecutionStopReason::Finish); + } + } + VmExecutionMode::Batch => {} }; - should_stop = should_stop || self.validation_run_out_of_gas(); + if self.validation_run_out_of_gas() { + return TracerExecutionStatus::Stop(TracerExecutionStopReason::Abort( + Halt::ValidationOutOfGas, + )); + } for tracer in self.custom_tracers.iter() { - should_stop = should_stop || tracer.should_stop_execution(); + let reason = tracer.should_stop_execution(); + if TracerExecutionStatus::Continue != reason { + return reason; + } } - should_stop + TracerExecutionStatus::Continue } } @@ -247,9 +263,9 @@ impl ExecutionProcessing for DefaultExecu stop_reason: VmExecutionStopReason, ) { self.result_tracer - .after_vm_execution(state, bootloader_state, stop_reason); + .after_vm_execution(state, bootloader_state, stop_reason.clone()); for processor in self.custom_tracers.iter_mut() { - processor.after_vm_execution(state, bootloader_state, stop_reason); + processor.after_vm_execution(state, bootloader_state, stop_reason.clone()); } } } diff --git a/core/lib/vm/src/tracers/mod.rs b/core/lib/vm/src/tracers/mod.rs index 6b766b25e5c..3ac64deaabb 100644 --- a/core/lib/vm/src/tracers/mod.rs +++ b/core/lib/vm/src/tracers/mod.rs @@ -1,4 +1,5 @@ pub(crate) use default_tracers::DefaultExecutionTracer; +pub(crate) use pubdata_tracer::PubdataTracer; pub(crate) use refunds::RefundsTracer; pub(crate) use result_tracer::ResultTracer; pub use storage_invocations::StorageInvocations; diff --git a/core/lib/vm/src/tracers/pubdata_tracer.rs b/core/lib/vm/src/tracers/pubdata_tracer.rs index 282ce4cd36c..9b29f1e079f 100644 --- a/core/lib/vm/src/tracers/pubdata_tracer.rs +++ b/core/lib/vm/src/tracers/pubdata_tracer.rs @@ -20,7 +20,10 @@ use crate::constants::BOOTLOADER_HEAP_PAGE; use crate::old_vm::{history_recorder::HistoryMode, memory::SimpleMemory}; use crate::tracers::{ - traits::{DynTracer, ExecutionEndTracer, ExecutionProcessing, VmTracer}, + traits::{ + DynTracer, ExecutionEndTracer, ExecutionProcessing, TracerExecutionStatus, + TracerExecutionStopReason, VmTracer, + }, utils::VmHook, }; use crate::types::{inputs::L1BatchEnv, internals::ZkSyncVmState}; @@ -54,7 +57,7 @@ impl PubdataTracer { // L2toL1Logs sent in the block fn get_total_user_logs( &self, - state: &mut ZkSyncVmState, + state: &ZkSyncVmState, ) -> Vec { let (all_generated_events, _) = collect_events_and_l1_logs_after_timestamp(state, &self.l1_batch_env, Timestamp(0)); @@ -65,7 +68,7 @@ impl PubdataTracer { // Messages sent in the block fn get_total_l1_messenger_messages( &self, - state: &mut ZkSyncVmState, + state: &ZkSyncVmState, ) -> Vec> { let (all_generated_events, _) = collect_events_and_l1_logs_after_timestamp(state, &self.l1_batch_env, Timestamp(0)); @@ -77,7 +80,7 @@ impl PubdataTracer { // Bytecodes needed to be published on L1 fn get_total_published_bytecodes( &self, - state: &mut ZkSyncVmState, + state: &ZkSyncVmState, ) -> Vec> { let (all_generated_events, _) = collect_events_and_l1_logs_after_timestamp(state, &self.l1_batch_env, Timestamp(0)); @@ -95,8 +98,7 @@ impl PubdataTracer { .get(&h256_to_u256(bytecode_publication_request.bytecode_hash)) .unwrap() .iter() - .map(u256_to_bytes_be) - .flatten() + .flat_map(u256_to_bytes_be) .collect() }) .collect() @@ -105,7 +107,7 @@ impl PubdataTracer { // Packs part of L1Messenger total pubdata that corresponds to // State diffs needed to be published on L1 fn get_state_diffs( - state: &mut ZkSyncVmState, + state: &ZkSyncVmState, ) -> Vec { sort_storage_access_queries( state @@ -141,7 +143,7 @@ impl PubdataTracer { fn build_pubdata_input( &self, - state: &mut ZkSyncVmState, + state: &ZkSyncVmState, ) -> PubdataInput { PubdataInput { user_logs: self.get_total_user_logs(state), @@ -161,21 +163,24 @@ impl DynTracer for PubdataTracer { _storage: StoragePtr, ) { let hook = VmHook::from_opcode_memory(&state, &data); - match hook { - VmHook::PubdataRequested => self.pubdata_info_requested = true, - _ => {} + if let VmHook::PubdataRequested = hook { + self.pubdata_info_requested = true; } } } impl ExecutionEndTracer for PubdataTracer { - fn should_stop_execution(&self) -> bool { + fn should_stop_execution(&self) -> TracerExecutionStatus { if !matches!(self.execution_mode, VmExecutionMode::Batch) { // We do not provide the pubdata when executing the block tip or a single transaction - return self.pubdata_info_requested; + if self.pubdata_info_requested { + return TracerExecutionStatus::Stop(TracerExecutionStopReason::Finish); + } else { + return TracerExecutionStatus::Continue; + } } - false + TracerExecutionStatus::Continue } } diff --git a/core/lib/vm/src/tracers/result_tracer.rs b/core/lib/vm/src/tracers/result_tracer.rs index b8e08949356..dd61ea49cea 100644 --- a/core/lib/vm/src/tracers/result_tracer.rs +++ b/core/lib/vm/src/tracers/result_tracer.rs @@ -24,6 +24,7 @@ use crate::types::{ }; use crate::constants::{BOOTLOADER_HEAP_PAGE, RESULT_SUCCESS_FIRST_SLOT}; +use crate::tracers::traits::TracerExecutionStopReason; use crate::{Halt, TxRevertReason}; use crate::{VmExecutionMode, VmExecutionStopReason}; @@ -120,9 +121,11 @@ impl ExecutionProcessing for ResultTracer // One of the tracers above has requested to stop the execution. // If it was the correct stop we already have the result, // otherwise it can be out of gas error - VmExecutionStopReason::TracerRequestedStop => { + VmExecutionStopReason::TracerRequestedStop(reason) => { match self.execution_mode { - VmExecutionMode::OneTx => self.vm_stopped_execution(state, bootloader_state), + VmExecutionMode::OneTx => { + self.vm_stopped_execution(state, bootloader_state, reason) + } VmExecutionMode::Batch => self.vm_finished_execution(state), VmExecutionMode::Bootloader => self.vm_finished_execution(state), }; @@ -188,7 +191,13 @@ impl ResultTracer { &mut self, state: &ZkSyncVmState, bootloader_state: &BootloaderState, + reason: TracerExecutionStopReason, ) { + if let TracerExecutionStopReason::Abort(halt) = reason { + self.result = Some(Result::Halt { reason: halt }); + return; + } + if self.bootloader_out_of_gas { self.result = Some(Result::Halt { reason: Halt::BootloaderOutOfGas, diff --git a/core/lib/vm/src/tracers/storage_invocations.rs b/core/lib/vm/src/tracers/storage_invocations.rs index ef4b59c60a8..bd6f419eddf 100644 --- a/core/lib/vm/src/tracers/storage_invocations.rs +++ b/core/lib/vm/src/tracers/storage_invocations.rs @@ -1,7 +1,11 @@ use crate::bootloader_state::BootloaderState; use crate::old_vm::history_recorder::HistoryMode; -use crate::tracers::traits::{DynTracer, ExecutionEndTracer, ExecutionProcessing, VmTracer}; +use crate::tracers::traits::{ + DynTracer, ExecutionEndTracer, ExecutionProcessing, TracerExecutionStatus, + TracerExecutionStopReason, VmTracer, +}; use crate::types::internals::ZkSyncVmState; +use crate::Halt; use zksync_state::WriteStorage; #[derive(Debug, Default, Clone)] @@ -21,8 +25,13 @@ impl StorageInvocations { impl DynTracer for StorageInvocations {} impl ExecutionEndTracer for StorageInvocations { - fn should_stop_execution(&self) -> bool { - self.current >= self.limit + fn should_stop_execution(&self) -> TracerExecutionStatus { + if self.current >= self.limit { + return TracerExecutionStatus::Stop(TracerExecutionStopReason::Abort( + Halt::TracerCustom("Storage invocations limit reached".to_string()), + )); + } + TracerExecutionStatus::Continue } } diff --git a/core/lib/vm/src/tracers/traits.rs b/core/lib/vm/src/tracers/traits.rs index 6e76a041fab..4e76ed1fa15 100644 --- a/core/lib/vm/src/tracers/traits.rs +++ b/core/lib/vm/src/tracers/traits.rs @@ -8,7 +8,7 @@ use crate::old_vm::history_recorder::HistoryMode; use crate::old_vm::memory::SimpleMemory; use crate::types::internals::ZkSyncVmState; use crate::types::outputs::VmExecutionResultAndLogs; -use crate::VmExecutionStopReason; +use crate::{Halt, VmExecutionStopReason}; /// Run tracer for collecting data during the vm execution cycles pub trait ExecutionProcessing: @@ -31,14 +31,6 @@ pub trait ExecutionProcessing: } } -/// Stop the vm execution if the tracer conditions are met -pub trait ExecutionEndTracer { - // Returns whether the vm execution should stop. - fn should_stop_execution(&self) -> bool { - false - } -} - /// Version of zk_evm::Tracer suitable for dynamic dispatch. pub trait DynTracer { fn before_decoding(&mut self, _state: VmLocalStateData<'_>, _memory: &SimpleMemory) {} @@ -69,7 +61,7 @@ pub trait DynTracer { /// Save the results of the vm execution. pub trait VmTracer: - DynTracer + ExecutionEndTracer + ExecutionProcessing + Send + DynTracer + ExecutionEndTracer + ExecutionProcessing { fn save_results(&mut self, _result: &mut VmExecutionResultAndLogs) {} } @@ -83,3 +75,23 @@ impl + 'static> BoxedTracer { + // Returns whether the vm execution should stop. + fn should_stop_execution(&self) -> TracerExecutionStatus { + TracerExecutionStatus::Continue + } +} diff --git a/core/lib/vm/src/tracers/utils.rs b/core/lib/vm/src/tracers/utils.rs index 3161f678843..c311dce9ca6 100644 --- a/core/lib/vm/src/tracers/utils.rs +++ b/core/lib/vm/src/tracers/utils.rs @@ -18,6 +18,7 @@ use crate::constants::{ use crate::old_vm::history_recorder::HistoryMode; use crate::old_vm::memory::SimpleMemory; use crate::old_vm::utils::{aux_heap_page_from_base, heap_page_from_base}; +use crate::tracers::traits::TracerExecutionStopReason; #[derive(Clone, Debug, Copy)] pub(crate) enum VmHook { @@ -220,8 +221,8 @@ pub(crate) fn get_vm_hook_params(memory: &SimpleMemory) -> Ve ) } -#[derive(Debug, Clone, Copy, PartialEq)] +#[derive(Debug, Clone, PartialEq)] pub enum VmExecutionStopReason { VmFinished, - TracerRequestedStop, + TracerRequestedStop(TracerExecutionStopReason), } diff --git a/core/lib/vm/src/tracers/validation/mod.rs b/core/lib/vm/src/tracers/validation/mod.rs index 4b94e3f177b..d85d031665a 100644 --- a/core/lib/vm/src/tracers/validation/mod.rs +++ b/core/lib/vm/src/tracers/validation/mod.rs @@ -27,7 +27,10 @@ use zksync_utils::{ use crate::old_vm::history_recorder::HistoryMode; use crate::old_vm::memory::SimpleMemory; -use crate::tracers::traits::{DynTracer, ExecutionEndTracer, ExecutionProcessing, VmTracer}; +use crate::tracers::traits::{ + DynTracer, ExecutionEndTracer, ExecutionProcessing, TracerExecutionStatus, + TracerExecutionStopReason, VmTracer, +}; use crate::tracers::utils::{ computational_gas_price, get_calldata_page_via_abi, print_debug_if_needed, VmHook, }; @@ -38,7 +41,7 @@ pub use params::ValidationTracerParams; use types::NewTrustedValidationItems; use types::ValidationTracerMode; -use crate::VmExecutionResultAndLogs; +use crate::{Halt, VmExecutionResultAndLogs}; /// Tracer that is used to ensure that the validation adheres to all the rules /// to prevent DDoS attacks on the server. @@ -341,8 +344,16 @@ impl DynTracer for ValidationTracer { } impl ExecutionEndTracer for ValidationTracer { - fn should_stop_execution(&self) -> bool { - self.should_stop_execution || self.result.get().is_some() + fn should_stop_execution(&self) -> TracerExecutionStatus { + if self.should_stop_execution { + return TracerExecutionStatus::Stop(TracerExecutionStopReason::Finish); + } + if let Some(result) = self.result.get() { + return TracerExecutionStatus::Stop(TracerExecutionStopReason::Abort( + Halt::TracerCustom(format!("Validation error: {:#?}", result)), + )); + } + TracerExecutionStatus::Continue } } diff --git a/core/lib/zksync_core/src/api_server/execution_sandbox/error.rs b/core/lib/zksync_core/src/api_server/execution_sandbox/error.rs index abc50af37a5..b4f04e2e5d6 100644 --- a/core/lib/zksync_core/src/api_server/execution_sandbox/error.rs +++ b/core/lib/zksync_core/src/api_server/execution_sandbox/error.rs @@ -61,6 +61,10 @@ impl From for SandboxExecutionError { Halt::FailedToAppendTransactionToL2Block(reason) => { SandboxExecutionError::Revert(reason, vec![]) } + Halt::TracerCustom(reason) => SandboxExecutionError::Revert(reason, vec![]), + Halt::ValidationOutOfGas => Self::AccountValidationFailed( + "The validation of the transaction ran out of gas".to_string(), + ), } } } diff --git a/core/lib/zksync_core/src/api_server/execution_sandbox/validate.rs b/core/lib/zksync_core/src/api_server/execution_sandbox/validate.rs index 05eb7f3ce2d..2dd5ae7b9c2 100644 --- a/core/lib/zksync_core/src/api_server/execution_sandbox/validate.rs +++ b/core/lib/zksync_core/src/api_server/execution_sandbox/validate.rs @@ -86,8 +86,8 @@ impl TxSharedArgs { ]); let result = match (result.result, validation_result.get()) { - (ExecutionResult::Halt { reason }, _) => Err(ValidationError::FailedTx(reason)), (_, Some(err)) => Err(ValidationError::ViolatedRule(err.clone())), + (ExecutionResult::Halt { reason }, _) => Err(ValidationError::FailedTx(reason)), (_, None) => Ok(()), }; diff --git a/core/lib/zksync_core/src/api_server/web3/namespaces/zks.rs b/core/lib/zksync_core/src/api_server/web3/namespaces/zks.rs index 54e58187afe..a9a8ee43548 100644 --- a/core/lib/zksync_core/src/api_server/web3/namespaces/zks.rs +++ b/core/lib/zksync_core/src/api_server/web3/namespaces/zks.rs @@ -1,6 +1,7 @@ use std::{collections::HashMap, convert::TryInto, time::Instant}; use bigdecimal::{BigDecimal, Zero}; +use zksync_dal::StorageProcessor; use zksync_mini_merkle_tree::MiniMerkleTree; use zksync_types::{ @@ -8,7 +9,6 @@ use zksync_types::{ BlockDetails, BridgeAddresses, GetLogsFilter, L1BatchDetails, L2ToL1LogProof, ProtocolVersion, TransactionDetails, }, - commitment::SerializeCommitment, fee::Fee, l1::L1Tx, l2::L2Tx, @@ -266,15 +266,9 @@ impl ZksNamespace { .map_err(|err| internal_error(METHOD_NAME, err))? .expect("L1 batch should contain at least one miniblock"); - let all_l1_logs_in_batch = storage - .blocks_web3_dal() - .get_l2_to_l1_logs(l1_batch_number) - .await - .map_err(|err| internal_error(METHOD_NAME, err))?; - // Position of l1 log in L1 batch relative to logs with identical data let l1_log_relative_position = if let Some(l2_log_position) = l2_log_position { - let pos = storage + let logs = storage .events_web3_dal() .get_logs( GetLogsFilter { @@ -286,48 +280,69 @@ impl ZksNamespace { self.state.api_config.req_entities_limit, ) .await - .map_err(|err| internal_error(METHOD_NAME, err))? - .iter() - .position(|event| { - event.block_number == Some(block_number.0.into()) - && event.log_index == Some(l2_log_position.into()) - }); - match pos { + .map_err(|err| internal_error(METHOD_NAME, err))?; + let maybe_pos = logs.iter().position(|event| { + event.block_number == Some(block_number.0.into()) + && event.log_index == Some(l2_log_position.into()) + }); + match maybe_pos { Some(pos) => pos, - None => { - return Ok(None); - } + None => return Ok(None), } } else { 0 }; - let l1_log_index = match all_l1_logs_in_batch + let log_proof = self + .get_l2_to_l1_log_proof_inner( + METHOD_NAME, + &mut storage, + l1_batch_number, + l1_log_relative_position, + |log| { + log.sender == L1_MESSENGER_ADDRESS + && log.key == address_to_h256(&sender) + && log.value == msg + }, + ) + .await?; + + metrics::histogram!("api.web3.call", start.elapsed(), "method" => METHOD_NAME); + Ok(log_proof) + } + + async fn get_l2_to_l1_log_proof_inner( + &self, + method_name: &'static str, + storage: &mut StorageProcessor<'_>, + l1_batch_number: L1BatchNumber, + index_in_filtered_logs: usize, + log_filter: impl Fn(&L2ToL1Log) -> bool, + ) -> Result, Web3Error> { + let all_l1_logs_in_batch = storage + .blocks_web3_dal() + .get_l2_to_l1_logs(l1_batch_number) + .await + .map_err(|err| internal_error(method_name, err))?; + + let Some((l1_log_index, _)) = all_l1_logs_in_batch .iter() .enumerate() - .filter(|(_, log)| { - log.sender == L1_MESSENGER_ADDRESS - && log.key == address_to_h256(&sender) - && log.value == msg - }) - .nth(l1_log_relative_position) - { - Some(nth_elem) => nth_elem.0, - None => { - return Ok(None); - } + .filter(|(_, log)| log_filter(log)) + .nth(index_in_filtered_logs) + else { + return Ok(None); }; let merkle_tree_leaves = all_l1_logs_in_batch.iter().map(L2ToL1Log::to_bytes); - let (root, proof) = MiniMerkleTree::new(merkle_tree_leaves, L2ToL1Log::LIMIT_PER_L1_BATCH) + let min_tree_size = Some(L2ToL1Log::LEGACY_LIMIT_PER_L1_BATCH); + let (root, proof) = MiniMerkleTree::new(merkle_tree_leaves, min_tree_size) .merkle_root_and_path(l1_log_index); - let msg_proof = L2ToL1LogProof { + Ok(Some(L2ToL1LogProof { proof, root, id: l1_log_index as u32, - }; - metrics::histogram!("api.web3.call", start.elapsed(), "method" => METHOD_NAME); - Ok(Some(msg_proof)) + })) } #[tracing::instrument(skip(self))] @@ -345,45 +360,27 @@ impl ZksNamespace { .access_storage_tagged("api") .await .unwrap(); - let (l1_batch_number, l1_batch_tx_index) = match storage + let Some((l1_batch_number, l1_batch_tx_index)) = storage .blocks_web3_dal() .get_l1_batch_info_for_tx(tx_hash) .await .map_err(|err| internal_error(METHOD_NAME, err))? - { - Some(x) => x, - None => return Ok(None), - }; - - let all_l1_logs_in_batch = storage - .blocks_web3_dal() - .get_l2_to_l1_logs(l1_batch_number) - .await - .map_err(|err| internal_error(METHOD_NAME, err))?; - - let l1_log_index = match all_l1_logs_in_batch - .iter() - .enumerate() - .filter(|(_, log)| log.tx_number_in_block == l1_batch_tx_index) - .nth(index.unwrap_or(0)) - { - Some(nth_elem) => nth_elem.0, - None => { - return Ok(None); - } + else { + return Ok(None); }; - let merkle_tree_leaves = all_l1_logs_in_batch.iter().map(L2ToL1Log::to_bytes); - let (root, proof) = MiniMerkleTree::new(merkle_tree_leaves, L2ToL1Log::LIMIT_PER_L1_BATCH) - .merkle_root_and_path(l1_log_index); - let msg_proof = L2ToL1LogProof { - proof, - root, - id: l1_log_index as u32, - }; + let log_proof = self + .get_l2_to_l1_log_proof_inner( + METHOD_NAME, + &mut storage, + l1_batch_number, + index.unwrap_or(0), + |log| log.tx_number_in_block == l1_batch_tx_index, + ) + .await?; metrics::histogram!("api.web3.call", start.elapsed(), "method" => METHOD_NAME); - Ok(Some(msg_proof)) + Ok(log_proof) } #[tracing::instrument(skip(self))] diff --git a/docker-compose-runner-nightly.yml b/docker-compose-runner-nightly.yml new file mode 100644 index 00000000000..2d60a0325f6 --- /dev/null +++ b/docker-compose-runner-nightly.yml @@ -0,0 +1,17 @@ +version: '3.2' +services: + zk: + image: matterlabs/zksync_rust:nightly + extends: + file: docker-compose-runner.yml + service: zk + + postgres: + extends: + file: docker-compose-runner.yml + service: postgres + + geth: + extends: + file: docker-compose-runner.yml + service: geth diff --git a/docker/zk-environment/Dockerfile b/docker/zk-environment/Dockerfile index 573d42b79ea..c9871f98afb 100644 --- a/docker/zk-environment/Dockerfile +++ b/docker/zk-environment/Dockerfile @@ -193,3 +193,8 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ && rm -rf /var/lib/apt/lists/* ENV LIBRARY_PATH /usr/local/cuda/lib64/stubs + + +FROM base as rust-nightly + +RUN rustup default nightly-2023-07-21 diff --git a/docker/zk-rust-nightly-environment/Dockerfile b/docker/zk-rust-nightly-environment/Dockerfile deleted file mode 100644 index db3c8515c36..00000000000 --- a/docker/zk-rust-nightly-environment/Dockerfile +++ /dev/null @@ -1,19 +0,0 @@ -FROM debian:bookworm-slim - -ARG DEBIAN_FRONTEND=noninteractive - -RUN apt update && apt install git curl clang openssl libssl-dev gcc g++ pkg-config build-essential libclang-dev -y - -ENV RUSTUP_HOME=/usr/local/rustup \ - CARGO_HOME=/usr/local/cargo \ - PATH=/usr/local/cargo/bin:$PATH - -# Setup rust nightly -RUN curl https://sh.rustup.rs -sSf | bash -s -- -y && \ - rustup install nightly-2023-07-21 && \ - rustup default nightly-2023-07-21 - -# Setup cmake -RUN curl -Lo cmake-3.24.2-linux-x86_64.sh https://github.com/Kitware/CMake/releases/download/v3.24.2/cmake-3.24.2-linux-x86_64.sh && \ - chmod +x cmake-3.24.2-linux-x86_64.sh && \ - ./cmake-3.24.2-linux-x86_64.sh --skip-license --prefix=/usr/local diff --git a/infrastructure/zk/src/env.ts b/infrastructure/zk/src/env.ts index cda73ddf6f5..9b6eb443636 100644 --- a/infrastructure/zk/src/env.ts +++ b/infrastructure/zk/src/env.ts @@ -57,7 +57,7 @@ export function set(env: string, print: boolean = false) { const envFile = (process.env.ENV_FILE = `etc/env/${env}.env`); if (!fs.existsSync(envFile)) { // No .env file found - we should compile it! - config.compileConfig(); + config.compileConfig(env); } reload(); get(print); diff --git a/infrastructure/zk/src/hyperchain_wizard.ts b/infrastructure/zk/src/hyperchain_wizard.ts index f588084ee0d..40f692137eb 100644 --- a/infrastructure/zk/src/hyperchain_wizard.ts +++ b/infrastructure/zk/src/hyperchain_wizard.ts @@ -1,14 +1,10 @@ import { Command } from 'commander'; import enquirer from 'enquirer'; -import { BigNumber, ethers } from 'ethers'; +import { BigNumber, ethers, utils } from 'ethers'; import chalk from 'chalk'; -import { announced, submoduleUpdate } from './init'; +import { announced, init, InitArgs } from './init'; import * as server from './server'; -import * as contract from './contract'; -import * as run from './run/run'; -import * as compiler from './compiler'; import * as db from './database'; -import { clean } from './clean'; import * as env from './env'; import { compileConfig } from './config'; import * as fs from 'fs'; @@ -38,34 +34,33 @@ interface BasePromptOptions { skip?: ((state: object) => boolean | Promise) | boolean; } -// An init command that allows configuring and spinning up a new Hyperchain network +// An init command that allows configuring and spinning up a new Hyperchain network. async function initHyperchain() { await announced('Initializing Hyperchain creation', setupConfiguration()); - await announced('Drop postgres db', db.drop()); - await announced('Setup postgres db', db.setup()); - await announced('Clean rocksdb', clean('db')); - await announced('Clean backups', clean('backups')); - await announced('Building L1 and L2 contracts', contract.build()); - - await announced('Deploy test tokens', initializeTestERC20s()); - await announced('Deploying L1 verifier', contract.deployVerifier([])); - await announced('Running server genesis setup', server.genesisFromSources()); - const deployerPrivateKey = process.env.DEPLOYER_PRIVATE_KEY; const governorPrivateKey = process.env.GOVERNOR_PRIVATE_KEY; const governorAddress = process.env.GOVERNOR_ADDRESS; + const deployL2Weth = Boolean(process.env.DEPLOY_L2_WETH || false); + const deployTestTokens = Boolean(process.env.DEPLOY_TEST_TOKENS || false); + + const initArgs: InitArgs = { + skipSubmodulesCheckout: false, + skipEnvSetup: false, + deployerL1ContractInputArgs: ['--private-key', deployerPrivateKey, '--governor-address', governorAddress], + governorPrivateKeyArgs: ['--private-key', governorPrivateKey], + deployerL2ContractInput: { + args: ['--private-key', deployerPrivateKey], + includePaymaster: false, + includeL2WETH: deployL2Weth + }, + testTokens: { + deploy: deployTestTokens, + args: ['--private-key', deployerPrivateKey, '--envFile', process.env.CHAIN_ETH_NETWORK!] + } + }; - await announced( - 'Deploying L1 contracts', - contract.redeployL1(['--private-key', deployerPrivateKey, '--governor-address', governorAddress]) - ); - - await announced('Initializing validator', contract.initializeValidator(['--private-key', governorPrivateKey])); - await announced('Initialize L1 allow list', contract.initializeL1AllowList(['--private-key', governorPrivateKey])); - await announced('Deploying L2 contracts', contract.deployL2(['--private-key', deployerPrivateKey], false)); - - await announced('Initialize WETH Token', initializeWethTokenForHyperchain()); + await init(initArgs); env.mergeInitToEnv(); @@ -89,7 +84,7 @@ async function setupConfiguration() { const results: any = await enquirer.prompt(questions); if (results.config === CONFIGURE) { - await announced('Setting Hyperchain metadata', setHyperchainMetadata()); + await announced('Setting Hyperchain configuration', setHyperchainMetadata()); await announced('Validating information and balances to deploy Hyperchain', checkReadinessToDeploy()); } else { const envs = env.getAvailableEnvsFromFiles(); @@ -106,10 +101,6 @@ async function setupConfiguration() { const envResults: any = await enquirer.prompt(envQuestions); env.set(envResults.env); } - await announced('Checkout system-contracts submodule', submoduleUpdate()); - await announced('Compiling JS packages', run.yarn()); - await announced('Compiling system contracts', compiler.compileSystemContracts()); - await announced('Compile l2 contracts', compiler.compileAll()); } async function setHyperchainMetadata() { @@ -124,19 +115,22 @@ async function setHyperchainMetadata() { const INSERT_KEYS = 'Insert keys'; const questions: BasePromptOptions[] = [ { - message: 'What is your hyperchain name?', + message: 'What is your Hyperchain name?', name: 'chainName', - type: 'input' + type: 'input', + required: true }, { - message: 'What is your hyperchain id? Make sure this is not used by other chains.', + message: 'What is your Hyperchain id? Make sure this is not used by other chains.', name: 'chainId', - type: 'input' + type: 'numeral', + required: true }, { - message: 'To which L1 Network will your hyperchain rollup to?', + message: 'To which L1 Network will your Hyperchain rollup to?', name: 'l1Chain', type: 'select', + required: true, choices: BASE_NETWORKS } ]; @@ -146,20 +140,25 @@ async function setHyperchainMetadata() { let deployer, governor, ethOperator, feeReceiver: ethers.Wallet | undefined; let feeReceiverAddress, l1Rpc, l1Id; + await initializeTestERC20s(); + await initializeWethTokenForHyperchain(); + if (results.l1Chain !== BaseNetwork.LOCALHOST) { const rpcQuestions: BasePromptOptions[] = [ { message: 'What is the RPC url for the L1 Network?', name: 'l1Rpc', - type: 'input' + type: 'input', + required: true } ]; if (results.l1Chain === BaseNetwork.LOCALHOST_CUSTOM) { rpcQuestions.push({ - message: 'What is netowrk id of your L1 Network?', + message: 'What is network id of your L1 Network?', name: 'l1NetworkId', - type: 'input' + type: 'numeral', + required: true }); } @@ -192,27 +191,48 @@ async function setHyperchainMetadata() { { message: 'Private key of the L1 Deployer (the one that deploys the contracts)', name: 'deployerKey', - type: 'password' + type: 'password', + required: true }, { message: 'Private key of the L1 Governor (the one that can upgrade the contracts)', name: 'governorKey', - type: 'password' + type: 'password', + required: true }, { message: 'Private key of the L1 ETH Operator (the one that rolls up the batches)', name: 'ethOperator', - type: 'password' + type: 'password', + required: true }, { message: 'Address of L2 fee receiver (the one that collects fees)', name: 'feeReceiver', - type: 'input' + type: 'input', + required: true } ]; const keyResults: any = await enquirer.prompt(keyQuestions); + if (!utils.isAddress(keyResults.deployerKey)) { + throw Error(error('Deployer address is not a valid address')); + } + if (!utils.isAddress(keyResults.governorKey)) { + throw Error(error('Governor address is not a valid address')); + } + if (!utils.isAddress(keyResults.ethOperator)) { + throw Error(error('ETH Operator address is not a valid address')); + } + if (!utils.isAddress(keyResults.feeReceiver)) { + throw Error(error('Fee Receiver address is not a valid address')); + } + + if (keyResults.deployerKey == keyResults.governorKey) { + throw Error(error('Governor and Deployer should not be the same')); + } + deployer = new ethers.Wallet(keyResults.deployerKey); governor = new ethers.Wallet(keyResults.governorKey); ethOperator = new ethers.Wallet(keyResults.ethOperator); @@ -252,10 +272,6 @@ async function setHyperchainMetadata() { ) ); - if (governor.address == deployer.address) { - throw Error(error('Governor and Deployer cannot be the same')); - } - if (results.l1Chain !== BaseNetwork.LOCALHOST_CUSTOM && results.l1Chain !== BaseNetwork.LOCALHOST) { const verifyQuestions: BasePromptOptions[] = [ { @@ -272,7 +288,8 @@ async function setHyperchainMetadata() { { message: 'Please provide your Etherscan API Key.', name: 'etherscanKey', - type: 'input' + type: 'input', + required: true } ]; @@ -302,8 +319,8 @@ async function setHyperchainMetadata() { wrapEnvModify('FEE_RECEIVER_PRIVATE_KEY', feeReceiver.privateKey); } - // For now force delay to 20 seconds to ensure batch execution doesn't not happen in same block as batch proving - // This bug will be fixed on the smart contract soon + // For now force delay to 20 seconds to ensure batch execution doesn't not happen in same block as batch proving. + // This bug will be fixed on the smart contract soon. wrapEnvModify('CONTRACTS_VALIDATOR_TIMELOCK_EXECUTION_DELAY', '0'); wrapEnvModify('ETH_SENDER_SENDER_L1_BATCH_MIN_AGE_BEFORE_EXECUTE_SECONDS', '20'); @@ -328,21 +345,12 @@ async function initializeTestERC20s() { const results: any = await enquirer.prompt(questions); if (results.deployERC20s) { - const privateKey = process.env.DEPLOYER_PRIVATE_KEY; - await announced( - 'Deploying localhost ERC20 tokens', - run.deployERC20('dev', '', '', '', [ - '--private-key', - privateKey, - '--envFile', - process.env.CHAIN_ETH_NETWORK! - ]) - ); + wrapEnvModify('DEPLOY_TEST_TOKENS', 'true'); console.log( warning( - `The addresses for the tokens can be found on the /etc/tokens/${getEnv( + `The addresses for the tokens will be available at the /etc/tokens/${getEnv( process.env.CHAIN_ETH_NETWORK! - )}.json file. The deployer address is the owner of the token contracts.` + )}.json file.` ) ); } @@ -351,7 +359,7 @@ async function initializeTestERC20s() { async function initializeWethTokenForHyperchain() { const questions: BasePromptOptions[] = [ { - message: 'Do you want to deploy a Wrapped ETH Bridge?', + message: 'Do you want to deploy Wrapped ETH to your Hyperchain?', name: 'deployWeth', type: 'confirm' } @@ -360,45 +368,44 @@ async function initializeWethTokenForHyperchain() { const results: any = await enquirer.prompt(questions); if (results.deployWeth) { - const tokens = getTokens(process.env.CHAIN_ETH_NETWORK!); - - let baseWethToken = tokens.find((token: { symbol: string }) => token.symbol == 'WETH')?.address; - - if (!baseWethToken) { - const wethQuestions = [ - { - message: 'What is the address of the Wrapped ETH on the base chain?', - name: 'l1Weth', - type: 'input' + wrapEnvModify('DEPLOY_L2_WETH', 'true'); + + if (!process.env.DEPLOY_TEST_TOKENS) { + // Only try to fetch this info if no test tokens will be deployed, otherwise WETH address will be defined later. + const tokens = getTokens(process.env.CHAIN_ETH_NETWORK!); + + let baseWethToken = tokens.find((token: { symbol: string }) => token.symbol == 'WETH')?.address; + + if (!baseWethToken) { + const wethQuestions = [ + { + message: 'What is the address of the Wrapped ETH on the base chain?', + name: 'l1Weth', + type: 'input', + required: true + } + ]; + + const wethResults: any = await enquirer.prompt(wethQuestions); + + baseWethToken = wethResults.l1Weth; + + if (fs.existsSync(`/etc/tokens/${getEnv(process.env.ZKSYNC_ENV!)}.json`)) { + tokens.push({ + name: 'Wrapped Ether', + symbol: 'WETH', + decimals: 18, + address: baseWethToken! + }); + fs.writeFileSync( + `/etc/tokens/${getEnv(process.env.ZKSYNC_ENV!)}.json`, + JSON.stringify(tokens, null, 4) + ); } - ]; - - const wethResults: any = await enquirer.prompt(wethQuestions); - - baseWethToken = wethResults.l1Weth; - - if (fs.existsSync(`/etc/tokens/${getEnv(process.env.ZKSYNC_ENV!)}.json`)) { - tokens.push({ - name: 'Wrapped Ether', - symbol: 'WETH', - decimals: 18, - address: baseWethToken! - }); - fs.writeFileSync( - `/etc/tokens/${getEnv(process.env.ZKSYNC_ENV!)}.json`, - JSON.stringify(tokens, null, 4) - ); } - } - - wrapEnvModify('CONTRACTS_L1_WETH_TOKEN_ADDR', baseWethToken!); - const governorPrivateKey = process.env.GOVERNOR_PRIVATE_KEY; - - await announced( - 'Initializing L2 WETH token', - contract.initializeWethToken(['--private-key', governorPrivateKey]) - ); + wrapEnvModify('CONTRACTS_L1_WETH_TOKEN_ADDR', baseWethToken!); + } } } @@ -441,12 +448,12 @@ async function startServer() { await server.server(false, false, components.join(',')); } -// The current env.modify requires to write down the variable name twice. This wraps it so the caller only writes the name and the value +// The current env.modify requires to write down the variable name twice. This wraps it so the caller only writes the name and the value. function wrapEnvModify(variable: string, assignedVariable: string) { env.modify(variable, `${variable}=${assignedVariable}`); } -// Make sure all env information is available and wallets are funded +// Make sure all env information is available and wallets are funded. async function checkReadinessToDeploy() { const provider = new ethers.providers.JsonRpcProvider(process.env.ETH_CLIENT_WEB3_URL!); @@ -531,13 +538,13 @@ function getL1Name(baseChain: BaseNetwork) { function getEnv(chainName: string) { return String(chainName) - .normalize('NFKD') // split accented characters into their base characters and diacritical marks - .replace(/[\u0300-\u036f]/g, '') // remove all the accents, which happen to be all in the \u03xx UNICODE block. - .trim() // trim leading or trailing whitespace - .toLowerCase() // convert to lowercase - .replace(/[^a-z0-9 -]/g, '') // remove non-alphanumeric characters - .replace(/\s+/g, '-') // replace spaces with hyphens - .replace(/-+/g, '-'); // remove consecutive hyphens + .normalize('NFKD') // Split accented characters into their base characters and diacritical marks. + .replace(/[\u0300-\u036f]/g, '') // Remove all the accents, which happen to be all in the \u03xx UNICODE block. + .trim() // Trim leading or trailing whitespace. + .toLowerCase() // Convert to lowercase. + .replace(/[^a-z0-9 -]/g, '') // Remove non-alphanumeric characters. + .replace(/\s+/g, '-') // Replace spaces with hyphens. + .replace(/-+/g, '-'); // Remove consecutive hyphens. } type L1Token = { @@ -561,5 +568,5 @@ export function getTokens(network: string): L1Token[] { } export const initHyperchainCommand = new Command('init-hyperchain') - .description('Initializes a new hyperchain network') + .description('Initializes a new Hyperchain network') .action(initHyperchain); diff --git a/infrastructure/zk/src/init.ts b/infrastructure/zk/src/init.ts index a98e2395fc4..9bb88ad4ce8 100644 --- a/infrastructure/zk/src/init.ts +++ b/infrastructure/zk/src/init.ts @@ -17,8 +17,17 @@ const announce = chalk.yellow; const success = chalk.green; const timestamp = chalk.grey; -export async function init(skipSubmodulesCheckout: boolean) { - if (!process.env.CI) { +export async function init(initArgs: InitArgs = DEFAULT_ARGS) { + const { + skipSubmodulesCheckout, + skipEnvSetup, + testTokens, + deployerL1ContractInputArgs, + governorPrivateKeyArgs, + deployerL2ContractInput + } = initArgs; + + if (!process.env.CI && !skipEnvSetup) { await announced('Pulling images', docker.pull()); await announced('Checking environment', checkEnv()); await announced('Checking git hooks', env.gitHooks()); @@ -28,6 +37,7 @@ export async function init(skipSubmodulesCheckout: boolean) { if (!skipSubmodulesCheckout) { await announced('Checkout system-contracts submodule', submoduleUpdate()); } + await announced('Compiling JS packages', run.yarn()); await announced('Compile l2 contracts', compiler.compileAll()); await announced('Drop postgres db', db.drop()); @@ -35,16 +45,28 @@ export async function init(skipSubmodulesCheckout: boolean) { await announced('Clean rocksdb', clean('db')); await announced('Clean backups', clean('backups')); await announced('Building contracts', contract.build()); - await announced('Deploying localhost ERC20 tokens', run.deployERC20('dev')); + if (testTokens.deploy) { + await announced('Deploying localhost ERC20 tokens', run.deployERC20('dev', '', '', '', testTokens.args)); + } await announced('Deploying L1 verifier', contract.deployVerifier([])); await announced('Reloading env', env.reload()); await announced('Running server genesis setup', server.genesisFromSources()); await announced('Deploying L1 contracts', contract.redeployL1([])); + await announced('Initializing validator', contract.initializeValidator()); await announced('Initialize L1 allow list', contract.initializeL1AllowList()); - await announced('Deploying L2 contracts', contract.deployL2([], true, true)); - await announced('Initializing L2 WETH token', contract.initializeWethToken()); + await announced( + 'Deploying L2 contracts', + contract.deployL2( + deployerL2ContractInput.args, + deployerL2ContractInput.includePaymaster, + deployerL2ContractInput.includeL2WETH + ) + ); + + if (deployerL2ContractInput.includeL2WETH) { + await announced('Initializing L2 WETH token', contract.initializeWethToken(governorPrivateKeyArgs)); + } await announced('Initializing governance', contract.initializeGovernance()); - await announced('Initializing validator', contract.initializeValidator()); } // A smaller version of `init` that "resets" the localhost environment, for which `init` was already called before. @@ -118,11 +140,45 @@ async function checkEnv() { } } +export interface InitArgs { + skipSubmodulesCheckout: boolean; + skipEnvSetup: boolean; + deployerL1ContractInputArgs: any[]; + governorPrivateKeyArgs: any[]; + deployerL2ContractInput: { + args: any[]; + includePaymaster: boolean; + includeL2WETH: boolean; + }; + testTokens: { + deploy: boolean; + args: any[]; + }; +} + +const DEFAULT_ARGS: InitArgs = { + skipSubmodulesCheckout: false, + skipEnvSetup: false, + deployerL1ContractInputArgs: [], + governorPrivateKeyArgs: [], + deployerL2ContractInput: { args: [], includePaymaster: true, includeL2WETH: true }, + testTokens: { deploy: true, args: [] } +}; + export const initCommand = new Command('init') .option('--skip-submodules-checkout') + .option('--skip-env-setup') .description('perform zksync network initialization for development') .action(async (cmd: Command) => { - await init(cmd.skipSubmodulesCheckout); + const initArgs: InitArgs = { + skipSubmodulesCheckout: cmd.skipSubmodulesCheckout, + skipEnvSetup: cmd.skipEnvSetup, + deployerL1ContractInputArgs: [], + governorPrivateKeyArgs: [], + deployerL2ContractInput: { args: [], includePaymaster: true, includeL2WETH: true }, + testTokens: { deploy: true, args: [] } + }; + await init(initArgs); }); export const reinitCommand = new Command('reinit') .description('"reinitializes" network. Runs faster than `init`, but requires `init` to be executed prior') diff --git a/infrastructure/zk/src/run/run.ts b/infrastructure/zk/src/run/run.ts index e895fb23a02..ff4092d7900 100644 --- a/infrastructure/zk/src/run/run.ts +++ b/infrastructure/zk/src/run/run.ts @@ -4,6 +4,8 @@ import { Wallet } from 'ethers'; import fs from 'fs'; import * as path from 'path'; import * as dataRestore from './data-restore'; +import { getTokens } from '../hyperchain_wizard'; +import * as env from '../env'; export { dataRestore }; @@ -39,6 +41,8 @@ export async function deployERC20( { "name": "MLTTL", "symbol": "MLTTW", "decimals": 18 }, { "name": "Wrapped Ether", "symbol": "WETH", "decimals": 18, "implementation": "WETH9"} ]' ${args.join(' ')} > ./etc/tokens/${destinationFile}.json`); + const WETH = getTokens(destinationFile).find((token) => token.symbol === 'WETH')!; + env.modify('CONTRACTS_L1_WETH_TOKEN_ADDR', `CONTRACTS_L1_WETH_TOKEN_ADDR=${WETH.address}`); } else if (command == 'new') { await utils.spawn( `yarn --silent --cwd contracts/ethereum deploy-erc20 add --token-name ${name} --symbol ${symbol} --decimals ${decimals}` diff --git a/prover/proof_fri_compressor/README.md b/prover/proof_fri_compressor/README.md new file mode 100644 index 00000000000..4b0fa52ed9f --- /dev/null +++ b/prover/proof_fri_compressor/README.md @@ -0,0 +1,7 @@ +# Witness vector generator + +Used to compress FRI proof to Bellman proof that gets sent to L1. + +## running + +`zk f cargo +nightly-2023-07-21 run --release --bin zksync_proof_fri_compressor` diff --git a/prover/prover/README.md b/prover/prover/README.md new file mode 100644 index 00000000000..2d70cf056d4 --- /dev/null +++ b/prover/prover/README.md @@ -0,0 +1,8 @@ +# Readme + +For compiling locally (no cuda) set `features=["legacy"], default-features=false` for: + +- `./Cargo.toml`: `heavy-ops-service` dependency. +- `../setup_key_generator_and_server/Cargo.toml`: `api` and `prover-service` dependencies. + +**! Don't push those changes !** diff --git a/prover/prover_fri/README.md b/prover/prover_fri/README.md new file mode 100644 index 00000000000..0b4d17def73 --- /dev/null +++ b/prover/prover_fri/README.md @@ -0,0 +1,150 @@ +# FRI Prover + +## running cpu prover + +`zk f cargo +nightly-2023-07-21 run --release --bin zksync_prover_fri` + +## running gpu prover(requires CUDA 12.0+) + +`zk f cargo +nightly-2023-07-21 run --release --features "gpu" --bin zksync_prover_fri` + +## Proving a block using CPU prover locally + +Below steps can be used to prove a block on local machine using CPU prover. This is useful for debugging and testing +Machine specs: + +- CPU: At least 8 physical cores +- RAM: 60GB of RAM(if you have lower RAM machine enable swap) +- Disk: 400GB of free disk + +1. Install the correct nightly version using command: `rustup install nightly-2023-07-21` +2. Generate the cpu setup data (no need to regenerate if it's already there). This will consume around 300Gb of disk. + Use these commands: + + ```markdown + for i in {1..13}; do zk f cargo run --release --bin zksync_setup_data_generator_fri -- --numeric-circuit $i + --is_base_layer done + + for i in {1..15}; do zk f cargo run --release --bin zksync_setup_data_generator_fri -- --numeric-circuit $i done + ``` + +3. Initialize DB and run migrations: `zk init` + +4. Override the following configuration in your `dev.env`: + + ``` + ETH_SENDER_SENDER_PROOF_SENDING_MODE=OnlyRealProofs + ETH_SENDER_SENDER_PROOF_LOADING_MODE=FriProofFromGcs + OBJECT_STORE_FILE_BACKED_BASE_PATH=/path/to/server/artifacts + PROVER_OBJECT_STORE_FILE_BACKED_BASE_PATH=/path/to/prover/artifacts + FRI_PROVER_SETUP_DATA_PATH=/path/to/above-generated/cpu-setup-data + ``` + +5. Run server `zk server --components=api,eth,tree,state_keeper,housekeeper,proof_data_handler` to produce blocks to be + proven +6. Run prover gateway to fetch blocks to be proven from server : + `zk f cargo run --release --bin zksync_prover_fri_gateway` +7. Run 4 witness generators to generate witness for each round: + + ``` + API_PROMETHEUS_LISTENER_PORT=3116 zk f cargo run --release --bin zksync_witness_generator -- --round=basic_circuits + API_PROMETHEUS_LISTENER_PORT=3117 zk f cargo run --release --bin zksync_witness_generator -- --round=leaf_aggregation + API_PROMETHEUS_LISTENER_PORT=3118 zk f cargo run --release --bin zksync_witness_generator -- --round=node_aggregation + API_PROMETHEUS_LISTENER_PORT=3119 zk f cargo run --release --bin zksync_witness_generator -- --round=scheduler + ``` + +8. Run prover to perform actual proving: `zk f cargo run --release --bin zksync_prover_fri` +9. Finally, run proof compressor to compress the proof to be sent on L1: + `zk f cargo run --release --bin zksync_proof_fri_compressor` + +## Proving a block using GPU prover locally + +Below steps can be used to prove a block on local machine using GPU prover, It requires Cuda 12.0 installation as +pre-requisite. This is useful for debugging and testing Machine specs: + +- CPU: At least 8 physical cores +- RAM: 16GB of RAM(if you have lower RAM machine enable swap) +- Disk: 30GB of free disk +- GPU: 1x Nvidia L4/T4 with 16GB of GPU RAM + +1. Install the correct nightly version using command: `rustup install nightly-2023-07-21` +2. Generate the gpu setup data (no need to regenerate if it's already there). This will consume around 300Gb of disk. + Use these commands: + + ```markdown + for i in {1..13}; do zk f cargo run --features "gpu" --release --bin zksync_setup_data_generator_fri -- + --numeric-circuit $i --is_base_layer done + + for i in {1..15}; do zk f cargo run --features "gpu" --release --bin zksync_setup_data_generator_fri -- + --numeric-circuit $i done + ``` + +3. Initialize DB and run migrations: `zk init` + +4. Override the following configuration in your `dev.env`: + + ``` + ETH_SENDER_SENDER_PROOF_SENDING_MODE=OnlyRealProofs + ETH_SENDER_SENDER_PROOF_LOADING_MODE=FriProofFromGcs + OBJECT_STORE_FILE_BACKED_BASE_PATH=/path/to/server/artifacts + PROVER_OBJECT_STORE_FILE_BACKED_BASE_PATH=/path/to/prover/artifacts + FRI_PROVER_SETUP_DATA_PATH=/path/to/above-generated/gpu-setup-data + ``` + +5. Run server `zk server --components=api,eth,tree,state_keeper,housekeeper,proof_data_handler` to produce blocks to be + proven +6. Run prover gateway to fetch blocks to be proven from server : + `zk f cargo run --release --bin zksync_prover_fri_gateway` +7. Run 4 witness generators to generate witness for each round: + + ``` + API_PROMETHEUS_LISTENER_PORT=3116 zk f cargo run --release --bin zksync_witness_generator -- --round=basic_circuits + API_PROMETHEUS_LISTENER_PORT=3117 zk f cargo run --release --bin zksync_witness_generator -- --round=leaf_aggregation + API_PROMETHEUS_LISTENER_PORT=3118 zk f cargo run --release --bin zksync_witness_generator -- --round=node_aggregation + API_PROMETHEUS_LISTENER_PORT=3119 zk f cargo run --release --bin zksync_witness_generator -- --round=scheduler + ``` + +8. Run prover to perform actual proving: `zk f cargo run --features "gpu" --release --bin zksync_prover_fri` +9. Run 5 witness vector generators to feed jobs to GPU prover: + + ``` + FRI_WITNESS_VECTOR_GENERATOR_PROMETHEUS_LISTENER_PORT=3416 zk f cargo run --release --bin zksync_witness_vector_generator + FRI_WITNESS_VECTOR_GENERATOR_PROMETHEUS_LISTENER_PORT=3417 zk f cargo run --release --bin zksync_witness_vector_generator + FRI_WITNESS_VECTOR_GENERATOR_PROMETHEUS_LISTENER_PORT=3418 zk f cargo run --release --bin zksync_witness_vector_generator + FRI_WITNESS_VECTOR_GENERATOR_PROMETHEUS_LISTENER_PORT=3419 zk f cargo run --release --bin zksync_witness_vector_generator + FRI_WITNESS_VECTOR_GENERATOR_PROMETHEUS_LISTENER_PORT=3420 zk f cargo run --release --bin zksync_witness_vector_generator + ``` + +10. Finally, run proof compressor to compress the proof to be sent on L1: + `zk f cargo run --release --bin zksync_proof_fri_compressor` + +## Performing circuit upgrade + +Performing circuit upgrade requires crypto library to be updated and generating new setup data, verification key, +finalization hints if the circuit changes. Below steps can be used to perform circuit upgrade: + +1. checkout if the circuit geometry has changed in the new version of the circuit by running the + [workflow](https://github.com/matter-labs/zkevm_test_harness/actions/workflows/geometry-config-generator.yml) in + harness and merge the generated PR. +2. update the relevant crypto dependencies(boojum, zkevm_circuit, harness, etc) in `Cargo.lock`, for example: + `cargo update -p zkevm_test_harness@1.4.0` +3. prepare an PR with the updated dependencies [sample PR](https://github.com/matter-labs/zksync-2-dev/pull/2481). +4. Run the verification key + [workflow](https://github.com/matter-labs/zksync-2-dev/actions/workflows/fri-vk-generator.yaml) against the PR to + generate the verification key and finalization hints for the new circuit. +5. Only once the above verification key workflow is successful, start the setup-data generation(cpu, gpu setup data + generation can be done in parallel), this step is important, since the setup data requires the new VK, we need to + wait for it to finish. +6. Run the cpu setup data generation + [workflow](https://github.com/matter-labs/zksync-2-dev/actions/workflows/fri-setup-data-generator.yml) against the PR + to generate the cpu setup data. +7. Run the gpu setup data generation + [workflow](https://github.com/matter-labs/zksync-2-dev/actions/workflows/fri-gpu-setup-data-generator.yml) against + the PR to generate the gpu setup data. +8. Once the setup data generation workflows are successful, update the PR with `setup_keys_id` id in + [build-docker-from-tag.yml](../../.github/workflows/build-docker-from-tag.yml) and in + [fri-gpu-prover-integration-test.yml](../../.github/workflows/fri-gpu-prover-integration-test.yml), make sure to only + do it from `FRI prover` not old. +9. Run the GPU integration test + [workflow](https://github.com/matter-labs/zksync-2-dev/actions/workflows/fri-gpu-prover-integration-test.yml) against + the PR to verify the GPU prover is working fine with new circuits. diff --git a/prover/prover_fri_gateway/README.md b/prover/prover_fri_gateway/README.md new file mode 100644 index 00000000000..bfe04e1f651 --- /dev/null +++ b/prover/prover_fri_gateway/README.md @@ -0,0 +1,11 @@ +# FRI Prover Gateway + +The Prover Gateway is a service component in our system infrastructure that acts as an intermediary between the prover +and the server's HTTP API. It regularly invokes the server's HTTP API to get proof related data, and it submits proof. +Its primary functions include: + +- **GetProofGenerationData**: This function is responsible for pulling proof generation data from the HTTPS API. It + obtains the necessary data required to generate proofs in our system. The retrieved data is then used as input by + prover for the proof generation process. +- **SubmitProof**: Once the proof is generated by prover, this function is used to submit the resulting proof back to + the server. diff --git a/prover/prover_fri_types/README.md b/prover/prover_fri_types/README.md new file mode 100644 index 00000000000..7485656110e --- /dev/null +++ b/prover/prover_fri_types/README.md @@ -0,0 +1,8 @@ +# FRI Prover types + +Lib contains types used by FRI prover and shared among + +- FRI prover +- witness generator +- vk and setup data generator +- witness vector generator diff --git a/prover/vk_setup_data_generator_server_fri/README.md b/prover/vk_setup_data_generator_server_fri/README.md new file mode 100644 index 00000000000..1dc8b5c0fa2 --- /dev/null +++ b/prover/vk_setup_data_generator_server_fri/README.md @@ -0,0 +1,22 @@ +# Setup data and VK generator and server + +The SNARK VK generation requires the `CRS_FILE` environment variable to be present and point to the correct file. The +file can be downloaded from the following +[link](https://storage.googleapis.com/matterlabs-setup-keys-us/setup-keys/setup_2^26.key) its also present in dir after +zk init keys/setup/setup_2^26.key + +## generating setup-data for specific circuit type + +`zk f cargo +nightly-2023-07-21 run --release --bin zksync_setup_data_generator_fri -- --numeric-circuit 1 --is_base_layer` + +## generating GPU setup-data for specific circuit type + +`zk f cargo +nightly-2023-07-21 run --features "gpu" --release --bin zksync_setup_data_generator_fri -- --numeric-circuit 1 --is_base_layer` + +## Generating VK's + +`cargo +nightly-2023-07-21 run --release --bin zksync_vk_generator_fri` + +## generating VK commitment for existing VK's + +`cargo +nightly-2023-07-21 run --release --bin zksync_commitment_generator_fri` diff --git a/prover/witness_generator/README.md b/prover/witness_generator/README.md new file mode 100644 index 00000000000..9d35fe7e054 --- /dev/null +++ b/prover/witness_generator/README.md @@ -0,0 +1,52 @@ +# WitnessGenerator + +Please read this +[doc](https://www.notion.so/matterlabs/Draft-FRI-Prover-Integration-Prover-Shadowing-c4b1373786eb43779a93118be4be5d99) +for rationale of this binary, alongside the existing one in zk-core. + +The component is responsible for generating prover jobs and saving artifacts needed for the next round of proof +aggregation. That is, every aggregation round needs two sets of input: + +- computed proofs from the previous round +- some artifacts that the witness generator of previous round(s) returns. There are four rounds of proofs for every + block, each of them starts with an invocation of `{Round}WitnessGenerator` with a corresponding + `WitnessGeneratorJobType`: + +## BasicCircuitsWitnessGenerator + +- generates basic circuits (circuits like `Main VM` - up to 50 \* 48 = 2400 circuits): +- input table: `basic_circuit_witness_jobs` (todo SMA-1362: will be renamed from `witness_inputs`) +- artifact/output table: `leaf_aggregation_jobs` (also creates job stubs in `node_aggregation_jobs` and + `scheduler_aggregation_jobs`) value in `aggregation_round` field of `prover_jobs` table: 0 + +## LeafAggregationWitnessGenerator + +- generates leaf aggregation circuits (up to 48 circuits of type `LeafAggregation`) +- input table: `leaf_aggregation_jobs` +- artifact/output table: `node_aggregation_jobs` +- value in `aggregation_round` field of `prover_jobs` table: 1 + +## NodeAggregationWitnessGenerator + +- generates one circuit of type `NodeAggregation` +- input table: `leaf_aggregation_jobs` +- value in `aggregation_round` field of `prover_jobs` table: 2 + +## SchedulerWitnessGenerator + +- generates one circuit of type `Scheduler` +- input table: `scheduler_witness_jobs` +- value in `aggregation_round` field of `prover_jobs` table: 3 + +One round of prover generation consists of: + +- `WitnessGenerator` picks up the next `queued` job in its input table and processes it (invoking the corresponding + helper function in `zkevm_test_harness` repo) +- it saves the generated circuis to `prover_jobs` table and the other artifacts to its output table +- the individual proofs are picked up by the provers, processed, and marked as complete. +- when the last proof for this round is computed, the prover updates the row in the output table setting its status to + `queued` +- `WitnessGenerator` picks up such job and proceeds to the next round + +Note that the very first input table (`witness_inputs`) is populated by the tree (as the input artifact for the +`WitnessGeneratorJobType::BasicCircuits` is the merkle proofs) diff --git a/prover/witness_vector_generator/README.md b/prover/witness_vector_generator/README.md new file mode 100644 index 00000000000..8c4328afe8c --- /dev/null +++ b/prover/witness_vector_generator/README.md @@ -0,0 +1,7 @@ +# Witness vector generator + +Used to generate witness vectors using circuit and sending them to prover over TCP. + +## running + +`zk f cargo +nightly-2023-07-21 run --release --bin zksync_witness_vector_generator` diff --git a/yarn.lock b/yarn.lock index bde3f68cd50..1893bd11314 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1384,6 +1384,15 @@ dependencies: chalk "4.1.2" +"@matterlabs/hardhat-zksync-deploy@^0.6.5": + version "0.6.5" + resolved "https://registry.yarnpkg.com/@matterlabs/hardhat-zksync-deploy/-/hardhat-zksync-deploy-0.6.5.tgz#fe56bf30850e71c8d328ac1a06a100c1a0af6e3e" + integrity sha512-EZpvn8pDslfO3UA2obT8FOi5jsHhxYS5ndIR7tjL2zXKbvkbpoJR5rgKoGTJJm0riaCud674sQcxMOybVQ+2gg== + dependencies: + "@matterlabs/hardhat-zksync-solc" "0.4.2" + chalk "4.1.2" + ts-morph "^19.0.0" + "@matterlabs/hardhat-zksync-solc@0.3.17": version "0.3.17" resolved "https://registry.yarnpkg.com/@matterlabs/hardhat-zksync-solc/-/hardhat-zksync-solc-0.3.17.tgz#72f199544dc89b268d7bfc06d022a311042752fd" @@ -1614,6 +1623,25 @@ mcl-wasm "^0.7.1" rustbn.js "~0.2.0" +"@nomicfoundation/hardhat-chai-matchers@^1.0.6": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-1.0.6.tgz#72a2e312e1504ee5dd73fe302932736432ba96bc" + integrity sha512-f5ZMNmabZeZegEfuxn/0kW+mm7+yV7VNDxLpMOMGXWFJ2l/Ct3QShujzDRF9cOkK9Ui/hbDeOWGZqyQALDXVCQ== + dependencies: + "@ethersproject/abi" "^5.1.2" + "@types/chai-as-promised" "^7.1.3" + chai-as-promised "^7.1.1" + deep-eql "^4.0.1" + ordinal "^1.0.3" + +"@nomicfoundation/hardhat-ethers@^3.0.4": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-ethers/-/hardhat-ethers-3.0.4.tgz#6f0df2424e687e26d6574610de7a36bd69485cc1" + integrity sha512-k9qbLoY7qn6C6Y1LI0gk2kyHXil2Tauj4kGzQ8pgxYXIGw8lWn8tuuL72E11CrlKaXRUvOgF0EXrv/msPI2SbA== + dependencies: + debug "^4.1.1" + lodash.isequal "^4.5.0" + "@nomicfoundation/hardhat-verify@^1.1.0": version "1.1.1" resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-verify/-/hardhat-verify-1.1.1.tgz#6a433d777ce0172d1f0edf7f2d3e1df14b3ecfc1" @@ -1951,6 +1979,16 @@ dependencies: defer-to-connect "^2.0.0" +"@ts-morph/common@~0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@ts-morph/common/-/common-0.20.0.tgz#3f161996b085ba4519731e4d24c35f6cba5b80af" + integrity sha512-7uKjByfbPpwuzkstL3L5MQyuXPSKdoNG93Fmi2JoDcTf3pEP731JdRFAduRVkOs8oqxPsXKA+ScrWkdQ8t/I+Q== + dependencies: + fast-glob "^3.2.12" + minimatch "^7.4.3" + mkdirp "^2.1.6" + path-browserify "^1.0.1" + "@tsconfig/node10@^1.0.7": version "1.0.9" resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" @@ -2045,6 +2083,13 @@ "@types/node" "*" "@types/responselike" "^1.0.0" +"@types/chai-as-promised@^7.1.3": + version "7.1.6" + resolved "https://registry.yarnpkg.com/@types/chai-as-promised/-/chai-as-promised-7.1.6.tgz#3b08cbe1e7206567a480dc6538bade374b19e4e1" + integrity sha512-cQLhk8fFarRVZAXUQV1xEnZgMoPxqKojBvRkqPCKPQCzEhpbbSKl1Uu75kDng7k5Ln6LQLUmNBjLlFthCgm1NA== + dependencies: + "@types/chai" "*" + "@types/chai-as-promised@^7.1.4": version "7.1.5" resolved "https://registry.yarnpkg.com/@types/chai-as-promised/-/chai-as-promised-7.1.5.tgz#6e016811f6c7a64f2eed823191c3a6955094e255" @@ -2219,6 +2264,15 @@ dependencies: "@types/node" "*" +"@types/pg@^8.10.3": + version "8.10.3" + resolved "https://registry.yarnpkg.com/@types/pg/-/pg-8.10.3.tgz#39b3acba4f313a65c8fbb4b241fcb21cc1ba4126" + integrity sha512-BACzsw64lCZesclRpZGu55tnqgFAYcrCBP92xLh1KLypZLCOsvJTSTgaoFVTy3lCys/aZTQzfeDxtjwrvdzL2g== + dependencies: + "@types/node" "*" + pg-protocol "*" + pg-types "^4.0.1" + "@types/prettier@^2.1.1": version "2.7.2" resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.2.tgz#6c2324641cc4ba050a8c710b2b251b377581fbf0" @@ -3808,6 +3862,11 @@ buffer-to-arraybuffer@^0.0.5: resolved "https://registry.yarnpkg.com/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz#6064a40fa76eb43c723aba9ef8f6e1216d10511a" integrity sha512-3dthu5CYiVB1DEJp61FtApNnNndTckcqe4pFcLdvHtrpG+kcyekCJKg4MRiDcFW7A6AODnXB9U4dwQiCW5kzJQ== +buffer-writer@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/buffer-writer/-/buffer-writer-2.0.0.tgz#ce7eb81a38f7829db09c873f2fbb792c0c98ec04" + integrity sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw== + buffer-xor@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" @@ -4262,6 +4321,11 @@ co@^4.6.0: resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== +code-block-writer@^12.0.0: + version "12.0.0" + resolved "https://registry.yarnpkg.com/code-block-writer/-/code-block-writer-12.0.0.tgz#4dd58946eb4234105aff7f0035977b2afdc2a770" + integrity sha512-q4dMFMlXtKR3XNBHyMHt/3pwYNA69EDk00lloMOaaUMKPUXBw6lpXtbu3MMVG6/uOihGnRDOlkyqsONEUj60+w== + code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" @@ -4698,6 +4762,13 @@ deep-eql@^3.0.1: dependencies: type-detect "^4.0.0" +deep-eql@^4.0.1: + version "4.1.3" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.3.tgz#7c7775513092f7df98d8df9996dd085eb668cc6d" + integrity sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw== + dependencies: + type-detect "^4.0.0" + deep-equal@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" @@ -6252,6 +6323,17 @@ fast-glob@^3.0.3, fast-glob@^3.2.9: merge2 "^1.3.0" micromatch "^4.0.4" +fast-glob@^3.2.12: + version "3.3.1" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" + integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" @@ -8867,6 +8949,11 @@ lodash.isboolean@^3.0.3: resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" integrity sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg== +lodash.isequal@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== + lodash.isinteger@^4.0.4: version "4.0.4" resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" @@ -9325,6 +9412,13 @@ minimatch@^5.0.1: dependencies: brace-expansion "^2.0.1" +minimatch@^7.4.3: + version "7.4.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-7.4.6.tgz#845d6f254d8f4a5e4fd6baf44d5f10c8448365fb" + integrity sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw== + dependencies: + brace-expansion "^2.0.1" + minimatch@~3.0.4: version "3.0.8" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.8.tgz#5e6a59bd11e2ab0de1cfb843eb2d82e546c321c1" @@ -9391,6 +9485,11 @@ mkdirp@0.5.x, mkdirp@^0.5.1, mkdirp@^0.5.5: dependencies: minimist "^1.2.6" +mkdirp@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-2.1.6.tgz#964fbcb12b2d8c5d6fbc62a963ac95a273e2cc19" + integrity sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A== + mnemonist@^0.38.0: version "0.38.5" resolved "https://registry.yarnpkg.com/mnemonist/-/mnemonist-0.38.5.tgz#4adc7f4200491237fe0fa689ac0b86539685cade" @@ -9903,6 +10002,11 @@ oboe@2.1.4: dependencies: http-https "^1.0.0" +obuf@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + on-finished@2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" @@ -9963,6 +10067,11 @@ optionator@^0.9.1: type-check "^0.4.0" word-wrap "^1.2.3" +ordinal@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/ordinal/-/ordinal-1.0.3.tgz#1a3c7726a61728112f50944ad7c35c06ae3a0d4d" + integrity sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ== + os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" @@ -10056,6 +10165,11 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +packet-reader@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/packet-reader/-/packet-reader-1.0.0.tgz#9238e5480dedabacfe1fe3f2771063f164157d74" + integrity sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ== + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -10157,7 +10271,7 @@ patch-package@^6.2.2: tmp "^0.0.33" yaml "^1.10.2" -path-browserify@^1.0.0: +path-browserify@^1.0.0, path-browserify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== @@ -10259,6 +10373,82 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== +pg-cloudflare@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz#e6d5833015b170e23ae819e8c5d7eaedb472ca98" + integrity sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q== + +pg-connection-string@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.6.2.tgz#713d82053de4e2bd166fab70cd4f26ad36aab475" + integrity sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA== + +pg-int8@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/pg-int8/-/pg-int8-1.0.1.tgz#943bd463bf5b71b4170115f80f8efc9a0c0eb78c" + integrity sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw== + +pg-numeric@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pg-numeric/-/pg-numeric-1.0.2.tgz#816d9a44026086ae8ae74839acd6a09b0636aa3a" + integrity sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw== + +pg-pool@^3.6.1: + version "3.6.1" + resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.6.1.tgz#5a902eda79a8d7e3c928b77abf776b3cb7d351f7" + integrity sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og== + +pg-protocol@*, pg-protocol@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.6.0.tgz#4c91613c0315349363af2084608db843502f8833" + integrity sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q== + +pg-types@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-2.2.0.tgz#2d0250d636454f7cfa3b6ae0382fdfa8063254a3" + integrity sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA== + dependencies: + pg-int8 "1.0.1" + postgres-array "~2.0.0" + postgres-bytea "~1.0.0" + postgres-date "~1.0.4" + postgres-interval "^1.1.0" + +pg-types@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-4.0.1.tgz#31857e89d00a6c66b06a14e907c3deec03889542" + integrity sha512-hRCSDuLII9/LE3smys1hRHcu5QGcLs9ggT7I/TCs0IE+2Eesxi9+9RWAAwZ0yaGjxoWICF/YHLOEjydGujoJ+g== + dependencies: + pg-int8 "1.0.1" + pg-numeric "1.0.2" + postgres-array "~3.0.1" + postgres-bytea "~3.0.0" + postgres-date "~2.0.1" + postgres-interval "^3.0.0" + postgres-range "^1.1.1" + +pg@^8.11.3: + version "8.11.3" + resolved "https://registry.yarnpkg.com/pg/-/pg-8.11.3.tgz#d7db6e3fe268fcedd65b8e4599cda0b8b4bf76cb" + integrity sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g== + dependencies: + buffer-writer "2.0.0" + packet-reader "1.0.0" + pg-connection-string "^2.6.2" + pg-pool "^3.6.1" + pg-protocol "^1.6.0" + pg-types "^2.1.0" + pgpass "1.x" + optionalDependencies: + pg-cloudflare "^1.1.1" + +pgpass@1.x: + version "1.0.5" + resolved "https://registry.yarnpkg.com/pgpass/-/pgpass-1.0.5.tgz#9b873e4a564bb10fa7a7dbd55312728d422a223d" + integrity sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug== + dependencies: + split2 "^4.1.0" + picocolors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" @@ -10323,6 +10513,55 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== +postgres-array@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-2.0.0.tgz#48f8fce054fbc69671999329b8834b772652d82e" + integrity sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA== + +postgres-array@~3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-3.0.2.tgz#68d6182cb0f7f152a7e60dc6a6889ed74b0a5f98" + integrity sha512-6faShkdFugNQCLwucjPcY5ARoW1SlbnrZjmGl0IrrqewpvxvhSLHimCVzqeuULCbG0fQv7Dtk1yDbG3xv7Veog== + +postgres-bytea@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/postgres-bytea/-/postgres-bytea-1.0.0.tgz#027b533c0aa890e26d172d47cf9ccecc521acd35" + integrity sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w== + +postgres-bytea@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postgres-bytea/-/postgres-bytea-3.0.0.tgz#9048dc461ac7ba70a6a42d109221619ecd1cb089" + integrity sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw== + dependencies: + obuf "~1.1.2" + +postgres-date@~1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-1.0.7.tgz#51bc086006005e5061c591cee727f2531bf641a8" + integrity sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q== + +postgres-date@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-2.0.1.tgz#638b62e5c33764c292d37b08f5257ecb09231457" + integrity sha512-YtMKdsDt5Ojv1wQRvUhnyDJNSr2dGIC96mQVKz7xufp07nfuFONzdaowrMHjlAzY6GDLd4f+LUHHAAM1h4MdUw== + +postgres-interval@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-1.2.0.tgz#b460c82cb1587507788819a06aa0fffdb3544695" + integrity sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ== + dependencies: + xtend "^4.0.0" + +postgres-interval@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-3.0.0.tgz#baf7a8b3ebab19b7f38f07566c7aab0962f0c86a" + integrity sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw== + +postgres-range@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/postgres-range/-/postgres-range-1.1.3.tgz#9ccd7b01ca2789eb3c2e0888b3184225fa859f76" + integrity sha512-VdlZoocy5lCP0c/t66xAfclglEapXPCIVhqqJRncYpvbCgImF0w67aPKfbqUMr72tO2k5q0TdTZwCLjPTI6C9g== + postinstall-postinstall@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz#4f7f77441ef539d1512c40bd04c71b06a4704ca3" @@ -11730,6 +11969,11 @@ split-string@^3.0.1, split-string@^3.0.2: dependencies: extend-shallow "^3.0.0" +split2@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" + integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -12402,6 +12646,14 @@ ts-jest@^29.0.1: semver "7.x" yargs-parser "^21.0.1" +ts-morph@^19.0.0: + version "19.0.0" + resolved "https://registry.yarnpkg.com/ts-morph/-/ts-morph-19.0.0.tgz#43e95fb0156c3fe3c77c814ac26b7d0be2f93169" + integrity sha512-D6qcpiJdn46tUqV45vr5UGM2dnIEuTGNxVhg0sk5NX11orcouwj6i1bMqZIz2mZTZB1Hcgy7C3oEVhAT+f6mbQ== + dependencies: + "@ts-morph/common" "~0.20.0" + code-block-writer "^12.0.0" + ts-node@^10.0.0, ts-node@^10.1.0, ts-node@^10.7.0: version "10.9.1" resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" From ff0c387477fb3ded5fc0a800e30de11f59372f09 Mon Sep 17 00:00:00 2001 From: koloz Date: Thu, 5 Oct 2023 20:00:34 -0400 Subject: [PATCH 014/108] updated fee model for new state diff compression --- core/lib/config/src/constants/ethereum.rs | 4 +- core/lib/types/src/fee.rs | 1 + core/lib/types/src/storage/writes/mod.rs | 6 +- .../types/src/storage_writes_deduplicator.rs | 113 ++++++++++++++++-- core/lib/types/src/tx/tx_execution_info.rs | 6 +- core/lib/vm/src/old_vm/oracles/storage.rs | 26 ++-- .../execution_sandbox/vm_metrics.rs | 1 + core/lib/zksync_core/src/gas_tracker/mod.rs | 3 +- .../src/state_keeper/io/seal_logic.rs | 9 +- .../ts-integration/tests/contracts.test.ts | 2 +- core/tests/ts-integration/tests/l1.test.ts | 2 +- 11 files changed, 141 insertions(+), 32 deletions(-) diff --git a/core/lib/config/src/constants/ethereum.rs b/core/lib/config/src/constants/ethereum.rs index 36fdc1d9c75..c21bd55c308 100644 --- a/core/lib/config/src/constants/ethereum.rs +++ b/core/lib/config/src/constants/ethereum.rs @@ -12,8 +12,8 @@ pub const GUARANTEED_PUBDATA_PER_L1_BATCH: u64 = 4000; /// The maximum number of pubdata per L1 batch. This limit is due to the fact that the Ethereum /// nodes do not accept transactions that have more than 128kb of pubdata. -/// The 18kb margin is left in case of any inpreciseness of the pubdata calculation. -pub const MAX_PUBDATA_PER_L1_BATCH: u64 = 120000; +/// The 128kb margin is left in case of any inpreciseness of the pubdata calculation. +pub const MAX_PUBDATA_PER_L1_BATCH: u64 = 110000; // TODO: import from zkevm_opcode_defs once VM1.3 is supported pub const MAX_L2_TX_GAS_LIMIT: u64 = 80000000; diff --git a/core/lib/types/src/fee.rs b/core/lib/types/src/fee.rs index 8ce731b5b4a..b323df1aada 100644 --- a/core/lib/types/src/fee.rs +++ b/core/lib/types/src/fee.rs @@ -21,6 +21,7 @@ pub struct TransactionExecutionMetrics { pub total_log_queries: usize, pub cycles_used: u32, pub computational_gas_used: u32, + pub total_writes_size: usize, } #[derive(Debug, Default, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)] diff --git a/core/lib/types/src/storage/writes/mod.rs b/core/lib/types/src/storage/writes/mod.rs index c861020d22c..0c5aa02c825 100644 --- a/core/lib/types/src/storage/writes/mod.rs +++ b/core/lib/types/src/storage/writes/mod.rs @@ -6,10 +6,12 @@ use zksync_basic_types::{Address, U256}; use self::compression::compress_with_best_strategy; -mod compression; +pub mod compression; + +pub const BYTES_PER_ENUMERATION_INDEX: u8 = 4; +pub const BYTES_PER_DERIVED_KEY: u8 = 32; const COMPRESSION_VERSION_NUMBER: u8 = 1; -const BYTES_PER_ENUMERATION_INDEX: u8 = 4; const STATE_DIFF_RECORD_SIZE: usize = 156; // 2 * 136 - the size that allows for two keccak rounds. diff --git a/core/lib/types/src/storage_writes_deduplicator.rs b/core/lib/types/src/storage_writes_deduplicator.rs index e781c963fe5..1c932d6d212 100644 --- a/core/lib/types/src/storage_writes_deduplicator.rs +++ b/core/lib/types/src/storage_writes_deduplicator.rs @@ -3,6 +3,8 @@ use std::collections::HashMap; use zksync_utils::u256_to_h256; use crate::tx::tx_execution_info::DeduplicatedWritesMetrics; +use crate::writes::compression::compress_with_best_strategy; +use crate::writes::{BYTES_PER_DERIVED_KEY, BYTES_PER_ENUMERATION_INDEX}; use crate::{AccountTreeId, StorageKey, StorageLogQuery, StorageLogQueryType, U256}; #[derive(Debug, Clone, Copy, PartialEq)] @@ -11,6 +13,18 @@ pub struct ModifiedSlot { pub value: U256, /// Index (in L1 batch) of the transaction that lastly modified the slot. pub tx_index: u16, + /// Size of update in bytes + pub size: usize, +} + +impl Default for ModifiedSlot { + fn default() -> Self { + Self { + value: U256::default(), + tx_index: 0u16, + size: 0, + } + } } #[derive(Debug, Clone, Copy, PartialEq)] @@ -101,10 +115,16 @@ impl StorageWritesDeduplicator { }; let is_write_initial = log.log_type == StorageLogQueryType::InitialWrite; - let field_to_change = if is_write_initial { - &mut self.metrics.initial_storage_writes + let (field_to_change, total_size) = if is_write_initial { + ( + &mut self.metrics.initial_storage_writes, + &mut self.metrics.total_writes_size, + ) } else { - &mut self.metrics.repeated_storage_writes + ( + &mut self.metrics.repeated_storage_writes, + &mut self.metrics.total_writes_size, + ) }; match (was_key_modified, modified_value) { @@ -113,6 +133,12 @@ impl StorageWritesDeduplicator { panic!("tried removing key: {:?} before insertion", key) }); *field_to_change -= 1; + *total_size -= value.size; + if is_write_initial { + *total_size -= BYTES_PER_DERIVED_KEY as usize; + } else { + *total_size -= BYTES_PER_ENUMERATION_INDEX as usize; + } updates.push(UpdateItem { key, update_type: UpdateType::Remove(value), @@ -120,6 +146,8 @@ impl StorageWritesDeduplicator { }); } (true, Some(new_value)) => { + let value_size = + compress_with_best_strategy(log.log_query.read_value, new_value).len(); let old_value = self .modified_key_values .insert( @@ -127,6 +155,7 @@ impl StorageWritesDeduplicator { ModifiedSlot { value: new_value, tx_index: log.log_query.tx_number_in_block, + size: value_size, }, ) .unwrap_or_else(|| { @@ -136,17 +165,28 @@ impl StorageWritesDeduplicator { key, update_type: UpdateType::Update(old_value), is_write_initial, - }) + }); + *total_size -= old_value.size; + *total_size += value_size; } (false, Some(new_value)) => { + let value_size = + compress_with_best_strategy(log.log_query.read_value, new_value).len(); self.modified_key_values.insert( key, ModifiedSlot { value: new_value, tx_index: log.log_query.tx_number_in_block, + size: value_size, }, ); *field_to_change += 1; + *total_size += value_size; + if is_write_initial { + *total_size += BYTES_PER_DERIVED_KEY as usize; + } else { + *total_size += BYTES_PER_ENUMERATION_INDEX as usize; + } updates.push(UpdateItem { key, update_type: UpdateType::Insert, @@ -161,23 +201,53 @@ impl StorageWritesDeduplicator { fn rollback(&mut self, updates: Vec) { for item in updates.into_iter().rev() { - let field_to_change = if item.is_write_initial { - &mut self.metrics.initial_storage_writes + let (field_to_change, total_size) = if item.is_write_initial { + ( + &mut self.metrics.initial_storage_writes, + &mut self.metrics.total_writes_size, + ) } else { - &mut self.metrics.repeated_storage_writes + ( + &mut self.metrics.repeated_storage_writes, + &mut self.metrics.total_writes_size, + ) }; match item.update_type { UpdateType::Insert => { - self.modified_key_values.remove(&item.key); + let old_value = self.modified_key_values.remove(&item.key); *field_to_change -= 1; + match old_value { + Some(value) => { + *total_size -= value.size; + if item.is_write_initial { + *total_size -= BYTES_PER_DERIVED_KEY as usize; + } else { + *total_size -= BYTES_PER_ENUMERATION_INDEX as usize; + } + } + None => {} + } } UpdateType::Update(value) => { - self.modified_key_values.insert(item.key, value); + let old_value = self.modified_key_values.insert(item.key, value); + *total_size -= value.size; + *total_size += old_value.unwrap_or_default().size; } UpdateType::Remove(value) => { - self.modified_key_values.insert(item.key, value); + let old_value = self.modified_key_values.insert(item.key, value); *field_to_change += 1; + match old_value { + Some(value) => { + *total_size += value.size; + if item.is_write_initial { + *total_size += BYTES_PER_DERIVED_KEY as usize; + } else { + *total_size += BYTES_PER_ENUMERATION_INDEX as usize; + } + } + None => {} + } } } } @@ -247,6 +317,7 @@ mod tests { DeduplicatedWritesMetrics { initial_storage_writes: 1, repeated_storage_writes: 0, + total_writes_size: 34, }, "single initial write".into(), ), @@ -258,6 +329,7 @@ mod tests { DeduplicatedWritesMetrics { initial_storage_writes: 1, repeated_storage_writes: 1, + total_writes_size: 40, }, "initial and repeated write".into(), ), @@ -269,6 +341,7 @@ mod tests { DeduplicatedWritesMetrics { initial_storage_writes: 0, repeated_storage_writes: 0, + total_writes_size: 0, }, "single rollback".into(), ), @@ -283,6 +356,7 @@ mod tests { DeduplicatedWritesMetrics { initial_storage_writes: 0, repeated_storage_writes: 0, + total_writes_size: 0, }, "idle write".into(), ), @@ -295,6 +369,7 @@ mod tests { DeduplicatedWritesMetrics { initial_storage_writes: 0, repeated_storage_writes: 0, + total_writes_size: 0, }, "idle write cycle".into(), ), @@ -311,6 +386,7 @@ mod tests { DeduplicatedWritesMetrics { initial_storage_writes: 2, repeated_storage_writes: 1, + total_writes_size: 77, }, "complex".into(), ), @@ -336,8 +412,8 @@ mod tests { assert_eq!( deduplicator.metrics, Default::default(), - "rolled back incorrectly for scenario: {}", - descr + "rolled back incorrectly for scenario: {:?}", + input ) } } @@ -357,6 +433,7 @@ mod tests { ModifiedSlot { value: 8u32.into(), tx_index: 0, + size: 2, }, ), ( @@ -364,6 +441,7 @@ mod tests { ModifiedSlot { value: 6u32.into(), tx_index: 0, + size: 2, }, ), ( @@ -371,6 +449,7 @@ mod tests { ModifiedSlot { value: 9u32.into(), tx_index: 0, + size: 2, }, ), ( @@ -378,6 +457,7 @@ mod tests { ModifiedSlot { value: 11u32.into(), tx_index: 0, + size: 2, }, ), ( @@ -385,6 +465,7 @@ mod tests { ModifiedSlot { value: 2u32.into(), tx_index: 0, + size: 2, }, ), ( @@ -392,6 +473,7 @@ mod tests { ModifiedSlot { value: 7u32.into(), tx_index: 0, + size: 2, }, ), ]); @@ -416,6 +498,7 @@ mod tests { ModifiedSlot { value: 6u32.into(), tx_index: 0, + size: 2, }, ), ( @@ -423,6 +506,7 @@ mod tests { ModifiedSlot { value: 11u32.into(), tx_index: 0, + size: 2, }, ), ( @@ -430,6 +514,7 @@ mod tests { ModifiedSlot { value: 7u32.into(), tx_index: 0, + size: 2, }, ), ]); @@ -454,6 +539,7 @@ mod tests { ModifiedSlot { value: 3u32.into(), tx_index: 0, + size: 2, }, ), ( @@ -461,6 +547,7 @@ mod tests { ModifiedSlot { value: 4u32.into(), tx_index: 0, + size: 2, }, ), ( @@ -468,6 +555,7 @@ mod tests { ModifiedSlot { value: 5u32.into(), tx_index: 0, + size: 2, }, ), ]); @@ -488,6 +576,7 @@ mod tests { ModifiedSlot { value: 2u32.into(), tx_index: 0, + size: 1, }, )]); let mut deduplicator = StorageWritesDeduplicator::new(); diff --git a/core/lib/types/src/tx/tx_execution_info.rs b/core/lib/types/src/tx/tx_execution_info.rs index 6639fa2992a..11af5cfb81c 100644 --- a/core/lib/types/src/tx/tx_execution_info.rs +++ b/core/lib/types/src/tx/tx_execution_info.rs @@ -1,7 +1,6 @@ use crate::commitment::SerializeCommitment; use crate::fee::TransactionExecutionMetrics; use crate::l2_to_l1_log::L2ToL1Log; -use crate::writes::{InitialStorageWrite, RepeatedStorageWrite}; use std::ops::{Add, AddAssign}; #[derive(Debug, Clone, Copy, Eq, PartialEq)] @@ -24,6 +23,7 @@ impl TxExecutionStatus { pub struct DeduplicatedWritesMetrics { pub initial_storage_writes: usize, pub repeated_storage_writes: usize, + pub total_writes_size: usize, } impl DeduplicatedWritesMetrics { @@ -31,12 +31,12 @@ impl DeduplicatedWritesMetrics { Self { initial_storage_writes: tx_metrics.initial_storage_writes, repeated_storage_writes: tx_metrics.repeated_storage_writes, + total_writes_size: tx_metrics.total_writes_size, } } pub fn size(&self) -> usize { - self.initial_storage_writes * InitialStorageWrite::SERIALIZED_SIZE - + self.repeated_storage_writes * RepeatedStorageWrite::SERIALIZED_SIZE + self.total_writes_size } } diff --git a/core/lib/vm/src/old_vm/oracles/storage.rs b/core/lib/vm/src/old_vm/oracles/storage.rs index 482cc69bbbd..d1d8002817a 100644 --- a/core/lib/vm/src/old_vm/oracles/storage.rs +++ b/core/lib/vm/src/old_vm/oracles/storage.rs @@ -14,6 +14,8 @@ use zk_evm::{ use zksync_state::{StoragePtr, WriteStorage}; use zksync_types::utils::storage_key_for_eth_balance; +use zksync_types::writes::compression::compress_with_best_strategy; +use zksync_types::writes::{BYTES_PER_DERIVED_KEY, BYTES_PER_ENUMERATION_INDEX}; use zksync_types::{ AccountTreeId, Address, StorageKey, StorageLogQuery, StorageLogQueryType, BOOTLOADER_ADDRESS, U256, @@ -260,7 +262,9 @@ impl VmStorageOracle for StorageOracle { _monotonic_cycle_counter: u32, partial_query: &LogQuery, ) -> RefundType { - let price_to_pay = self.value_update_price(partial_query); + let price_to_pay = self + .value_update_price(partial_query) + .min(INITIAL_STORAGE_WRITE_PUBDATA_BYTES as u32); RefundType::RepeatedWrite(RefundedAmounts { ergs: 0, @@ -321,18 +325,24 @@ impl VmStorageOracle for StorageOracle { /// Returns the number of bytes needed to publish a slot. // Since we need to publish the state diffs onchain, for each of the updated storage slot -// we basically need to publish the following pair: (). -// While new_value is always 32 bytes long, for key we use the following optimization: +// we basically need to publish the following pair: (). +// For key we use the following optimization: // - The first time we publish it, we use 32 bytes. // Then, we remember a 8-byte id for this slot and assign it to it. We call this initial write. -// - The second time we publish it, we will use this 8-byte instead of the 32 bytes of the entire key. -// So the total size of the publish pubdata is 40 bytes. We call this kind of write the repeated one -fn get_pubdata_price_bytes(_query: &LogQuery, is_initial: bool) -> u32 { +// - The second time we publish it, we will use the 4/5 byte representation of this 8-byte instead of the 32 +// bytes of the entire key. +// For value compression, we use a metadata byte which holds the length of the value and the operation from the +// previous state to the new state, and the compressed value. The maxiumum for this is 33 bytes. +// Total bytes for initial writes then becomes 65 bytes and repeated writes becomes 38 bytes. +fn get_pubdata_price_bytes(query: &LogQuery, is_initial: bool) -> u32 { // TODO (SMA-1702): take into account the content of the log query, i.e. values that contain mostly zeroes // should cost less. + let compressed_value_size = + compress_with_best_strategy(query.read_value, query.written_value).len() as u32; + if is_initial { - zk_evm::zkevm_opcode_defs::system_params::INITIAL_STORAGE_WRITE_PUBDATA_BYTES as u32 + (BYTES_PER_DERIVED_KEY as u32) + compressed_value_size } else { - zk_evm::zkevm_opcode_defs::system_params::REPEATED_STORAGE_WRITE_PUBDATA_BYTES as u32 + (BYTES_PER_ENUMERATION_INDEX as u32) + compressed_value_size } } diff --git a/core/lib/zksync_core/src/api_server/execution_sandbox/vm_metrics.rs b/core/lib/zksync_core/src/api_server/execution_sandbox/vm_metrics.rs index c830121f4f3..d0813d7a293 100644 --- a/core/lib/zksync_core/src/api_server/execution_sandbox/vm_metrics.rs +++ b/core/lib/zksync_core/src/api_server/execution_sandbox/vm_metrics.rs @@ -153,5 +153,6 @@ pub(super) fn collect_tx_execution_metrics( total_log_queries: result.statistics.total_log_queries, cycles_used: result.statistics.cycles_used, computational_gas_used: result.statistics.computational_gas_used, + total_writes_size: writes_metrics.total_writes_size, } } diff --git a/core/lib/zksync_core/src/gas_tracker/mod.rs b/core/lib/zksync_core/src/gas_tracker/mod.rs index adadfb5c530..67a52be5eef 100644 --- a/core/lib/zksync_core/src/gas_tracker/mod.rs +++ b/core/lib/zksync_core/src/gas_tracker/mod.rs @@ -103,8 +103,7 @@ pub(crate) fn commit_gas_count_for_l1_batch( let total_factory_deps_len: u32 = sorted_factory_deps .map(|factory_dep| factory_dep.len() as u32) .sum(); - let additional_calldata_bytes = metadata.initial_writes_compressed.len() as u32 - + metadata.repeated_writes_compressed.len() as u32 + let additional_calldata_bytes = metadata.state_diffs_compressed.len() as u32 + metadata.l2_l1_messages_compressed.len() as u32 + total_messages_len + total_factory_deps_len; diff --git a/core/lib/zksync_core/src/state_keeper/io/seal_logic.rs b/core/lib/zksync_core/src/state_keeper/io/seal_logic.rs index a29e0b14f7f..73e674bfdf5 100644 --- a/core/lib/zksync_core/src/state_keeper/io/seal_logic.rs +++ b/core/lib/zksync_core/src/state_keeper/io/seal_logic.rs @@ -546,7 +546,14 @@ impl MiniblockSealCommand { deduplicated_logs .into_iter() - .map(|(key, ModifiedSlot { value, tx_index })| (tx_index, (key, value))) + .map( + |( + key, + ModifiedSlot { + value, tx_index, .. + }, + )| (tx_index, (key, value)), + ) .sorted_by_key(|(tx_index, _)| *tx_index) .group_by(|(tx_index, _)| *tx_index) .into_iter() diff --git a/core/tests/ts-integration/tests/contracts.test.ts b/core/tests/ts-integration/tests/contracts.test.ts index 535c7c0bbe5..fea1b15845a 100644 --- a/core/tests/ts-integration/tests/contracts.test.ts +++ b/core/tests/ts-integration/tests/contracts.test.ts @@ -75,7 +75,7 @@ describe('Smart contract behavior checks', () => { const expensiveContract = await deployContract(alice, contracts.expensive, []); // First, check that the transaction that is too expensive would be rejected by the API server. - await expect(expensiveContract.expensive(2000)).toBeRejected(); + await expect(expensiveContract.expensive(3000)).toBeRejected(); // Second, check that processable transaction may fail with "out of gas" error. // To do so, we estimate gas for arg "1" and supply it to arg "20". diff --git a/core/tests/ts-integration/tests/l1.test.ts b/core/tests/ts-integration/tests/l1.test.ts index 802aa9f41bc..a1ef9564bd9 100644 --- a/core/tests/ts-integration/tests/l1.test.ts +++ b/core/tests/ts-integration/tests/l1.test.ts @@ -206,7 +206,7 @@ describe('Tests for L1 behavior', () => { // We check that we will run out of gas if we do a bit smaller amount of writes. // In order for writes to be repeated we should firstly write to the keys initially. const initialWritesInOneTx = 500; - const repeatedWritesInOneTx = 7000; + const repeatedWritesInOneTx = 8500; const gasLimit = await contract.estimateGas.writes(0, initialWritesInOneTx, 1); let proms = []; From e26518759b7823f479697ce760e95a840bed7f3a Mon Sep 17 00:00:00 2001 From: koloz Date: Fri, 6 Oct 2023 10:09:06 -0400 Subject: [PATCH 015/108] fixed write size calculation --- .../types/src/storage_writes_deduplicator.rs | 97 +++++++++---------- 1 file changed, 44 insertions(+), 53 deletions(-) diff --git a/core/lib/types/src/storage_writes_deduplicator.rs b/core/lib/types/src/storage_writes_deduplicator.rs index 1c932d6d212..09a5c493145 100644 --- a/core/lib/types/src/storage_writes_deduplicator.rs +++ b/core/lib/types/src/storage_writes_deduplicator.rs @@ -7,7 +7,7 @@ use crate::writes::compression::compress_with_best_strategy; use crate::writes::{BYTES_PER_DERIVED_KEY, BYTES_PER_ENUMERATION_INDEX}; use crate::{AccountTreeId, StorageKey, StorageLogQuery, StorageLogQueryType, U256}; -#[derive(Debug, Clone, Copy, PartialEq)] +#[derive(Debug, Clone, Copy, PartialEq, Default)] pub struct ModifiedSlot { /// Value of the slot after modification. pub value: U256, @@ -17,16 +17,6 @@ pub struct ModifiedSlot { pub size: usize, } -impl Default for ModifiedSlot { - fn default() -> Self { - Self { - value: U256::default(), - tx_index: 0u16, - size: 0, - } - } -} - #[derive(Debug, Clone, Copy, PartialEq)] enum UpdateType { Remove(ModifiedSlot), @@ -146,28 +136,33 @@ impl StorageWritesDeduplicator { }); } (true, Some(new_value)) => { - let value_size = + let mut value_size = compress_with_best_strategy(log.log_query.read_value, new_value).len(); let old_value = self .modified_key_values - .insert( - key, - ModifiedSlot { - value: new_value, - tx_index: log.log_query.tx_number_in_block, - size: value_size, - }, - ) - .unwrap_or_else(|| { - panic!("tried removing key: {:?} before insertion", key) - }); + .get(&key) + .unwrap_or_else(|| panic!("key {:?} doesn't exist on update", key)); updates.push(UpdateItem { key, - update_type: UpdateType::Update(old_value), + update_type: UpdateType::Update(*old_value), is_write_initial, }); - *total_size -= old_value.size; - *total_size += value_size; + if value_size > old_value.size { + value_size = value_size + old_value.size - 1; + *total_size += value_size + } else if value_size < old_value.size { + *total_size -= old_value.size; + *total_size += value_size + } + + self.modified_key_values.insert( + key, + ModifiedSlot { + value: new_value, + tx_index: log.log_query.tx_number_in_block, + size: value_size, + }, + ); } (false, Some(new_value)) => { let value_size = @@ -215,38 +210,34 @@ impl StorageWritesDeduplicator { match item.update_type { UpdateType::Insert => { - let old_value = self.modified_key_values.remove(&item.key); + let value = self + .modified_key_values + .remove(&item.key) + .unwrap_or_default(); *field_to_change -= 1; - match old_value { - Some(value) => { - *total_size -= value.size; - if item.is_write_initial { - *total_size -= BYTES_PER_DERIVED_KEY as usize; - } else { - *total_size -= BYTES_PER_ENUMERATION_INDEX as usize; - } - } - None => {} + *total_size -= value.size; + if item.is_write_initial { + *total_size -= BYTES_PER_DERIVED_KEY as usize; + } else { + *total_size -= BYTES_PER_ENUMERATION_INDEX as usize; } } UpdateType::Update(value) => { - let old_value = self.modified_key_values.insert(item.key, value); - *total_size -= value.size; - *total_size += old_value.unwrap_or_default().size; + let old_value = self + .modified_key_values + .insert(item.key, value) + .unwrap_or_default(); + *total_size += value.size; + *total_size -= old_value.size; } UpdateType::Remove(value) => { - let old_value = self.modified_key_values.insert(item.key, value); + self.modified_key_values.insert(item.key, value); *field_to_change += 1; - match old_value { - Some(value) => { - *total_size += value.size; - if item.is_write_initial { - *total_size += BYTES_PER_DERIVED_KEY as usize; - } else { - *total_size += BYTES_PER_ENUMERATION_INDEX as usize; - } - } - None => {} + *total_size += value.size; + if item.is_write_initial { + *total_size += BYTES_PER_DERIVED_KEY as usize; + } else { + *total_size += BYTES_PER_ENUMERATION_INDEX as usize; } } } @@ -386,7 +377,7 @@ mod tests { DeduplicatedWritesMetrics { initial_storage_writes: 2, repeated_storage_writes: 1, - total_writes_size: 77, + total_writes_size: 73, }, "complex".into(), ), @@ -413,7 +404,7 @@ mod tests { deduplicator.metrics, Default::default(), "rolled back incorrectly for scenario: {:?}", - input + descr ) } } From ecad4b66280127ba4bde2e27c7b1475c042c4fe6 Mon Sep 17 00:00:00 2001 From: koloz Date: Fri, 6 Oct 2023 10:27:17 -0400 Subject: [PATCH 016/108] allow if statement comparison --- core/lib/types/src/storage_writes_deduplicator.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/core/lib/types/src/storage_writes_deduplicator.rs b/core/lib/types/src/storage_writes_deduplicator.rs index 09a5c493145..c702799918e 100644 --- a/core/lib/types/src/storage_writes_deduplicator.rs +++ b/core/lib/types/src/storage_writes_deduplicator.rs @@ -147,6 +147,7 @@ impl StorageWritesDeduplicator { update_type: UpdateType::Update(*old_value), is_write_initial, }); + #[allow(clippy::comparison_chain)] if value_size > old_value.size { value_size = value_size + old_value.size - 1; *total_size += value_size From 481e417d5df70f14be9026dbe7ce000d15b49d82 Mon Sep 17 00:00:00 2001 From: koloz Date: Fri, 6 Oct 2023 11:20:14 -0400 Subject: [PATCH 017/108] update how size is calculated --- .../types/src/storage_writes_deduplicator.rs | 21 +++++++------------ 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/core/lib/types/src/storage_writes_deduplicator.rs b/core/lib/types/src/storage_writes_deduplicator.rs index c702799918e..70adfe89792 100644 --- a/core/lib/types/src/storage_writes_deduplicator.rs +++ b/core/lib/types/src/storage_writes_deduplicator.rs @@ -136,8 +136,7 @@ impl StorageWritesDeduplicator { }); } (true, Some(new_value)) => { - let mut value_size = - compress_with_best_strategy(log.log_query.read_value, new_value).len(); + let value_size = compress_with_best_strategy(initial_value, new_value).len(); let old_value = self .modified_key_values .get(&key) @@ -147,14 +146,9 @@ impl StorageWritesDeduplicator { update_type: UpdateType::Update(*old_value), is_write_initial, }); - #[allow(clippy::comparison_chain)] - if value_size > old_value.size { - value_size = value_size + old_value.size - 1; - *total_size += value_size - } else if value_size < old_value.size { - *total_size -= old_value.size; - *total_size += value_size - } + + *total_size -= old_value.size; + *total_size += value_size; self.modified_key_values.insert( key, @@ -166,8 +160,7 @@ impl StorageWritesDeduplicator { ); } (false, Some(new_value)) => { - let value_size = - compress_with_best_strategy(log.log_query.read_value, new_value).len(); + let value_size = compress_with_best_strategy(initial_value, new_value).len(); self.modified_key_values.insert( key, ModifiedSlot { @@ -378,7 +371,7 @@ mod tests { DeduplicatedWritesMetrics { initial_storage_writes: 2, repeated_storage_writes: 1, - total_writes_size: 73, + total_writes_size: 74, }, "complex".into(), ), @@ -568,7 +561,7 @@ mod tests { ModifiedSlot { value: 2u32.into(), tx_index: 0, - size: 1, + size: 2, }, )]); let mut deduplicator = StorageWritesDeduplicator::new(); From 1026dd5b768dbebce8397e8161f0395653f660b9 Mon Sep 17 00:00:00 2001 From: koloz Date: Fri, 6 Oct 2023 12:37:38 -0400 Subject: [PATCH 018/108] only charge for difference in bytes if more than already paid --- core/lib/vm/src/old_vm/oracles/storage.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/core/lib/vm/src/old_vm/oracles/storage.rs b/core/lib/vm/src/old_vm/oracles/storage.rs index d1d8002817a..875deb2cfeb 100644 --- a/core/lib/vm/src/old_vm/oracles/storage.rs +++ b/core/lib/vm/src/old_vm/oracles/storage.rs @@ -337,6 +337,11 @@ impl VmStorageOracle for StorageOracle { fn get_pubdata_price_bytes(query: &LogQuery, is_initial: bool) -> u32 { // TODO (SMA-1702): take into account the content of the log query, i.e. values that contain mostly zeroes // should cost less. + + if query.read_value >= query.written_value { + return 0u32; + } + let compressed_value_size = compress_with_best_strategy(query.read_value, query.written_value).len() as u32; From 742ec84eeb0a5a13f28c29c551288202d380cf41 Mon Sep 17 00:00:00 2001 From: Lyova Potyomkin Date: Mon, 9 Oct 2023 09:31:40 +0100 Subject: [PATCH 019/108] fix(boojum): Fix VK in prover_fri_protocol_versions (#174) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # What ❔ Use SNARK wrapper VK instead of FRI scheduler VK in proof_data_handler ## Why ❔ It will be saved to `prover_fri_protocol_versions`, and we need them consistent with `protocol_versions`. ## Checklist - [ ] PR title corresponds to the body of PR (we generate changelog entries from PRs). - [ ] Tests for the changes have been added / updated. - [ ] Documentation comments have been added / updated. - [ ] Code has been formatted via `zk fmt` and `zk lint`. --- core/lib/zksync_core/src/proof_data_handler/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/lib/zksync_core/src/proof_data_handler/mod.rs b/core/lib/zksync_core/src/proof_data_handler/mod.rs index 03abde12715..2c345466232 100644 --- a/core/lib/zksync_core/src/proof_data_handler/mod.rs +++ b/core/lib/zksync_core/src/proof_data_handler/mod.rs @@ -27,7 +27,7 @@ fn fri_l1_verifier_config_from_env() -> anyhow::Result { // The base layer commitment is not used in the FRI prover verification. recursion_circuits_set_vks_hash: H256::zero(), }, - recursion_scheduler_level_vk_hash: config.fri_recursion_scheduler_level_vk_hash, + recursion_scheduler_level_vk_hash: config.snark_wrapper_vk_hash, }) } From 9b2b57619b60017a7180300765b773f7c6624b09 Mon Sep 17 00:00:00 2001 From: koloz Date: Tue, 10 Oct 2023 13:26:31 -0400 Subject: [PATCH 020/108] store initial seen value and compare to that for charging users --- core/lib/vm/src/old_vm/oracles/storage.rs | 82 ++++++++++++++++++++--- 1 file changed, 74 insertions(+), 8 deletions(-) diff --git a/core/lib/vm/src/old_vm/oracles/storage.rs b/core/lib/vm/src/old_vm/oracles/storage.rs index 875deb2cfeb..d98fa0305e5 100644 --- a/core/lib/vm/src/old_vm/oracles/storage.rs +++ b/core/lib/vm/src/old_vm/oracles/storage.rs @@ -48,6 +48,8 @@ pub struct StorageOracle { // to cover this slot. // `paid_changes` history is necessary pub(crate) paid_changes: HistoryRecorder, HistoryEnabled>, + + initial_values: HistoryRecorder, HistoryEnabled>, } impl OracleWithHistory for StorageOracle { @@ -64,6 +66,7 @@ impl StorageOracle { storage: HistoryRecorder::from_inner(StorageWrapper::new(storage)), frames_stack: Default::default(), paid_changes: Default::default(), + initial_values: Default::default(), } } @@ -71,6 +74,7 @@ impl StorageOracle { self.frames_stack.delete_history(); self.storage.delete_history(); self.paid_changes.delete_history(); + self.initial_values.delete_history(); } fn is_storage_key_free(&self, key: &StorageKey) -> bool { @@ -133,6 +137,25 @@ impl StorageOracle { .unwrap_or_default() } + fn get_initial_value(&self, storage_key: &StorageKey) -> Option { + self.initial_values.inner().get(storage_key).copied() + } + + fn set_initial_value(&mut self, storage_key: &StorageKey, value: U256, timestamp: Timestamp) { + match self.get_initial_value(storage_key) { + Some(_) => {} + None => { + self.initial_values.apply_historic_record( + HashMapHistoryEvent { + key: *storage_key, + value: Some(value), + }, + timestamp, + ); + } + } + } + pub(crate) fn base_price_for_write(&self, query: &LogQuery) -> u32 { let storage_key = storage_key_of_log(query); @@ -146,16 +169,26 @@ impl StorageOracle { .borrow_mut() .is_write_initial(&storage_key); - get_pubdata_price_bytes(query, is_initial_write) + let initial_value = self + .get_initial_value(&storage_key) + .unwrap_or(query.read_value); + + get_pubdata_price_bytes(initial_value, query.written_value, is_initial_write) } // Returns the price of the update in terms of pubdata bytes. // TODO (SMA-1701): update VM to accept gas instead of pubdata. - fn value_update_price(&self, query: &LogQuery) -> u32 { + fn value_update_price(&mut self, query: &LogQuery) -> u32 { let storage_key = storage_key_of_log(query); let base_cost = self.base_price_for_write(query); + let initial_value = self + .get_initial_value(&storage_key) + .unwrap_or(query.read_value); + + self.set_initial_value(&storage_key, initial_value, query.timestamp); + let already_paid = self.prepaid_for_write(&storage_key); if base_cost <= already_paid { @@ -239,6 +272,12 @@ impl VmStorageOracle for StorageOracle { let to_pay_by_user = self.base_price_for_write(&query); let prepaid = self.prepaid_for_write(&storage_key); + let initial_value = self + .get_initial_value(&storage_key) + .unwrap_or(query.read_value); + + self.set_initial_value(&storage_key, initial_value, query.timestamp); + if to_pay_by_user > prepaid { self.paid_changes.apply_historic_record( HashMapHistoryEvent { @@ -262,10 +301,15 @@ impl VmStorageOracle for StorageOracle { _monotonic_cycle_counter: u32, partial_query: &LogQuery, ) -> RefundType { + let storage_key = storage_key_of_log(partial_query); let price_to_pay = self .value_update_price(partial_query) .min(INITIAL_STORAGE_WRITE_PUBDATA_BYTES as u32); + let initial_value = self + .get_initial_value(&storage_key) + .unwrap_or(partial_query.read_value); + RefundType::RepeatedWrite(RefundedAmounts { ergs: 0, // `INITIAL_STORAGE_WRITE_PUBDATA_BYTES` is the default amount of pubdata bytes the user pays for. @@ -334,16 +378,12 @@ impl VmStorageOracle for StorageOracle { // For value compression, we use a metadata byte which holds the length of the value and the operation from the // previous state to the new state, and the compressed value. The maxiumum for this is 33 bytes. // Total bytes for initial writes then becomes 65 bytes and repeated writes becomes 38 bytes. -fn get_pubdata_price_bytes(query: &LogQuery, is_initial: bool) -> u32 { +fn get_pubdata_price_bytes(initial_value: U256, final_value: U256, is_initial: bool) -> u32 { // TODO (SMA-1702): take into account the content of the log query, i.e. values that contain mostly zeroes // should cost less. - if query.read_value >= query.written_value { - return 0u32; - } - let compressed_value_size = - compress_with_best_strategy(query.read_value, query.written_value).len() as u32; + compress_with_best_strategy(initial_value, final_value).len() as u32; if is_initial { (BYTES_PER_DERIVED_KEY as u32) + compressed_value_size @@ -351,3 +391,29 @@ fn get_pubdata_price_bytes(query: &LogQuery, is_initial: bool) -> u32 { (BYTES_PER_ENUMERATION_INDEX as u32) + compressed_value_size } } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_get_pubdata_price_bytes() { + let initial_value = U256::default(); + let final_value = U256::from(92122); + let is_initial = true; + + let compression_len = 4; + + let initial_bytes_price = get_pubdata_price_bytes(initial_value, final_value, is_initial); + let repeated_bytes_price = get_pubdata_price_bytes(initial_value, final_value, !is_initial); + + assert_eq!( + initial_bytes_price, + (compression_len + BYTES_PER_DERIVED_KEY as usize) as u32 + ); + assert_eq!( + repeated_bytes_price, + (compression_len + BYTES_PER_ENUMERATION_INDEX as usize) as u32 + ); + } +} From f943c03474ea0a069bdc5dba3bdd6618baac3889 Mon Sep 17 00:00:00 2001 From: koloz Date: Tue, 10 Oct 2023 13:33:54 -0400 Subject: [PATCH 021/108] remove unused var --- core/lib/vm/src/old_vm/oracles/storage.rs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/core/lib/vm/src/old_vm/oracles/storage.rs b/core/lib/vm/src/old_vm/oracles/storage.rs index d98fa0305e5..adc0b3f2252 100644 --- a/core/lib/vm/src/old_vm/oracles/storage.rs +++ b/core/lib/vm/src/old_vm/oracles/storage.rs @@ -306,10 +306,6 @@ impl VmStorageOracle for StorageOracle { .value_update_price(partial_query) .min(INITIAL_STORAGE_WRITE_PUBDATA_BYTES as u32); - let initial_value = self - .get_initial_value(&storage_key) - .unwrap_or(partial_query.read_value); - RefundType::RepeatedWrite(RefundedAmounts { ergs: 0, // `INITIAL_STORAGE_WRITE_PUBDATA_BYTES` is the default amount of pubdata bytes the user pays for. From 35fef5a749ae27375f832ea8629dcc91fdc219c5 Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Wed, 11 Oct 2023 18:39:34 +0200 Subject: [PATCH 022/108] remove accidental prints --- core/lib/types/src/commitment.rs | 1 - core/lib/vm/src/tracers/pubdata_tracer.rs | 5 ----- 2 files changed, 6 deletions(-) diff --git a/core/lib/types/src/commitment.rs b/core/lib/types/src/commitment.rs index ef56b6ea694..69249a33ab4 100644 --- a/core/lib/types/src/commitment.rs +++ b/core/lib/types/src/commitment.rs @@ -282,7 +282,6 @@ impl L1BatchAuxiliaryOutput { let mut comp_state_diffs: Vec = vec![]; - println!("ON ETH SENDER SIDE: {:#?}", state_diffs); let state_diffs_compressed = compress_state_diffs(state_diffs.clone()); comp_state_diffs.extend(state_diffs_compressed); diff --git a/core/lib/vm/src/tracers/pubdata_tracer.rs b/core/lib/vm/src/tracers/pubdata_tracer.rs index cb339b4235a..9b29f1e079f 100644 --- a/core/lib/vm/src/tracers/pubdata_tracer.rs +++ b/core/lib/vm/src/tracers/pubdata_tracer.rs @@ -200,11 +200,6 @@ impl ExecutionProcessing for PubdataTrace // Whenever we are executing the block tip, we want to avoid publishing the full pubdata let pubdata_input = self.build_pubdata_input(state); - println!( - "HI HI HI State diffs: {:#?}", - pubdata_input.state_diffs.clone() - ); - // Save the pubdata for the future initial bootloader memory building bootloader_state.set_pubdata_input(pubdata_input.clone()); From 70bc440e015c6afce6c4c04e6c6af1afae6fad8d Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Wed, 11 Oct 2023 19:20:51 +0200 Subject: [PATCH 023/108] add logs for debugging --- core/tests/revert-test/tests/revert-and-restart.test.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/core/tests/revert-test/tests/revert-and-restart.test.ts b/core/tests/revert-test/tests/revert-and-restart.test.ts index b50cfde00bd..9cc91a2fce2 100644 --- a/core/tests/revert-test/tests/revert-and-restart.test.ts +++ b/core/tests/revert-test/tests/revert-and-restart.test.ts @@ -136,6 +136,8 @@ describe('Block reverting test', function () { // Stop server. await killServerAndWaitForShutdown(tester); + + console.log(`Server stopped. Blocks committed: ${blocksCommitted}, blocks executed: ${blocksExecuted}`); }); step('revert blocks', async () => { @@ -146,6 +148,10 @@ describe('Block reverting test', function () { ); const suggestedValuesOutput = executedProcess.stdout; const { lastL1BatchNumber, nonce, priorityFee } = parseSuggestedValues(suggestedValuesOutput); + console.log( + `Suggested values: lastL1BatchNumber: ${lastL1BatchNumber}, nonce: ${nonce}, priorityFee: ${priorityFee}` + ); + expect(lastL1BatchNumber < blocksCommittedBeforeRevert, 'There should be at least one block for revert').to.be .true; From 958cbaffbe45b6c8ba55054e9918e524e64cac2d Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Wed, 11 Oct 2023 21:03:21 +0200 Subject: [PATCH 024/108] hopefully fix revert test --- core/tests/revert-test/tests/revert-and-restart.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/tests/revert-test/tests/revert-and-restart.test.ts b/core/tests/revert-test/tests/revert-and-restart.test.ts index 9cc91a2fce2..4393cf20b3f 100644 --- a/core/tests/revert-test/tests/revert-and-restart.test.ts +++ b/core/tests/revert-test/tests/revert-and-restart.test.ts @@ -71,7 +71,7 @@ describe('Block reverting test', function () { await killServerAndWaitForShutdown(tester).catch(ignoreError); // Set 1000 seconds deadline for `ExecuteBlocks` operation. - process.env.CHAIN_STATE_KEEPER_AGGREGATED_BLOCK_EXECUTE_DEADLINE = '1000'; + process.env.ETH_SENDER_SENDER_AGGREGATED_BLOCK_EXECUTE_DEADLINE = '1000'; // Set lightweight mode for the Merkle tree. process.env.DATABASE_MERKLE_TREE_MODE = 'lightweight'; @@ -175,7 +175,7 @@ describe('Block reverting test', function () { step('execute transaction after revert', async () => { // Set 1 second deadline for `ExecuteBlocks` operation. - process.env.CHAIN_STATE_KEEPER_AGGREGATED_BLOCK_EXECUTE_DEADLINE = '1'; + process.env.ETH_SENDER_SENDER_AGGREGATED_BLOCK_EXECUTE_DEADLINE = '1'; // Run server. utils.background('zk server --components api,tree,eth,data_fetcher,state_keeper', [null, logs, logs]); From 548689b269746df8d5fb5bf042569ff54ed3dca2 Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Wed, 11 Oct 2023 21:54:22 +0200 Subject: [PATCH 025/108] remove helper console logs --- core/tests/revert-test/tests/revert-and-restart.test.ts | 6 ------ 1 file changed, 6 deletions(-) diff --git a/core/tests/revert-test/tests/revert-and-restart.test.ts b/core/tests/revert-test/tests/revert-and-restart.test.ts index 4393cf20b3f..d69cafe3f74 100644 --- a/core/tests/revert-test/tests/revert-and-restart.test.ts +++ b/core/tests/revert-test/tests/revert-and-restart.test.ts @@ -136,8 +136,6 @@ describe('Block reverting test', function () { // Stop server. await killServerAndWaitForShutdown(tester); - - console.log(`Server stopped. Blocks committed: ${blocksCommitted}, blocks executed: ${blocksExecuted}`); }); step('revert blocks', async () => { @@ -148,10 +146,6 @@ describe('Block reverting test', function () { ); const suggestedValuesOutput = executedProcess.stdout; const { lastL1BatchNumber, nonce, priorityFee } = parseSuggestedValues(suggestedValuesOutput); - console.log( - `Suggested values: lastL1BatchNumber: ${lastL1BatchNumber}, nonce: ${nonce}, priorityFee: ${priorityFee}` - ); - expect(lastL1BatchNumber < blocksCommittedBeforeRevert, 'There should be at least one block for revert').to.be .true; From 5a015c106fb4f1929ba9a08f6c1cc26f3d69c481 Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Thu, 12 Oct 2023 08:34:29 +0200 Subject: [PATCH 026/108] use 1.4.0 in vm crate --- Cargo.lock | 3 ++- core/lib/types/Cargo.toml | 1 + core/lib/types/src/l2_to_l1_log.rs | 14 ++++++++++++++ core/lib/vm/Cargo.toml | 2 +- core/lib/vm/src/old_vm/oracles/precompile.rs | 2 +- 5 files changed, 19 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b19289646fc..b2f8648192c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7172,7 +7172,7 @@ dependencies = [ "tokio", "tracing", "vise", - "zk_evm 1.3.3", + "zk_evm 1.4.0", "zksync_config", "zksync_contracts", "zksync_eth_signer", @@ -8421,6 +8421,7 @@ dependencies = [ "thiserror", "tokio", "zk_evm 1.3.3", + "zk_evm 1.4.0", "zkevm_test_harness 1.3.3", "zksync_basic_types", "zksync_config", diff --git a/core/lib/types/Cargo.toml b/core/lib/types/Cargo.toml index 08c47dd99f0..8e8e6beb97e 100644 --- a/core/lib/types/Cargo.toml +++ b/core/lib/types/Cargo.toml @@ -20,6 +20,7 @@ zksync_mini_merkle_tree = { path = "../mini_merkle_tree" } codegen = { git = "https://github.com/matter-labs/solidity_plonk_verifier.git", branch = "dev" } zkevm_test_harness = { git = "https://github.com/matter-labs/era-zkevm_test_harness.git", branch = "v1.3.3" } zk_evm = { git = "https://github.com/matter-labs/era-zk_evm.git", branch = "v1.3.3" } +zk_evm_1_4_0 = { git = "https://github.com/matter-labs/era-zk_evm.git", branch = "v1.4.0", package = "zk_evm" } chrono = { version = "0.4", features = ["serde"] } num = { version = "0.3.1", features = ["serde"] } diff --git a/core/lib/types/src/l2_to_l1_log.rs b/core/lib/types/src/l2_to_l1_log.rs index 2cb7fecb977..35b39f6b89c 100644 --- a/core/lib/types/src/l2_to_l1_log.rs +++ b/core/lib/types/src/l2_to_l1_log.rs @@ -2,6 +2,7 @@ use crate::commitment::SerializeCommitment; use crate::{Address, H256}; use serde::{Deserialize, Serialize}; use zk_evm::reference_impls::event_sink::EventMessage; +use zk_evm_1_4_0::reference_impls::event_sink::EventMessage as EventMessage_1_4_0; use zksync_utils::u256_to_h256; #[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default, Eq)] @@ -63,3 +64,16 @@ impl From for L2ToL1Log { } } } + +impl From for L2ToL1Log { + fn from(m: EventMessage_1_4_0) -> Self { + Self { + shard_id: m.shard_id, + is_service: m.is_first, + tx_number_in_block: m.tx_number_in_block, + sender: m.address, + key: u256_to_h256(m.key), + value: u256_to_h256(m.value), + } + } +} diff --git a/core/lib/vm/Cargo.toml b/core/lib/vm/Cargo.toml index eecf1322c03..c678ba534c3 100644 --- a/core/lib/vm/Cargo.toml +++ b/core/lib/vm/Cargo.toml @@ -11,7 +11,7 @@ categories = ["cryptography"] [dependencies] vise = { git = "https://github.com/matter-labs/vise.git", version = "0.1.0", rev = "9d097ab747b037b6e62504df1db5b975425b6bdd" } -zk_evm = { git = "https://github.com/matter-labs/era-zk_evm.git", branch = "v1.3.3" } +zk_evm = { git = "https://github.com/matter-labs/era-zk_evm.git", branch = "v1.4.0" } zksync_config = { path = "../config" } zksync_types = { path = "../types" } zksync_utils = { path = "../utils" } diff --git a/core/lib/vm/src/old_vm/oracles/precompile.rs b/core/lib/vm/src/old_vm/oracles/precompile.rs index 72b751c75d4..4103798acae 100644 --- a/core/lib/vm/src/old_vm/oracles/precompile.rs +++ b/core/lib/vm/src/old_vm/oracles/precompile.rs @@ -3,7 +3,7 @@ use zk_evm::{ abstractions::PrecompileCyclesWitness, abstractions::PrecompilesProcessor, aux_structures::{LogQuery, MemoryQuery, Timestamp}, - precompiles::DefaultPrecompilesProcessor, + zk_evm_abstractions::precompiles::DefaultPrecompilesProcessor, }; use crate::old_vm::history_recorder::{HistoryEnabled, HistoryMode, HistoryRecorder}; From 018a71b86ed785b2f41773d72a6564f5396d7af9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cperekopskiy=E2=80=9D?= Date: Thu, 12 Oct 2023 17:10:28 +0300 Subject: [PATCH 027/108] Remove some RocksDB code diff --- core/lib/state/Cargo.toml | 1 - core/lib/state/src/in_memory.rs | 2 +- core/lib/state/src/rocksdb/mod.rs | 21 +++++---------------- 3 files changed, 6 insertions(+), 18 deletions(-) diff --git a/core/lib/state/Cargo.toml b/core/lib/state/Cargo.toml index 00af232f54f..6af0e3851e6 100644 --- a/core/lib/state/Cargo.toml +++ b/core/lib/state/Cargo.toml @@ -26,7 +26,6 @@ metrics = "0.21" [dev-dependencies] db_test_macro = { path = "../db_test_macro" } -itertools = "0.10.3" rand = "0.8.5" tempfile = "3.0.2" diff --git a/core/lib/state/src/in_memory.rs b/core/lib/state/src/in_memory.rs index d2fc2fa18c4..87a26b238f2 100644 --- a/core/lib/state/src/in_memory.rs +++ b/core/lib/state/src/in_memory.rs @@ -77,7 +77,7 @@ impl InMemoryStorage { let last_enum_index_set = state.len() as u64; Self { - state: state.into_iter().collect(), + state, factory_deps, last_enum_index_set, } diff --git a/core/lib/state/src/rocksdb/mod.rs b/core/lib/state/src/rocksdb/mod.rs index b9830c79bf9..6ecdf3f0c1d 100644 --- a/core/lib/state/src/rocksdb/mod.rs +++ b/core/lib/state/src/rocksdb/mod.rs @@ -46,24 +46,17 @@ enum StateKeeperColumnFamily { State, Contracts, FactoryDeps, - EnumIndices, } impl NamedColumnFamily for StateKeeperColumnFamily { const DB_NAME: &'static str = "state_keeper"; - const ALL: &'static [Self] = &[ - Self::State, - Self::Contracts, - Self::FactoryDeps, - Self::EnumIndices, - ]; + const ALL: &'static [Self] = &[Self::State, Self::Contracts, Self::FactoryDeps]; fn name(&self) -> &'static str { match self { Self::State => "state", Self::Contracts => "contracts", Self::FactoryDeps => "factory_deps", - Self::EnumIndices => "enum_indices", } } } @@ -391,21 +384,18 @@ impl RocksdbStorage { &StateValue::new(prev_value, Some(prev_index)).serialize(), ); } else { - batch.delete_cf(StateKeeperColumnFamily::State, key.as_bytes()); - batch.delete_cf(StateKeeperColumnFamily::EnumIndices, key.as_bytes()); + batch.delete_cf(cf, key.as_bytes()); } } batch.put_cf( - StateKeeperColumnFamily::State, + cf, Self::BLOCK_NUMBER_KEY, &serialize_block_number(last_l1_batch_to_keep.0 + 1), ); + let cf = StateKeeperColumnFamily::FactoryDeps; for factory_dep_hash in &factory_deps { - batch.delete_cf( - StateKeeperColumnFamily::FactoryDeps, - factory_dep_hash.as_bytes(), - ); + batch.delete_cf(cf, factory_dep_hash.as_bytes()); } db.write(batch) @@ -512,7 +502,6 @@ impl ReadStorage for RocksdbStorage { #[cfg(test)] mod tests { use db_test_macro::db_test; - use itertools::Itertools; use tempfile::TempDir; use super::*; From 1d6fda478ff2aae625b895327711baccf848565d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cperekopskiy=E2=80=9D?= Date: Thu, 12 Oct 2023 17:11:17 +0300 Subject: [PATCH 028/108] Run migration till the end when initting --- core/lib/state/src/rocksdb/mod.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/core/lib/state/src/rocksdb/mod.rs b/core/lib/state/src/rocksdb/mod.rs index 6ecdf3f0c1d..cd5bd7b9379 100644 --- a/core/lib/state/src/rocksdb/mod.rs +++ b/core/lib/state/src/rocksdb/mod.rs @@ -185,7 +185,10 @@ impl RocksdbStorage { "Secondary storage for L1 batch #{latest_l1_batch_number} initialized, size is {estimated_size}" ); - self.save_missing_enum_indices(conn).await; + // Enum indices must be at the storage. Run migration till the end. + while self.enum_migration_start_from().is_some() { + self.save_missing_enum_indices(conn).await; + } } async fn apply_storage_logs( From 3014213d0b37514b1855120ed47d43641cb5d082 Mon Sep 17 00:00:00 2001 From: koloz Date: Mon, 16 Oct 2023 10:39:02 -0400 Subject: [PATCH 029/108] reverted changes to old file --- .../src/old_vm/oracles/storage.rs | 97 ++----------------- 1 file changed, 10 insertions(+), 87 deletions(-) diff --git a/core/multivm_deps/vm_virtual_blocks/src/old_vm/oracles/storage.rs b/core/multivm_deps/vm_virtual_blocks/src/old_vm/oracles/storage.rs index adc0b3f2252..482cc69bbbd 100644 --- a/core/multivm_deps/vm_virtual_blocks/src/old_vm/oracles/storage.rs +++ b/core/multivm_deps/vm_virtual_blocks/src/old_vm/oracles/storage.rs @@ -14,8 +14,6 @@ use zk_evm::{ use zksync_state::{StoragePtr, WriteStorage}; use zksync_types::utils::storage_key_for_eth_balance; -use zksync_types::writes::compression::compress_with_best_strategy; -use zksync_types::writes::{BYTES_PER_DERIVED_KEY, BYTES_PER_ENUMERATION_INDEX}; use zksync_types::{ AccountTreeId, Address, StorageKey, StorageLogQuery, StorageLogQueryType, BOOTLOADER_ADDRESS, U256, @@ -48,8 +46,6 @@ pub struct StorageOracle { // to cover this slot. // `paid_changes` history is necessary pub(crate) paid_changes: HistoryRecorder, HistoryEnabled>, - - initial_values: HistoryRecorder, HistoryEnabled>, } impl OracleWithHistory for StorageOracle { @@ -66,7 +62,6 @@ impl StorageOracle { storage: HistoryRecorder::from_inner(StorageWrapper::new(storage)), frames_stack: Default::default(), paid_changes: Default::default(), - initial_values: Default::default(), } } @@ -74,7 +69,6 @@ impl StorageOracle { self.frames_stack.delete_history(); self.storage.delete_history(); self.paid_changes.delete_history(); - self.initial_values.delete_history(); } fn is_storage_key_free(&self, key: &StorageKey) -> bool { @@ -137,25 +131,6 @@ impl StorageOracle { .unwrap_or_default() } - fn get_initial_value(&self, storage_key: &StorageKey) -> Option { - self.initial_values.inner().get(storage_key).copied() - } - - fn set_initial_value(&mut self, storage_key: &StorageKey, value: U256, timestamp: Timestamp) { - match self.get_initial_value(storage_key) { - Some(_) => {} - None => { - self.initial_values.apply_historic_record( - HashMapHistoryEvent { - key: *storage_key, - value: Some(value), - }, - timestamp, - ); - } - } - } - pub(crate) fn base_price_for_write(&self, query: &LogQuery) -> u32 { let storage_key = storage_key_of_log(query); @@ -169,26 +144,16 @@ impl StorageOracle { .borrow_mut() .is_write_initial(&storage_key); - let initial_value = self - .get_initial_value(&storage_key) - .unwrap_or(query.read_value); - - get_pubdata_price_bytes(initial_value, query.written_value, is_initial_write) + get_pubdata_price_bytes(query, is_initial_write) } // Returns the price of the update in terms of pubdata bytes. // TODO (SMA-1701): update VM to accept gas instead of pubdata. - fn value_update_price(&mut self, query: &LogQuery) -> u32 { + fn value_update_price(&self, query: &LogQuery) -> u32 { let storage_key = storage_key_of_log(query); let base_cost = self.base_price_for_write(query); - let initial_value = self - .get_initial_value(&storage_key) - .unwrap_or(query.read_value); - - self.set_initial_value(&storage_key, initial_value, query.timestamp); - let already_paid = self.prepaid_for_write(&storage_key); if base_cost <= already_paid { @@ -272,12 +237,6 @@ impl VmStorageOracle for StorageOracle { let to_pay_by_user = self.base_price_for_write(&query); let prepaid = self.prepaid_for_write(&storage_key); - let initial_value = self - .get_initial_value(&storage_key) - .unwrap_or(query.read_value); - - self.set_initial_value(&storage_key, initial_value, query.timestamp); - if to_pay_by_user > prepaid { self.paid_changes.apply_historic_record( HashMapHistoryEvent { @@ -301,10 +260,7 @@ impl VmStorageOracle for StorageOracle { _monotonic_cycle_counter: u32, partial_query: &LogQuery, ) -> RefundType { - let storage_key = storage_key_of_log(partial_query); - let price_to_pay = self - .value_update_price(partial_query) - .min(INITIAL_STORAGE_WRITE_PUBDATA_BYTES as u32); + let price_to_pay = self.value_update_price(partial_query); RefundType::RepeatedWrite(RefundedAmounts { ergs: 0, @@ -365,51 +321,18 @@ impl VmStorageOracle for StorageOracle { /// Returns the number of bytes needed to publish a slot. // Since we need to publish the state diffs onchain, for each of the updated storage slot -// we basically need to publish the following pair: (). -// For key we use the following optimization: +// we basically need to publish the following pair: (). +// While new_value is always 32 bytes long, for key we use the following optimization: // - The first time we publish it, we use 32 bytes. // Then, we remember a 8-byte id for this slot and assign it to it. We call this initial write. -// - The second time we publish it, we will use the 4/5 byte representation of this 8-byte instead of the 32 -// bytes of the entire key. -// For value compression, we use a metadata byte which holds the length of the value and the operation from the -// previous state to the new state, and the compressed value. The maxiumum for this is 33 bytes. -// Total bytes for initial writes then becomes 65 bytes and repeated writes becomes 38 bytes. -fn get_pubdata_price_bytes(initial_value: U256, final_value: U256, is_initial: bool) -> u32 { +// - The second time we publish it, we will use this 8-byte instead of the 32 bytes of the entire key. +// So the total size of the publish pubdata is 40 bytes. We call this kind of write the repeated one +fn get_pubdata_price_bytes(_query: &LogQuery, is_initial: bool) -> u32 { // TODO (SMA-1702): take into account the content of the log query, i.e. values that contain mostly zeroes // should cost less. - - let compressed_value_size = - compress_with_best_strategy(initial_value, final_value).len() as u32; - if is_initial { - (BYTES_PER_DERIVED_KEY as u32) + compressed_value_size + zk_evm::zkevm_opcode_defs::system_params::INITIAL_STORAGE_WRITE_PUBDATA_BYTES as u32 } else { - (BYTES_PER_ENUMERATION_INDEX as u32) + compressed_value_size - } -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn test_get_pubdata_price_bytes() { - let initial_value = U256::default(); - let final_value = U256::from(92122); - let is_initial = true; - - let compression_len = 4; - - let initial_bytes_price = get_pubdata_price_bytes(initial_value, final_value, is_initial); - let repeated_bytes_price = get_pubdata_price_bytes(initial_value, final_value, !is_initial); - - assert_eq!( - initial_bytes_price, - (compression_len + BYTES_PER_DERIVED_KEY as usize) as u32 - ); - assert_eq!( - repeated_bytes_price, - (compression_len + BYTES_PER_ENUMERATION_INDEX as usize) as u32 - ); + zk_evm::zkevm_opcode_defs::system_params::REPEATED_STORAGE_WRITE_PUBDATA_BYTES as u32 } } From 616a5269542fee7749adcd4daee1d0c781ae2e68 Mon Sep 17 00:00:00 2001 From: koloz Date: Mon, 16 Oct 2023 10:39:44 -0400 Subject: [PATCH 030/108] simplified calculation logic --- core/lib/types/src/fee.rs | 2 +- .../types/src/storage_writes_deduplicator.rs | 63 +++++-------------- core/lib/types/src/tx/tx_execution_info.rs | 13 ++-- .../execution_sandbox/vm_metrics.rs | 2 +- 4 files changed, 28 insertions(+), 52 deletions(-) diff --git a/core/lib/types/src/fee.rs b/core/lib/types/src/fee.rs index b323df1aada..5ea9dbbdd2b 100644 --- a/core/lib/types/src/fee.rs +++ b/core/lib/types/src/fee.rs @@ -21,7 +21,7 @@ pub struct TransactionExecutionMetrics { pub total_log_queries: usize, pub cycles_used: u32, pub computational_gas_used: u32, - pub total_writes_size: usize, + pub total_updated_values_size: usize, } #[derive(Debug, Default, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)] diff --git a/core/lib/types/src/storage_writes_deduplicator.rs b/core/lib/types/src/storage_writes_deduplicator.rs index 70adfe89792..63bfe5f7bd5 100644 --- a/core/lib/types/src/storage_writes_deduplicator.rs +++ b/core/lib/types/src/storage_writes_deduplicator.rs @@ -4,7 +4,6 @@ use zksync_utils::u256_to_h256; use crate::tx::tx_execution_info::DeduplicatedWritesMetrics; use crate::writes::compression::compress_with_best_strategy; -use crate::writes::{BYTES_PER_DERIVED_KEY, BYTES_PER_ENUMERATION_INDEX}; use crate::{AccountTreeId, StorageKey, StorageLogQuery, StorageLogQueryType, U256}; #[derive(Debug, Clone, Copy, PartialEq, Default)] @@ -13,7 +12,7 @@ pub struct ModifiedSlot { pub value: U256, /// Index (in L1 batch) of the transaction that lastly modified the slot. pub tx_index: u16, - /// Size of update in bytes + /// Size of pubdata update in bytes pub size: usize, } @@ -105,18 +104,14 @@ impl StorageWritesDeduplicator { }; let is_write_initial = log.log_type == StorageLogQueryType::InitialWrite; - let (field_to_change, total_size) = if is_write_initial { - ( - &mut self.metrics.initial_storage_writes, - &mut self.metrics.total_writes_size, - ) + let field_to_change = if is_write_initial { + &mut self.metrics.initial_storage_writes } else { - ( - &mut self.metrics.repeated_storage_writes, - &mut self.metrics.total_writes_size, - ) + &mut self.metrics.repeated_storage_writes }; + let total_size = &mut self.metrics.total_updated_values_size; + match (was_key_modified, modified_value) { (true, None) => { let value = self.modified_key_values.remove(&key).unwrap_or_else(|| { @@ -124,11 +119,6 @@ impl StorageWritesDeduplicator { }); *field_to_change -= 1; *total_size -= value.size; - if is_write_initial { - *total_size -= BYTES_PER_DERIVED_KEY as usize; - } else { - *total_size -= BYTES_PER_ENUMERATION_INDEX as usize; - } updates.push(UpdateItem { key, update_type: UpdateType::Remove(value), @@ -171,11 +161,6 @@ impl StorageWritesDeduplicator { ); *field_to_change += 1; *total_size += value_size; - if is_write_initial { - *total_size += BYTES_PER_DERIVED_KEY as usize; - } else { - *total_size += BYTES_PER_ENUMERATION_INDEX as usize; - } updates.push(UpdateItem { key, update_type: UpdateType::Insert, @@ -190,18 +175,14 @@ impl StorageWritesDeduplicator { fn rollback(&mut self, updates: Vec) { for item in updates.into_iter().rev() { - let (field_to_change, total_size) = if item.is_write_initial { - ( - &mut self.metrics.initial_storage_writes, - &mut self.metrics.total_writes_size, - ) + let field_to_change = if item.is_write_initial { + &mut self.metrics.initial_storage_writes } else { - ( - &mut self.metrics.repeated_storage_writes, - &mut self.metrics.total_writes_size, - ) + &mut self.metrics.repeated_storage_writes }; + let total_size = &mut self.metrics.total_updated_values_size; + match item.update_type { UpdateType::Insert => { let value = self @@ -210,11 +191,6 @@ impl StorageWritesDeduplicator { .unwrap_or_default(); *field_to_change -= 1; *total_size -= value.size; - if item.is_write_initial { - *total_size -= BYTES_PER_DERIVED_KEY as usize; - } else { - *total_size -= BYTES_PER_ENUMERATION_INDEX as usize; - } } UpdateType::Update(value) => { let old_value = self @@ -228,11 +204,6 @@ impl StorageWritesDeduplicator { self.modified_key_values.insert(item.key, value); *field_to_change += 1; *total_size += value.size; - if item.is_write_initial { - *total_size += BYTES_PER_DERIVED_KEY as usize; - } else { - *total_size += BYTES_PER_ENUMERATION_INDEX as usize; - } } } } @@ -302,7 +273,7 @@ mod tests { DeduplicatedWritesMetrics { initial_storage_writes: 1, repeated_storage_writes: 0, - total_writes_size: 34, + total_updated_values_size: 2, }, "single initial write".into(), ), @@ -314,7 +285,7 @@ mod tests { DeduplicatedWritesMetrics { initial_storage_writes: 1, repeated_storage_writes: 1, - total_writes_size: 40, + total_updated_values_size: 4, }, "initial and repeated write".into(), ), @@ -326,7 +297,7 @@ mod tests { DeduplicatedWritesMetrics { initial_storage_writes: 0, repeated_storage_writes: 0, - total_writes_size: 0, + total_updated_values_size: 0, }, "single rollback".into(), ), @@ -341,7 +312,7 @@ mod tests { DeduplicatedWritesMetrics { initial_storage_writes: 0, repeated_storage_writes: 0, - total_writes_size: 0, + total_updated_values_size: 0, }, "idle write".into(), ), @@ -354,7 +325,7 @@ mod tests { DeduplicatedWritesMetrics { initial_storage_writes: 0, repeated_storage_writes: 0, - total_writes_size: 0, + total_updated_values_size: 0, }, "idle write cycle".into(), ), @@ -371,7 +342,7 @@ mod tests { DeduplicatedWritesMetrics { initial_storage_writes: 2, repeated_storage_writes: 1, - total_writes_size: 74, + total_updated_values_size: 6, }, "complex".into(), ), diff --git a/core/lib/types/src/tx/tx_execution_info.rs b/core/lib/types/src/tx/tx_execution_info.rs index 11af5cfb81c..1008614f4ea 100644 --- a/core/lib/types/src/tx/tx_execution_info.rs +++ b/core/lib/types/src/tx/tx_execution_info.rs @@ -1,6 +1,9 @@ -use crate::commitment::SerializeCommitment; use crate::fee::TransactionExecutionMetrics; use crate::l2_to_l1_log::L2ToL1Log; +use crate::{ + commitment::SerializeCommitment, + writes::{BYTES_PER_DERIVED_KEY, BYTES_PER_ENUMERATION_INDEX}, +}; use std::ops::{Add, AddAssign}; #[derive(Debug, Clone, Copy, Eq, PartialEq)] @@ -23,7 +26,7 @@ impl TxExecutionStatus { pub struct DeduplicatedWritesMetrics { pub initial_storage_writes: usize, pub repeated_storage_writes: usize, - pub total_writes_size: usize, + pub total_updated_values_size: usize, } impl DeduplicatedWritesMetrics { @@ -31,12 +34,14 @@ impl DeduplicatedWritesMetrics { Self { initial_storage_writes: tx_metrics.initial_storage_writes, repeated_storage_writes: tx_metrics.repeated_storage_writes, - total_writes_size: tx_metrics.total_writes_size, + total_updated_values_size: tx_metrics.total_updated_values_size, } } pub fn size(&self) -> usize { - self.total_writes_size + self.total_updated_values_size + + (BYTES_PER_DERIVED_KEY as usize) * self.initial_storage_writes + + (BYTES_PER_ENUMERATION_INDEX as usize) * self.repeated_storage_writes } } diff --git a/core/lib/zksync_core/src/api_server/execution_sandbox/vm_metrics.rs b/core/lib/zksync_core/src/api_server/execution_sandbox/vm_metrics.rs index d0813d7a293..9196409cda9 100644 --- a/core/lib/zksync_core/src/api_server/execution_sandbox/vm_metrics.rs +++ b/core/lib/zksync_core/src/api_server/execution_sandbox/vm_metrics.rs @@ -153,6 +153,6 @@ pub(super) fn collect_tx_execution_metrics( total_log_queries: result.statistics.total_log_queries, cycles_used: result.statistics.cycles_used, computational_gas_used: result.statistics.computational_gas_used, - total_writes_size: writes_metrics.total_writes_size, + total_updated_values_size: writes_metrics.total_updated_values_size, } } From 4716fabf1c315e9f21f5cdf646233d2bc276b960 Mon Sep 17 00:00:00 2001 From: koloz Date: Mon, 16 Oct 2023 15:05:28 -0400 Subject: [PATCH 031/108] store initial values and check for refund amount based on amount of pubdata required --- core/lib/vm/src/oracles/storage.rs | 93 ++++++++++++++++++++++++++---- rust-toolchain | 2 +- 2 files changed, 83 insertions(+), 12 deletions(-) diff --git a/core/lib/vm/src/oracles/storage.rs b/core/lib/vm/src/oracles/storage.rs index 42d4f802247..68fa6a3f5eb 100644 --- a/core/lib/vm/src/oracles/storage.rs +++ b/core/lib/vm/src/oracles/storage.rs @@ -15,6 +15,8 @@ use zk_evm::{ use zksync_state::{StoragePtr, WriteStorage}; use zksync_types::utils::storage_key_for_eth_balance; +use zksync_types::writes::compression::compress_with_best_strategy; +use zksync_types::writes::{BYTES_PER_DERIVED_KEY, BYTES_PER_ENUMERATION_INDEX}; use zksync_types::{ AccountTreeId, Address, StorageKey, StorageLogQuery, StorageLogQueryType, BOOTLOADER_ADDRESS, U256, @@ -88,12 +90,30 @@ impl StorageOracle { || *key == storage_key_for_eth_balance(&BOOTLOADER_ADDRESS) } + fn get_initial_value(&self, storage_key: &StorageKey) -> Option { + self.initial_values.inner().get(storage_key).copied() + } + + fn set_initial_value(&mut self, storage_key: &StorageKey, value: U256, timestamp: Timestamp) { + if self.get_initial_value(storage_key).is_none() { + self.initial_values.apply_historic_record( + HashMapHistoryEvent { + key: *storage_key, + value: Some(value), + }, + timestamp, + ); + } + } + pub fn read_value(&mut self, mut query: LogQuery) -> LogQuery { let key = triplet_to_storage_key(query.shard_id, query.address, query.key); let current_value = self.storage.read_from_storage(&key); query.read_value = current_value; + self.set_initial_value(&key, current_value, Timestamp(0)); + self.frames_stack.push_forward( Box::new(StorageLogQuery { log_query: query, @@ -201,7 +221,11 @@ impl StorageOracle { fn base_price_for_write_query(&self, query: &LogQuery) -> u32 { let storage_key = storage_key_of_log(query); - self.base_price_for_write(&storage_key, query.read_value, query.written_value) + let initial_value = self + .get_initial_value(&storage_key) + .unwrap_or(self.storage.read_from_storage(&storage_key)); + + self.base_price_for_write(&storage_key, initial_value, query.written_value) } pub(crate) fn base_price_for_write( @@ -220,16 +244,22 @@ impl StorageOracle { .borrow_mut() .is_write_initial(storage_key); - get_pubdata_price_bytes(is_initial_write) + get_pubdata_price_bytes(prev_value, new_value, is_initial_write) } // Returns the price of the update in terms of pubdata bytes. // TODO (SMA-1701): update VM to accept gas instead of pubdata. - fn value_update_price(&self, query: &LogQuery) -> u32 { + fn value_update_price(&mut self, query: &LogQuery) -> u32 { let storage_key = storage_key_of_log(query); let base_cost = self.base_price_for_write_query(query); + let initial_value = self + .get_initial_value(&storage_key) + .unwrap_or(self.storage.read_from_storage(&storage_key)); + + self.set_initial_value(&storage_key, initial_value, query.timestamp); + let already_paid = self.prepaid_for_write(&storage_key); if base_cost <= already_paid { @@ -313,6 +343,12 @@ impl VmStorageOracle for StorageOracle { let to_pay_by_user = self.base_price_for_write_query(&query); let prepaid = self.prepaid_for_write(&storage_key); + let initial_value = self + .get_initial_value(&storage_key) + .unwrap_or(self.storage.read_from_storage(&storage_key)); + + self.set_initial_value(&storage_key, initial_value, query.timestamp); + if to_pay_by_user > prepaid { self.paid_changes.apply_historic_record( HashMapHistoryEvent { @@ -336,7 +372,9 @@ impl VmStorageOracle for StorageOracle { _monotonic_cycle_counter: u32, partial_query: &LogQuery, ) -> RefundType { - let price_to_pay = self.value_update_price(partial_query); + let price_to_pay = self + .value_update_price(partial_query) + .min(INITIAL_STORAGE_WRITE_PUBDATA_BYTES as u32); RefundType::RepeatedWrite(RefundedAmounts { ergs: 0, @@ -397,18 +435,51 @@ impl VmStorageOracle for StorageOracle { /// Returns the number of bytes needed to publish a slot. // Since we need to publish the state diffs onchain, for each of the updated storage slot -// we basically need to publish the following pair: (). -// While new_value is always 32 bytes long, for key we use the following optimization: +// we basically need to publish the following pair: (). +// For key we use the following optimization: // - The first time we publish it, we use 32 bytes. // Then, we remember a 8-byte id for this slot and assign it to it. We call this initial write. -// - The second time we publish it, we will use this 8-byte instead of the 32 bytes of the entire key. -// So the total size of the publish pubdata is 40 bytes. We call this kind of write the repeated one -fn get_pubdata_price_bytes(is_initial: bool) -> u32 { +// - The second time we publish it, we will use the 4/5 byte representation of this 8-byte instead of the 32 +// bytes of the entire key. +// For value compression, we use a metadata byte which holds the length of the value and the operation from the +// previous state to the new state, and the compressed value. The maxiumum for this is 33 bytes. +// Total bytes for initial writes then becomes 65 bytes and repeated writes becomes 38 bytes. +fn get_pubdata_price_bytes(initial_value: U256, final_value: U256, is_initial: bool) -> u32 { // TODO (SMA-1702): take into account the content of the log query, i.e. values that contain mostly zeroes // should cost less. + + let compressed_value_size = + compress_with_best_strategy(initial_value, final_value).len() as u32; + if is_initial { - zk_evm::zkevm_opcode_defs::system_params::INITIAL_STORAGE_WRITE_PUBDATA_BYTES as u32 + (BYTES_PER_DERIVED_KEY as u32) + compressed_value_size } else { - zk_evm::zkevm_opcode_defs::system_params::REPEATED_STORAGE_WRITE_PUBDATA_BYTES as u32 + (BYTES_PER_ENUMERATION_INDEX as u32) + compressed_value_size + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_get_pubdata_price_bytes() { + let initial_value = U256::default(); + let final_value = U256::from(92122); + let is_initial = true; + + let compression_len = 4; + + let initial_bytes_price = get_pubdata_price_bytes(initial_value, final_value, is_initial); + let repeated_bytes_price = get_pubdata_price_bytes(initial_value, final_value, !is_initial); + + assert_eq!( + initial_bytes_price, + (compression_len + BYTES_PER_DERIVED_KEY as usize) as u32 + ); + assert_eq!( + repeated_bytes_price, + (compression_len + BYTES_PER_ENUMERATION_INDEX as usize) as u32 + ); } } diff --git a/rust-toolchain b/rust-toolchain index cd9bf832ae2..fe109472d24 100644 --- a/rust-toolchain +++ b/rust-toolchain @@ -1 +1 @@ -nightly-2023-07-21 +nightly-2023-09-21 From b30f9f81b42771179c352dc137d5f0bf57e0fb02 Mon Sep 17 00:00:00 2001 From: koloz Date: Tue, 17 Oct 2023 11:49:33 -0400 Subject: [PATCH 032/108] use query timestamp --- .../types/src/storage_writes_deduplicator.rs | 33 +++++++++++-------- core/lib/vm/src/oracles/storage.rs | 12 ++----- 2 files changed, 22 insertions(+), 23 deletions(-) diff --git a/core/lib/types/src/storage_writes_deduplicator.rs b/core/lib/types/src/storage_writes_deduplicator.rs index 63bfe5f7bd5..42ce67e6375 100644 --- a/core/lib/types/src/storage_writes_deduplicator.rs +++ b/core/lib/types/src/storage_writes_deduplicator.rs @@ -129,25 +129,26 @@ impl StorageWritesDeduplicator { let value_size = compress_with_best_strategy(initial_value, new_value).len(); let old_value = self .modified_key_values - .get(&key) - .unwrap_or_else(|| panic!("key {:?} doesn't exist on update", key)); + .insert( + key, + ModifiedSlot { + value: new_value, + tx_index: log.log_query.tx_number_in_block, + size: value_size, + }, + ) + .unwrap_or_else(|| { + panic!("tried removing key: {:?} before insertion", key) + }); + updates.push(UpdateItem { key, - update_type: UpdateType::Update(*old_value), + update_type: UpdateType::Update(old_value), is_write_initial, }); *total_size -= old_value.size; *total_size += value_size; - - self.modified_key_values.insert( - key, - ModifiedSlot { - value: new_value, - tx_index: log.log_query.tx_number_in_block, - size: value_size, - }, - ); } (false, Some(new_value)) => { let value_size = compress_with_best_strategy(initial_value, new_value).len(); @@ -188,7 +189,9 @@ impl StorageWritesDeduplicator { let value = self .modified_key_values .remove(&item.key) - .unwrap_or_default(); + .unwrap_or_else(|| { + panic!("tried removing key: {:?} before insertion", item.key) + }); *field_to_change -= 1; *total_size -= value.size; } @@ -196,7 +199,9 @@ impl StorageWritesDeduplicator { let old_value = self .modified_key_values .insert(item.key, value) - .unwrap_or_default(); + .unwrap_or_else(|| { + panic!("tried removing key: {:?} before insertion", item.key) + }); *total_size += value.size; *total_size -= old_value.size; } diff --git a/core/lib/vm/src/oracles/storage.rs b/core/lib/vm/src/oracles/storage.rs index 68fa6a3f5eb..c1afecbd8fe 100644 --- a/core/lib/vm/src/oracles/storage.rs +++ b/core/lib/vm/src/oracles/storage.rs @@ -95,14 +95,8 @@ impl StorageOracle { } fn set_initial_value(&mut self, storage_key: &StorageKey, value: U256, timestamp: Timestamp) { - if self.get_initial_value(storage_key).is_none() { - self.initial_values.apply_historic_record( - HashMapHistoryEvent { - key: *storage_key, - value: Some(value), - }, - timestamp, - ); + if !self.initial_values.inner().contains_key(&storage_key) { + self.initial_values.insert(*storage_key, value, timestamp); } } @@ -112,7 +106,7 @@ impl StorageOracle { query.read_value = current_value; - self.set_initial_value(&key, current_value, Timestamp(0)); + self.set_initial_value(&key, current_value, query.timestamp); self.frames_stack.push_forward( Box::new(StorageLogQuery { From 894b323be0377cded7576357c85c0500efc83eab Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Wed, 18 Oct 2023 14:08:33 +0200 Subject: [PATCH 033/108] fix unit tests --- core/lib/state/src/rocksdb/mod.rs | 17 +++++++++++++---- core/lib/types/src/storage/writes/mod.rs | 6 ++---- .../state_keeper/batch_executor/tests/tester.rs | 2 ++ 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/core/lib/state/src/rocksdb/mod.rs b/core/lib/state/src/rocksdb/mod.rs index cd5bd7b9379..545bd125ac3 100644 --- a/core/lib/state/src/rocksdb/mod.rs +++ b/core/lib/state/src/rocksdb/mod.rs @@ -122,6 +122,14 @@ impl RocksdbStorage { } } + #[cfg(test)] + pub fn new_testing(path: &Path) -> Self { + let mut new_self = Self::new(path); + new_self.enable_enum_index_migration(100); + + new_self + } + /// Enables enum indices migration. pub fn enable_enum_index_migration(&mut self, chunk_size: usize) { self.enum_index_migration_chunk_size = chunk_size; @@ -185,6 +193,7 @@ impl RocksdbStorage { "Secondary storage for L1 batch #{latest_l1_batch_number} initialized, size is {estimated_size}" ); + assert!(self.enum_index_migration_chunk_size > 0); // Enum indices must be at the storage. Run migration till the end. while self.enum_migration_start_from().is_some() { self.save_missing_enum_indices(conn).await; @@ -517,7 +526,7 @@ mod tests { #[tokio::test] async fn rocksdb_storage_basics() { let dir = TempDir::new().expect("cannot create temporary dir for state keeper"); - let mut storage = RocksdbStorage::new(dir.path()); + let mut storage = RocksdbStorage::new_testing(dir.path()); let mut storage_logs: HashMap<_, _> = gen_storage_logs(0..20) .into_iter() .map(|log| (log.key, log.value)) @@ -559,7 +568,7 @@ mod tests { create_l1_batch(&mut conn, L1BatchNumber(1), &storage_logs).await; let dir = TempDir::new().expect("cannot create temporary dir for state keeper"); - let mut storage = RocksdbStorage::new(dir.path()); + let mut storage = RocksdbStorage::new_testing(dir.path()); storage.update_from_postgres(&mut conn).await; assert_eq!(storage.l1_batch_number(), L1BatchNumber(2)); @@ -609,7 +618,7 @@ mod tests { create_l1_batch(&mut conn, L1BatchNumber(2), &inserted_storage_logs).await; let dir = TempDir::new().expect("cannot create temporary dir for state keeper"); - let mut storage = RocksdbStorage::new(dir.path()); + let mut storage = RocksdbStorage::new_testing(dir.path()); storage.update_from_postgres(&mut conn).await; // Perform some sanity checks before the revert. @@ -668,7 +677,7 @@ mod tests { .collect(); let dir = TempDir::new().expect("cannot create temporary dir for state keeper"); - let mut storage = RocksdbStorage::new(dir.path()); + let mut storage = RocksdbStorage::new_testing(dir.path()); storage.update_from_postgres(&mut conn).await; assert_eq!(storage.l1_batch_number(), L1BatchNumber(2)); diff --git a/core/lib/types/src/storage/writes/mod.rs b/core/lib/types/src/storage/writes/mod.rs index 0826af82000..199bae52601 100644 --- a/core/lib/types/src/storage/writes/mod.rs +++ b/core/lib/types/src/storage/writes/mod.rs @@ -203,8 +203,7 @@ mod tests { ]; let bytes = serialize_commitments(&initial_writes); - let expected_bytes = "00000002\ - 0100000000000000000000000000000000000000000000000000000000000000\ + let expected_bytes = "0100000000000000000000000000000000000000000000000000000000000000\ 0101010101010101010101010101010101010101010101010101010101010101\ 0200000000000000000000000000000000000000000000000000000000000000\ 0303030303030303030303030303030303030303030303030303030303030303"; @@ -223,8 +222,7 @@ mod tests { ]; let bytes = serialize_commitments(&repeated_writes); - let expected_bytes = "00000002\ - 0000000000000001\ + let expected_bytes = "0000000000000001\ 0101010101010101010101010101010101010101010101010101010101010101\ 0000000000000002\ 0303030303030303030303030303030303030303030303030303030303030303"; diff --git a/core/lib/zksync_core/src/state_keeper/batch_executor/tests/tester.rs b/core/lib/zksync_core/src/state_keeper/batch_executor/tests/tester.rs index 27e59c0110e..954a4972ec4 100644 --- a/core/lib/zksync_core/src/state_keeper/batch_executor/tests/tester.rs +++ b/core/lib/zksync_core/src/state_keeper/batch_executor/tests/tester.rs @@ -100,6 +100,8 @@ impl Tester { .access_storage_tagged("state_keeper") .await .unwrap(); + + secondary_storage.enable_enum_index_migration(100); secondary_storage.update_from_postgres(&mut conn).await; drop(conn); From 6d60703d9b789a14288eed9d23144619b6eeb3b3 Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Wed, 18 Oct 2023 16:25:00 +0200 Subject: [PATCH 034/108] use full mode in revert test --- core/tests/revert-test/tests/revert-and-restart.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/tests/revert-test/tests/revert-and-restart.test.ts b/core/tests/revert-test/tests/revert-and-restart.test.ts index d69cafe3f74..c4ab6823c10 100644 --- a/core/tests/revert-test/tests/revert-and-restart.test.ts +++ b/core/tests/revert-test/tests/revert-and-restart.test.ts @@ -72,8 +72,8 @@ describe('Block reverting test', function () { // Set 1000 seconds deadline for `ExecuteBlocks` operation. process.env.ETH_SENDER_SENDER_AGGREGATED_BLOCK_EXECUTE_DEADLINE = '1000'; - // Set lightweight mode for the Merkle tree. - process.env.DATABASE_MERKLE_TREE_MODE = 'lightweight'; + // Set full mode for the Merkle tree as it is required to get blocks committed. + process.env.DATABASE_MERKLE_TREE_MODE = 'full'; // Run server in background. const components = 'api,tree,eth,data_fetcher,state_keeper'; From 0ea94d255f8c6a8b56aba53fbb9942e4c0240f9d Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Wed, 18 Oct 2023 16:35:11 +0200 Subject: [PATCH 035/108] remove unneeded print --- core/lib/types/src/commitment.rs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/core/lib/types/src/commitment.rs b/core/lib/types/src/commitment.rs index 34968d387ee..62dae8d4e49 100644 --- a/core/lib/types/src/commitment.rs +++ b/core/lib/types/src/commitment.rs @@ -134,10 +134,6 @@ impl L1BatchWithMetadata { } pub fn l1_commit_data(&self) -> Token { - if self.metadata.events_queue_commitment.is_none() { - println!(" {} ", self.header.number.0); - } - Token::Tuple(vec![ Token::Uint(U256::from(self.header.number.0)), Token::Uint(U256::from(self.header.timestamp)), From 2a67ab7ff36e8413dd7eb1114a5231481c1585dd Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Wed, 18 Oct 2023 18:42:31 +0200 Subject: [PATCH 036/108] fix fee test --- core/tests/ts-integration/tests/fees.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/tests/ts-integration/tests/fees.test.ts b/core/tests/ts-integration/tests/fees.test.ts index f2525cc4d1a..41016d447ac 100644 --- a/core/tests/ts-integration/tests/fees.test.ts +++ b/core/tests/ts-integration/tests/fees.test.ts @@ -191,7 +191,7 @@ async function setInternalL1GasPrice(provider: zksync.Provider, newPrice?: strin // Run server in background. let command = 'zk server --components api,tree,eth,data_fetcher,state_keeper'; - command = `DATABASE_MERKLE_TREE_MODE=lightweight ${command}`; + command = `DATABASE_MERKLE_TREE_MODE=full ${command}`; if (newPrice) { command = `ETH_SENDER_GAS_ADJUSTER_INTERNAL_ENFORCED_L1_GAS_PRICE=${newPrice} ${command}`; } From 4c2d5973a54e501c7ed4194391a68760b2b9c221 Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Wed, 18 Oct 2023 20:13:41 +0200 Subject: [PATCH 037/108] support commitments for next version --- core/lib/commitment_utils/src/lib.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/core/lib/commitment_utils/src/lib.rs b/core/lib/commitment_utils/src/lib.rs index c99332009d2..5c3fdb1c233 100644 --- a/core/lib/commitment_utils/src/lib.rs +++ b/core/lib/commitment_utils/src/lib.rs @@ -11,7 +11,9 @@ pub fn events_queue_commitment( ) -> Option { match protocol_version { id if id < ProtocolVersionId::Version17 => None, - ProtocolVersionId::Version17 => Some(H256(events_queue_commitment_fixed(events_queue))), + ProtocolVersionId::Version17 | ProtocolVersionId::Version18 => { + Some(H256(events_queue_commitment_fixed(events_queue))) + } id => unimplemented!("events_queue_commitment is not implemented for {id:?}"), } } @@ -22,7 +24,7 @@ pub fn bootloader_initial_content_commitment( ) -> Option { match protocol_version { id if id < ProtocolVersionId::Version17 => None, - ProtocolVersionId::Version17 => { + ProtocolVersionId::Version17 | ProtocolVersionId::Version18 => { let full_bootloader_memory = expand_memory_contents(initial_bootloader_contents, USED_BOOTLOADER_MEMORY_BYTES); Some(H256(initial_heap_content_commitment_fixed( From 3da317c4a02cf25b4c3235d429e17b01d48c9522 Mon Sep 17 00:00:00 2001 From: koloz Date: Thu, 19 Oct 2023 17:20:32 -0400 Subject: [PATCH 038/108] updated cargo lock and removed duplicate const --- Cargo.lock | 1500 +++++++++++----------- core/lib/types/src/storage/writes/mod.rs | 1 - 2 files changed, 762 insertions(+), 739 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2a7f1775baa..be77eb3ba1b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9,13 +9,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "617a8268e3537fe1d8c9ead925fca49ef6400927ee7bc26750e90ecee14ce4b8" dependencies = [ "bitflags 1.3.2", - "bytes 1.4.0", + "bytes 1.5.0", "futures-core", "futures-sink", "memchr", "pin-project-lite", "tokio", - "tokio-util 0.7.8", + "tokio-util 0.7.9", "tracing", ] @@ -36,19 +36,19 @@ dependencies = [ [[package]] name = "actix-http" -version = "3.3.1" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2079246596c18b4a33e274ae10c0e50613f4d32a4198e09c7b93771013fed74" +checksum = "a92ef85799cba03f76e4f7c10f533e66d87c9a7e7055f3391f09000ad8351bc9" dependencies = [ "actix-codec", "actix-rt", "actix-service", "actix-utils", "ahash 0.8.3", - "base64 0.21.2", - "bitflags 1.3.2", + "base64 0.21.4", + "bitflags 2.4.1", "brotli", - "bytes 1.4.0", + "bytes 1.5.0", "bytestring", "derive_more", "encoding_rs", @@ -68,19 +68,19 @@ dependencies = [ "sha1", "smallvec", "tokio", - "tokio-util 0.7.8", + "tokio-util 0.7.9", "tracing", - "zstd 0.12.3+zstd.1.5.2", + "zstd 0.12.4", ] [[package]] name = "actix-macros" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "465a6172cf69b960917811022d8f29bc0b7fa1398bc4f78b3c466673db1213b6" +checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" dependencies = [ "quote 1.0.33", - "syn 1.0.109", + "syn 2.0.38", ] [[package]] @@ -98,9 +98,9 @@ dependencies = [ [[package]] name = "actix-rt" -version = "2.8.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15265b6b8e2347670eb363c47fc8c75208b4a4994b27192f345fcbe707804f3e" +checksum = "28f32d40287d3f402ae0028a9d54bef51af15c8769492826a69d28f81893151d" dependencies = [ "actix-macros", "futures-core", @@ -109,9 +109,9 @@ dependencies = [ [[package]] name = "actix-server" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e8613a75dd50cc45f473cee3c34d59ed677c0f7b44480ce3b8247d7dc519327" +checksum = "3eb13e7eef0423ea6eab0e59f6c72e7cb46d33691ad56a726b3cd07ddec2c2d4" dependencies = [ "actix-rt", "actix-service", @@ -119,8 +119,7 @@ dependencies = [ "futures-core", "futures-util", "mio 0.8.8", - "num_cpus", - "socket2", + "socket2 0.5.4", "tokio", "tracing", ] @@ -148,9 +147,9 @@ dependencies = [ [[package]] name = "actix-web" -version = "4.3.1" +version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd3cb42f9566ab176e1ef0b8b3a896529062b4efc6be0123046095914c4c1c96" +checksum = "0e4a5b5e29603ca8c94a77c65cf874718ceb60292c5a5c3e5f4ace041af462b9" dependencies = [ "actix-codec", "actix-http", @@ -161,8 +160,8 @@ dependencies = [ "actix-service", "actix-utils", "actix-web-codegen", - "ahash 0.7.6", - "bytes 1.4.0", + "ahash 0.8.3", + "bytes 1.5.0", "bytestring", "cfg-if 1.0.0", "cookie", @@ -170,7 +169,6 @@ dependencies = [ "encoding_rs", "futures-core", "futures-util", - "http", "itoa", "language-tags", "log", @@ -182,21 +180,21 @@ dependencies = [ "serde_json", "serde_urlencoded", "smallvec", - "socket2", + "socket2 0.5.4", "time", "url", ] [[package]] name = "actix-web-codegen" -version = "4.2.0" +version = "4.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2262160a7ae29e3415554a3f1fc04c764b1540c116aa524683208078b7a75bc9" +checksum = "eb1f50ebbb30eca122b188319a4398b3f7bb4a8cdf50ecfb73bfc6a3c3ce54f5" dependencies = [ "actix-router", - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", "quote 1.0.33", - "syn 1.0.109", + "syn 2.0.38", ] [[package]] @@ -212,9 +210,9 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.19.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" dependencies = [ "gimli", ] @@ -293,18 +291,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "0.7.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" -dependencies = [ - "memchr", -] - -[[package]] -name = "aho-corasick" -version = "1.0.2" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" dependencies = [ "memchr", ] @@ -356,30 +345,29 @@ dependencies = [ [[package]] name = "anstream" -version = "0.3.2" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163" +checksum = "2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", - "is-terminal", "utf8parse", ] [[package]] name = "anstyle" -version = "1.0.0" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41ed9a86bf92ae6580e0a31281f65a1b1d867c0cc68d5346e2ae128dddfa6a7d" +checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" [[package]] name = "anstyle-parse" -version = "0.2.0" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e765fd216e48e067936442276d1d57399e37bce53c264d6fefbe298080cb57ee" +checksum = "317b9a89c1868f5ea6ff1d9539a69f45dffc21ce321ac1fd1160dfa48c8e2140" dependencies = [ "utf8parse", ] @@ -395,9 +383,9 @@ dependencies = [ [[package]] name = "anstyle-wincon" -version = "1.0.1" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188" +checksum = "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628" dependencies = [ "anstyle", "windows-sys 0.48.0", @@ -405,9 +393,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.71" +version = "1.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" [[package]] name = "arr_macro" @@ -453,9 +441,9 @@ checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" [[package]] name = "arrayvec" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8868f09ff8cea88b079da74ae569d9b8c62a23c68c746240b704ee6f7525c89c" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "assert_matches" @@ -465,9 +453,9 @@ checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" [[package]] name = "async-compression" -version = "0.3.15" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942c7cd7ae39e91bde4820d74132e9862e62c2f386c3aa90ccf55949f5bad63a" +checksum = "f658e2baef915ba0f26f1f7c42bfb8e12f532a01f449a090ded75ae7a07e9ba2" dependencies = [ "brotli", "flate2", @@ -475,15 +463,15 @@ dependencies = [ "memchr", "pin-project-lite", "tokio", - "zstd 0.11.2+zstd.1.5.2", - "zstd-safe 5.0.2+zstd.1.5.2", + "zstd 0.13.0", + "zstd-safe 7.0.0", ] [[package]] name = "async-lock" -version = "2.7.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa24f727524730b077666307f2734b4a1a1c57acb79193127dcc8914d5242dd7" +checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" dependencies = [ "event-listener", ] @@ -505,20 +493,20 @@ version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", "quote 1.0.33", - "syn 2.0.27", + "syn 2.0.38", ] [[package]] name = "async-trait" -version = "0.1.73" +version = "0.1.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0" +checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" dependencies = [ - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", "quote 1.0.33", - "syn 2.0.27", + "syn 2.0.38", ] [[package]] @@ -558,14 +546,14 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "axum" -version = "0.6.19" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a1de45611fdb535bfde7b7de4fd54f4fd2b17b1737c0a59b69bf9b92074b8c" +checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" dependencies = [ "async-trait", "axum-core", "bitflags 1.3.2", - "bytes 1.4.0", + "bytes 1.5.0", "futures-util", "http", "http-body", @@ -594,7 +582,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" dependencies = [ "async-trait", - "bytes 1.4.0", + "bytes 1.5.0", "futures-util", "http", "http-body", @@ -610,7 +598,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c1a6197b2120bb2185a267f6515038558b019e92b832bb0320e96d66268dcf9" dependencies = [ - "fastrand", + "fastrand 1.9.0", "futures-core", "pin-project", "tokio", @@ -618,15 +606,15 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.67" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233d376d6d185f2a3093e58f283f60f880315b6c60075b01f36b3b85154564ca" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" dependencies = [ "addr2line", "cc", "cfg-if 1.0.0", "libc", - "miniz_oxide 0.6.2", + "miniz_oxide", "object", "rustc-demangle", ] @@ -645,15 +633,9 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.20.0" +version = "0.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ea22880d78093b0cbe17c89f64a7d457941e65759157ec6cb31a31d652b05e5" - -[[package]] -name = "base64" -version = "0.21.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d" +checksum = "9ba43ea6f343b788c8764558649e08df62f86c6ef251fdaeb1ffd010a9ae50a2" [[package]] name = "base64ct" @@ -675,7 +657,7 @@ name = "bellman_ce" version = "0.3.2" source = "git+https://github.com/matter-labs/bellman?branch=dev#5520aa2274afe73d281373c92b007a2ecdebfbea" dependencies = [ - "arrayvec 0.7.3", + "arrayvec 0.7.4", "bit-vec", "blake2s_const 0.6.0 (git+https://github.com/matter-labs/bellman?branch=dev)", "blake2s_simd", @@ -696,9 +678,9 @@ dependencies = [ [[package]] name = "bellman_ce" version = "0.3.2" -source = "git+https://github.com/matter-labs/bellman?branch=snark-wrapper#1f05c528c392ea9eadb99b22431659c113bc0af4" +source = "git+https://github.com/matter-labs/bellman?branch=snark-wrapper#e01e5fa08a97a113e76ec8a69d06fe6cc2c82d17" dependencies = [ - "arrayvec 0.7.3", + "arrayvec 0.7.4", "bit-vec", "blake2s_const 0.6.0 (git+https://github.com/matter-labs/bellman?branch=snark-wrapper)", "blake2s_simd", @@ -750,12 +732,12 @@ dependencies = [ "lazycell", "peeking_take_while", "prettyplease", - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", "quote 1.0.33", "regex", "rustc-hash", "shlex", - "syn 2.0.27", + "syn 2.0.38", ] [[package]] @@ -775,9 +757,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.3.2" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dbe3c979c178231552ecba20214a8272df4e09f232a87aef4320cf06539aded" +checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" [[package]] name = "bitvec" @@ -823,6 +805,14 @@ dependencies = [ "digest 0.10.7", ] +[[package]] +name = "blake2" +version = "0.10.6" +source = "git+https://github.com/RustCrypto/hashes.git?rev=1f727ce37ff40fa0cce84eb8543a45bdd3ca4a4e#1f727ce37ff40fa0cce84eb8543a45bdd3ca4a4e" +dependencies = [ + "digest 0.10.7", +] + [[package]] name = "blake2-rfc_bellman_edition" version = "0.0.1" @@ -847,7 +837,7 @@ dependencies = [ [[package]] name = "blake2s_const" version = "0.6.0" -source = "git+https://github.com/matter-labs/bellman?branch=snark-wrapper#1f05c528c392ea9eadb99b22431659c113bc0af4" +source = "git+https://github.com/matter-labs/bellman?branch=snark-wrapper#e01e5fa08a97a113e76ec8a69d06fe6cc2c82d17" dependencies = [ "arrayref", "arrayvec 0.5.2", @@ -926,7 +916,7 @@ name = "block_reverter" version = "0.1.0" dependencies = [ "anyhow", - "clap 4.3.4", + "clap 4.4.6", "serde_json", "tokio", "vlog", @@ -939,15 +929,15 @@ dependencies = [ [[package]] name = "boojum" version = "0.1.0" -source = "git+https://github.com/matter-labs/era-boojum.git?branch=main#2771569baab9a59690d88cee6ba9b295c8a1e4c4" +source = "git+https://github.com/matter-labs/era-boojum.git?branch=main#84754b066959c8fdfb77edf730fc13ed87404907" dependencies = [ - "arrayvec 0.7.3", + "arrayvec 0.7.4", "bincode", - "blake2 0.10.6", + "blake2 0.10.6 (registry+https://github.com/rust-lang/crates.io-index)", "const_format", - "convert_case 0.4.0", + "convert_case 0.6.0", "crossbeam 0.8.2", - "crypto-bigint 0.5.2", + "crypto-bigint 0.5.3", "cs_derive 0.1.0 (git+https://github.com/matter-labs/era-boojum.git?branch=main)", "derivative", "ethereum-types 0.14.1", @@ -961,17 +951,17 @@ dependencies = [ "rand 0.8.5", "rayon", "serde", - "sha2 0.10.6", - "sha3 0.10.6", + "sha2 0.10.6 (registry+https://github.com/rust-lang/crates.io-index)", + "sha3 0.10.6 (git+https://github.com/RustCrypto/hashes.git?rev=7a187e934c1f6c68e4b4e5cf37541b7a0d64d303)", "smallvec", "unroll", ] [[package]] name = "brotli" -version = "3.3.4" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1a0b1dbcc8ae29329621f8d4f0d835787c1c38bb1401979b49d13b0b305ff68" +checksum = "516074a47ef4bce09577a3b379392300159ce5b1ba2e501ff1c819950066100f" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -980,9 +970,9 @@ dependencies = [ [[package]] name = "brotli-decompressor" -version = "2.3.4" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b6561fd3f895a11e8f72af2cb7d22e08366bebc2b6b57f7744c4bda27034744" +checksum = "da74e2b81409b1b743f8f0c62cc6254afefb8b8e50bbfe3735550f7aeefa3448" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -990,9 +980,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.5.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a246e68bb43f6cd9db24bea052a53e40405417c5fb372e3d1a8a7f770a564ef5" +checksum = "c79ad7fb2dd38f3dabd76b09c6a5a20c038fc0213ef1e9afd30eb777f120f019" dependencies = [ "memchr", "serde", @@ -1000,9 +990,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.13.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" [[package]] name = "byte-slice-cast" @@ -1018,15 +1008,15 @@ checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" [[package]] name = "bytecount" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c676a478f63e9fa2dd5368a42f28bba0d6c560b775f38583c8bbaa7fcd67c9c" +checksum = "ad152d03a2c813c80bb94fedbf3a3f02b28f793e39e7c214c8a0bcc196343de7" [[package]] name = "byteorder" -version = "1.4.3" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" @@ -1040,9 +1030,9 @@ dependencies = [ [[package]] name = "bytes" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" [[package]] name = "bytestring" @@ -1050,7 +1040,7 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "238e4886760d98c4f899360c834fa93e62cf7f721ac3c2da375cbdf4b8679aae" dependencies = [ - "bytes 1.4.0", + "bytes 1.5.0", ] [[package]] @@ -1066,18 +1056,18 @@ dependencies = [ [[package]] name = "camino" -version = "1.1.4" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c530edf18f37068ac2d977409ed5cd50d53d73bc653c7647b48eb78976ac9ae2" +checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c" dependencies = [ "serde", ] [[package]] name = "cargo-platform" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbdb825da8a5df079a43676dbe042702f1707b1109f713a01420fbb4cc71fa27" +checksum = "12024c4645c97566567129c204f65d5815a8c9aecf30fcbe682b2fe034996d36" dependencies = [ "serde", ] @@ -1103,11 +1093,12 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.0.79" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" dependencies = [ "jobserver", + "libc", ] [[package]] @@ -1143,7 +1134,7 @@ dependencies = [ "num-traits", "serde", "wasm-bindgen", - "windows-targets 0.48.0", + "windows-targets 0.48.5", ] [[package]] @@ -1185,12 +1176,10 @@ dependencies = [ [[package]] name = "circuit_definitions" version = "0.1.0" -source = "git+https://github.com/matter-labs/era-zkevm_test_harness.git?branch=v1.4.0#3cd647aa57fc2e1180bab53f7a3b61ec47502a46" +source = "git+https://github.com/matter-labs/era-zkevm_test_harness.git?branch=v1.4.0#43aeb53d7d9c909508a98f9fc140edff0e9d2357" dependencies = [ "crossbeam 0.8.2", "derivative", - "franklin-crypto 0.0.5 (git+https://github.com/matter-labs/franklin-crypto?branch=snark_wrapper)", - "rescue_poseidon 0.4.1 (git+https://github.com/matter-labs/rescue-poseidon.git?branch=poseidon2)", "serde", "snark_wrapper", "zk_evm 1.4.0", @@ -1239,44 +1228,42 @@ checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" dependencies = [ "bitflags 1.3.2", "clap_lex 0.2.4", - "indexmap", + "indexmap 1.9.3", "textwrap 0.16.0", ] [[package]] name = "clap" -version = "4.3.4" +version = "4.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80672091db20273a15cf9fdd4e47ed43b5091ec9841bf4c6145c9dfbbcae09ed" +checksum = "d04704f56c2cde07f43e8e2c154b43f216dc5c92fc98ada720177362f953b956" dependencies = [ "clap_builder", "clap_derive", - "once_cell", ] [[package]] name = "clap_builder" -version = "4.3.4" +version = "4.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1458a1df40e1e2afebb7ab60ce55c1fa8f431146205aa5f4887e0b111c27636" +checksum = "0e231faeaca65ebd1ea3c737966bf858971cd38c3849107aa3ea7de90a804e45" dependencies = [ "anstream", "anstyle", - "bitflags 1.3.2", - "clap_lex 0.5.0", + "clap_lex 0.5.1", "strsim 0.10.0", ] [[package]] name = "clap_derive" -version = "4.3.2" +version = "4.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8cd2b2a819ad6eec39e8f1d6b53001af1e5469f8c177579cdaeb313115b825f" +checksum = "0862016ff20d69b84ef8247369fabf5c008a7417002411897d40ee1f4532b873" dependencies = [ "heck 0.4.1", - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", "quote 1.0.33", - "syn 2.0.27", + "syn 2.0.38", ] [[package]] @@ -1290,9 +1277,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b" +checksum = "cd7cc57abe963c6d3b9d8be5b06ba7c8957a930305ca90304f24ef040aa6f961" [[package]] name = "cloudabi" @@ -1325,7 +1312,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff61280aed771c3070e7dcc9e050c66f1eb1e3b96431ba66f9f74641d02fc41d" dependencies = [ - "indexmap", + "indexmap 1.9.3", ] [[package]] @@ -1340,7 +1327,7 @@ version = "4.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" dependencies = [ - "bytes 1.4.0", + "bytes 1.5.0", "memchr", ] @@ -1364,26 +1351,26 @@ checksum = "e4c78c047431fee22c1a7bb92e00ad095a02a983affe4d8a72e2a2c62c1b94f3" [[package]] name = "const-oid" -version = "0.9.2" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "520fbf3c07483f94e3e3ca9d0cfd913d7718ef2483d2cfd91c0d9e91474ab913" +checksum = "28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6f" [[package]] name = "const_format" -version = "0.2.31" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c990efc7a285731f9a4378d81aff2f0e85a2c8781a05ef0f8baa8dac54d0ff48" +checksum = "e3a214c7af3d04997541b18d432afaff4c455e79e2029079647e72fc2bd27673" dependencies = [ "const_format_proc_macros", ] [[package]] name = "const_format_proc_macros" -version = "0.2.31" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e026b6ce194a874cb9cf32cd5772d1ef9767cc8fcb5765948d74f37a9d8b2bf6" +checksum = "c7f6ff08fd20f4f299298a28e2dfa8a8ba1036e6cd2460ac1de7b425d76f2500" dependencies = [ - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", "quote 1.0.33", "unicode-xid 0.2.4", ] @@ -1438,9 +1425,9 @@ checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" [[package]] name = "cpufeatures" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03e69e28e9f7f77debdedbaafa2866e1de9ba56df55a8bd7cfc724c25a09987c" +checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" dependencies = [ "libc", ] @@ -1692,9 +1679,9 @@ dependencies = [ [[package]] name = "crypto-bigint" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4c2f4e1afd912bc40bfd6fed5d9dc1f288e0ba01bfcc835cc5bc3eb13efe15" +checksum = "740fe28e594155f10cfc383984cbefd529d7396050557148f79cb0f621204124" dependencies = [ "rand_core 0.6.4", "subtle", @@ -1733,10 +1720,10 @@ dependencies = [ [[package]] name = "cs_derive" version = "0.1.0" -source = "git+https://github.com/matter-labs/era-boojum.git?branch=main#2771569baab9a59690d88cee6ba9b295c8a1e4c4" +source = "git+https://github.com/matter-labs/era-boojum.git?branch=main#84754b066959c8fdfb77edf730fc13ed87404907" dependencies = [ "proc-macro-error", - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", "quote 1.0.33", "syn 1.0.109", ] @@ -1744,10 +1731,10 @@ dependencies = [ [[package]] name = "cs_derive" version = "0.1.0" -source = "git+https://github.com/matter-labs/era-sync_vm.git?branch=v1.3.3#3a21c8dee43c77604350fdf33c1615e25bf1dacd" +source = "git+https://github.com/matter-labs/era-sync_vm.git?branch=v1.3.3#dad50e7eb7462a3819af8d5209d6ca243395bf51" dependencies = [ "proc-macro-error", - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", "quote 1.0.33", "serde", "syn 1.0.109", @@ -1764,9 +1751,9 @@ dependencies = [ [[package]] name = "ctrlc" -version = "3.4.0" +version = "3.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a011bbe2c35ce9c1f143b7af6f94f29a167beb4cd1d29e6740ce836f723120e" +checksum = "82e95fbd621905b854affdc67943b043a0fbb6ed7385fd5a25650d19a8a6cfdf" dependencies = [ "nix", "windows-sys 0.48.0", @@ -1790,7 +1777,7 @@ checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" dependencies = [ "fnv", "ident_case", - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", "quote 1.0.33", "strsim 0.10.0", "syn 1.0.109", @@ -1809,22 +1796,22 @@ dependencies = [ [[package]] name = "dashmap" -version = "5.4.0" +version = "5.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "907076dfda823b0b36d2a1bb5f90c96660a5bbcd7729e10727f07858f22c4edc" +checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" dependencies = [ "cfg-if 1.0.0", - "hashbrown 0.12.3", + "hashbrown 0.14.2", "lock_api", "once_cell", - "parking_lot_core 0.9.8", + "parking_lot_core 0.9.9", ] [[package]] name = "db_test_macro" version = "0.1.0" dependencies = [ - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", "quote 1.0.33", "syn 1.0.109", ] @@ -1856,17 +1843,27 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de" dependencies = [ - "const-oid 0.9.2", + "const-oid 0.9.5", "zeroize", ] +[[package]] +name = "deranged" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f32d04922c60427da6f9fef14d042d9edddef64cb9d4ce0d64d0685fbeb1fd3" +dependencies = [ + "powerfmt", + "serde", +] + [[package]] name = "derivative" version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" dependencies = [ - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", "quote 1.0.33", "syn 1.0.109", ] @@ -1878,7 +1875,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" dependencies = [ "convert_case 0.4.0", - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", "quote 1.0.33", "rustc_version", "syn 1.0.109", @@ -1959,9 +1956,9 @@ dependencies = [ [[package]] name = "either" -version = "1.8.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" dependencies = [ "serde", ] @@ -2003,9 +2000,9 @@ checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] name = "encoding_rs" -version = "0.8.32" +version = "0.8.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" +checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" dependencies = [ "cfg-if 1.0.0", ] @@ -2023,6 +2020,19 @@ dependencies = [ "termcolor", ] +[[package]] +name = "env_logger" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0" +dependencies = [ + "humantime", + "is-terminal", + "log", + "regex", + "termcolor", +] + [[package]] name = "envy" version = "0.4.2" @@ -2033,24 +2043,19 @@ dependencies = [ ] [[package]] -name = "errno" -version = "0.3.1" +name = "equivalent" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" -dependencies = [ - "errno-dragonfly", - "libc", - "windows-sys 0.48.0", -] +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] -name = "errno-dragonfly" -version = "0.1.2" +name = "errno" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +checksum = "ac3e13f66a2f95e32a39eaa81f6b95d42878ca0e1db0c7543723dfe12557e860" dependencies = [ - "cc", "libc", + "windows-sys 0.48.0", ] [[package]] @@ -2074,7 +2079,7 @@ dependencies = [ "regex", "serde", "serde_json", - "sha3 0.10.6", + "sha3 0.10.6 (registry+https://github.com/rust-lang/crates.io-index)", "thiserror", "uint", ] @@ -2129,7 +2134,7 @@ dependencies = [ "fixed-hash 0.8.0", "impl-rlp", "impl-serde 0.4.0", - "primitive-types 0.12.1", + "primitive-types 0.12.2", "uint", ] @@ -2154,6 +2159,12 @@ dependencies = [ "instant", ] +[[package]] +name = "fastrand" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" + [[package]] name = "ff" version = "0.12.1" @@ -2183,10 +2194,10 @@ version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b96fbccd88dbb1fac4ee4a07c2fcc4ca719a74ffbd9d2b9d41d8c8eb073d8b20" dependencies = [ - "num-bigint 0.4.3", + "num-bigint 0.4.4", "num-integer", "num-traits", - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", "quote 1.0.33", "serde", "syn 1.0.109", @@ -2204,6 +2215,12 @@ dependencies = [ "winapi 0.3.9", ] +[[package]] +name = "finl_unicode" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fcfdc7a0362c9f4444381a9e697c79d435fe65b52a37466fc2c1184cee9edc6" + [[package]] name = "firestorm" version = "0.5.1" @@ -2236,12 +2253,12 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.26" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" dependencies = [ "crc32fast", - "miniz_oxide 0.7.1", + "miniz_oxide", ] [[package]] @@ -2288,10 +2305,10 @@ dependencies = [ "byteorder", "digest 0.9.0", "hex", - "indexmap", + "indexmap 1.9.3", "itertools", "lazy_static", - "num-bigint 0.4.3", + "num-bigint 0.4.4", "num-derive 0.2.5", "num-integer", "num-traits", @@ -2307,7 +2324,7 @@ dependencies = [ [[package]] name = "franklin-crypto" version = "0.0.5" -source = "git+https://github.com/matter-labs/franklin-crypto?branch=snark_wrapper#b1f1677d9ece6a6ddcfbf394dc2db2bd8b792e6c" +source = "git+https://github.com/matter-labs/franklin-crypto?branch=snark_wrapper#900332b8c2fe528b5008bb4e6bf2d3f206a9ae56" dependencies = [ "arr_macro", "bellman_ce 0.3.2 (git+https://github.com/matter-labs/bellman?branch=snark-wrapper)", @@ -2320,10 +2337,10 @@ dependencies = [ "derivative", "digest 0.9.0", "hex", - "indexmap", + "indexmap 1.9.3", "itertools", "lazy_static", - "num-bigint 0.4.3", + "num-bigint 0.4.4", "num-derive 0.2.5", "num-integer", "num-traits", @@ -2442,9 +2459,9 @@ version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" dependencies = [ - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", "quote 1.0.33", - "syn 2.0.27", + "syn 2.0.38", ] [[package]] @@ -2531,9 +2548,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.27.3" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" +checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" [[package]] name = "glob" @@ -2543,11 +2560,11 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "globset" -version = "0.4.10" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "029d74589adefde59de1a0c4f4732695c32805624aec7b68d91503d4dba79afc" +checksum = "759c97c1e17c55525b57192c06a267cda0ac5210b222d6b82189a2338fa1c13d" dependencies = [ - "aho-corasick 0.7.20", + "aho-corasick", "bstr", "fnv", "log", @@ -2589,9 +2606,9 @@ dependencies = [ [[package]] name = "gloo-utils" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8e8fc851e9c7b9852508bc6e3f690f452f474417e8545ec9857b7f7377036b5" +checksum = "037fcb07216cb3a30f7292bd0176b050b7b9a052ba830ef7d5d65f6dc64ba58e" dependencies = [ "js-sys", "serde", @@ -2607,7 +2624,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "644f40175857d0b8d7b6cad6cd9594284da5041387fa2ddff30ab6d8faef65eb" dependencies = [ "async-trait", - "base64 0.21.2", + "base64 0.21.4", "google-cloud-metadata", "google-cloud-token", "home", @@ -2640,8 +2657,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "215abab97e07d144428425509c1dad07e57ea72b84b21bcdb6a8a5f12a5c4932" dependencies = [ "async-stream", - "base64 0.21.2", - "bytes 1.4.0", + "base64 0.21.4", + "bytes 1.5.0", "futures-util", "google-cloud-auth", "google-cloud-metadata", @@ -2655,7 +2672,7 @@ dependencies = [ "rsa", "serde", "serde_json", - "sha2 0.10.6", + "sha2 0.10.6 (registry+https://github.com/rust-lang/crates.io-index)", "thiserror", "time", "tokio", @@ -2702,20 +2719,20 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.19" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d357c7ae988e7d2182f7d7871d0b963962420b0678b0997ce7de72001aeab782" +checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833" dependencies = [ - "bytes 1.4.0", + "bytes 1.5.0", "fnv", "futures-core", "futures-sink", "futures-util", "http", - "indexmap", + "indexmap 1.9.3", "slab", "tokio", - "tokio-util 0.7.8", + "tokio-util 0.7.9", "tracing", ] @@ -2727,9 +2744,9 @@ checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" [[package]] name = "handlebars" -version = "4.3.7" +version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83c3372087601b532857d332f5957cbae686da52bb7810bf038c3e3c3cc2fa0d" +checksum = "c39b3bc2a8f715298032cf5087e58573809374b08160aa7d750582bdb82d2683" dependencies = [ "log", "pest", @@ -2763,6 +2780,12 @@ dependencies = [ "ahash 0.8.3", ] +[[package]] +name = "hashbrown" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156" + [[package]] name = "hashlink" version = "0.7.0" @@ -2784,13 +2807,12 @@ dependencies = [ [[package]] name = "headers" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3e372db8e5c0d213e0cd0b9be18be2aca3d44cf2fe30a9d46a65581cd454584" +checksum = "06683b93020a07e3dbcf5f8c0f6d40080d725bea7936fc01ad345c01b97dc270" dependencies = [ - "base64 0.13.1", - "bitflags 1.3.2", - "bytes 1.4.0", + "base64 0.21.4", + "bytes 1.5.0", "headers-core", "http", "httpdate", @@ -2836,18 +2858,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" -dependencies = [ - "libc", -] - -[[package]] -name = "hermit-abi" -version = "0.3.1" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" +checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" [[package]] name = "hex" @@ -2909,7 +2922,7 @@ version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" dependencies = [ - "bytes 1.4.0", + "bytes 1.5.0", "fnv", "itoa", ] @@ -2920,16 +2933,16 @@ version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" dependencies = [ - "bytes 1.4.0", + "bytes 1.5.0", "http", "pin-project-lite", ] [[package]] name = "http-range-header" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bfe8eed0a9285ef776bb792479ea3834e8b94e13d615c2f66d03dd50a435a29" +checksum = "add0ab9360ddbd88cfeb3bd9574a1d85cfdfa14db10b3e21d3700dbc4328758f" [[package]] name = "httparse" @@ -2939,9 +2952,9 @@ checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" [[package]] name = "httpdate" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "humantime" @@ -2951,11 +2964,11 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.26" +version = "0.14.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab302d72a6f11a3b910431ff93aae7e773078c769f0a3ef15fb9ec692ed147d4" +checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" dependencies = [ - "bytes 1.4.0", + "bytes 1.5.0", "futures-channel", "futures-core", "futures-util", @@ -2966,7 +2979,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2", + "socket2 0.4.9", "tokio", "tower-service", "tracing", @@ -2975,10 +2988,11 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.24.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0646026eb1b3eea4cd9ba47912ea5ce9cc07713d105b1a14698f4e6433d348b7" +checksum = "8d78e1e73ec14cf7375674f74d7dde185c8206fd9dea6fb6295e8a98098aaa97" dependencies = [ + "futures-util", "http", "hyper", "log", @@ -2994,7 +3008,7 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" dependencies = [ - "bytes 1.4.0", + "bytes 1.5.0", "hyper", "native-tls", "tokio", @@ -3009,16 +3023,16 @@ checksum = "71a816c97c42258aa5834d07590b718b4c9a598944cd39a52dc25b351185d678" [[package]] name = "iana-time-zone" -version = "0.1.57" +version = "0.1.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" +checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows", + "windows-core", ] [[package]] @@ -3061,7 +3075,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" dependencies = [ - "parity-scale-codec 3.6.1", + "parity-scale-codec 3.6.5", ] [[package]] @@ -3097,7 +3111,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" dependencies = [ - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", "quote 1.0.33", "syn 1.0.109", ] @@ -3112,11 +3126,21 @@ dependencies = [ "hashbrown 0.12.3", ] +[[package]] +name = "indexmap" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897" +dependencies = [ + "equivalent", + "hashbrown 0.14.2", +] + [[package]] name = "insta" -version = "1.29.0" +version = "1.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a28d25139df397cbca21408bb742cf6837e04cdbebf1b07b760caf971d6a972" +checksum = "5d64600be34b2fcfc267740a243fa7744441bb4947a619ac4e5bb6507f35fbfc" dependencies = [ "console", "lazy_static", @@ -3135,17 +3159,6 @@ dependencies = [ "cfg-if 1.0.0", ] -[[package]] -name = "io-lifetimes" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" -dependencies = [ - "hermit-abi 0.3.1", - "libc", - "windows-sys 0.48.0", -] - [[package]] name = "iovec" version = "0.1.4" @@ -3157,9 +3170,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.7.2" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12b6ee2129af8d4fb011108c73d99a1b83a85977f23b82460c0ae2e25bb4b57f" +checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" [[package]] name = "ipnetwork" @@ -3179,12 +3192,11 @@ dependencies = [ [[package]] name = "is-terminal" -version = "0.4.7" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f" +checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" dependencies = [ - "hermit-abi 0.3.1", - "io-lifetimes", + "hermit-abi 0.3.3", "rustix", "windows-sys 0.48.0", ] @@ -3200,15 +3212,15 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.6" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" [[package]] name = "jobserver" -version = "0.1.26" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2" +checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d" dependencies = [ "libc", ] @@ -3280,7 +3292,7 @@ version = "18.0.0" source = "git+https://github.com/matter-labs/jsonrpc.git?branch=master#12c53e3e20c09c2fb9966a4ef1b0ea63de172540" dependencies = [ "proc-macro-crate 0.1.5", - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", "quote 1.0.33", "syn 1.0.109", ] @@ -3319,7 +3331,7 @@ name = "jsonrpc-server-utils" version = "18.0.0" source = "git+https://github.com/matter-labs/jsonrpc.git?branch=master#12c53e3e20c09c2fb9966a4ef1b0ea63de172540" dependencies = [ - "bytes 1.4.0", + "bytes 1.5.0", "futures 0.3.28", "globset", "jsonrpc-core 18.0.0 (git+https://github.com/matter-labs/jsonrpc.git?branch=master)", @@ -3379,7 +3391,7 @@ dependencies = [ "thiserror", "tokio", "tokio-rustls", - "tokio-util 0.7.8", + "tokio-util 0.7.9", "tracing", "webpki-roots 0.24.0", ] @@ -3439,7 +3451,7 @@ checksum = "21dc12b1d4f16a86e8c522823c4fab219c88c03eb7c924ec0501a64bf12e058b" dependencies = [ "heck 0.4.1", "proc-macro-crate 1.3.1", - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", "quote 1.0.33", "syn 1.0.109", ] @@ -3459,7 +3471,7 @@ dependencies = [ "soketto", "tokio", "tokio-stream", - "tokio-util 0.7.8", + "tokio-util 0.7.9", "tower", "tracing", ] @@ -3507,7 +3519,7 @@ version = "8.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6971da4d9c3aa03c3d8f3ff0f4155b534aad021292003895a469716b2a230378" dependencies = [ - "base64 0.21.2", + "base64 0.21.4", "pem", "ring", "serde", @@ -3524,7 +3536,7 @@ dependencies = [ "cfg-if 1.0.0", "ecdsa", "elliptic-curve", - "sha2 0.10.6", + "sha2 0.10.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3575,9 +3587,9 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" [[package]] name = "libc" -version = "0.2.146" +version = "0.2.149" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b" +checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b" [[package]] name = "libloading" @@ -3591,9 +3603,9 @@ dependencies = [ [[package]] name = "libm" -version = "0.2.7" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7012b1bbb0719e1097c47611d3898568c546d597c2e74d66f6087edd5233ff4" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" [[package]] name = "librocksdb-sys" @@ -3611,9 +3623,9 @@ dependencies = [ [[package]] name = "libz-sys" -version = "1.1.9" +version = "1.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56ee889ecc9568871456d42f603d6a0ce59ff328d291063a45cbdf0036baf6db" +checksum = "d97137b25e321a73eef1418d1d5d2eda4d77e12813f8e6dead84bc52c5870a7b" dependencies = [ "cc", "pkg-config", @@ -3628,29 +3640,29 @@ checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" [[package]] name = "linkme" -version = "0.3.15" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f948366ad5bb46b5514ba7a7a80643726eef08b06632592699676748c8bc33b" +checksum = "91ed2ee9464ff9707af8e9ad834cffa4802f072caad90639c583dd3c62e6e608" dependencies = [ "linkme-impl", ] [[package]] name = "linkme-impl" -version = "0.3.15" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc28438cad73dcc90ff3466fc329a9252b1b8ba668eb0d5668ba97088cf4eef0" +checksum = "ba125974b109d512fccbc6c0244e7580143e460895dfd6ea7f8bbb692fd94396" dependencies = [ - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", "quote 1.0.33", - "syn 2.0.27", + "syn 2.0.38", ] [[package]] name = "linux-raw-sys" -version = "0.3.8" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" +checksum = "da2479e8c062e40bf0066ffa0bc823de0a9368974af99c9f6df941d2c231e03f" [[package]] name = "loadnext" @@ -3687,13 +3699,12 @@ dependencies = [ [[package]] name = "local-channel" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f303ec0e94c6c54447f84f3b0ef7af769858a9c4ef56ef2a986d3dcd4c3fc9c" +checksum = "e0a493488de5f18c8ffcba89eebb8532ffc562dc400490eb65b84893fae0b178" dependencies = [ "futures-core", "futures-sink", - "futures-util", "local-waker", ] @@ -3705,9 +3716,9 @@ checksum = "e34f76eb3611940e0e7d53a9aaa4e6a3151f69541a282fd0dad5571420c53ff1" [[package]] name = "lock_api" -version = "0.4.10" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" dependencies = [ "autocfg 1.1.0", "scopeguard", @@ -3715,9 +3726,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.19" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "mach" @@ -3754,9 +3765,9 @@ dependencies = [ [[package]] name = "matchit" -version = "0.7.0" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b87248edafb776e59e6ee64a79086f65890d3510f2c656c000bf2a7e8a0aea40" +checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" [[package]] name = "maybe-uninit" @@ -3766,18 +3777,19 @@ checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" [[package]] name = "md-5" -version = "0.10.5" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" dependencies = [ + "cfg-if 1.0.0", "digest 0.10.7", ] [[package]] name = "memchr" -version = "2.5.0" +version = "2.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" [[package]] name = "memoffset" @@ -3802,7 +3814,7 @@ name = "merkle_tree_consistency_checker" version = "0.1.0" dependencies = [ "anyhow", - "clap 4.3.4", + "clap 4.4.6", "tracing", "vlog", "zksync_config", @@ -3828,9 +3840,9 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a4964177ddfdab1e3a2b37aec7cf320e14169abb0ed73999f558136409178d5" dependencies = [ - "base64 0.21.2", + "base64 0.21.4", "hyper", - "indexmap", + "indexmap 1.9.3", "ipnet", "metrics", "metrics-util", @@ -3846,9 +3858,9 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ddece26afd34c31585c74a4db0630c376df271c285d682d1e55012197830b6df" dependencies = [ - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", "quote 1.0.33", - "syn 2.0.27", + "syn 2.0.38", ] [[package]] @@ -3884,9 +3896,9 @@ dependencies = [ [[package]] name = "mini-moka" -version = "0.10.0" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cafc5ec7807288595f9c20c86e6ce6d262b722f61e0547fe7e6e6e6451b58d5" +checksum = "23e0b72e7c9042467008b10279fc732326bd605459ae03bda88825909dd19b56" dependencies = [ "crossbeam-channel 0.5.8", "crossbeam-utils 0.8.16", @@ -3903,15 +3915,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" -[[package]] -name = "miniz_oxide" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" -dependencies = [ - "adler", -] - [[package]] name = "miniz_oxide" version = "0.7.1" @@ -4023,14 +4026,13 @@ dependencies = [ [[package]] name = "nix" -version = "0.26.2" +version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfdda3d196821d6af13126e40375cdf7da646a96114af134d5f417a9a1dc8e1a" +checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.1", "cfg-if 1.0.0", "libc", - "static_assertions", ] [[package]] @@ -4087,12 +4089,12 @@ dependencies = [ [[package]] name = "num" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43db66d1170d347f9a065114077f7dccb00c1b9478c89384490a3425279a4606" +checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af" dependencies = [ - "num-bigint 0.4.3", - "num-complex 0.4.3", + "num-bigint 0.4.4", + "num-complex 0.4.4", "num-integer", "num-iter", "num-rational 0.4.1", @@ -4113,9 +4115,9 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" dependencies = [ "autocfg 1.1.0", "num-integer", @@ -4125,9 +4127,9 @@ dependencies = [ [[package]] name = "num-bigint-dig" -version = "0.8.2" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2399c9463abc5f909349d8aa9ba080e0b88b3ce2885389b60b993f39b1a56905" +checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" dependencies = [ "byteorder", "lazy_static", @@ -4152,9 +4154,9 @@ dependencies = [ [[package]] name = "num-complex" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02e0d21255c828d6f128a1e41534206671e8c3ea0c62f32291e808dc82cff17d" +checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214" dependencies = [ "num-traits", ] @@ -4176,7 +4178,7 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" dependencies = [ - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", "quote 1.0.33", "syn 1.0.109", ] @@ -4232,16 +4234,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" dependencies = [ "autocfg 1.1.0", - "num-bigint 0.4.3", + "num-bigint 0.4.4", "num-integer", "num-traits", ] [[package]] name = "num-traits" -version = "0.2.15" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" dependencies = [ "autocfg 1.1.0", "libm", @@ -4249,11 +4251,11 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.2.6", + "hermit-abi 0.3.3", "libc", ] @@ -4273,16 +4275,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6" dependencies = [ "proc-macro-crate 1.3.1", - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", "quote 1.0.33", - "syn 2.0.27", + "syn 2.0.38", ] [[package]] name = "object" -version = "0.30.4" +version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03b4680b86d9cfafba8fc491dc9b6df26b68cf40e9e6cd73909194759a63c385" +checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" dependencies = [ "memchr", ] @@ -4317,7 +4319,7 @@ version = "0.10.57" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bac25ee399abb46215765b1cb35bc0212377e58a061560d8b29b024fd0430e7c" dependencies = [ - "bitflags 2.3.2", + "bitflags 2.4.1", "cfg-if 1.0.0", "foreign-types", "libc", @@ -4332,9 +4334,9 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", "quote 1.0.33", - "syn 2.0.27", + "syn 2.0.38", ] [[package]] @@ -4368,9 +4370,9 @@ dependencies = [ [[package]] name = "os_str_bytes" -version = "6.5.1" +version = "6.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d5d9eb14b174ee9aa2ef96dc2b94637a2d4b6e7cb873c7e171f0c20c6cf3eac" +checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" [[package]] name = "overload" @@ -4443,7 +4445,7 @@ version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "373b1a4c1338d9cd3d1fa53b3a11bdab5ab6bd80a20f7f7becd76953ae2be909" dependencies = [ - "arrayvec 0.7.3", + "arrayvec 0.7.4", "bitvec 0.20.4", "byte-slice-cast", "impl-trait-for-tuples", @@ -4453,15 +4455,15 @@ dependencies = [ [[package]] name = "parity-scale-codec" -version = "3.6.1" +version = "3.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2287753623c76f953acd29d15d8100bcab84d29db78fb6f352adb3c53e83b967" +checksum = "0dec8a8073036902368c2cdc0387e85ff9a37054d7e7c98e592145e0c92cd4fb" dependencies = [ - "arrayvec 0.7.3", + "arrayvec 0.7.4", "bitvec 1.0.1", "byte-slice-cast", "impl-trait-for-tuples", - "parity-scale-codec-derive 3.6.1", + "parity-scale-codec-derive 3.6.5", "serde", ] @@ -4472,19 +4474,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1557010476e0595c9b568d16dcfb81b93cdeb157612726f5170d31aa707bed27" dependencies = [ "proc-macro-crate 1.3.1", - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", "quote 1.0.33", "syn 1.0.109", ] [[package]] name = "parity-scale-codec-derive" -version = "3.6.1" +version = "3.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b6937b5e67bfba3351b87b040d48352a2fcb6ad72f81855412ce97b45c8f110" +checksum = "312270ee71e1cd70289dacf597cab7b207aa107d2f28191c2ae45b2ece18a260" dependencies = [ "proc-macro-crate 1.3.1", - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", "quote 1.0.33", "syn 1.0.109", ] @@ -4525,7 +4527,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ "lock_api", - "parking_lot_core 0.9.8", + "parking_lot_core 0.9.9", ] [[package]] @@ -4544,15 +4546,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.8" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" dependencies = [ "cfg-if 1.0.0", "libc", - "redox_syscall 0.3.5", + "redox_syscall 0.4.1", "smallvec", - "windows-targets 0.48.0", + "windows-targets 0.48.5", ] [[package]] @@ -4567,9 +4569,9 @@ dependencies = [ [[package]] name = "paste" -version = "1.0.12" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f746c4065a8fa3fe23974dd82f15431cc8d40779821001404d10d2e79ca7d79" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" [[package]] name = "pbkdf2" @@ -4625,19 +4627,20 @@ checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" [[package]] name = "pest" -version = "2.6.0" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e68e84bfb01f0507134eac1e9b410a12ba379d064eab48c50ba4ce329a527b70" +checksum = "c022f1e7b65d6a24c0dbbd5fb344c66881bc01f3e5ae74a1c8100f2f985d98a4" dependencies = [ + "memchr", "thiserror", "ucd-trie", ] [[package]] name = "pest_derive" -version = "2.6.0" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b79d4c71c865a25a4322296122e3924d30bc8ee0834c8bfc8b95f7f054afbfb" +checksum = "35513f630d46400a977c4cb58f78e1bfbe01434316e60c37d27b9ad6139c66d8" dependencies = [ "pest", "pest_generator", @@ -4645,53 +4648,53 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.6.0" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c435bf1076437b851ebc8edc3a18442796b30f1728ffea6262d59bbe28b077e" +checksum = "bc9fc1b9e7057baba189b5c626e2d6f40681ae5b6eb064dc7c7834101ec8123a" dependencies = [ "pest", "pest_meta", - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", "quote 1.0.33", - "syn 2.0.27", + "syn 2.0.38", ] [[package]] name = "pest_meta" -version = "2.6.0" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "745a452f8eb71e39ffd8ee32b3c5f51d03845f99786fa9b68db6ff509c505411" +checksum = "1df74e9e7ec4053ceb980e7c0c8bd3594e977fde1af91daba9c928e8e8c6708d" dependencies = [ "once_cell", "pest", - "sha2 0.10.6", + "sha2 0.10.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "pin-project" -version = "1.1.0" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c95a7476719eab1e366eaf73d0260af3021184f18177925b07f54b30089ceead" +checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.0" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39407670928234ebc5e6e580247dd567ad73a3578460c5990f9503df207e8f07" +checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", "quote 1.0.33", - "syn 2.0.27", + "syn 2.0.38", ] [[package]] name = "pin-project-lite" -version = "0.2.9" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" [[package]] name = "pin-utils" @@ -4739,9 +4742,9 @@ checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" [[package]] name = "plotters" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97" +checksum = "d2c224ba00d7cadd4d5c660deaf2098e5e80e07846537c51f9cfa4be50c1fd45" dependencies = [ "num-traits", "plotters-backend", @@ -4752,24 +4755,30 @@ dependencies = [ [[package]] name = "plotters-backend" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142" +checksum = "9e76628b4d3a7581389a35d5b6e2139607ad7c75b17aed325f210aa91f4a9609" [[package]] name = "plotters-svg" -version = "0.3.3" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f" +checksum = "38f6d39893cca0701371e3c27294f09797214b86f1fb951b89ade8ec04e2abab" dependencies = [ "plotters-backend", ] [[package]] name = "portable-atomic" -version = "1.3.3" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31114a898e107c51bb1609ffaf55a0e011cf6a4d7f1170d0015a165082c0338b" + +[[package]] +name = "powerfmt" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "767eb9f07d4a5ebcb39bbf2d452058a93c011373abf6832e24194a1c3f004794" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" @@ -4779,12 +4788,12 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "prettyplease" -version = "0.2.6" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b69d39aab54d069e7f2fe8cb970493e7834601ca2d8c65fd7bbd183578080d1" +checksum = "ae005bd773ab59b4725093fd7df83fd7892f7d8eafb48dbd7de6e024e4215f9d" dependencies = [ - "proc-macro2 1.0.66", - "syn 2.0.27", + "proc-macro2 1.0.69", + "syn 2.0.38", ] [[package]] @@ -4802,9 +4811,9 @@ dependencies = [ [[package]] name = "primitive-types" -version = "0.12.1" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f3486ccba82358b11a77516035647c34ba167dfa53312630de83b12bd4f3d66" +checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" dependencies = [ "fixed-hash 0.8.0", "impl-codec 0.6.0", @@ -4829,7 +4838,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" dependencies = [ "once_cell", - "toml_edit 0.19.10", + "toml_edit 0.19.15", ] [[package]] @@ -4839,7 +4848,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" dependencies = [ "proc-macro-error-attr", - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", "quote 1.0.33", "syn 1.0.109", "version_check", @@ -4851,7 +4860,7 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" dependencies = [ - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", "quote 1.0.33", "version_check", ] @@ -4873,9 +4882,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.66" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" dependencies = [ "unicode-ident", ] @@ -4898,9 +4907,9 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" dependencies = [ - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", "quote 1.0.33", - "syn 2.0.27", + "syn 2.0.38", ] [[package]] @@ -4973,7 +4982,7 @@ version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", ] [[package]] @@ -5189,9 +5198,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" +checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1" dependencies = [ "either", "rayon-core", @@ -5199,14 +5208,12 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" +checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed" dependencies = [ - "crossbeam-channel 0.5.8", "crossbeam-deque 0.8.3", "crossbeam-utils 0.8.16", - "num_cpus", ] [[package]] @@ -5236,6 +5243,15 @@ dependencies = [ "bitflags 1.3.2", ] +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + [[package]] name = "redox_users" version = "0.4.3" @@ -5249,14 +5265,14 @@ dependencies = [ [[package]] name = "regex" -version = "1.9.1" +version = "1.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2eae68fc220f7cf2532e4494aded17545fce192d59cd996e0fe7887f4ceb575" +checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" dependencies = [ - "aho-corasick 1.0.2", + "aho-corasick", "memchr", - "regex-automata 0.3.2", - "regex-syntax 0.7.3", + "regex-automata 0.4.3", + "regex-syntax 0.8.2", ] [[package]] @@ -5270,13 +5286,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.3.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83d3daa6976cffb758ec878f108ba0e062a45b2d6ca3a2cca965338855476caf" +checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" dependencies = [ - "aho-corasick 1.0.2", + "aho-corasick", "memchr", - "regex-syntax 0.7.3", + "regex-syntax 0.8.2", ] [[package]] @@ -5287,9 +5303,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.7.3" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ab07dc67230e4a4718e70fd5c20055a4334b121f1f9db8fe63ef39ce9b8c846" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" [[package]] name = "remove_dir_all" @@ -5302,12 +5318,12 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.11.18" +version = "0.11.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cde824a14b7c14f85caff81225f411faacc04a2013f41670f41443742b1c1c55" +checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b" dependencies = [ - "base64 0.21.2", - "bytes 1.4.0", + "base64 0.21.4", + "bytes 1.5.0", "encoding_rs", "futures-core", "futures-util", @@ -5331,29 +5347,29 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", + "system-configuration", "tokio", "tokio-native-tls", "tokio-rustls", - "tokio-util 0.7.8", + "tokio-util 0.7.9", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "wasm-streams", "web-sys", - "webpki-roots 0.22.6", + "webpki-roots 0.25.2", "winreg", ] [[package]] name = "rescue_poseidon" version = "0.4.1" -source = "git+https://github.com/matter-labs/rescue-poseidon.git?branch=poseidon2#09b96e7e82dadac151d8d681f017cb6a16961801" +source = "git+https://github.com/matter-labs/rescue-poseidon.git?branch=poseidon2#c4a788471710bdb7aa0f59e8756b45ef93cdd2b2" dependencies = [ "addchain", - "arrayvec 0.7.3", - "blake2 0.10.6", - "boojum", + "arrayvec 0.7.4", + "blake2 0.10.6 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder", "derivative", "franklin-crypto 0.0.5 (git+https://github.com/matter-labs/franklin-crypto?branch=snark_wrapper)", @@ -5371,11 +5387,11 @@ dependencies = [ [[package]] name = "rescue_poseidon" version = "0.4.1" -source = "git+https://github.com/matter-labs/rescue-poseidon#f611a3353e48cf42153e44d89ed90da9bc5934e8" +source = "git+https://github.com/matter-labs/rescue-poseidon#d059b5042df5ed80e151f05751410b524a54d16c" dependencies = [ "addchain", - "arrayvec 0.7.3", - "blake2 0.10.6", + "arrayvec 0.7.4", + "blake2 0.10.6 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder", "franklin-crypto 0.0.5 (git+https://github.com/matter-labs/franklin-crypto?branch=dev)", "num-bigint 0.3.3", @@ -5431,7 +5447,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" dependencies = [ - "bytes 1.4.0", + "bytes 1.5.0", "rustc-hex", ] @@ -5450,7 +5466,7 @@ name = "rocksdb_util" version = "0.1.0" dependencies = [ "anyhow", - "clap 4.3.4", + "clap 4.4.6", "tempfile", "zksync_config", "zksync_storage", @@ -5505,13 +5521,12 @@ dependencies = [ [[package]] name = "rustix" -version = "0.37.20" +version = "0.38.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b96e891d04aa506a6d1f318d2771bcb1c7dfda84e126660ace067c9b474bb2c0" +checksum = "67ce50cb2e16c2903e30d1cbccfd8387a74b9d4c938b6a4c5ec6cc7556f7a8a0" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.1", "errno", - "io-lifetimes", "libc", "linux-raw-sys", "windows-sys 0.48.0", @@ -5519,13 +5534,13 @@ dependencies = [ [[package]] name = "rustls" -version = "0.21.2" +version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e32ca28af694bc1bbf399c33a516dbdf1c90090b8ab23c2bc24f834aa2247f5f" +checksum = "cd8d6c9f025a446bc4d18ad9632e69aec8f287aa84499ee335599fabd20c3fd8" dependencies = [ "log", "ring", - "rustls-webpki 0.100.3", + "rustls-webpki", "sct", ] @@ -5543,21 +5558,11 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d194b56d58803a43635bdc398cd17e383d6f71f9182b9a192c127ca42494a59b" -dependencies = [ - "base64 0.21.2", -] - -[[package]] -name = "rustls-webpki" -version = "0.100.3" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6a5fc258f1c1276dfe3016516945546e2d5383911efc0fc4f1cdc5df3a4ae3" +checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2" dependencies = [ - "ring", - "untrusted", + "base64 0.21.4", ] [[package]] @@ -5572,15 +5577,15 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.12" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f3208ce4d8448b3f3e7d168a73f5e0c43a61e32930de3bceeccedb388b6bf06" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" [[package]] name = "ryu" -version = "1.0.13" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" [[package]] name = "salsa20" @@ -5602,18 +5607,18 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.21" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "713cfb06c7059f3588fb8044c0fad1d09e3c01d225e25b9220dbfdcf16dbb1b3" +checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" dependencies = [ - "windows-sys 0.42.0", + "windows-sys 0.48.0", ] [[package]] name = "scopeguard" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "scrypt" @@ -5694,9 +5699,9 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.9.1" +version = "2.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fc758eb7bffce5b308734e9b0c1468893cae9ff70ebf13e7090be8dcbcc83a8" +checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" dependencies = [ "bitflags 1.3.2", "core-foundation", @@ -5707,9 +5712,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.9.0" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f51d0c0d83bec45f16480d0ce0058397a69e48fcdc52d1dc8855fb68acbd31a7" +checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" dependencies = [ "core-foundation-sys", "libc", @@ -5717,9 +5722,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.17" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" +checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" dependencies = [ "serde", ] @@ -5732,9 +5737,9 @@ checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" [[package]] name = "sentry" -version = "0.31.4" +version = "0.31.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e0bd2cbc3398be701a933e5b7357a4b6b1f94038d2054f118cba90b481a9fbe" +checksum = "0097a48cd1999d983909f07cb03b15241c5af29e5e679379efac1c06296abecc" dependencies = [ "httpdate", "native-tls", @@ -5751,9 +5756,9 @@ dependencies = [ [[package]] name = "sentry-backtrace" -version = "0.31.4" +version = "0.31.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf043f9bcb6c9ae084b7f10fb363a697c924badcbe7dac2dbeecea31271ed0c" +checksum = "18a7b80fa1dd6830a348d38a8d3a9761179047757b7dca29aef82db0118b9670" dependencies = [ "backtrace", "once_cell", @@ -5763,9 +5768,9 @@ dependencies = [ [[package]] name = "sentry-contexts" -version = "0.31.4" +version = "0.31.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16bde19e361cff463253371dbabee51dab416c6f9285d6e62106539f96d12079" +checksum = "7615dc588930f1fd2e721774f25844ae93add2dbe2d3c2f995ce5049af898147" dependencies = [ "hostname", "libc", @@ -5777,9 +5782,9 @@ dependencies = [ [[package]] name = "sentry-core" -version = "0.31.4" +version = "0.31.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe345c342f17e48b65451f424ce0848405b6b3a84fa0007ba444b84754bf760a" +checksum = "8f51264e4013ed9b16558cce43917b983fa38170de2ca480349ceb57d71d6053" dependencies = [ "once_cell", "rand 0.8.5", @@ -5790,9 +5795,9 @@ dependencies = [ [[package]] name = "sentry-debug-images" -version = "0.31.4" +version = "0.31.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be9460cda9409f799f839510ff3b2ab8db6e457f3085298e18eefc463948e157" +checksum = "2fe6180fa564d40bb942c9f0084ffb5de691c7357ead6a2b7a3154fae9e401dd" dependencies = [ "findshlibs", "once_cell", @@ -5801,9 +5806,9 @@ dependencies = [ [[package]] name = "sentry-panic" -version = "0.31.4" +version = "0.31.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "063ac270f11157e435f8b133a007669a3e1a7920e23374485357a8692996188f" +checksum = "323160213bba549f9737317b152af116af35c0410f4468772ee9b606d3d6e0fa" dependencies = [ "sentry-backtrace", "sentry-core", @@ -5811,9 +5816,9 @@ dependencies = [ [[package]] name = "sentry-tracing" -version = "0.31.4" +version = "0.31.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc167b6746500ea4bb86c2c13afe7ca6f75f2ed1bcfd84243e870780b8ced529" +checksum = "38033822128e73f7b6ca74c1631cef8868890c6cb4008a291cf73530f87b4eac" dependencies = [ "sentry-backtrace", "sentry-core", @@ -5823,13 +5828,13 @@ dependencies = [ [[package]] name = "sentry-types" -version = "0.31.4" +version = "0.31.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62d10a5962144f5fb65bb1290551623e6b976f442cb2fcb4e1dfe9fe6f8e8df4" +checksum = "0e663b3eb62ddfc023c9cf5432daf5f1a4f6acb1df4d78dd80b740b32dd1a740" dependencies = [ "debugid", - "getrandom 0.2.10", "hex", + "rand 0.8.5", "serde", "serde_json", "thiserror", @@ -5840,22 +5845,22 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.175" +version = "1.0.189" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d25439cd7397d044e2748a6fe2432b5e85db703d6d097bd014b3c0ad1ebff0b" +checksum = "8e422a44e74ad4001bdc8eede9a4570ab52f71190e9c076d14369f38b9200537" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.175" +version = "1.0.189" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b23f7ade6f110613c0d63858ddb8b94c1041f550eab58a16b371bdf2c9c80ab4" +checksum = "1e48d1f918009ce3145511378cf68d613e3b3d9137d67272562080d68a2b32d5" dependencies = [ - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", "quote 1.0.33", - "syn 2.0.27", + "syn 2.0.38", ] [[package]] @@ -5910,7 +5915,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e182d6ec6f05393cc0e5ed1bf81ad6db3a8feedf8ee515ecdd369809bcce8082" dependencies = [ "darling", - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", "quote 1.0.33", "syn 1.0.109", ] @@ -5953,9 +5958,9 @@ dependencies = [ [[package]] name = "sha1" -version = "0.10.5" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ "cfg-if 1.0.0", "cpufeatures", @@ -5986,6 +5991,16 @@ dependencies = [ "digest 0.10.7", ] +[[package]] +name = "sha2" +version = "0.10.6" +source = "git+https://github.com/RustCrypto/hashes.git?rev=1731ced4a116d61ba9dc6ee6d0f38fb8102e357a#1731ced4a116d61ba9dc6ee6d0f38fb8102e357a" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.10.7", +] + [[package]] name = "sha3" version = "0.9.1" @@ -6008,20 +6023,29 @@ dependencies = [ "keccak", ] +[[package]] +name = "sha3" +version = "0.10.6" +source = "git+https://github.com/RustCrypto/hashes.git?rev=7a187e934c1f6c68e4b4e5cf37541b7a0d64d303#7a187e934c1f6c68e4b4e5cf37541b7a0d64d303" +dependencies = [ + "digest 0.10.7", + "keccak", +] + [[package]] name = "sharded-slab" -version = "0.1.4" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" dependencies = [ "lazy_static", ] [[package]] name = "shlex" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3" +checksum = "a7cee0529a6d40f580e7a5e6c495c8fbfe21b7b52795ed4bb5e62cdf92bc6380" [[package]] name = "signal-hook-registry" @@ -6044,9 +6068,9 @@ dependencies = [ [[package]] name = "similar" -version = "2.2.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "420acb44afdae038210c99e69aae24109f32f15500aa708e81d46c9f29d55fcf" +checksum = "2aeaf503862c419d66959f5d7ca015337d864e9c49485d771b732e2a20453597" [[package]] name = "simple_asn1" @@ -6054,7 +6078,7 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" dependencies = [ - "num-bigint 0.4.3", + "num-bigint 0.4.4", "num-traits", "thiserror", "time", @@ -6083,18 +6107,18 @@ checksum = "68a406c1882ed7f29cd5e248c9848a80e7cb6ae0fea82346d2746f2f941c07e1" [[package]] name = "slab" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" dependencies = [ "autocfg 1.1.0", ] [[package]] name = "smallvec" -version = "1.10.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" +checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" dependencies = [ "serde", ] @@ -6102,11 +6126,9 @@ dependencies = [ [[package]] name = "snark_wrapper" version = "0.1.0" -source = "git+https://github.com/matter-labs/snark-wrapper.git?branch=main#ce1453ed1d9cd25022a075ff5efb2fb387ea1ab9" +source = "git+https://github.com/matter-labs/snark-wrapper.git?branch=main#52f9ef98a7e6c86b405dd0ec42291dacf6e2bcb4" dependencies = [ - "boojum", "derivative", - "franklin-crypto 0.0.5 (git+https://github.com/matter-labs/franklin-crypto?branch=snark_wrapper)", "rand 0.4.6", "rescue_poseidon 0.4.1 (git+https://github.com/matter-labs/rescue-poseidon.git?branch=poseidon2)", ] @@ -6121,6 +6143,16 @@ dependencies = [ "winapi 0.3.9", ] +[[package]] +name = "socket2" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4031e820eb552adee9295814c0ced9e5cf38ddf1e8b7d566d6de8e2538ea989e" +dependencies = [ + "libc", + "windows-sys 0.48.0", +] + [[package]] name = "soketto" version = "0.7.1" @@ -6128,7 +6160,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41d1c5305e39e09653383c2c7244f2f78b3bcae37cf50c64cb4789c9f5096ec2" dependencies = [ "base64 0.13.1", - "bytes 1.4.0", + "bytes 1.5.0", "futures 0.3.28", "http", "httparse", @@ -6202,7 +6234,7 @@ dependencies = [ "bigdecimal", "bitflags 1.3.2", "byteorder", - "bytes 1.4.0", + "bytes 1.5.0", "chrono", "crc", "crossbeam-queue 0.3.8", @@ -6217,7 +6249,7 @@ dependencies = [ "hex", "hkdf", "hmac 0.12.1", - "indexmap", + "indexmap 1.9.3", "ipnetwork", "itoa", "libc", @@ -6232,7 +6264,7 @@ dependencies = [ "serde", "serde_json", "sha-1 0.10.1", - "sha2 0.10.6", + "sha2 0.10.6 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec", "sqlformat", "sqlx-rt", @@ -6254,11 +6286,11 @@ dependencies = [ "heck 0.4.1", "hex", "once_cell", - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", "quote 1.0.33", "serde", "serde_json", - "sha2 0.10.6", + "sha2 0.10.6 (registry+https://github.com/rust-lang/crates.io-index)", "sqlx-core", "sqlx-rt", "syn 1.0.109", @@ -6293,7 +6325,7 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" name = "storage_logs_dedup_migration" version = "0.1.0" dependencies = [ - "clap 4.3.4", + "clap 4.4.6", "tokio", "zksync_dal", "zksync_types", @@ -6301,10 +6333,11 @@ dependencies = [ [[package]] name = "stringprep" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ee348cb74b87454fff4b551cbf727025810a004f88aeacae7f85b87f4e9a1c1" +checksum = "bb41d74e231a107a1b4ee36bd1214b11285b77768d2e3824aedafa988fd36ee6" dependencies = [ + "finl_unicode", "unicode-bidi", "unicode-normalization", ] @@ -6340,7 +6373,7 @@ checksum = "dcb5ae327f9cc13b68763b5749770cb9e048a99bd9dfdfa58d0cf05d5f64afe0" dependencies = [ "heck 0.3.3", "proc-macro-error", - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", "quote 1.0.33", "syn 1.0.109", ] @@ -6361,7 +6394,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" dependencies = [ "heck 0.4.1", - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", "quote 1.0.33", "rustversion", "syn 1.0.109", @@ -6390,18 +6423,18 @@ version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", "quote 1.0.33", "unicode-ident", ] [[package]] name = "syn" -version = "2.0.27" +version = "2.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b60f673f44a8255b9c8c657daf66a596d435f2da81a555b06dc644d080ba45e0" +checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b" dependencies = [ - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", "quote 1.0.33", "unicode-ident", ] @@ -6409,15 +6442,15 @@ dependencies = [ [[package]] name = "sync_vm" version = "1.3.3" -source = "git+https://github.com/matter-labs/era-sync_vm.git?branch=v1.3.3#3a21c8dee43c77604350fdf33c1615e25bf1dacd" +source = "git+https://github.com/matter-labs/era-sync_vm.git?branch=v1.3.3#dad50e7eb7462a3819af8d5209d6ca243395bf51" dependencies = [ - "arrayvec 0.7.3", + "arrayvec 0.7.4", "cs_derive 0.1.0 (git+https://github.com/matter-labs/era-sync_vm.git?branch=v1.3.3)", "derivative", "franklin-crypto 0.0.5 (git+https://github.com/matter-labs/franklin-crypto?branch=dev)", "hex", "itertools", - "num-bigint 0.4.3", + "num-bigint 0.4.4", "num-derive 0.3.3", "num-integer", "num-traits", @@ -6425,8 +6458,8 @@ dependencies = [ "rand 0.4.6", "rescue_poseidon 0.4.1 (git+https://github.com/matter-labs/rescue-poseidon)", "serde", - "sha2 0.10.6", - "sha3 0.10.6", + "sha2 0.10.6 (registry+https://github.com/rust-lang/crates.io-index)", + "sha3 0.10.6 (git+https://github.com/RustCrypto/hashes.git?rev=7a187e934c1f6c68e4b4e5cf37541b7a0d64d303)", "smallvec", "zk_evm 1.3.3", "zkevm_opcode_defs 1.3.2", @@ -6438,6 +6471,27 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "system-constants-generator" version = "0.1.0" @@ -6477,13 +6531,12 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.6.0" +version = "3.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31c0432476357e58790aaa47a8efb0c5138f137343f3b5f23bd36a27e3b0a6d6" +checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" dependencies = [ - "autocfg 1.1.0", "cfg-if 1.0.0", - "fastrand", + "fastrand 2.0.1", "redox_syscall 0.3.5", "rustix", "windows-sys 0.48.0", @@ -6491,22 +6544,22 @@ dependencies = [ [[package]] name = "termcolor" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" +checksum = "6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64" dependencies = [ "winapi-util", ] [[package]] name = "test-log" -version = "0.2.12" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9601d162c1d77e62c1ea0bc8116cd1caf143ce3af947536c3c9052a1677fe0c" +checksum = "f66edd6b6cd810743c0c71e1d085e92b01ce6a72782032e3f794c8284fe4bcdd" dependencies = [ - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", "quote 1.0.33", - "syn 1.0.109", + "syn 2.0.38", ] [[package]] @@ -6526,22 +6579,22 @@ checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" [[package]] name = "thiserror" -version = "1.0.40" +version = "1.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" +checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.40" +version = "1.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" +checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" dependencies = [ - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", "quote 1.0.33", - "syn 2.0.27", + "syn 2.0.38", ] [[package]] @@ -6576,11 +6629,13 @@ dependencies = [ [[package]] name = "time" -version = "0.3.22" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea9e1b3cf1243ae005d9e74085d4d542f3125458f3a81af210d901dcd7411efd" +checksum = "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5" dependencies = [ + "deranged", "itoa", + "powerfmt", "serde", "time-core", "time-macros", @@ -6588,15 +6643,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.9" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "372950940a5f07bf38dbe211d7283c9e6d7327df53794992d293e534c733d09b" +checksum = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20" dependencies = [ "time-core", ] @@ -6646,19 +6701,19 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.28.2" +version = "1.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94d7b1cfd2aa4011f2de74c2c4c63665e27a71006b0a192dcd2710272e73dfa2" +checksum = "4f38200e3ef7995e5ef13baec2f432a6da0aa9ac495b2c0e8f3b7eec2c92d653" dependencies = [ - "autocfg 1.1.0", - "bytes 1.4.0", + "backtrace", + "bytes 1.5.0", "libc", "mio 0.8.8", "num_cpus", "parking_lot 0.12.1", "pin-project-lite", "signal-hook-registry", - "socket2", + "socket2 0.5.4", "tokio-macros", "windows-sys 0.48.0", ] @@ -6669,9 +6724,9 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" dependencies = [ - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", "quote 1.0.33", - "syn 2.0.27", + "syn 2.0.38", ] [[package]] @@ -6711,7 +6766,7 @@ version = "0.6.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507" dependencies = [ - "bytes 1.4.0", + "bytes 1.5.0", "futures-core", "futures-sink", "log", @@ -6721,11 +6776,11 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.8" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" +checksum = "1d68074620f57a0b21594d9735eb2e98ab38b17f80d3fcb189fca266771ca60d" dependencies = [ - "bytes 1.4.0", + "bytes 1.5.0", "futures-core", "futures-io", "futures-sink", @@ -6745,9 +6800,9 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a76a9312f5ba4c2dec6b9161fdf25d87ad8a09256ccea5a556fef03c706a10f" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" [[package]] name = "toml_edit" @@ -6756,17 +6811,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5376256e44f2443f8896ac012507c19a012df0fe8758b55246ae51a2279db51f" dependencies = [ "combine", - "indexmap", + "indexmap 1.9.3", "itertools", ] [[package]] name = "toml_edit" -version = "0.19.10" +version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2380d56e8670370eee6566b0bfd4265f65b3f432e8c6d85623f728d4fa31f739" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap", + "indexmap 2.0.2", "toml_datetime", "winnow", ] @@ -6780,13 +6835,13 @@ dependencies = [ "futures-core", "futures-util", "hdrhistogram", - "indexmap", + "indexmap 1.9.3", "pin-project", "pin-project-lite", "rand 0.8.5", "slab", "tokio", - "tokio-util 0.7.8", + "tokio-util 0.7.9", "tower-layer", "tower-service", "tracing", @@ -6794,14 +6849,14 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.4.1" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8bd22a874a2d0b70452d5597b12c537331d49060824a95f49f108994f94aa4c" +checksum = "61c5bb1d698276a2443e5ecfabc1008bf15a36c12e6a7176e7bf089ea9131140" dependencies = [ "async-compression", - "base64 0.20.0", - "bitflags 2.3.2", - "bytes 1.4.0", + "base64 0.21.4", + "bitflags 2.4.1", + "bytes 1.5.0", "futures-core", "futures-util", "http", @@ -6814,7 +6869,7 @@ dependencies = [ "percent-encoding", "pin-project-lite", "tokio", - "tokio-util 0.7.8", + "tokio-util 0.7.9", "tower", "tower-layer", "tower-service", @@ -6836,11 +6891,10 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" -version = "0.1.37" +version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ - "cfg-if 1.0.0", "log", "pin-project-lite", "tracing-attributes", @@ -6849,20 +6903,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.24" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f57e3ca2a01450b1a921183a9c9cbfda207fd822cef4ccb00a65402cbba7a74" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", "quote 1.0.33", - "syn 2.0.27", + "syn 2.0.38", ] [[package]] name = "tracing-core" -version = "0.1.31" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ "once_cell", "valuable", @@ -6925,15 +6979,15 @@ checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" [[package]] name = "typenum" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "ucd-trie" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e79c4d996edb816c91e4308506774452e55e95c3c9de07b6729e17e15a5ef81" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" [[package]] name = "uint" @@ -6958,9 +7012,9 @@ dependencies = [ [[package]] name = "unicase" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" +checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" dependencies = [ "version_check", ] @@ -6973,9 +7027,9 @@ checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" [[package]] name = "unicode-ident" -version = "1.0.9" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" @@ -6994,9 +7048,9 @@ checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" [[package]] name = "unicode-width" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" +checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" [[package]] name = "unicode-xid" @@ -7034,11 +7088,11 @@ checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" [[package]] name = "ureq" -version = "2.7.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4b45063f47caea744e48f5baa99169bd8bd9b882d80a99941141327bbb00f99" +checksum = "f5ccd538d4a604753ebc2f17cd9946e89b77bf87f6a8e2309667c6f2e87855e3" dependencies = [ - "base64 0.21.2", + "base64 0.21.4", "log", "native-tls", "once_cell", @@ -7047,9 +7101,9 @@ dependencies = [ [[package]] name = "url" -version = "2.4.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" +checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" dependencies = [ "form_urlencoded", "idna", @@ -7059,9 +7113,9 @@ dependencies = [ [[package]] name = "urlencoding" -version = "2.1.2" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8db7427f936968176eaa7cdf81b7f98b980b18495ec28f1b5791ac3bfe3eea9" +checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" [[package]] name = "utf8parse" @@ -7071,9 +7125,9 @@ checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" [[package]] name = "uuid" -version = "1.3.4" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa2982af2eec27de306107c027578ff7f423d65f7250e40ce0fea8f45248b81" +checksum = "88ad59a7560b41a70d191093a945f0b87bc1deeda46fb237479708a1d6b6cdfc" dependencies = [ "getrandom 0.2.10", "serde", @@ -7144,9 +7198,9 @@ name = "vise-macros" version = "0.1.0" source = "git+https://github.com/matter-labs/vise.git?rev=dd05139b76ab0843443ab3ff730174942c825dae#dd05139b76ab0843443ab3ff730174942c825dae" dependencies = [ - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", "quote 1.0.33", - "syn 2.0.27", + "syn 2.0.38", ] [[package]] @@ -7303,9 +7357,9 @@ dependencies = [ [[package]] name = "walkdir" -version = "2.3.3" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" +checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" dependencies = [ "same-file", "winapi-util", @@ -7357,9 +7411,9 @@ dependencies = [ "bumpalo", "log", "once_cell", - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", "quote 1.0.33", - "syn 2.0.27", + "syn 2.0.38", "wasm-bindgen-shared", ] @@ -7391,9 +7445,9 @@ version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ - "proc-macro2 1.0.66", + "proc-macro2 1.0.69", "quote 1.0.33", - "syn 2.0.27", + "syn 2.0.38", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -7406,9 +7460,9 @@ checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" [[package]] name = "wasm-streams" -version = "0.2.3" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bbae3363c08332cadccd13b67db371814cd214c2524020932f0804b8cf7c078" +checksum = "b4609d447824375f43e1ffbc051b50ad8f4b3ae8219680c94452ea05eb240ac7" dependencies = [ "futures-util", "js-sys", @@ -7433,9 +7487,9 @@ version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5388522c899d1e1c96a4c307e3797e0f697ba7c77dd8e0e625ecba9dd0342937" dependencies = [ - "arrayvec 0.7.3", - "base64 0.21.2", - "bytes 1.4.0", + "arrayvec 0.7.4", + "base64 0.21.4", + "bytes 1.5.0", "derive_more", "ethabi", "ethereum-types 0.14.1", @@ -7458,39 +7512,26 @@ dependencies = [ "url", ] -[[package]] -name = "webpki" -version = "0.22.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07ecc0cd7cac091bf682ec5efa18b1cff79d617b84181f38b3951dbe135f607f" -dependencies = [ - "ring", - "untrusted", -] - [[package]] name = "webpki-roots" -version = "0.22.6" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87" +checksum = "b291546d5d9d1eab74f069c77749f2cb8504a12caa20f0f2de93ddbf6f411888" dependencies = [ - "webpki", + "rustls-webpki", ] [[package]] name = "webpki-roots" -version = "0.24.0" +version = "0.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b291546d5d9d1eab74f069c77749f2cb8504a12caa20f0f2de93ddbf6f411888" -dependencies = [ - "rustls-webpki 0.101.6", -] +checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" [[package]] name = "whoami" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c70234412ca409cc04e864e89523cb0fc37f5e1344ebed5a3ebf4192b6b9f68" +checksum = "22fc3756b8a9133049b26c7f61ab35416c130e8c09b660f5b3958b446f52cc50" dependencies = [ "wasm-bindgen", "web-sys", @@ -7526,9 +7567,9 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" dependencies = [ "winapi 0.3.9", ] @@ -7540,27 +7581,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] -name = "windows" -version = "0.48.0" +name = "windows-core" +version = "0.51.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" dependencies = [ - "windows-targets 0.48.0", -] - -[[package]] -name = "windows-sys" -version = "0.42.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", + "windows-targets 0.48.5", ] [[package]] @@ -7578,7 +7604,7 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets 0.48.0", + "windows-targets 0.48.5", ] [[package]] @@ -7598,17 +7624,17 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ - "windows_aarch64_gnullvm 0.48.0", - "windows_aarch64_msvc 0.48.0", - "windows_i686_gnu 0.48.0", - "windows_i686_msvc 0.48.0", - "windows_x86_64_gnu 0.48.0", - "windows_x86_64_gnullvm 0.48.0", - "windows_x86_64_msvc 0.48.0", + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", ] [[package]] @@ -7619,9 +7645,9 @@ checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_msvc" @@ -7631,9 +7657,9 @@ checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" [[package]] name = "windows_aarch64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_i686_gnu" @@ -7643,9 +7669,9 @@ checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" [[package]] name = "windows_i686_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_msvc" @@ -7655,9 +7681,9 @@ checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" [[package]] name = "windows_i686_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_x86_64_gnu" @@ -7667,9 +7693,9 @@ checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" [[package]] name = "windows_x86_64_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnullvm" @@ -7679,9 +7705,9 @@ checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_msvc" @@ -7691,26 +7717,27 @@ checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" [[package]] name = "windows_x86_64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "winnow" -version = "0.4.7" +version = "0.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca0ace3845f0d96209f0375e6d367e3eb87eb65d27d445bdc9f1843a26f39448" +checksum = "a3b801d0e0a6726477cc207f60162da452f3a95adb368399bef20a946e06f65c" dependencies = [ "memchr", ] [[package]] name = "winreg" -version = "0.10.1" +version = "0.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" dependencies = [ - "winapi 0.3.9", + "cfg-if 1.0.0", + "windows-sys 0.48.0", ] [[package]] @@ -7758,14 +7785,14 @@ name = "zk_evm" version = "1.3.1" source = "git+https://github.com/matter-labs/era-zk_evm.git?tag=v1.3.1-rc1#cec6535e2bcb1e8f0bad1befaaddec8da7f11b24" dependencies = [ - "blake2 0.10.6", + "blake2 0.10.6 (registry+https://github.com/rust-lang/crates.io-index)", "k256", "lazy_static", - "num 0.4.0", + "num 0.4.1", "serde", "serde_json", - "sha2 0.10.6", - "sha3 0.10.6", + "sha2 0.10.6 (registry+https://github.com/rust-lang/crates.io-index)", + "sha3 0.10.6 (registry+https://github.com/rust-lang/crates.io-index)", "static_assertions", "zkevm_opcode_defs 1.3.1", ] @@ -7773,11 +7800,11 @@ dependencies = [ [[package]] name = "zk_evm" version = "1.3.3" -source = "git+https://github.com/matter-labs/era-zk_evm.git?branch=v1.3.3#fe8215a7047d24430ad470cf15a19bedb4d6ba0b" +source = "git+https://github.com/matter-labs/era-zk_evm.git?branch=v1.3.3#fbee20f5bac7d6ca3e22ae69b2077c510a07de4e" dependencies = [ "anyhow", "lazy_static", - "num 0.4.0", + "num 0.4.1", "serde", "serde_json", "static_assertions", @@ -7788,11 +7815,11 @@ dependencies = [ [[package]] name = "zk_evm" version = "1.4.0" -source = "git+https://github.com/matter-labs/era-zk_evm.git?branch=v1.4.0#e33a5ded1b53e35d261fdb46e6d16f2c900b217f" +source = "git+https://github.com/matter-labs/era-zk_evm.git?branch=v1.4.0#dd76fc5badf2c05278a21b38015a7798fe2fe358" dependencies = [ "anyhow", "lazy_static", - "num 0.4.0", + "num 0.4.1", "serde", "serde_json", "static_assertions", @@ -7816,14 +7843,14 @@ name = "zkevm-assembly" version = "1.3.1" source = "git+https://github.com/matter-labs/era-zkEVM-assembly.git?tag=v1.3.1-rc0#dabbb07e84dd886ee90dde2b5dde0acbf9b0123a" dependencies = [ - "env_logger", + "env_logger 0.9.3", "hex", "lazy_static", "log", "nom", - "num-bigint 0.4.3", + "num-bigint 0.4.4", "num-traits", - "sha3 0.10.6", + "sha3 0.10.6 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec", "structopt", "thiserror", @@ -7835,14 +7862,14 @@ name = "zkevm-assembly" version = "1.3.2" source = "git+https://github.com/matter-labs/era-zkEVM-assembly.git?branch=v1.3.2#3c61d450cbe6548068be8f313ed02f1bd229a865" dependencies = [ - "env_logger", + "env_logger 0.9.3", "hex", "lazy_static", "log", "nom", - "num-bigint 0.4.3", + "num-bigint 0.4.4", "num-traits", - "sha3 0.10.6", + "sha3 0.10.6 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec", "structopt", "thiserror", @@ -7854,7 +7881,7 @@ name = "zkevm_circuits" version = "1.4.0" source = "git+https://github.com/matter-labs/era-zkevm_circuits.git?branch=main#4fba537ccecc238e2da9c80844dc8c185e42466f" dependencies = [ - "arrayvec 0.7.3", + "arrayvec 0.7.4", "bincode", "boojum", "cs_derive 0.1.0 (git+https://github.com/matter-labs/era-boojum.git?branch=main)", @@ -7877,21 +7904,21 @@ dependencies = [ "bitflags 1.3.2", "ethereum-types 0.14.1", "lazy_static", - "sha2 0.10.6", + "sha2 0.10.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "zkevm_opcode_defs" version = "1.3.2" -source = "git+https://github.com/matter-labs/era-zkevm_opcode_defs.git?branch=v1.3.2#c7ab62f4c60b27dfc690c3ab3efb5fff1ded1a25" +source = "git+https://github.com/matter-labs/era-zkevm_opcode_defs.git?branch=v1.3.2#dffacadeccdfdbff4bc124d44c595c4a6eae5013" dependencies = [ - "bitflags 2.3.2", - "blake2 0.10.6", + "bitflags 2.4.1", + "blake2 0.10.6 (git+https://github.com/RustCrypto/hashes.git?rev=1f727ce37ff40fa0cce84eb8543a45bdd3ca4a4e)", "ethereum-types 0.14.1", "k256", "lazy_static", - "sha2 0.10.6", - "sha3 0.10.6", + "sha2 0.10.6 (git+https://github.com/RustCrypto/hashes.git?rev=1731ced4a116d61ba9dc6ee6d0f38fb8102e357a)", + "sha3 0.10.6 (git+https://github.com/RustCrypto/hashes.git?rev=7a187e934c1f6c68e4b4e5cf37541b7a0d64d303)", ] [[package]] @@ -7904,9 +7931,9 @@ dependencies = [ "codegen 0.2.0", "crossbeam 0.8.2", "derivative", - "env_logger", + "env_logger 0.10.0", "hex", - "num-bigint 0.4.3", + "num-bigint 0.4.4", "num-integer", "num-traits", "rayon", @@ -7924,21 +7951,20 @@ dependencies = [ [[package]] name = "zkevm_test_harness" version = "1.4.0" -source = "git+https://github.com/matter-labs/era-zkevm_test_harness.git?branch=v1.4.0#3cd647aa57fc2e1180bab53f7a3b61ec47502a46" +source = "git+https://github.com/matter-labs/era-zkevm_test_harness.git?branch=v1.4.0#43aeb53d7d9c909508a98f9fc140edff0e9d2357" dependencies = [ "bincode", "circuit_definitions", "codegen 0.2.0", "crossbeam 0.8.2", "derivative", - "env_logger", + "env_logger 0.10.0", "hex", + "rand 0.4.6", "rayon", - "rescue_poseidon 0.4.1 (git+https://github.com/matter-labs/rescue-poseidon.git?branch=poseidon2)", "serde", "serde_json", "smallvec", - "snark_wrapper", "structopt", "test-log", "tracing", @@ -8138,7 +8164,7 @@ name = "zksync_crypto" version = "0.1.0" dependencies = [ "base64 0.13.1", - "blake2 0.10.6", + "blake2 0.10.6 (registry+https://github.com/rust-lang/crates.io-index)", "hex", "once_cell", "serde", @@ -8222,7 +8248,7 @@ name = "zksync_external_node" version = "0.1.0" dependencies = [ "anyhow", - "clap 4.3.4", + "clap 4.4.6", "envy", "futures 0.3.28", "prometheus_exporter", @@ -8270,7 +8296,7 @@ name = "zksync_merkle_tree" version = "0.1.0" dependencies = [ "assert_matches", - "clap 4.3.4", + "clap 4.4.6", "insta", "leb128", "once_cell", @@ -8353,7 +8379,7 @@ name = "zksync_server" version = "0.1.0" dependencies = [ "anyhow", - "clap 4.3.4", + "clap 4.4.6", "futures 0.3.28", "tikv-jemallocator", "tokio", @@ -8415,7 +8441,7 @@ dependencies = [ name = "zksync_types" version = "0.1.0" dependencies = [ - "blake2 0.10.6", + "blake2 0.10.6 (registry+https://github.com/rust-lang/crates.io-index)", "chrono", "codegen 0.1.0", "ethereum-types 0.12.1", @@ -8500,27 +8526,27 @@ dependencies = [ [[package]] name = "zstd" -version = "0.11.2+zstd.1.5.2" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" +checksum = "1a27595e173641171fc74a1232b7b1c7a7cb6e18222c11e9dfb9888fa424c53c" dependencies = [ - "zstd-safe 5.0.2+zstd.1.5.2", + "zstd-safe 6.0.6", ] [[package]] name = "zstd" -version = "0.12.3+zstd.1.5.2" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76eea132fb024e0e13fd9c2f5d5d595d8a967aa72382ac2f9d39fcc95afd0806" +checksum = "bffb3309596d527cfcba7dfc6ed6052f1d39dfbd7c867aa2e865e4a449c10110" dependencies = [ - "zstd-safe 6.0.5+zstd.1.5.4", + "zstd-safe 7.0.0", ] [[package]] name = "zstd-safe" -version = "5.0.2+zstd.1.5.2" +version = "6.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" +checksum = "ee98ffd0b48ee95e6c5168188e44a54550b1564d9d530ee21d5f0eaed1069581" dependencies = [ "libc", "zstd-sys", @@ -8528,21 +8554,19 @@ dependencies = [ [[package]] name = "zstd-safe" -version = "6.0.5+zstd.1.5.4" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d56d9e60b4b1758206c238a10165fbcae3ca37b01744e394c463463f6529d23b" +checksum = "43747c7422e2924c11144d5229878b98180ef8b06cca4ab5af37afc8a8d8ea3e" dependencies = [ - "libc", "zstd-sys", ] [[package]] name = "zstd-sys" -version = "2.0.8+zstd.1.5.5" +version = "2.0.9+zstd.1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5556e6ee25d32df2586c098bbfa278803692a20d0ab9565e049480d52707ec8c" +checksum = "9e16efa8a874a0481a574084d34cc26fdb3b99627480f785888deb6386506656" dependencies = [ "cc", - "libc", "pkg-config", ] diff --git a/core/lib/types/src/storage/writes/mod.rs b/core/lib/types/src/storage/writes/mod.rs index 345c181356b..530212163ce 100644 --- a/core/lib/types/src/storage/writes/mod.rs +++ b/core/lib/types/src/storage/writes/mod.rs @@ -11,7 +11,6 @@ pub mod compression; pub const BYTES_PER_ENUMERATION_INDEX: u8 = 4; pub const BYTES_PER_DERIVED_KEY: u8 = 32; -const COMPRESSION_VERSION_NUMBER: u8 = 1; // Total byte size of all fields in StateDiffRecord struct // 20 + 32 + 32 +8 + 32 + 32 const STATE_DIFF_RECORD_SIZE: usize = 156; From 42ab3aee6cac3527e159293b2d620e76edfd57e1 Mon Sep 17 00:00:00 2001 From: koloz Date: Fri, 20 Oct 2023 11:37:52 -0400 Subject: [PATCH 039/108] removed unnecessary calls --- core/lib/vm/src/oracles/storage.rs | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/core/lib/vm/src/oracles/storage.rs b/core/lib/vm/src/oracles/storage.rs index c1afecbd8fe..4e6304bfc34 100644 --- a/core/lib/vm/src/oracles/storage.rs +++ b/core/lib/vm/src/oracles/storage.rs @@ -134,10 +134,7 @@ impl StorageOracle { query.read_value = current_value; - if !self.initial_values.inner().contains_key(&key) { - self.initial_values - .insert(key, current_value, query.timestamp); - } + self.set_initial_value(&key, current_value, query.timestamp); let mut storage_log_query = StorageLogQuery { log_query: query, @@ -341,8 +338,6 @@ impl VmStorageOracle for StorageOracle { .get_initial_value(&storage_key) .unwrap_or(self.storage.read_from_storage(&storage_key)); - self.set_initial_value(&storage_key, initial_value, query.timestamp); - if to_pay_by_user > prepaid { self.paid_changes.apply_historic_record( HashMapHistoryEvent { From 83eb61488eaeca5d2dfd102be0e5558b7ce06a6b Mon Sep 17 00:00:00 2001 From: Danil Date: Wed, 25 Oct 2023 11:07:45 +0200 Subject: [PATCH 040/108] Remove legacy types and keep only new types Signed-off-by: Danil --- core/lib/config/src/configs/contracts.rs | 4 +-- core/lib/contracts/src/lib.rs | 4 +-- .../src/glue/types/vm/vm_block_result.rs | 28 ++++--------------- .../types/vm/vm_partial_execution_result.rs | 24 ++-------------- .../src/interface/types/legacy_types.rs | 15 ---------- core/lib/multivm/src/interface/types/mod.rs | 1 - core/lib/multivm/src/versions/vm_1_3_2/vm.rs | 5 ++-- core/lib/multivm/src/versions/vm_latest/vm.rs | 2 ++ core/lib/multivm/src/versions/vm_m5/vm.rs | 5 ++-- .../src/versions/vm_m6/oracles/precompile.rs | 2 +- core/lib/multivm/src/versions/vm_m6/vm.rs | 5 ++-- .../src/versions/vm_m6/vm_with_bootloader.rs | 2 +- .../vm_virtual_blocks/implementation/logs.rs | 5 ++-- core/lib/zksync_core/src/eth_watch/mod.rs | 6 ++-- core/lib/zksync_core/src/lib.rs | 6 +--- 15 files changed, 32 insertions(+), 82 deletions(-) delete mode 100644 core/lib/multivm/src/interface/types/legacy_types.rs diff --git a/core/lib/config/src/configs/contracts.rs b/core/lib/config/src/configs/contracts.rs index b8ab24d9dc2..1ae5e327ff2 100644 --- a/core/lib/config/src/configs/contracts.rs +++ b/core/lib/config/src/configs/contracts.rs @@ -8,7 +8,7 @@ use super::envy_load; /// Data about deployed contracts. #[derive(Debug, Deserialize, Clone, PartialEq)] pub struct ContractsConfig { - pub governance_addr: Option
, + pub governance_addr: Address, pub mailbox_facet_addr: Address, pub executor_facet_addr: Address, pub admin_facet_addr: Address, @@ -53,7 +53,7 @@ mod tests { fn expected_config() -> ContractsConfig { ContractsConfig { - governance_addr: Some(addr("d8dA6BF26964aF9D7eEd9e03E53415D37aA96045")), + governance_addr: addr("d8dA6BF26964aF9D7eEd9e03E53415D37aA96045"), mailbox_facet_addr: addr("0f6Fa881EF414Fc6E818180657c2d5CD7Ac6cCAd"), executor_facet_addr: addr("18B631537801963A964211C0E86645c1aBfbB2d3"), admin_facet_addr: addr("1e12b20BE86bEc3A0aC95aA52ade345cB9AE7a32"), diff --git a/core/lib/contracts/src/lib.rs b/core/lib/contracts/src/lib.rs index cdc5b8b0e6a..c0dcd3dca7d 100644 --- a/core/lib/contracts/src/lib.rs +++ b/core/lib/contracts/src/lib.rs @@ -81,8 +81,8 @@ pub fn read_contract_abi(path: impl AsRef) -> String { .to_string() } -pub fn governance_contract() -> Option { - load_contract_if_present(GOVERNANCE_CONTRACT_FILE) +pub fn governance_contract() -> Contract { + load_contract_if_present(GOVERNANCE_CONTRACT_FILE).expect("Governance contract not found") } pub fn zksync_contract() -> Contract { diff --git a/core/lib/multivm/src/glue/types/vm/vm_block_result.rs b/core/lib/multivm/src/glue/types/vm/vm_block_result.rs index 62fc07b0bf9..50c625c317d 100644 --- a/core/lib/multivm/src/glue/types/vm/vm_block_result.rs +++ b/core/lib/multivm/src/glue/types/vm/vm_block_result.rs @@ -14,13 +14,7 @@ impl GlueFrom for crate::interface::FinishedL1B crate::interface::FinishedL1Batch { block_tip_execution_result: VmExecutionResultAndLogs { result: value.block_tip_result.revert_reason.glue_into(), - logs: VmExecutionLogs { - events: value.block_tip_result.logs.events.clone(), - user_l2_to_l1_logs: value.block_tip_result.logs.l2_to_l1_logs.clone(), - system_l2_to_l1_logs: vec![], - storage_logs: value.block_tip_result.logs.storage_logs.clone(), - total_log_queries_count: value.block_tip_result.logs.total_log_queries_count, - }, + logs: value.block_tip_result.logs.clone(), statistics: VmExecutionStatistics { contracts_used: value.block_tip_result.contracts_used, cycles_used: value.block_tip_result.cycles_used, @@ -51,13 +45,7 @@ impl GlueFrom for crate::interface::FinishedL1B crate::interface::FinishedL1Batch { block_tip_execution_result: VmExecutionResultAndLogs { result: value.block_tip_result.revert_reason.glue_into(), - logs: VmExecutionLogs { - events: value.block_tip_result.logs.events, - user_l2_to_l1_logs: value.block_tip_result.logs.l2_to_l1_logs, - system_l2_to_l1_logs: vec![], - storage_logs: value.block_tip_result.logs.storage_logs, - total_log_queries_count: value.block_tip_result.logs.total_log_queries_count, - }, + logs: value.block_tip_result.logs.clone(), statistics: VmExecutionStatistics { contracts_used: value.block_tip_result.contracts_used, cycles_used: value.block_tip_result.cycles_used, @@ -90,8 +78,8 @@ impl GlueFrom for crate::interface::Finished result: value.block_tip_result.revert_reason.glue_into(), logs: VmExecutionLogs { events: value.block_tip_result.logs.events, - user_l2_to_l1_logs: value.block_tip_result.logs.l2_to_l1_logs, - system_l2_to_l1_logs: vec![], + user_l2_to_l1_logs: value.block_tip_result.logs.user_l2_to_l1_logs.clone(), + system_l2_to_l1_logs: value.block_tip_result.logs.system_l2_to_l1_logs.clone(), storage_logs: value.block_tip_result.logs.storage_logs, total_log_queries_count: value.block_tip_result.logs.total_log_queries_count, }, @@ -167,13 +155,7 @@ impl GlueFrom for crate::interface::VmExecution VmExecutionResultAndLogs { result, - logs: VmExecutionLogs { - events: value.full_result.events, - user_l2_to_l1_logs: value.full_result.l2_to_l1_logs, - system_l2_to_l1_logs: vec![], - storage_logs: value.full_result.storage_log_queries, - total_log_queries_count: value.full_result.total_log_queries, - }, + logs: value.block_tip_result.logs.clone(), statistics: VmExecutionStatistics { contracts_used: value.full_result.contracts_used, cycles_used: value.full_result.cycles_used, diff --git a/core/lib/multivm/src/glue/types/vm/vm_partial_execution_result.rs b/core/lib/multivm/src/glue/types/vm/vm_partial_execution_result.rs index 79b483b531a..9422bff367b 100644 --- a/core/lib/multivm/src/glue/types/vm/vm_partial_execution_result.rs +++ b/core/lib/multivm/src/glue/types/vm/vm_partial_execution_result.rs @@ -7,13 +7,7 @@ impl GlueFrom fn glue_from(value: crate::vm_m5::vm::VmPartialExecutionResult) -> Self { Self { result: value.revert_reason.glue_into(), - logs: VmExecutionLogs { - events: value.logs.events.clone(), - user_l2_to_l1_logs: value.logs.l2_to_l1_logs.clone(), - system_l2_to_l1_logs: vec![], - storage_logs: value.logs.storage_logs.clone(), - total_log_queries_count: value.logs.total_log_queries_count, - }, + logs: value.logs.clone(), statistics: crate::interface::VmExecutionStatistics { contracts_used: value.contracts_used, cycles_used: value.cycles_used, @@ -37,13 +31,7 @@ impl GlueFrom fn glue_from(value: crate::vm_m6::vm::VmPartialExecutionResult) -> Self { Self { result: value.revert_reason.glue_into(), - logs: VmExecutionLogs { - events: value.logs.events.clone(), - user_l2_to_l1_logs: value.logs.l2_to_l1_logs.clone(), - system_l2_to_l1_logs: vec![], - storage_logs: value.logs.storage_logs.clone(), - total_log_queries_count: value.logs.total_log_queries_count, - }, + logs: value.logs.clone(), statistics: crate::interface::VmExecutionStatistics { contracts_used: value.contracts_used, cycles_used: value.cycles_used, @@ -65,13 +53,7 @@ impl GlueFrom fn glue_from(value: crate::vm_1_3_2::vm::VmPartialExecutionResult) -> Self { Self { result: value.revert_reason.glue_into(), - logs: VmExecutionLogs { - events: value.logs.events.clone(), - user_l2_to_l1_logs: value.logs.l2_to_l1_logs.clone(), - system_l2_to_l1_logs: vec![], - storage_logs: value.logs.storage_logs.clone(), - total_log_queries_count: value.logs.total_log_queries_count, - }, + logs: value.logs.clone(), statistics: crate::interface::VmExecutionStatistics { contracts_used: value.contracts_used, cycles_used: value.cycles_used, diff --git a/core/lib/multivm/src/interface/types/legacy_types.rs b/core/lib/multivm/src/interface/types/legacy_types.rs deleted file mode 100644 index 6b9ba5ac88f..00000000000 --- a/core/lib/multivm/src/interface/types/legacy_types.rs +++ /dev/null @@ -1,15 +0,0 @@ -use zksync_types::{l2_to_l1_log::L2ToL1Log, StorageLogQuery, VmEvent}; - -/// -/// Here we insert of the types that used to be present in lib/types at the time when this VM was in use. -/// - -/// Events/storage logs/l2->l1 logs created within transaction execution. -#[derive(Debug, Clone, Default, PartialEq)] -pub struct VmExecutionLogs { - pub storage_logs: Vec, - pub events: Vec, - pub l2_to_l1_logs: Vec, - // This field moved to statistics, but we need to keep it for backward compatibility - pub total_log_queries_count: usize, -} diff --git a/core/lib/multivm/src/interface/types/mod.rs b/core/lib/multivm/src/interface/types/mod.rs index 6994ec9478e..702a43144d2 100644 --- a/core/lib/multivm/src/interface/types/mod.rs +++ b/core/lib/multivm/src/interface/types/mod.rs @@ -1,4 +1,3 @@ pub mod errors; pub(crate) mod inputs; -pub(crate) mod legacy_types; pub(crate) mod outputs; diff --git a/core/lib/multivm/src/versions/vm_1_3_2/vm.rs b/core/lib/multivm/src/versions/vm_1_3_2/vm.rs index eda99133043..c3eb8d68e4a 100644 --- a/core/lib/multivm/src/versions/vm_1_3_2/vm.rs +++ b/core/lib/multivm/src/versions/vm_1_3_2/vm.rs @@ -15,7 +15,7 @@ use zksync_types::tx::tx_execution_info::TxExecutionStatus; use zksync_types::vm_trace::{Call, VmExecutionTrace, VmTrace}; use zksync_types::{L1BatchNumber, StorageLogQuery, VmEvent, U256}; -use crate::interface::types::legacy_types::VmExecutionLogs; +use crate::interface::types::outputs::VmExecutionLogs; use crate::vm_1_3_2::bootloader_state::BootloaderState; use crate::vm_1_3_2::errors::{TxRevertReason, VmRevertReason, VmRevertReasonParsingResult}; use crate::vm_1_3_2::event_sink::InMemoryEventSink; @@ -428,10 +428,11 @@ impl VmInstance { VmExecutionLogs { storage_logs, events, - l2_to_l1_logs, + user_l2_to_l1_logs: l2_to_l1_logs, total_log_queries_count: storage_logs_count + log_queries.len() + precompile_calls_count, + system_l2_to_l1_logs: vec![], } } diff --git a/core/lib/multivm/src/versions/vm_latest/vm.rs b/core/lib/multivm/src/versions/vm_latest/vm.rs index 6f02d625ad5..8ae4df9cd99 100644 --- a/core/lib/multivm/src/versions/vm_latest/vm.rs +++ b/core/lib/multivm/src/versions/vm_latest/vm.rs @@ -100,9 +100,11 @@ impl Vm { events, storage_log_queries: self.state.storage.get_final_log_queries(), used_contract_hashes: self.get_used_contracts(), + system_logs: vec![], user_l2_to_l1_logs: l2_to_l1_logs, total_log_queries, cycles_used: self.state.local_state.monotonic_cycle_counter, + deduplicated_events_logs: vec![], storage_refunds: self.state.storage.returned_refunds.inner().clone(), } } diff --git a/core/lib/multivm/src/versions/vm_m5/vm.rs b/core/lib/multivm/src/versions/vm_m5/vm.rs index 167c0357f96..9b64a5a8e3d 100644 --- a/core/lib/multivm/src/versions/vm_m5/vm.rs +++ b/core/lib/multivm/src/versions/vm_m5/vm.rs @@ -15,7 +15,7 @@ use zksync_types::tx::tx_execution_info::TxExecutionStatus; use zksync_types::vm_trace::VmExecutionTrace; use zksync_types::{L1BatchNumber, StorageLogQuery, VmEvent, U256}; -use crate::interface::types::legacy_types::VmExecutionLogs; +use crate::interface::types::outputs::VmExecutionLogs; use crate::vm_m5::bootloader_state::BootloaderState; use crate::vm_m5::errors::{TxRevertReason, VmRevertReason, VmRevertReasonParsingResult}; use crate::vm_m5::event_sink::InMemoryEventSink; @@ -500,7 +500,8 @@ impl VmInstance { VmExecutionLogs { storage_logs, events, - l2_to_l1_logs, + user_l2_to_l1_logs: l2_to_l1_logs, + system_l2_to_l1_logs: vec![], total_log_queries_count: storage_logs_count + log_queries.len() + precompile_calls_count, diff --git a/core/lib/multivm/src/versions/vm_m6/oracles/precompile.rs b/core/lib/multivm/src/versions/vm_m6/oracles/precompile.rs index 3a9e759ef50..aff382614af 100644 --- a/core/lib/multivm/src/versions/vm_m6/oracles/precompile.rs +++ b/core/lib/multivm/src/versions/vm_m6/oracles/precompile.rs @@ -3,7 +3,7 @@ use zk_evm_1_3_1::{ abstractions::PrecompileCyclesWitness, abstractions::PrecompilesProcessor, aux_structures::{LogQuery, MemoryQuery, Timestamp}, - zk_evm_abstractions::precompiles::DefaultPrecompilesProcessor, + precompiles::DefaultPrecompilesProcessor, }; use crate::vm_m6::history_recorder::{HistoryEnabled, HistoryMode, HistoryRecorder}; diff --git a/core/lib/multivm/src/versions/vm_m6/vm.rs b/core/lib/multivm/src/versions/vm_m6/vm.rs index 206c5dbab8b..7f3a7fbc024 100644 --- a/core/lib/multivm/src/versions/vm_m6/vm.rs +++ b/core/lib/multivm/src/versions/vm_m6/vm.rs @@ -14,7 +14,7 @@ use zksync_types::tx::tx_execution_info::TxExecutionStatus; use zksync_types::vm_trace::{Call, VmExecutionTrace, VmTrace}; use zksync_types::{L1BatchNumber, StorageLogQuery, VmEvent, U256}; -use crate::interface::types::legacy_types::VmExecutionLogs; +use crate::interface::types::outputs::VmExecutionLogs; use crate::vm_m6::bootloader_state::BootloaderState; use crate::vm_m6::errors::{TxRevertReason, VmRevertReason, VmRevertReasonParsingResult}; use crate::vm_m6::event_sink::InMemoryEventSink; @@ -447,7 +447,8 @@ impl VmInstance { VmExecutionLogs { storage_logs, events, - l2_to_l1_logs, + user_l2_to_l1_logs: l2_to_l1_logs, + system_l2_to_l1_logs: vec![], total_log_queries_count: storage_logs_count + log_queries.len() + precompile_calls_count, diff --git a/core/lib/multivm/src/versions/vm_m6/vm_with_bootloader.rs b/core/lib/multivm/src/versions/vm_m6/vm_with_bootloader.rs index cbc15352796..960ef400048 100644 --- a/core/lib/multivm/src/versions/vm_m6/vm_with_bootloader.rs +++ b/core/lib/multivm/src/versions/vm_m6/vm_with_bootloader.rs @@ -24,7 +24,7 @@ use zksync_utils::{ misc::ceil_div, }; -use crate::interface::types::legacy_types::VmExecutionLogs; +use crate::interface::types::outputs::VmExecutionLogs; use crate::vm_m6::storage::Storage; use crate::vm_m6::{ bootloader_state::BootloaderState, diff --git a/core/lib/multivm/src/versions/vm_virtual_blocks/implementation/logs.rs b/core/lib/multivm/src/versions/vm_virtual_blocks/implementation/logs.rs index 2c2a4ac1881..c4e34381c43 100644 --- a/core/lib/multivm/src/versions/vm_virtual_blocks/implementation/logs.rs +++ b/core/lib/multivm/src/versions/vm_virtual_blocks/implementation/logs.rs @@ -1,7 +1,7 @@ use zk_evm_1_3_3::aux_structures::Timestamp; use zksync_state::WriteStorage; -use crate::interface::types::legacy_types::VmExecutionLogs; +use crate::interface::types::outputs::VmExecutionLogs; use zksync_types::l2_to_l1_log::L2ToL1Log; use zksync_types::VmEvent; @@ -42,7 +42,8 @@ impl Vm { VmExecutionLogs { storage_logs, events, - l2_to_l1_logs, + user_l2_to_l1_logs: l2_to_l1_logs, + system_l2_to_l1_logs: vec![], total_log_queries_count, } } diff --git a/core/lib/zksync_core/src/eth_watch/mod.rs b/core/lib/zksync_core/src/eth_watch/mod.rs index bd0740fbff4..1b22b7261e6 100644 --- a/core/lib/zksync_core/src/eth_watch/mod.rs +++ b/core/lib/zksync_core/src/eth_watch/mod.rs @@ -192,20 +192,20 @@ pub async fn start_eth_watch( pool: ConnectionPool, eth_gateway: E, diamond_proxy_addr: Address, - governance: Option<(Contract, Address)>, + governance: (Contract, Address), stop_receiver: watch::Receiver, ) -> anyhow::Result>> { let eth_watch = ETHWatchConfig::from_env().context("ETHWatchConfig::from_env()")?; let eth_client = EthHttpQueryClient::new( eth_gateway, diamond_proxy_addr, - governance.as_ref().map(|(_, address)| *address), + Some(governance.1), eth_watch.confirmations_for_eth_event, ); let mut eth_watch = EthWatch::new( diamond_proxy_addr, - governance.map(|(contract, _)| contract), + Some(governance.0), eth_client, &pool, eth_watch.poll_interval(), diff --git a/core/lib/zksync_core/src/lib.rs b/core/lib/zksync_core/src/lib.rs index 78c36c1e965..14bffb10d56 100644 --- a/core/lib/zksync_core/src/lib.rs +++ b/core/lib/zksync_core/src/lib.rs @@ -542,11 +542,7 @@ pub async fn initialize_components( .build() .await .context("failed to build eth_watch_pool")?; - let governance = contracts_config.governance_addr.map(|addr| { - let contract = governance_contract() - .expect("Governance contract must be present if governance_addr is set in config"); - (contract, addr) - }); + let governance = (governance_contract(), contracts_config.governance_addr); task_futures.push( start_eth_watch( eth_watch_pool, From 25300611e32fb1bf72b860b61f54a17d5d524832 Mon Sep 17 00:00:00 2001 From: Bence Haromi Date: Wed, 25 Oct 2023 10:56:26 +0100 Subject: [PATCH 041/108] feat: contracts submodules linting commands --- .eslintignore | 6 +++- .markdownlintignore | 4 +++ .prettierignore | 4 +++ infrastructure/zk/src/fmt.ts | 39 +++++++++++++++++++++--- infrastructure/zk/src/lint.ts | 57 ++++++++++++++++++++++++----------- 5 files changed, 87 insertions(+), 23 deletions(-) diff --git a/.eslintignore b/.eslintignore index 6773d535d8c..6bde0a2282e 100644 --- a/.eslintignore +++ b/.eslintignore @@ -5,4 +5,8 @@ build/ dist/ volumes/ .tslintrc.js -bellman-cuda \ No newline at end of file +bellman-cuda + +# Ignore contract submodules +contracts +etc/system-contracts \ No newline at end of file diff --git a/.markdownlintignore b/.markdownlintignore index 05ba7370295..17f362751de 100644 --- a/.markdownlintignore +++ b/.markdownlintignore @@ -1,2 +1,6 @@ # Ignore submodule bellman-cuda + +# Ignore contract submodules +contracts +etc/system-contracts \ No newline at end of file diff --git a/.prettierignore b/.prettierignore index fd0d65050de..ca9ce80a598 100644 --- a/.prettierignore +++ b/.prettierignore @@ -3,3 +3,7 @@ bellman-cuda sdk/zksync-web3.js/CHANGELOG.md sdk/zksync-rs/CHANGELOG.md CHANGELOG.md + +# Ignore contract submodules +contracts +etc/system-contracts \ No newline at end of file diff --git a/infrastructure/zk/src/fmt.ts b/infrastructure/zk/src/fmt.ts index de6ed41ac55..4bb46dba760 100644 --- a/infrastructure/zk/src/fmt.ts +++ b/infrastructure/zk/src/fmt.ts @@ -20,6 +20,18 @@ export async function prettier(extension: string, check: boolean = false) { await utils.spawn(`yarn --silent prettier --config ${CONFIG_PATH}/${extension}.js --${command} ${files}`); } +async function prettierL1Contracts(check: boolean = false) { + await utils.spawn(`yarn --silent --cwd contracts/ethereum prettier:${check ? 'check' : 'fix'}`); +} + +async function prettierL2Contracts(check: boolean = false) { + await utils.spawn(`yarn --silent --cwd contracts/zksync prettier:${check ? 'check' : 'fix'}`); +} + +async function prettierSystemContracts(check: boolean = false) { + await utils.spawn(`yarn --silent --cwd etc/system-contracts prettier:${check ? 'check' : 'fix'}`); +} + export async function rustfmt(check: boolean = false) { process.chdir(process.env.ZKSYNC_HOME as string); const command = check ? 'cargo fmt -- --check' : 'cargo fmt'; @@ -28,21 +40,38 @@ export async function rustfmt(check: boolean = false) { await utils.spawn(command); } +const ARGS = [...EXTENSIONS, 'rust', 'l1-contracts', 'l2-contracts', 'system-contracts']; + export const command = new Command('fmt') .description('format code with prettier & rustfmt') .option('--check') - .arguments('[extension]') + .arguments(`[extension] ${ARGS.join('|')}`) .action(async (extension: string | null, cmd: Command) => { if (extension) { - if (extension == 'rust') { - await rustfmt(cmd.check); - } else { - await prettier(extension, cmd.check); + switch (extension) { + case 'rust': + await rustfmt(cmd.check); + break; + case 'l1-contracts': + await prettierL1Contracts(cmd.check); + break; + case 'l2-contracts': + await prettierL2Contracts(cmd.check); + break; + case 'system-contracts': + await prettierSystemContracts(cmd.check); + break; + default: + await prettier(extension, cmd.check); + break; } } else { // Run all the checks concurrently. const promises = EXTENSIONS.map((ext) => prettier(ext, cmd.check)); promises.push(rustfmt(cmd.check)); + promises.push(prettierL1Contracts(cmd.check)); + promises.push(prettierL2Contracts(cmd.check)); + promises.push(prettierSystemContracts(cmd.check)); await Promise.all(promises); } }); diff --git a/infrastructure/zk/src/lint.ts b/infrastructure/zk/src/lint.ts index adf2758b65e..b34cd100031 100644 --- a/infrastructure/zk/src/lint.ts +++ b/infrastructure/zk/src/lint.ts @@ -13,16 +13,6 @@ const EXTENSIONS = Object.keys(LINT_COMMANDS); const CONFIG_PATH = 'etc/lint-config'; export async function lint(extension: string, check: boolean = false) { - if (extension == 'rust') { - await clippy(); - return; - } - - if (extension == 'prover') { - await proverClippy(); - return; - } - if (!EXTENSIONS.includes(extension)) { throw new Error('Unsupported extension'); } @@ -34,6 +24,18 @@ export async function lint(extension: string, check: boolean = false) { await utils.spawn(`yarn --silent ${command} ${fixOption} --config ${CONFIG_PATH}/${extension}.js ${files}`); } +async function lintL1Contracts(check: boolean = false) { + await utils.spawn(`yarn --silent --cwd contracts/ethereum lint:${check ? 'check' : 'fix'}`); +} + +async function lintL2Contracts(check: boolean = false) { + await utils.spawn(`yarn --silent --cwd contracts/zksync lint:${check ? 'check' : 'fix'}`); +} + +async function lintSystemContracts(check: boolean = false) { + await utils.spawn(`yarn --silent --cwd etc/system-contracts lint:${check ? 'check' : 'fix'}`); +} + async function clippy() { process.chdir(process.env.ZKSYNC_HOME!); await utils.spawn('cargo clippy --tests -- -D warnings'); @@ -44,18 +46,39 @@ async function proverClippy() { await utils.spawn('cargo clippy --tests -- -D warnings -A incomplete_features'); } +const ARGS = [...EXTENSIONS, 'rust', 'prover', 'l1-contracts', 'l2-contracts', 'system-contracts']; + export const command = new Command('lint') .description('lint code') .option('--check') - .arguments('[extension] rust|md|sol|js|ts|prover') + .arguments(`[extension] ${ARGS.join('|')}`) .action(async (extension: string | null, cmd: Command) => { if (extension) { - await lint(extension, cmd.check); - } else { - for (const ext of EXTENSIONS) { - await lint(ext, cmd.check); + switch (extension) { + case 'rust': + await clippy(); + break; + case 'prover': + await proverClippy(); + break; + case 'l1-contracts': + await lintL1Contracts(cmd.check); + break; + case 'l2-contracts': + await lintL2Contracts(cmd.check); + break; + case 'system-contracts': + await lintSystemContracts(cmd.check); + break; + default: + await lint(extension, cmd.check); } - - await clippy(); + } else { + const promises = EXTENSIONS.map((ext) => lint(ext, cmd.check)); + promises.push(lintL1Contracts(cmd.check)); + promises.push(lintL2Contracts(cmd.check)); + promises.push(lintSystemContracts(cmd.check)); + promises.push(clippy()); + await Promise.all(promises); } }); From f802bf370c0d0205ffc1f51f4b867f7e672ae795 Mon Sep 17 00:00:00 2001 From: Bence Haromi Date: Wed, 25 Oct 2023 11:24:49 +0100 Subject: [PATCH 042/108] fmt: json, yaml extensions added to prettier --- etc/prettier-config/json.js | 6 ++++++ etc/prettier-config/yaml.js | 4 ++++ infrastructure/zk/src/fmt.ts | 2 +- 3 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 etc/prettier-config/json.js create mode 100644 etc/prettier-config/yaml.js diff --git a/etc/prettier-config/json.js b/etc/prettier-config/json.js new file mode 100644 index 00000000000..3098dcb47d9 --- /dev/null +++ b/etc/prettier-config/json.js @@ -0,0 +1,6 @@ +module.exports = { + "tabWidth": 2, + "printWidth": 120, + "bracketSpacing": true + }; + \ No newline at end of file diff --git a/etc/prettier-config/yaml.js b/etc/prettier-config/yaml.js new file mode 100644 index 00000000000..2b9a2d0eb13 --- /dev/null +++ b/etc/prettier-config/yaml.js @@ -0,0 +1,4 @@ +module.exports = { + "tabWidth": 2, + "printWidth": 120 +}; diff --git a/infrastructure/zk/src/fmt.ts b/infrastructure/zk/src/fmt.ts index 4bb46dba760..9abc38e4151 100644 --- a/infrastructure/zk/src/fmt.ts +++ b/infrastructure/zk/src/fmt.ts @@ -1,7 +1,7 @@ import { Command } from 'commander'; import * as utils from './utils'; -const EXTENSIONS = ['ts', 'md', 'sol', 'js']; +const EXTENSIONS = ['js', 'json', 'md', 'sol', 'ts', 'yaml']; const CONFIG_PATH = 'etc/prettier-config'; export async function prettier(extension: string, check: boolean = false) { From 0967ba05469827a371c69d158dfc9517707d8a2a Mon Sep 17 00:00:00 2001 From: Bence Haromi Date: Wed, 25 Oct 2023 11:27:31 +0100 Subject: [PATCH 043/108] fmt: json and yaml files formatted --- .github/release-please/config.json | 32 +- .github/workflows/cargo-license.yaml | 4 +- .../data/verification_0_key.json | 359 +-- .../data/verification_10_key.json | 359 +-- .../data/verification_11_key.json | 359 +-- .../data/verification_12_key.json | 359 +-- .../data/verification_13_key.json | 359 +-- .../data/verification_14_key.json | 359 +-- .../data/verification_15_key.json | 359 +-- .../data/verification_16_key.json | 359 +-- .../data/verification_17_key.json | 359 +-- .../data/verification_18_key.json | 359 +-- .../data/verification_1_key.json | 359 +-- .../data/verification_2_key.json | 359 +-- .../data/verification_3_key.json | 359 +-- .../data/verification_4_key.json | 359 +-- .../data/verification_5_key.json | 359 +-- .../data/verification_6_key.json | 359 +-- .../data/verification_7_key.json | 359 +-- .../data/verification_8_key.json | 359 +-- .../data/verification_9_key.json | 359 +-- core/lib/dal/sqlx-data.json | 2470 +++-------------- core/tests/revert-test/tsconfig.json | 14 +- core/tests/ts-integration/jest.config.json | 31 +- core/tests/ts-integration/package.json | 62 +- core/tests/ts-integration/tsconfig.json | 24 +- core/tests/upgrade-test/tsconfig.json | 14 +- .../zksync_testharness_test.json | 1 - etc/test_config/constant/api.json | 2 +- etc/test_config/constant/eth.json | 6 +- .../1692195639-upgrade-system/common.json | 2 +- .../mainnet2/facetCuts.json | 42 +- .../mainnet2/facets.json | 2 +- .../mainnet2/l2Upgrade.json | 65 +- .../mainnet2/transactions.json | 49 +- .../stage2/facetCuts.json | 42 +- .../stage2/facets.json | 2 +- .../stage2/l2Upgrade.json | 65 +- .../stage2/transactions.json | 49 +- .../testnet2/facetCuts.json | 42 +- .../testnet2/facets.json | 2 +- .../testnet2/l2Upgrade.json | 65 +- .../testnet2/transactions.json | 49 +- .../common.json | 2 +- .../stage2/facetCuts.json | 50 +- .../stage2/facets.json | 2 +- .../stage2/l2Upgrade.json | 65 +- .../stage2/transactions.json | 57 +- .../testnet2/facetCuts.json | 50 +- .../testnet2/facets.json | 2 +- .../testnet2/l2Upgrade.json | 65 +- .../testnet2/transactions.json | 57 +- .../common.json | 2 +- .../mainnet2/facetCuts.json | 50 +- .../mainnet2/facets.json | 2 +- .../mainnet2/l2Upgrade.json | 65 +- .../mainnet2/transactions.json | 57 +- .../stage2/l2Upgrade.json | 17 +- .../stage2/transactions.json | 9 +- .../testnet2/l2Upgrade.json | 17 +- .../testnet2/transactions.json | 9 +- .../common.json | 2 +- .../mainnet2/crypto.json | 2 +- .../mainnet2/transactions.json | 9 +- .../stage2/crypto.json | 2 +- .../stage2/transactions.json | 9 +- .../testnet2/crypto.json | 2 +- .../testnet2/transactions.json | 9 +- .../mainnet2/transactions.json | 9 +- .../stage2/transactions.json | 9 +- .../testnet2/transactions.json | 9 +- .../local-setup-preparation/tsconfig.json | 4 +- infrastructure/protocol-upgrade/tsconfig.json | 2 +- infrastructure/zk/package.json | 62 +- infrastructure/zk/tsconfig.json | 24 +- .../snark_verification_scheduler_key.json | 359 +-- .../data/verification_basic_10_key.json | 138 +- .../data/verification_basic_11_key.json | 138 +- .../data/verification_basic_12_key.json | 138 +- .../data/verification_basic_13_key.json | 138 +- .../data/verification_basic_1_key.json | 138 +- .../data/verification_basic_2_key.json | 138 +- .../data/verification_basic_3_key.json | 138 +- .../data/verification_basic_4_key.json | 138 +- .../data/verification_basic_5_key.json | 138 +- .../data/verification_basic_6_key.json | 138 +- .../data/verification_basic_7_key.json | 138 +- .../data/verification_basic_8_key.json | 138 +- .../data/verification_basic_9_key.json | 138 +- .../data/verification_leaf_10_key.json | 134 +- .../data/verification_leaf_11_key.json | 134 +- .../data/verification_leaf_12_key.json | 134 +- .../data/verification_leaf_13_key.json | 134 +- .../data/verification_leaf_14_key.json | 134 +- .../data/verification_leaf_15_key.json | 134 +- .../data/verification_leaf_1_key.json | 138 +- .../data/verification_leaf_2_key.json | 134 +- .../data/verification_leaf_3_key.json | 134 +- .../data/verification_leaf_4_key.json | 134 +- .../data/verification_leaf_5_key.json | 134 +- .../data/verification_leaf_6_key.json | 134 +- .../data/verification_leaf_7_key.json | 134 +- .../data/verification_leaf_8_key.json | 134 +- .../data/verification_leaf_9_key.json | 134 +- .../data/verification_node_key.json | 134 +- .../data/verification_scheduler_key.json | 138 +- renovate.json | 9 +- .../src/ethereum/DepositERC20GasLimit.json | 80 +- sdk/zksync-web3.js/abi/IERC1271.json | 50 +- sdk/zksync-web3.js/tsconfig.json | 4 +- 110 files changed, 2542 insertions(+), 12729 deletions(-) diff --git a/.github/release-please/config.json b/.github/release-please/config.json index 59e8b66dcc3..88d3f9b04f9 100644 --- a/.github/release-please/config.json +++ b/.github/release-please/config.json @@ -5,21 +5,21 @@ "bump-minor-pre-major": true, "bump-patch-for-minor-pre-major": true, "packages": { - "core": { - "release-type": "simple", - "component": "core" - }, - "sdk/zksync-web3.js": { - "release-type": "node", - "component": "web3js" - }, - "sdk/zksync-rs": { - "release-type": "rust", - "component": "zksync-rs" - }, - "prover": { - "release-type": "simple", - "component": "prover" - } + "core": { + "release-type": "simple", + "component": "core" + }, + "sdk/zksync-web3.js": { + "release-type": "node", + "component": "web3js" + }, + "sdk/zksync-rs": { + "release-type": "rust", + "component": "zksync-rs" + }, + "prover": { + "release-type": "simple", + "component": "prover" + } } } diff --git a/.github/workflows/cargo-license.yaml b/.github/workflows/cargo-license.yaml index 189b47163e5..e326f296694 100644 --- a/.github/workflows/cargo-license.yaml +++ b/.github/workflows/cargo-license.yaml @@ -4,5 +4,5 @@ jobs: cargo-deny: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: EmbarkStudios/cargo-deny-action@v1 + - uses: actions/checkout@v3 + - uses: EmbarkStudios/cargo-deny-action@v1 diff --git a/core/bin/verification_key_generator_and_server/data/verification_0_key.json b/core/bin/verification_key_generator_and_server/data/verification_0_key.json index c3262193a4f..83ff113bc9c 100644 --- a/core/bin/verification_key_generator_and_server/data/verification_0_key.json +++ b/core/bin/verification_key_generator_and_server/data/verification_0_key.json @@ -5,395 +5,140 @@ "num_witness_polys": 0, "gate_setup_commitments": [ { - "x": [ - 14745348174000482855, - 2839037062185937123, - 3369862715588854899, - 1495909583940713128 - ], - "y": [ - 6859454683840363585, - 11340551061368171664, - 9528805406487149561, - 3414144677220223705 - ], + "x": [14745348174000482855, 2839037062185937123, 3369862715588854899, 1495909583940713128], + "y": [6859454683840363585, 11340551061368171664, 9528805406487149561, 3414144677220223705], "infinity": false }, { - "x": [ - 9215749870136224396, - 18418669114332753377, - 13140219601461030180, - 2381098845928447331 - ], - "y": [ - 8834765081837029169, - 4424842234296363904, - 13294547557836067005, - 414624398145171890 - ], + "x": [9215749870136224396, 18418669114332753377, 13140219601461030180, 2381098845928447331], + "y": [8834765081837029169, 4424842234296363904, 13294547557836067005, 414624398145171890], "infinity": false }, { - "x": [ - 2148575411987453084, - 16730180692461995258, - 12423475767707134837, - 3014264170083149730 - ], - "y": [ - 10870860158804422503, - 14060279526953529989, - 2266257082861680293, - 22356173050560284 - ], + "x": [2148575411987453084, 16730180692461995258, 12423475767707134837, 3014264170083149730], + "y": [10870860158804422503, 14060279526953529989, 2266257082861680293, 22356173050560284], "infinity": false }, { - "x": [ - 17803008042411335770, - 5713064950476621403, - 17979342410816871746, - 491265656076548841 - ], - "y": [ - 9823492080506672630, - 3637386621225409615, - 8776978043600973097, - 2514196809208915768 - ], + "x": [17803008042411335770, 5713064950476621403, 17979342410816871746, 491265656076548841], + "y": [9823492080506672630, 3637386621225409615, 8776978043600973097, 2514196809208915768], "infinity": false }, { - "x": [ - 3768479078383323179, - 16153057542709544671, - 10578964798085613273, - 2831188075764800753 - ], - "y": [ - 2387514805820590694, - 15085489652142686165, - 8141513931186597223, - 1582376980242699819 - ], + "x": [3768479078383323179, 16153057542709544671, 10578964798085613273, 2831188075764800753], + "y": [2387514805820590694, 15085489652142686165, 8141513931186597223, 1582376980242699819], "infinity": false }, { - "x": [ - 5395455814671474247, - 5013790368139874617, - 8671649443504728767, - 839142828943885970 - ], - "y": [ - 11231626069154926735, - 5078347962234771017, - 17373886182204596447, - 513647957075879347 - ], + "x": [5395455814671474247, 5013790368139874617, 8671649443504728767, 839142828943885970], + "y": [11231626069154926735, 5078347962234771017, 17373886182204596447, 513647957075879347], "infinity": false }, { - "x": [ - 8940485327950054531, - 9156997542069636576, - 14316753178152000598, - 3357551869664255582 - ], - "y": [ - 14102490706504125272, - 4494991810930729808, - 15532318871086968466, - 1537365238286274178 - ], + "x": [8940485327950054531, 9156997542069636576, 14316753178152000598, 3357551869664255582], + "y": [14102490706504125272, 4494991810930729808, 15532318871086968466, 1537365238286274178], "infinity": false }, { - "x": [ - 13914906478277300859, - 6213896071228541481, - 4364409818367302306, - 659097390118096039 - ], - "y": [ - 7328372274594390887, - 2650332638498669615, - 15455628473476960005, - 3119379427019958230 - ], + "x": [13914906478277300859, 6213896071228541481, 4364409818367302306, 659097390118096039], + "y": [7328372274594390887, 2650332638498669615, 15455628473476960005, 3119379427019958230], "infinity": false } ], "gate_selectors_commitments": [ { - "x": [ - 9438200511694036157, - 11094162170960057340, - 9123678872696723713, - 2950597355117190054 - ], - "y": [ - 6153972960518016517, - 8045683598100955864, - 13410633858416643489, - 988361678931464913 - ], + "x": [9438200511694036157, 11094162170960057340, 9123678872696723713, 2950597355117190054], + "y": [6153972960518016517, 8045683598100955864, 13410633858416643489, 988361678931464913], "infinity": false }, { - "x": [ - 805964423710846142, - 13603470797942296854, - 11292123377140077447, - 1455913517812009773 - ], - "y": [ - 4541622738043214385, - 8186357170000535775, - 4765839113294831637, - 3026863977499737494 - ], + "x": [805964423710846142, 13603470797942296854, 11292123377140077447, 1455913517812009773], + "y": [4541622738043214385, 8186357170000535775, 4765839113294831637, 3026863977499737494], "infinity": false } ], "permutation_commitments": [ { - "x": [ - 1851039213129741497, - 11907960788190413713, - 2882727828085561070, - 1451278944954982956 - ], - "y": [ - 15245785050592773860, - 1774295027236395480, - 3373069120056880915, - 1080245109458702174 - ], + "x": [1851039213129741497, 11907960788190413713, 2882727828085561070, 1451278944954982956], + "y": [15245785050592773860, 1774295027236395480, 3373069120056880915, 1080245109458702174], "infinity": false }, { - "x": [ - 9366052859968548005, - 12275028918364559591, - 2472023927159177225, - 1052535074027277666 - ], - "y": [ - 2428574557555628629, - 15067392861858369528, - 16949255188095910778, - 2297925771936569168 - ], + "x": [9366052859968548005, 12275028918364559591, 2472023927159177225, 1052535074027277666], + "y": [2428574557555628629, 15067392861858369528, 16949255188095910778, 2297925771936569168], "infinity": false }, { - "x": [ - 17016009610362956206, - 4047659663396753591, - 1832464593155416403, - 2725142957049914767 - ], - "y": [ - 12447928856414787240, - 3072280375285720285, - 12294239288643819494, - 613511140380288958 - ], + "x": [17016009610362956206, 4047659663396753591, 1832464593155416403, 2725142957049914767], + "y": [12447928856414787240, 3072280375285720285, 12294239288643819494, 613511140380288958], "infinity": false }, { - "x": [ - 6312774245791141720, - 496150993329472460, - 12773767122915456934, - 3404402910494500531 - ], - "y": [ - 13852578578747731084, - 9030931732410275304, - 17159996848865265705, - 1696956882146098553 - ], + "x": [6312774245791141720, 496150993329472460, 12773767122915456934, 3404402910494500531], + "y": [13852578578747731084, 9030931732410275304, 17159996848865265705, 1696956882146098553], "infinity": false } ], "total_lookup_entries_length": 1073530, "lookup_selector_commitment": { - "x": [ - 4441974708940861232, - 11325614820129407652, - 7273013871150456559, - 2270181644629652201 - ], - "y": [ - 3070631142979677922, - 15247189094202672776, - 12651459662740804392, - 1832216259472686694 - ], + "x": [4441974708940861232, 11325614820129407652, 7273013871150456559, 2270181644629652201], + "y": [3070631142979677922, 15247189094202672776, 12651459662740804392, 1832216259472686694], "infinity": false }, "lookup_tables_commitments": [ { - "x": [ - 631990924006796604, - 16139625628991115157, - 13331739325995827711, - 1062301837743594995 - ], - "y": [ - 15303054606290800139, - 15906872095881647437, - 7093896572295020249, - 1342952934989901142 - ], + "x": [631990924006796604, 16139625628991115157, 13331739325995827711, 1062301837743594995], + "y": [15303054606290800139, 15906872095881647437, 7093896572295020249, 1342952934989901142], "infinity": false }, { - "x": [ - 7983921919542246393, - 13296544189644416678, - 17081022784392007697, - 1980832835348244027 - ], - "y": [ - 10874958134865200330, - 7702740658637630534, - 14052057929798961943, - 3193353539419869016 - ], + "x": [7983921919542246393, 13296544189644416678, 17081022784392007697, 1980832835348244027], + "y": [10874958134865200330, 7702740658637630534, 14052057929798961943, 3193353539419869016], "infinity": false }, { - "x": [ - 1114587284824996932, - 4636906500482867924, - 15328247172597030456, - 87946895873973686 - ], - "y": [ - 15573033830207915877, - 5194694185599035278, - 2562407345425607214, - 2782078999306862675 - ], + "x": [1114587284824996932, 4636906500482867924, 15328247172597030456, 87946895873973686], + "y": [15573033830207915877, 5194694185599035278, 2562407345425607214, 2782078999306862675], "infinity": false }, { - "x": [ - 18225112781127431982, - 18048613958187123807, - 7325490730844456621, - 1953409020724855888 - ], - "y": [ - 7577000130125917198, - 6193701449695751861, - 4102082927677054717, - 395350071385269650 - ], + "x": [18225112781127431982, 18048613958187123807, 7325490730844456621, 1953409020724855888], + "y": [7577000130125917198, 6193701449695751861, 4102082927677054717, 395350071385269650], "infinity": false } ], "lookup_table_type_commitment": { - "x": [ - 7312875299592476003, - 313526216906044060, - 13914875394436353152, - 3424388477700656316 - ], - "y": [ - 2572062173996296044, - 5984767625164919974, - 12005537293370417131, - 616463121946800406 - ], + "x": [7312875299592476003, 313526216906044060, 13914875394436353152, 3424388477700656316], + "y": [2572062173996296044, 5984767625164919974, 12005537293370417131, 616463121946800406], "infinity": false }, "non_residues": [ - [ - 5, - 0, - 0, - 0 - ], - [ - 7, - 0, - 0, - 0 - ], - [ - 10, - 0, - 0, - 0 - ] + [5, 0, 0, 0], + [7, 0, 0, 0], + [10, 0, 0, 0] ], "g2_elements": [ { "x": { - "c0": [ - 5106727233969649389, - 7440829307424791261, - 4785637993704342649, - 1729627375292849782 - ], - "c1": [ - 10945020018377822914, - 17413811393473931026, - 8241798111626485029, - 1841571559660931130 - ] + "c0": [5106727233969649389, 7440829307424791261, 4785637993704342649, 1729627375292849782], + "c1": [10945020018377822914, 17413811393473931026, 8241798111626485029, 1841571559660931130] }, "y": { - "c0": [ - 5541340697920699818, - 16416156555105522555, - 5380518976772849807, - 1353435754470862315 - ], - "c1": [ - 6173549831154472795, - 13567992399387660019, - 17050234209342075797, - 650358724130500725 - ] + "c0": [5541340697920699818, 16416156555105522555, 5380518976772849807, 1353435754470862315], + "c1": [6173549831154472795, 13567992399387660019, 17050234209342075797, 650358724130500725] }, "infinity": false }, { "x": { - "c0": [ - 9089143573911733168, - 11482283522806384523, - 13585589533905622862, - 79029415676722370 - ], - "c1": [ - 5692040832573735873, - 16884514497384809355, - 16717166481813659368, - 2742131088506155463 - ] + "c0": [9089143573911733168, 11482283522806384523, 13585589533905622862, 79029415676722370], + "c1": [5692040832573735873, 16884514497384809355, 16717166481813659368, 2742131088506155463] }, "y": { - "c0": [ - 9604638503594647125, - 1289961608472612514, - 6217038149984805214, - 2521661352385209130 - ], - "c1": [ - 17168069778630926308, - 11309277837895768996, - 15154989611154567813, - 359271377050603491 - ] + "c0": [9604638503594647125, 1289961608472612514, 6217038149984805214, 2521661352385209130], + "c1": [17168069778630926308, 11309277837895768996, 15154989611154567813, 359271377050603491] }, "infinity": false } ] -} \ No newline at end of file +} diff --git a/core/bin/verification_key_generator_and_server/data/verification_10_key.json b/core/bin/verification_key_generator_and_server/data/verification_10_key.json index ec9d3727bff..3431c4879d9 100644 --- a/core/bin/verification_key_generator_and_server/data/verification_10_key.json +++ b/core/bin/verification_key_generator_and_server/data/verification_10_key.json @@ -5,395 +5,140 @@ "num_witness_polys": 0, "gate_setup_commitments": [ { - "x": [ - 4364720487844379181, - 17010766725144227333, - 1022678199111276314, - 1146578362772127376 - ], - "y": [ - 10340654727439455072, - 12691578856596245032, - 837883495763401146, - 2135776887902289239 - ], + "x": [4364720487844379181, 17010766725144227333, 1022678199111276314, 1146578362772127376], + "y": [10340654727439455072, 12691578856596245032, 837883495763401146, 2135776887902289239], "infinity": false }, { - "x": [ - 14564870240038241482, - 16001391704613609683, - 16397364612792898214, - 1316914335235774452 - ], - "y": [ - 2386942353392090183, - 4642131766714508143, - 16789479723446408276, - 2261353401184907401 - ], + "x": [14564870240038241482, 16001391704613609683, 16397364612792898214, 1316914335235774452], + "y": [2386942353392090183, 4642131766714508143, 16789479723446408276, 2261353401184907401], "infinity": false }, { - "x": [ - 6081056006818109026, - 14051483412950926523, - 8605392534710099348, - 1527183574619010123 - ], - "y": [ - 3896696527234063839, - 12862398541231039501, - 1005646628007936886, - 3479645512156004366 - ], + "x": [6081056006818109026, 14051483412950926523, 8605392534710099348, 1527183574619010123], + "y": [3896696527234063839, 12862398541231039501, 1005646628007936886, 3479645512156004366], "infinity": false }, { - "x": [ - 11266242489999219523, - 8100856016495224488, - 6788749864393617587, - 482299081118345826 - ], - "y": [ - 225211373180020785, - 6498635074385582091, - 4274055525472487569, - 2578651815252093838 - ], + "x": [11266242489999219523, 8100856016495224488, 6788749864393617587, 482299081118345826], + "y": [225211373180020785, 6498635074385582091, 4274055525472487569, 2578651815252093838], "infinity": false }, { - "x": [ - 10378455392293934375, - 13391940670290769236, - 10463014668466536299, - 472544008986099462 - ], - "y": [ - 1502016714118108544, - 14252801754530793876, - 2203844491975584716, - 1116114255465135672 - ], + "x": [10378455392293934375, 13391940670290769236, 10463014668466536299, 472544008986099462], + "y": [1502016714118108544, 14252801754530793876, 2203844491975584716, 1116114255465135672], "infinity": false }, { - "x": [ - 9703616742074407567, - 9691703077434834222, - 7366620887865105973, - 36165572355418066 - ], - "y": [ - 7430304832706471782, - 5173267152399523091, - 14416699599905226230, - 2681204653630184824 - ], + "x": [9703616742074407567, 9691703077434834222, 7366620887865105973, 36165572355418066], + "y": [7430304832706471782, 5173267152399523091, 14416699599905226230, 2681204653630184824], "infinity": false }, { - "x": [ - 9347312215430913530, - 13606433894103359668, - 14013475178334262360, - 2947181048682744075 - ], - "y": [ - 4001199390012145932, - 4622813642635649819, - 16433672063298879053, - 1247842462976799965 - ], + "x": [9347312215430913530, 13606433894103359668, 14013475178334262360, 2947181048682744075], + "y": [4001199390012145932, 4622813642635649819, 16433672063298879053, 1247842462976799965], "infinity": false }, { - "x": [ - 1639425503718708209, - 8242804754724970899, - 11043260258533730377, - 2245145560504199089 - ], - "y": [ - 14202551139064230506, - 4307109380979442947, - 13141687433511141087, - 1913204959448290015 - ], + "x": [1639425503718708209, 8242804754724970899, 11043260258533730377, 2245145560504199089], + "y": [14202551139064230506, 4307109380979442947, 13141687433511141087, 1913204959448290015], "infinity": false } ], "gate_selectors_commitments": [ { - "x": [ - 17540836040216578409, - 14577118461028955096, - 2300935836423716880, - 427649651480863044 - ], - "y": [ - 13066723755606073272, - 17324941433857131282, - 1679499122173566851, - 3298750515604566671 - ], + "x": [17540836040216578409, 14577118461028955096, 2300935836423716880, 427649651480863044], + "y": [13066723755606073272, 17324941433857131282, 1679499122173566851, 3298750515604566671], "infinity": false }, { - "x": [ - 14709152157752642079, - 13510549649315108277, - 3019440420162710858, - 627188607991231846 - ], - "y": [ - 16615706301470133997, - 915024441316023047, - 13798541787831785917, - 3340602253234308653 - ], + "x": [14709152157752642079, 13510549649315108277, 3019440420162710858, 627188607991231846], + "y": [16615706301470133997, 915024441316023047, 13798541787831785917, 3340602253234308653], "infinity": false } ], "permutation_commitments": [ { - "x": [ - 12626704863583094704, - 3308474372162220296, - 16088806788444947642, - 636430705662147361 - ], - "y": [ - 17052785040105865748, - 11203395113497209978, - 2939609765212411460, - 3167290643533167611 - ], + "x": [12626704863583094704, 3308474372162220296, 16088806788444947642, 636430705662147361], + "y": [17052785040105865748, 11203395113497209978, 2939609765212411460, 3167290643533167611], "infinity": false }, { - "x": [ - 3075146465184418179, - 11559452521956513155, - 1656597085428845901, - 1618447062156730856 - ], - "y": [ - 2010693621773175313, - 2977509893150409878, - 9431891659616951962, - 1776222288355278384 - ], + "x": [3075146465184418179, 11559452521956513155, 1656597085428845901, 1618447062156730856], + "y": [2010693621773175313, 2977509893150409878, 9431891659616951962, 1776222288355278384], "infinity": false }, { - "x": [ - 6408318860212838666, - 9847136022608767026, - 18080834927350013528, - 3306285138140631107 - ], - "y": [ - 16064928058583899597, - 461689523483649779, - 13572099112445223829, - 1563453638232968523 - ], + "x": [6408318860212838666, 9847136022608767026, 18080834927350013528, 3306285138140631107], + "y": [16064928058583899597, 461689523483649779, 13572099112445223829, 1563453638232968523], "infinity": false }, { - "x": [ - 327171445663828020, - 12706053900720413614, - 9237483585964880752, - 1960293149538216528 - ], - "y": [ - 11030775691809003651, - 11089052388657955457, - 3209890793790993499, - 1198867574642866523 - ], + "x": [327171445663828020, 12706053900720413614, 9237483585964880752, 1960293149538216528], + "y": [11030775691809003651, 11089052388657955457, 3209890793790993499, 1198867574642866523], "infinity": false } ], "total_lookup_entries_length": 5202052, "lookup_selector_commitment": { - "x": [ - 781239045644769777, - 14316527640474633593, - 2443643435827373112, - 3049372365263474427 - ], - "y": [ - 4073012743593667819, - 16009537994875540924, - 11173412503242869179, - 1513208421597995174 - ], + "x": [781239045644769777, 14316527640474633593, 2443643435827373112, 3049372365263474427], + "y": [4073012743593667819, 16009537994875540924, 11173412503242869179, 1513208421597995174], "infinity": false }, "lookup_tables_commitments": [ { - "x": [ - 697552212563769686, - 7709943502535418760, - 15019345407325619175, - 3433081085078580257 - ], - "y": [ - 8668947019840357731, - 14698901351824712883, - 15088598879190660424, - 2873081208166433946 - ], + "x": [697552212563769686, 7709943502535418760, 15019345407325619175, 3433081085078580257], + "y": [8668947019840357731, 14698901351824712883, 15088598879190660424, 2873081208166433946], "infinity": false }, { - "x": [ - 7893133928909060673, - 7064922516930129957, - 3592836702741304814, - 2239702595710114437 - ], - "y": [ - 7691360541875191519, - 11379321785127235277, - 6653616064071569031, - 2555434628517540774 - ], + "x": [7893133928909060673, 7064922516930129957, 3592836702741304814, 2239702595710114437], + "y": [7691360541875191519, 11379321785127235277, 6653616064071569031, 2555434628517540774], "infinity": false }, { - "x": [ - 6243944238013052821, - 7908243182210136125, - 17178099109525791299, - 2553622184721264566 - ], - "y": [ - 736121280088239428, - 6158073429758170526, - 11217302997977204117, - 2594798912020899417 - ], + "x": [6243944238013052821, 7908243182210136125, 17178099109525791299, 2553622184721264566], + "y": [736121280088239428, 6158073429758170526, 11217302997977204117, 2594798912020899417], "infinity": false }, { - "x": [ - 2064240298596094591, - 16917726764104887991, - 11042784977532408536, - 3377647228930170830 - ], - "y": [ - 10635525052494768819, - 387400048616497096, - 9379200582543310995, - 1571766153703296253 - ], + "x": [2064240298596094591, 16917726764104887991, 11042784977532408536, 3377647228930170830], + "y": [10635525052494768819, 387400048616497096, 9379200582543310995, 1571766153703296253], "infinity": false } ], "lookup_table_type_commitment": { - "x": [ - 7603211811706190713, - 2486982239745271096, - 11528266448545919500, - 3080741880407152411 - ], - "y": [ - 7967754771633653173, - 6016822892450616749, - 9688696792558711613, - 2682562048141398047 - ], + "x": [7603211811706190713, 2486982239745271096, 11528266448545919500, 3080741880407152411], + "y": [7967754771633653173, 6016822892450616749, 9688696792558711613, 2682562048141398047], "infinity": false }, "non_residues": [ - [ - 5, - 0, - 0, - 0 - ], - [ - 7, - 0, - 0, - 0 - ], - [ - 10, - 0, - 0, - 0 - ] + [5, 0, 0, 0], + [7, 0, 0, 0], + [10, 0, 0, 0] ], "g2_elements": [ { "x": { - "c0": [ - 5106727233969649389, - 7440829307424791261, - 4785637993704342649, - 1729627375292849782 - ], - "c1": [ - 10945020018377822914, - 17413811393473931026, - 8241798111626485029, - 1841571559660931130 - ] + "c0": [5106727233969649389, 7440829307424791261, 4785637993704342649, 1729627375292849782], + "c1": [10945020018377822914, 17413811393473931026, 8241798111626485029, 1841571559660931130] }, "y": { - "c0": [ - 5541340697920699818, - 16416156555105522555, - 5380518976772849807, - 1353435754470862315 - ], - "c1": [ - 6173549831154472795, - 13567992399387660019, - 17050234209342075797, - 650358724130500725 - ] + "c0": [5541340697920699818, 16416156555105522555, 5380518976772849807, 1353435754470862315], + "c1": [6173549831154472795, 13567992399387660019, 17050234209342075797, 650358724130500725] }, "infinity": false }, { "x": { - "c0": [ - 9089143573911733168, - 11482283522806384523, - 13585589533905622862, - 79029415676722370 - ], - "c1": [ - 5692040832573735873, - 16884514497384809355, - 16717166481813659368, - 2742131088506155463 - ] + "c0": [9089143573911733168, 11482283522806384523, 13585589533905622862, 79029415676722370], + "c1": [5692040832573735873, 16884514497384809355, 16717166481813659368, 2742131088506155463] }, "y": { - "c0": [ - 9604638503594647125, - 1289961608472612514, - 6217038149984805214, - 2521661352385209130 - ], - "c1": [ - 17168069778630926308, - 11309277837895768996, - 15154989611154567813, - 359271377050603491 - ] + "c0": [9604638503594647125, 1289961608472612514, 6217038149984805214, 2521661352385209130], + "c1": [17168069778630926308, 11309277837895768996, 15154989611154567813, 359271377050603491] }, "infinity": false } ] -} \ No newline at end of file +} diff --git a/core/bin/verification_key_generator_and_server/data/verification_11_key.json b/core/bin/verification_key_generator_and_server/data/verification_11_key.json index ec60b1b5c70..eadd4f9433b 100644 --- a/core/bin/verification_key_generator_and_server/data/verification_11_key.json +++ b/core/bin/verification_key_generator_and_server/data/verification_11_key.json @@ -5,395 +5,140 @@ "num_witness_polys": 0, "gate_setup_commitments": [ { - "x": [ - 6404793958941109752, - 600086648940026770, - 17621036346050218167, - 648286585825030202 - ], - "y": [ - 15536368541166505022, - 13874331483468128999, - 15299774519724050181, - 694528839710637549 - ], + "x": [6404793958941109752, 600086648940026770, 17621036346050218167, 648286585825030202], + "y": [15536368541166505022, 13874331483468128999, 15299774519724050181, 694528839710637549], "infinity": false }, { - "x": [ - 8437895530551083583, - 9515418928119648176, - 13043255827139294721, - 2995712510038409810 - ], - "y": [ - 2599666661350767554, - 5213004864468121936, - 3448071048439343925, - 3372727479169634860 - ], + "x": [8437895530551083583, 9515418928119648176, 13043255827139294721, 2995712510038409810], + "y": [2599666661350767554, 5213004864468121936, 3448071048439343925, 3372727479169634860], "infinity": false }, { - "x": [ - 4949545806128010634, - 7991544258837652527, - 13984289231122041826, - 435264553263929947 - ], - "y": [ - 5315155210033461895, - 5269954775753247626, - 8365554241810378947, - 3038338810517586456 - ], + "x": [4949545806128010634, 7991544258837652527, 13984289231122041826, 435264553263929947], + "y": [5315155210033461895, 5269954775753247626, 8365554241810378947, 3038338810517586456], "infinity": false }, { - "x": [ - 10765735847634894938, - 996016141851615448, - 17905928073714218280, - 1382306444325686451 - ], - "y": [ - 2138154197587423296, - 10332772886666867909, - 18365120064743353477, - 3036329558617382049 - ], + "x": [10765735847634894938, 996016141851615448, 17905928073714218280, 1382306444325686451], + "y": [2138154197587423296, 10332772886666867909, 18365120064743353477, 3036329558617382049], "infinity": false }, { - "x": [ - 10826908009799408310, - 17008417534705779156, - 6763973494549063072, - 2085829964414931488 - ], - "y": [ - 8778528796073273991, - 3575354418973385595, - 7700555759899743641, - 2991788183234680231 - ], + "x": [10826908009799408310, 17008417534705779156, 6763973494549063072, 2085829964414931488], + "y": [8778528796073273991, 3575354418973385595, 7700555759899743641, 2991788183234680231], "infinity": false }, { - "x": [ - 4838537981048085423, - 17733460364049897496, - 2406410363431464143, - 317979983533551325 - ], - "y": [ - 1063783130085451648, - 17468950496650586998, - 1638492556781126884, - 2655791721465286744 - ], + "x": [4838537981048085423, 17733460364049897496, 2406410363431464143, 317979983533551325], + "y": [1063783130085451648, 17468950496650586998, 1638492556781126884, 2655791721465286744], "infinity": false }, { - "x": [ - 9900079822056413611, - 2971494295919434281, - 3851188096409515874, - 1674965457600938162 - ], - "y": [ - 278026997091552202, - 4169606578927284200, - 4285297176993939496, - 1835673146863992148 - ], + "x": [9900079822056413611, 2971494295919434281, 3851188096409515874, 1674965457600938162], + "y": [278026997091552202, 4169606578927284200, 4285297176993939496, 1835673146863992148], "infinity": false }, { - "x": [ - 14972922803706426724, - 1950002897609593521, - 14885502244328862256, - 2711533695106895845 - ], - "y": [ - 6445273103061253271, - 13093783937225622775, - 16913300898726970338, - 3338984185497324237 - ], + "x": [14972922803706426724, 1950002897609593521, 14885502244328862256, 2711533695106895845], + "y": [6445273103061253271, 13093783937225622775, 16913300898726970338, 3338984185497324237], "infinity": false } ], "gate_selectors_commitments": [ { - "x": [ - 7023363902839996761, - 10470701207992157969, - 15655647820064667897, - 1574806151825297776 - ], - "y": [ - 5374465760860613169, - 17808737811039085287, - 9497881147171478776, - 2496973717640690197 - ], + "x": [7023363902839996761, 10470701207992157969, 15655647820064667897, 1574806151825297776], + "y": [5374465760860613169, 17808737811039085287, 9497881147171478776, 2496973717640690197], "infinity": false }, { - "x": [ - 11667333913021610767, - 981513539224109240, - 906325130343873228, - 2938085706999497365 - ], - "y": [ - 12114685726509803851, - 8176447551157079615, - 4677211732718215770, - 612959750791398009 - ], + "x": [11667333913021610767, 981513539224109240, 906325130343873228, 2938085706999497365], + "y": [12114685726509803851, 8176447551157079615, 4677211732718215770, 612959750791398009], "infinity": false } ], "permutation_commitments": [ { - "x": [ - 5178916486603003859, - 12440762249350081718, - 17531240512375127539, - 562979322442547791 - ], - "y": [ - 13269831614205338393, - 14075713698585784838, - 5009519510530479124, - 346033861980045408 - ], + "x": [5178916486603003859, 12440762249350081718, 17531240512375127539, 562979322442547791], + "y": [13269831614205338393, 14075713698585784838, 5009519510530479124, 346033861980045408], "infinity": false }, { - "x": [ - 9815443577325313677, - 10727907015331332054, - 7582395371050260833, - 1746872659838481572 - ], - "y": [ - 3973552805135639320, - 14426732004648741961, - 8133164322153358522, - 2668541869556858228 - ], + "x": [9815443577325313677, 10727907015331332054, 7582395371050260833, 1746872659838481572], + "y": [3973552805135639320, 14426732004648741961, 8133164322153358522, 2668541869556858228], "infinity": false }, { - "x": [ - 4868257934818957423, - 11529848268525929099, - 7089666284160764141, - 796901367628793969 - ], - "y": [ - 991195814042705325, - 1559922382138761102, - 15616159453482282503, - 1031107741111093289 - ], + "x": [4868257934818957423, 11529848268525929099, 7089666284160764141, 796901367628793969], + "y": [991195814042705325, 1559922382138761102, 15616159453482282503, 1031107741111093289], "infinity": false }, { - "x": [ - 17936772813090339705, - 10208762457499980701, - 14796710996322725970, - 638550977107438851 - ], - "y": [ - 5073905611192321777, - 2956648407808816974, - 7778989780119416172, - 2955106321082932072 - ], + "x": [17936772813090339705, 10208762457499980701, 14796710996322725970, 638550977107438851], + "y": [5073905611192321777, 2956648407808816974, 7778989780119416172, 2955106321082932072], "infinity": false } ], "total_lookup_entries_length": 7960377, "lookup_selector_commitment": { - "x": [ - 1083743271968869166, - 3134203175755215736, - 5835502497758804469, - 3010956977291777466 - ], - "y": [ - 3645612220088813035, - 32844736552579976, - 5426466326302260857, - 1489565191618899261 - ], + "x": [1083743271968869166, 3134203175755215736, 5835502497758804469, 3010956977291777466], + "y": [3645612220088813035, 32844736552579976, 5426466326302260857, 1489565191618899261], "infinity": false }, "lookup_tables_commitments": [ { - "x": [ - 5825422128268478267, - 9219263846299851036, - 3879231702557190566, - 1702488722758880769 - ], - "y": [ - 18311881100262470992, - 5742998199368802392, - 18106865487471159417, - 502191980176920012 - ], + "x": [5825422128268478267, 9219263846299851036, 3879231702557190566, 1702488722758880769], + "y": [18311881100262470992, 5742998199368802392, 18106865487471159417, 502191980176920012], "infinity": false }, { - "x": [ - 17195892082859417081, - 7890531942603584793, - 2381805632820057528, - 3173232410464566465 - ], - "y": [ - 16359614627947132075, - 3459600273035137079, - 4550762061432972122, - 3394559699318358224 - ], + "x": [17195892082859417081, 7890531942603584793, 2381805632820057528, 3173232410464566465], + "y": [16359614627947132075, 3459600273035137079, 4550762061432972122, 3394559699318358224], "infinity": false }, { - "x": [ - 1716103379277390185, - 18097936269579187542, - 16357329729761063450, - 1508640059338197502 - ], - "y": [ - 11014806739603983364, - 4396503314588777389, - 9397245609635151055, - 1703957955248411380 - ], + "x": [1716103379277390185, 18097936269579187542, 16357329729761063450, 1508640059338197502], + "y": [11014806739603983364, 4396503314588777389, 9397245609635151055, 1703957955248411380], "infinity": false }, { - "x": [ - 4770171350693477354, - 17110558673192292253, - 9799800677557311408, - 761984875463445481 - ], - "y": [ - 1560561403388310063, - 31331275310848146, - 287152055803835484, - 457826332542037277 - ], + "x": [4770171350693477354, 17110558673192292253, 9799800677557311408, 761984875463445481], + "y": [1560561403388310063, 31331275310848146, 287152055803835484, 457826332542037277], "infinity": false } ], "lookup_table_type_commitment": { - "x": [ - 11327495732840772606, - 7407664417001729515, - 9486600059857658309, - 3060296564241189838 - ], - "y": [ - 7624492872489320847, - 18248981556039704277, - 3877205757853252152, - 939885486002612376 - ], + "x": [11327495732840772606, 7407664417001729515, 9486600059857658309, 3060296564241189838], + "y": [7624492872489320847, 18248981556039704277, 3877205757853252152, 939885486002612376], "infinity": false }, "non_residues": [ - [ - 5, - 0, - 0, - 0 - ], - [ - 7, - 0, - 0, - 0 - ], - [ - 10, - 0, - 0, - 0 - ] + [5, 0, 0, 0], + [7, 0, 0, 0], + [10, 0, 0, 0] ], "g2_elements": [ { "x": { - "c0": [ - 5106727233969649389, - 7440829307424791261, - 4785637993704342649, - 1729627375292849782 - ], - "c1": [ - 10945020018377822914, - 17413811393473931026, - 8241798111626485029, - 1841571559660931130 - ] + "c0": [5106727233969649389, 7440829307424791261, 4785637993704342649, 1729627375292849782], + "c1": [10945020018377822914, 17413811393473931026, 8241798111626485029, 1841571559660931130] }, "y": { - "c0": [ - 5541340697920699818, - 16416156555105522555, - 5380518976772849807, - 1353435754470862315 - ], - "c1": [ - 6173549831154472795, - 13567992399387660019, - 17050234209342075797, - 650358724130500725 - ] + "c0": [5541340697920699818, 16416156555105522555, 5380518976772849807, 1353435754470862315], + "c1": [6173549831154472795, 13567992399387660019, 17050234209342075797, 650358724130500725] }, "infinity": false }, { "x": { - "c0": [ - 9089143573911733168, - 11482283522806384523, - 13585589533905622862, - 79029415676722370 - ], - "c1": [ - 5692040832573735873, - 16884514497384809355, - 16717166481813659368, - 2742131088506155463 - ] + "c0": [9089143573911733168, 11482283522806384523, 13585589533905622862, 79029415676722370], + "c1": [5692040832573735873, 16884514497384809355, 16717166481813659368, 2742131088506155463] }, "y": { - "c0": [ - 9604638503594647125, - 1289961608472612514, - 6217038149984805214, - 2521661352385209130 - ], - "c1": [ - 17168069778630926308, - 11309277837895768996, - 15154989611154567813, - 359271377050603491 - ] + "c0": [9604638503594647125, 1289961608472612514, 6217038149984805214, 2521661352385209130], + "c1": [17168069778630926308, 11309277837895768996, 15154989611154567813, 359271377050603491] }, "infinity": false } ] -} \ No newline at end of file +} diff --git a/core/bin/verification_key_generator_and_server/data/verification_12_key.json b/core/bin/verification_key_generator_and_server/data/verification_12_key.json index fec076f39ed..58fbb0a9602 100644 --- a/core/bin/verification_key_generator_and_server/data/verification_12_key.json +++ b/core/bin/verification_key_generator_and_server/data/verification_12_key.json @@ -5,395 +5,140 @@ "num_witness_polys": 0, "gate_setup_commitments": [ { - "x": [ - 456514006020943025, - 9595480195714948127, - 12254096252487404245, - 1742692690750856358 - ], - "y": [ - 16294223586064957217, - 3958270970168887906, - 11264067544872898258, - 1692817687935973108 - ], + "x": [456514006020943025, 9595480195714948127, 12254096252487404245, 1742692690750856358], + "y": [16294223586064957217, 3958270970168887906, 11264067544872898258, 1692817687935973108], "infinity": false }, { - "x": [ - 1359655052308122459, - 13840124148496555776, - 1774237333490664500, - 2964872651584750318 - ], - "y": [ - 11907598503482948769, - 8700506041798646988, - 15081040576888859990, - 3096802642049924528 - ], + "x": [1359655052308122459, 13840124148496555776, 1774237333490664500, 2964872651584750318], + "y": [11907598503482948769, 8700506041798646988, 15081040576888859990, 3096802642049924528], "infinity": false }, { - "x": [ - 2884314851670818573, - 13442465544210396156, - 5937955495868181363, - 2486997439179977778 - ], - "y": [ - 9309776793338098458, - 14492906371677122697, - 8837309186596588911, - 1081143755093508499 - ], + "x": [2884314851670818573, 13442465544210396156, 5937955495868181363, 2486997439179977778], + "y": [9309776793338098458, 14492906371677122697, 8837309186596588911, 1081143755093508499], "infinity": false }, { - "x": [ - 2655654413304275855, - 4244723109566147837, - 12150359360501203194, - 3338981627918702615 - ], - "y": [ - 2522870072161287404, - 17341373219317210182, - 13058930363994599297, - 210373422168410518 - ], + "x": [2655654413304275855, 4244723109566147837, 12150359360501203194, 3338981627918702615], + "y": [2522870072161287404, 17341373219317210182, 13058930363994599297, 210373422168410518], "infinity": false }, { - "x": [ - 16728834675380740056, - 2139390496020366235, - 9480389182940223467, - 2279560291896695719 - ], - "y": [ - 12461418813218976432, - 357566005384566098, - 5295578385080568808, - 1801243085576438875 - ], + "x": [16728834675380740056, 2139390496020366235, 9480389182940223467, 2279560291896695719], + "y": [12461418813218976432, 357566005384566098, 5295578385080568808, 1801243085576438875], "infinity": false }, { - "x": [ - 8716201428771436123, - 3392394702404760386, - 9990956922582058945, - 1388317411153212399 - ], - "y": [ - 11666415392681680155, - 10553517485129490455, - 16061047708722635939, - 2386622646140901822 - ], + "x": [8716201428771436123, 3392394702404760386, 9990956922582058945, 1388317411153212399], + "y": [11666415392681680155, 10553517485129490455, 16061047708722635939, 2386622646140901822], "infinity": false }, { - "x": [ - 16162432560623854812, - 15537581062716888632, - 12927223782958923606, - 2800634589869451227 - ], - "y": [ - 5345141365329635916, - 2224393250977631865, - 396527108738048188, - 2298318725146167177 - ], + "x": [16162432560623854812, 15537581062716888632, 12927223782958923606, 2800634589869451227], + "y": [5345141365329635916, 2224393250977631865, 396527108738048188, 2298318725146167177], "infinity": false }, { - "x": [ - 18372685954785469756, - 10436523365152935441, - 15509622927999798123, - 2050428620045833325 - ], - "y": [ - 4996265985148335658, - 6073112270434155721, - 4873288683270752338, - 503179567393027927 - ], + "x": [18372685954785469756, 10436523365152935441, 15509622927999798123, 2050428620045833325], + "y": [4996265985148335658, 6073112270434155721, 4873288683270752338, 503179567393027927], "infinity": false } ], "gate_selectors_commitments": [ { - "x": [ - 4986139828502830074, - 8644425445976253042, - 4851433922656693398, - 1419574698085640872 - ], - "y": [ - 16192186537521161947, - 16183885683582261905, - 1655718756619164666, - 3420236094426390604 - ], + "x": [4986139828502830074, 8644425445976253042, 4851433922656693398, 1419574698085640872], + "y": [16192186537521161947, 16183885683582261905, 1655718756619164666, 3420236094426390604], "infinity": false }, { - "x": [ - 10727231722644915889, - 13777116005624794169, - 1422623412369619026, - 1701279717637612575 - ], - "y": [ - 6503647097427010249, - 6381043883853023011, - 15391366286376907281, - 1261207976874708261 - ], + "x": [10727231722644915889, 13777116005624794169, 1422623412369619026, 1701279717637612575], + "y": [6503647097427010249, 6381043883853023011, 15391366286376907281, 1261207976874708261], "infinity": false } ], "permutation_commitments": [ { - "x": [ - 11852073725466955067, - 179170887563176222, - 17529899074897279348, - 2496783194148289461 - ], - "y": [ - 15490041181991978284, - 6745436372504113852, - 7017978386715410058, - 3482556315200370895 - ], + "x": [11852073725466955067, 179170887563176222, 17529899074897279348, 2496783194148289461], + "y": [15490041181991978284, 6745436372504113852, 7017978386715410058, 3482556315200370895], "infinity": false }, { - "x": [ - 1330152738947291505, - 1668990644246591877, - 6805443255260621096, - 1309987766073890626 - ], - "y": [ - 18322300356676620444, - 8225233874302527542, - 5744327785164342590, - 410571567010522636 - ], + "x": [1330152738947291505, 1668990644246591877, 6805443255260621096, 1309987766073890626], + "y": [18322300356676620444, 8225233874302527542, 5744327785164342590, 410571567010522636], "infinity": false }, { - "x": [ - 13968210937929584911, - 17067601391996082961, - 4861463652254416951, - 2147834012714370408 - ], - "y": [ - 9012483356698219484, - 8660929519763525826, - 17744882010750642463, - 331423342438323189 - ], + "x": [13968210937929584911, 17067601391996082961, 4861463652254416951, 2147834012714370408], + "y": [9012483356698219484, 8660929519763525826, 17744882010750642463, 331423342438323189], "infinity": false }, { - "x": [ - 1352282553299127274, - 8587971715415488300, - 2471024479841756772, - 1239586065229072559 - ], - "y": [ - 1597792022909153930, - 5020991346876715357, - 5622801511814109910, - 1916460940163680567 - ], + "x": [1352282553299127274, 8587971715415488300, 2471024479841756772, 1239586065229072559], + "y": [1597792022909153930, 5020991346876715357, 5622801511814109910, 1916460940163680567], "infinity": false } ], "total_lookup_entries_length": 46287674, "lookup_selector_commitment": { - "x": [ - 11573469000684493293, - 15304040816406013002, - 9206902553183544808, - 2597693769113957036 - ], - "y": [ - 10538181061926273477, - 5239567589495426242, - 3627181047901924882, - 302644994241575377 - ], + "x": [11573469000684493293, 15304040816406013002, 9206902553183544808, 2597693769113957036], + "y": [10538181061926273477, 5239567589495426242, 3627181047901924882, 302644994241575377], "infinity": false }, "lookup_tables_commitments": [ { - "x": [ - 5134795695995115566, - 12287750992060803275, - 3112021177339560487, - 2737779104829043419 - ], - "y": [ - 12960786984497012138, - 17246059378047870426, - 11486754204718893642, - 46104506716724806 - ], + "x": [5134795695995115566, 12287750992060803275, 3112021177339560487, 2737779104829043419], + "y": [12960786984497012138, 17246059378047870426, 11486754204718893642, 46104506716724806], "infinity": false }, { - "x": [ - 148472607159578301, - 1393814398025790148, - 13651878286378332448, - 3460878321325997474 - ], - "y": [ - 10791022888598424744, - 1931353219232076143, - 12342018346439101174, - 23632989633122111 - ], + "x": [148472607159578301, 1393814398025790148, 13651878286378332448, 3460878321325997474], + "y": [10791022888598424744, 1931353219232076143, 12342018346439101174, 23632989633122111], "infinity": false }, { - "x": [ - 1355031833403957875, - 10754997913401276231, - 8672292473740482178, - 3014145653612856517 - ], - "y": [ - 3728402825933673134, - 16492594359417243041, - 14619929139939206930, - 2894280666048705144 - ], + "x": [1355031833403957875, 10754997913401276231, 8672292473740482178, 3014145653612856517], + "y": [3728402825933673134, 16492594359417243041, 14619929139939206930, 2894280666048705144], "infinity": false }, { - "x": [ - 11362104917939269301, - 3050269804312222606, - 17884269955997757593, - 2804911625130359365 - ], - "y": [ - 9563576475625880180, - 9736108320914226650, - 11545696954602328389, - 1108440262014676246 - ], + "x": [11362104917939269301, 3050269804312222606, 17884269955997757593, 2804911625130359365], + "y": [9563576475625880180, 9736108320914226650, 11545696954602328389, 1108440262014676246], "infinity": false } ], "lookup_table_type_commitment": { - "x": [ - 5367643753678334453, - 18149093736372716410, - 1335188566370936146, - 668596617655217713 - ], - "y": [ - 9984652217894703540, - 16253861114794085212, - 2139268495406835151, - 710303505771002735 - ], + "x": [5367643753678334453, 18149093736372716410, 1335188566370936146, 668596617655217713], + "y": [9984652217894703540, 16253861114794085212, 2139268495406835151, 710303505771002735], "infinity": false }, "non_residues": [ - [ - 5, - 0, - 0, - 0 - ], - [ - 7, - 0, - 0, - 0 - ], - [ - 10, - 0, - 0, - 0 - ] + [5, 0, 0, 0], + [7, 0, 0, 0], + [10, 0, 0, 0] ], "g2_elements": [ { "x": { - "c0": [ - 5106727233969649389, - 7440829307424791261, - 4785637993704342649, - 1729627375292849782 - ], - "c1": [ - 10945020018377822914, - 17413811393473931026, - 8241798111626485029, - 1841571559660931130 - ] + "c0": [5106727233969649389, 7440829307424791261, 4785637993704342649, 1729627375292849782], + "c1": [10945020018377822914, 17413811393473931026, 8241798111626485029, 1841571559660931130] }, "y": { - "c0": [ - 5541340697920699818, - 16416156555105522555, - 5380518976772849807, - 1353435754470862315 - ], - "c1": [ - 6173549831154472795, - 13567992399387660019, - 17050234209342075797, - 650358724130500725 - ] + "c0": [5541340697920699818, 16416156555105522555, 5380518976772849807, 1353435754470862315], + "c1": [6173549831154472795, 13567992399387660019, 17050234209342075797, 650358724130500725] }, "infinity": false }, { "x": { - "c0": [ - 9089143573911733168, - 11482283522806384523, - 13585589533905622862, - 79029415676722370 - ], - "c1": [ - 5692040832573735873, - 16884514497384809355, - 16717166481813659368, - 2742131088506155463 - ] + "c0": [9089143573911733168, 11482283522806384523, 13585589533905622862, 79029415676722370], + "c1": [5692040832573735873, 16884514497384809355, 16717166481813659368, 2742131088506155463] }, "y": { - "c0": [ - 9604638503594647125, - 1289961608472612514, - 6217038149984805214, - 2521661352385209130 - ], - "c1": [ - 17168069778630926308, - 11309277837895768996, - 15154989611154567813, - 359271377050603491 - ] + "c0": [9604638503594647125, 1289961608472612514, 6217038149984805214, 2521661352385209130], + "c1": [17168069778630926308, 11309277837895768996, 15154989611154567813, 359271377050603491] }, "infinity": false } ] -} \ No newline at end of file +} diff --git a/core/bin/verification_key_generator_and_server/data/verification_13_key.json b/core/bin/verification_key_generator_and_server/data/verification_13_key.json index 73ffbd21200..bfa771167dd 100644 --- a/core/bin/verification_key_generator_and_server/data/verification_13_key.json +++ b/core/bin/verification_key_generator_and_server/data/verification_13_key.json @@ -5,395 +5,140 @@ "num_witness_polys": 0, "gate_setup_commitments": [ { - "x": [ - 17551054392858982554, - 6093238351564742844, - 9461983640740135929, - 665917981733823732 - ], - "y": [ - 5039211542045701927, - 14102316155129161178, - 7599318237652648682, - 1484263542771007309 - ], + "x": [17551054392858982554, 6093238351564742844, 9461983640740135929, 665917981733823732], + "y": [5039211542045701927, 14102316155129161178, 7599318237652648682, 1484263542771007309], "infinity": false }, { - "x": [ - 14015566113565304739, - 12895182424777444911, - 5150482782915031712, - 3280776276671330755 - ], - "y": [ - 5503211683737487414, - 5857977821275887356, - 1294122171191120577, - 2917900236095606783 - ], + "x": [14015566113565304739, 12895182424777444911, 5150482782915031712, 3280776276671330755], + "y": [5503211683737487414, 5857977821275887356, 1294122171191120577, 2917900236095606783], "infinity": false }, { - "x": [ - 11180353512945796758, - 5467792637578213396, - 14862660111090994534, - 1678570344676416345 - ], - "y": [ - 16496106534540891926, - 4355829424666415263, - 8379906815867503783, - 2141225531456729878 - ], + "x": [11180353512945796758, 5467792637578213396, 14862660111090994534, 1678570344676416345], + "y": [16496106534540891926, 4355829424666415263, 8379906815867503783, 2141225531456729878], "infinity": false }, { - "x": [ - 10512618919562577175, - 8909238001556772501, - 8669074760108324520, - 3259590816167766101 - ], - "y": [ - 15477336671232249792, - 10209451912771766896, - 13672268903388741173, - 682487251336397201 - ], + "x": [10512618919562577175, 8909238001556772501, 8669074760108324520, 3259590816167766101], + "y": [15477336671232249792, 10209451912771766896, 13672268903388741173, 682487251336397201], "infinity": false }, { - "x": [ - 14233534177298597555, - 14428793231398751908, - 18070433438826750034, - 1176819688107481869 - ], - "y": [ - 9251234182098356520, - 17131606126090989402, - 17185633762130361526, - 70013401388751862 - ], + "x": [14233534177298597555, 14428793231398751908, 18070433438826750034, 1176819688107481869], + "y": [9251234182098356520, 17131606126090989402, 17185633762130361526, 70013401388751862], "infinity": false }, { - "x": [ - 14148566925658671094, - 812517577375883951, - 5030512299767107864, - 44275794325016754 - ], - "y": [ - 3275438385460491589, - 12366768737850140720, - 10754478223029148744, - 64366431004577735 - ], + "x": [14148566925658671094, 812517577375883951, 5030512299767107864, 44275794325016754], + "y": [3275438385460491589, 12366768737850140720, 10754478223029148744, 64366431004577735], "infinity": false }, { - "x": [ - 5646513434714516506, - 12578668031398681290, - 6956692825033783810, - 536471110695536326 - ], - "y": [ - 876079378616587621, - 9787032999740439668, - 14965634813605966164, - 367083452910738472 - ], + "x": [5646513434714516506, 12578668031398681290, 6956692825033783810, 536471110695536326], + "y": [876079378616587621, 9787032999740439668, 14965634813605966164, 367083452910738472], "infinity": false }, { - "x": [ - 10902302115259229513, - 14044271471332330954, - 14571826360674828773, - 733766328575554031 - ], - "y": [ - 8186695183963076514, - 621472878958955881, - 14756382569165412398, - 3165780226323675661 - ], + "x": [10902302115259229513, 14044271471332330954, 14571826360674828773, 733766328575554031], + "y": [8186695183963076514, 621472878958955881, 14756382569165412398, 3165780226323675661], "infinity": false } ], "gate_selectors_commitments": [ { - "x": [ - 17780673306296332984, - 10355922416617009060, - 5077451999006954761, - 2644291606399153501 - ], - "y": [ - 884498752701137122, - 731399349168706916, - 4286165746592754883, - 3279732117855760703 - ], + "x": [17780673306296332984, 10355922416617009060, 5077451999006954761, 2644291606399153501], + "y": [884498752701137122, 731399349168706916, 4286165746592754883, 3279732117855760703], "infinity": false }, { - "x": [ - 11012802284910829398, - 7859388231941271159, - 17586341808458361180, - 1386364899721133297 - ], - "y": [ - 15634369655108108777, - 3858480397682251762, - 17706291110507066608, - 1663421415693803071 - ], + "x": [11012802284910829398, 7859388231941271159, 17586341808458361180, 1386364899721133297], + "y": [15634369655108108777, 3858480397682251762, 17706291110507066608, 1663421415693803071], "infinity": false } ], "permutation_commitments": [ { - "x": [ - 18134041530736321349, - 4345724579806003155, - 2324407857452293002, - 2319164124977213120 - ], - "y": [ - 14302129084811449335, - 8588677756442252515, - 3323846949783670865, - 2109729211841784387 - ], + "x": [18134041530736321349, 4345724579806003155, 2324407857452293002, 2319164124977213120], + "y": [14302129084811449335, 8588677756442252515, 3323846949783670865, 2109729211841784387], "infinity": false }, { - "x": [ - 14486843004985564085, - 10799247040254992370, - 7658639806933647132, - 2215292564171027727 - ], - "y": [ - 14258341133968554193, - 11685656973533320944, - 14111972937744219524, - 1172604679688980794 - ], + "x": [14486843004985564085, 10799247040254992370, 7658639806933647132, 2215292564171027727], + "y": [14258341133968554193, 11685656973533320944, 14111972937744219524, 1172604679688980794], "infinity": false }, { - "x": [ - 12872375111956991701, - 14049784009914403066, - 15325016171856456312, - 2811875539960405333 - ], - "y": [ - 5711194902040443430, - 13827091592207472460, - 17950028361571343192, - 1672758585097311581 - ], + "x": [12872375111956991701, 14049784009914403066, 15325016171856456312, 2811875539960405333], + "y": [5711194902040443430, 13827091592207472460, 17950028361571343192, 1672758585097311581], "infinity": false }, { - "x": [ - 11717525586585736911, - 730672019767199816, - 3010255132348992613, - 2780587454575324896 - ], - "y": [ - 1473124157542628664, - 1573646910034288561, - 10026766074599473146, - 563223750818543582 - ], + "x": [11717525586585736911, 730672019767199816, 3010255132348992613, 2780587454575324896], + "y": [1473124157542628664, 1573646910034288561, 10026766074599473146, 563223750818543582], "infinity": false } ], "total_lookup_entries_length": 42547753, "lookup_selector_commitment": { - "x": [ - 4539928924349895484, - 2792770915461027618, - 11611697420465472575, - 1384307956752801018 - ], - "y": [ - 8840366360901511807, - 8892919985613263102, - 11941090149541110830, - 1930352681887390920 - ], + "x": [4539928924349895484, 2792770915461027618, 11611697420465472575, 1384307956752801018], + "y": [8840366360901511807, 8892919985613263102, 11941090149541110830, 1930352681887390920], "infinity": false }, "lookup_tables_commitments": [ { - "x": [ - 631990924006796604, - 16139625628991115157, - 13331739325995827711, - 1062301837743594995 - ], - "y": [ - 15303054606290800139, - 15906872095881647437, - 7093896572295020249, - 1342952934989901142 - ], + "x": [631990924006796604, 16139625628991115157, 13331739325995827711, 1062301837743594995], + "y": [15303054606290800139, 15906872095881647437, 7093896572295020249, 1342952934989901142], "infinity": false }, { - "x": [ - 7983921919542246393, - 13296544189644416678, - 17081022784392007697, - 1980832835348244027 - ], - "y": [ - 10874958134865200330, - 7702740658637630534, - 14052057929798961943, - 3193353539419869016 - ], + "x": [7983921919542246393, 13296544189644416678, 17081022784392007697, 1980832835348244027], + "y": [10874958134865200330, 7702740658637630534, 14052057929798961943, 3193353539419869016], "infinity": false }, { - "x": [ - 1114587284824996932, - 4636906500482867924, - 15328247172597030456, - 87946895873973686 - ], - "y": [ - 15573033830207915877, - 5194694185599035278, - 2562407345425607214, - 2782078999306862675 - ], + "x": [1114587284824996932, 4636906500482867924, 15328247172597030456, 87946895873973686], + "y": [15573033830207915877, 5194694185599035278, 2562407345425607214, 2782078999306862675], "infinity": false }, { - "x": [ - 18225112781127431982, - 18048613958187123807, - 7325490730844456621, - 1953409020724855888 - ], - "y": [ - 7577000130125917198, - 6193701449695751861, - 4102082927677054717, - 395350071385269650 - ], + "x": [18225112781127431982, 18048613958187123807, 7325490730844456621, 1953409020724855888], + "y": [7577000130125917198, 6193701449695751861, 4102082927677054717, 395350071385269650], "infinity": false } ], "lookup_table_type_commitment": { - "x": [ - 4121704254446914578, - 13863658665929861884, - 15362282368839162345, - 2762703036966024619 - ], - "y": [ - 102846692212239082, - 14904466746900448136, - 16872429770359000841, - 1687152581020907098 - ], + "x": [4121704254446914578, 13863658665929861884, 15362282368839162345, 2762703036966024619], + "y": [102846692212239082, 14904466746900448136, 16872429770359000841, 1687152581020907098], "infinity": false }, "non_residues": [ - [ - 5, - 0, - 0, - 0 - ], - [ - 7, - 0, - 0, - 0 - ], - [ - 10, - 0, - 0, - 0 - ] + [5, 0, 0, 0], + [7, 0, 0, 0], + [10, 0, 0, 0] ], "g2_elements": [ { "x": { - "c0": [ - 5106727233969649389, - 7440829307424791261, - 4785637993704342649, - 1729627375292849782 - ], - "c1": [ - 10945020018377822914, - 17413811393473931026, - 8241798111626485029, - 1841571559660931130 - ] + "c0": [5106727233969649389, 7440829307424791261, 4785637993704342649, 1729627375292849782], + "c1": [10945020018377822914, 17413811393473931026, 8241798111626485029, 1841571559660931130] }, "y": { - "c0": [ - 5541340697920699818, - 16416156555105522555, - 5380518976772849807, - 1353435754470862315 - ], - "c1": [ - 6173549831154472795, - 13567992399387660019, - 17050234209342075797, - 650358724130500725 - ] + "c0": [5541340697920699818, 16416156555105522555, 5380518976772849807, 1353435754470862315], + "c1": [6173549831154472795, 13567992399387660019, 17050234209342075797, 650358724130500725] }, "infinity": false }, { "x": { - "c0": [ - 9089143573911733168, - 11482283522806384523, - 13585589533905622862, - 79029415676722370 - ], - "c1": [ - 5692040832573735873, - 16884514497384809355, - 16717166481813659368, - 2742131088506155463 - ] + "c0": [9089143573911733168, 11482283522806384523, 13585589533905622862, 79029415676722370], + "c1": [5692040832573735873, 16884514497384809355, 16717166481813659368, 2742131088506155463] }, "y": { - "c0": [ - 9604638503594647125, - 1289961608472612514, - 6217038149984805214, - 2521661352385209130 - ], - "c1": [ - 17168069778630926308, - 11309277837895768996, - 15154989611154567813, - 359271377050603491 - ] + "c0": [9604638503594647125, 1289961608472612514, 6217038149984805214, 2521661352385209130], + "c1": [17168069778630926308, 11309277837895768996, 15154989611154567813, 359271377050603491] }, "infinity": false } ] -} \ No newline at end of file +} diff --git a/core/bin/verification_key_generator_and_server/data/verification_14_key.json b/core/bin/verification_key_generator_and_server/data/verification_14_key.json index e8c42d407e3..48c1ee6a6a7 100644 --- a/core/bin/verification_key_generator_and_server/data/verification_14_key.json +++ b/core/bin/verification_key_generator_and_server/data/verification_14_key.json @@ -5,395 +5,140 @@ "num_witness_polys": 0, "gate_setup_commitments": [ { - "x": [ - 6916434521451934576, - 614815553772638285, - 3742595993843812033, - 2823214088432624432 - ], - "y": [ - 11642815096362884283, - 18063950820723921281, - 6353943092001719992, - 3201898419478369298 - ], + "x": [6916434521451934576, 614815553772638285, 3742595993843812033, 2823214088432624432], + "y": [11642815096362884283, 18063950820723921281, 6353943092001719992, 3201898419478369298], "infinity": false }, { - "x": [ - 10647237757917239762, - 1269177049592707998, - 2650053775033150725, - 582198744757304104 - ], - "y": [ - 9804667267596536998, - 493663115027956828, - 13953159385227792767, - 1568248765042207679 - ], + "x": [10647237757917239762, 1269177049592707998, 2650053775033150725, 582198744757304104], + "y": [9804667267596536998, 493663115027956828, 13953159385227792767, 1568248765042207679], "infinity": false }, { - "x": [ - 7910659438561833906, - 12456422925439856914, - 10869604528749370003, - 1213616301038416610 - ], - "y": [ - 2606202790862698157, - 6809934263763206210, - 17472080335242458272, - 2884639755368519501 - ], + "x": [7910659438561833906, 12456422925439856914, 10869604528749370003, 1213616301038416610], + "y": [2606202790862698157, 6809934263763206210, 17472080335242458272, 2884639755368519501], "infinity": false }, { - "x": [ - 14211325859682683183, - 11018598407116786751, - 10064425366978091674, - 2748595948091261209 - ], - "y": [ - 13960202853590116423, - 1211975538022172568, - 16303435518817750320, - 1634234707214097860 - ], + "x": [14211325859682683183, 11018598407116786751, 10064425366978091674, 2748595948091261209], + "y": [13960202853590116423, 1211975538022172568, 16303435518817750320, 1634234707214097860], "infinity": false }, { - "x": [ - 4528591178982443847, - 16310104707629911601, - 5532120103079323919, - 1347877820087040669 - ], - "y": [ - 17983603511717948746, - 9529659424488112452, - 7820918413906679254, - 1819855238351369466 - ], + "x": [4528591178982443847, 16310104707629911601, 5532120103079323919, 1347877820087040669], + "y": [17983603511717948746, 9529659424488112452, 7820918413906679254, 1819855238351369466], "infinity": false }, { - "x": [ - 14415562798118912210, - 6550719056383417327, - 424281724891761932, - 1264340531903932141 - ], - "y": [ - 7768057951329404686, - 15024442753889769568, - 9676935351692818899, - 1492251668690310932 - ], + "x": [14415562798118912210, 6550719056383417327, 424281724891761932, 1264340531903932141], + "y": [7768057951329404686, 15024442753889769568, 9676935351692818899, 1492251668690310932], "infinity": false }, { - "x": [ - 2619366878850208112, - 12150914745315976156, - 8375197026043390274, - 1935272977563031501 - ], - "y": [ - 5381369692389055354, - 17978011500330472972, - 17420193441326928998, - 479187691463910357 - ], + "x": [2619366878850208112, 12150914745315976156, 8375197026043390274, 1935272977563031501], + "y": [5381369692389055354, 17978011500330472972, 17420193441326928998, 479187691463910357], "infinity": false }, { - "x": [ - 8720830951139717797, - 15985700059986022675, - 11876530273787337931, - 421322430672290976 - ], - "y": [ - 9700690437922183179, - 1976785701667862157, - 16634886936358874061, - 3002178567925406588 - ], + "x": [8720830951139717797, 15985700059986022675, 11876530273787337931, 421322430672290976], + "y": [9700690437922183179, 1976785701667862157, 16634886936358874061, 3002178567925406588], "infinity": false } ], "gate_selectors_commitments": [ { - "x": [ - 8284083154661042764, - 11776500066398184343, - 868620904897679124, - 2988582549909766892 - ], - "y": [ - 10794129605563176627, - 15487634480061313925, - 17194646451372113884, - 2087686927573540537 - ], + "x": [8284083154661042764, 11776500066398184343, 868620904897679124, 2988582549909766892], + "y": [10794129605563176627, 15487634480061313925, 17194646451372113884, 2087686927573540537], "infinity": false }, { - "x": [ - 7916190330285050096, - 11731220788334102406, - 6221883233572429550, - 2552280229203107267 - ], - "y": [ - 10510502959728300366, - 14682539966609739595, - 8275243146917870162, - 164811532254637923 - ], + "x": [7916190330285050096, 11731220788334102406, 6221883233572429550, 2552280229203107267], + "y": [10510502959728300366, 14682539966609739595, 8275243146917870162, 164811532254637923], "infinity": false } ], "permutation_commitments": [ { - "x": [ - 195850038587200624, - 10136289160450054078, - 4386512701252721226, - 219366815902177323 - ], - "y": [ - 12042545079209848932, - 599057886584676736, - 14545610403811537682, - 498958995843318019 - ], + "x": [195850038587200624, 10136289160450054078, 4386512701252721226, 219366815902177323], + "y": [12042545079209848932, 599057886584676736, 14545610403811537682, 498958995843318019], "infinity": false }, { - "x": [ - 4721932753701441297, - 1676671918244393403, - 6943597542294442696, - 50994782040503038 - ], - "y": [ - 8321420884695240511, - 10606883887907326697, - 11471075822795411018, - 1311422627151559437 - ], + "x": [4721932753701441297, 1676671918244393403, 6943597542294442696, 50994782040503038], + "y": [8321420884695240511, 10606883887907326697, 11471075822795411018, 1311422627151559437], "infinity": false }, { - "x": [ - 85448132386017640, - 13016912343020112485, - 11647418800345296605, - 1741562939125330787 - ], - "y": [ - 10753835454658443286, - 8646325836340244979, - 7348777908140142985, - 2196062626460604424 - ], + "x": [85448132386017640, 13016912343020112485, 11647418800345296605, 1741562939125330787], + "y": [10753835454658443286, 8646325836340244979, 7348777908140142985, 2196062626460604424], "infinity": false }, { - "x": [ - 2125624295892265840, - 12754141819506101591, - 8789168208880604752, - 947087620272222934 - ], - "y": [ - 12566258871261234263, - 12307504590191426495, - 6700589767183706452, - 1828704371386663334 - ], + "x": [2125624295892265840, 12754141819506101591, 8789168208880604752, 947087620272222934], + "y": [12566258871261234263, 12307504590191426495, 6700589767183706452, 1828704371386663334], "infinity": false } ], "total_lookup_entries_length": 42212029, "lookup_selector_commitment": { - "x": [ - 7709849601046260359, - 6836713108454667472, - 17360769186231334246, - 2348971634881039863 - ], - "y": [ - 13380830060569421804, - 15446653016734774164, - 17884501636917484387, - 1386904567459265970 - ], + "x": [7709849601046260359, 6836713108454667472, 17360769186231334246, 2348971634881039863], + "y": [13380830060569421804, 15446653016734774164, 17884501636917484387, 1386904567459265970], "infinity": false }, "lookup_tables_commitments": [ { - "x": [ - 631990924006796604, - 16139625628991115157, - 13331739325995827711, - 1062301837743594995 - ], - "y": [ - 15303054606290800139, - 15906872095881647437, - 7093896572295020249, - 1342952934989901142 - ], + "x": [631990924006796604, 16139625628991115157, 13331739325995827711, 1062301837743594995], + "y": [15303054606290800139, 15906872095881647437, 7093896572295020249, 1342952934989901142], "infinity": false }, { - "x": [ - 7983921919542246393, - 13296544189644416678, - 17081022784392007697, - 1980832835348244027 - ], - "y": [ - 10874958134865200330, - 7702740658637630534, - 14052057929798961943, - 3193353539419869016 - ], + "x": [7983921919542246393, 13296544189644416678, 17081022784392007697, 1980832835348244027], + "y": [10874958134865200330, 7702740658637630534, 14052057929798961943, 3193353539419869016], "infinity": false }, { - "x": [ - 1114587284824996932, - 4636906500482867924, - 15328247172597030456, - 87946895873973686 - ], - "y": [ - 15573033830207915877, - 5194694185599035278, - 2562407345425607214, - 2782078999306862675 - ], + "x": [1114587284824996932, 4636906500482867924, 15328247172597030456, 87946895873973686], + "y": [15573033830207915877, 5194694185599035278, 2562407345425607214, 2782078999306862675], "infinity": false }, { - "x": [ - 18225112781127431982, - 18048613958187123807, - 7325490730844456621, - 1953409020724855888 - ], - "y": [ - 7577000130125917198, - 6193701449695751861, - 4102082927677054717, - 395350071385269650 - ], + "x": [18225112781127431982, 18048613958187123807, 7325490730844456621, 1953409020724855888], + "y": [7577000130125917198, 6193701449695751861, 4102082927677054717, 395350071385269650], "infinity": false } ], "lookup_table_type_commitment": { - "x": [ - 6960699536013090594, - 2075384204892265266, - 12053931571725248687, - 1371193846897305849 - ], - "y": [ - 8904850119058507432, - 10465598889525773001, - 16159541505228012497, - 1982452464017823539 - ], + "x": [6960699536013090594, 2075384204892265266, 12053931571725248687, 1371193846897305849], + "y": [8904850119058507432, 10465598889525773001, 16159541505228012497, 1982452464017823539], "infinity": false }, "non_residues": [ - [ - 5, - 0, - 0, - 0 - ], - [ - 7, - 0, - 0, - 0 - ], - [ - 10, - 0, - 0, - 0 - ] + [5, 0, 0, 0], + [7, 0, 0, 0], + [10, 0, 0, 0] ], "g2_elements": [ { "x": { - "c0": [ - 5106727233969649389, - 7440829307424791261, - 4785637993704342649, - 1729627375292849782 - ], - "c1": [ - 10945020018377822914, - 17413811393473931026, - 8241798111626485029, - 1841571559660931130 - ] + "c0": [5106727233969649389, 7440829307424791261, 4785637993704342649, 1729627375292849782], + "c1": [10945020018377822914, 17413811393473931026, 8241798111626485029, 1841571559660931130] }, "y": { - "c0": [ - 5541340697920699818, - 16416156555105522555, - 5380518976772849807, - 1353435754470862315 - ], - "c1": [ - 6173549831154472795, - 13567992399387660019, - 17050234209342075797, - 650358724130500725 - ] + "c0": [5541340697920699818, 16416156555105522555, 5380518976772849807, 1353435754470862315], + "c1": [6173549831154472795, 13567992399387660019, 17050234209342075797, 650358724130500725] }, "infinity": false }, { "x": { - "c0": [ - 9089143573911733168, - 11482283522806384523, - 13585589533905622862, - 79029415676722370 - ], - "c1": [ - 5692040832573735873, - 16884514497384809355, - 16717166481813659368, - 2742131088506155463 - ] + "c0": [9089143573911733168, 11482283522806384523, 13585589533905622862, 79029415676722370], + "c1": [5692040832573735873, 16884514497384809355, 16717166481813659368, 2742131088506155463] }, "y": { - "c0": [ - 9604638503594647125, - 1289961608472612514, - 6217038149984805214, - 2521661352385209130 - ], - "c1": [ - 17168069778630926308, - 11309277837895768996, - 15154989611154567813, - 359271377050603491 - ] + "c0": [9604638503594647125, 1289961608472612514, 6217038149984805214, 2521661352385209130], + "c1": [17168069778630926308, 11309277837895768996, 15154989611154567813, 359271377050603491] }, "infinity": false } ] -} \ No newline at end of file +} diff --git a/core/bin/verification_key_generator_and_server/data/verification_15_key.json b/core/bin/verification_key_generator_and_server/data/verification_15_key.json index 356dbb3c531..674c931f1bd 100644 --- a/core/bin/verification_key_generator_and_server/data/verification_15_key.json +++ b/core/bin/verification_key_generator_and_server/data/verification_15_key.json @@ -5,395 +5,140 @@ "num_witness_polys": 0, "gate_setup_commitments": [ { - "x": [ - 3227382513538635502, - 10189582412003011525, - 1928710987967879299, - 1641062823248805930 - ], - "y": [ - 3271795224553087841, - 14036363906521936156, - 10253705337161624780, - 3091191233208402889 - ], + "x": [3227382513538635502, 10189582412003011525, 1928710987967879299, 1641062823248805930], + "y": [3271795224553087841, 14036363906521936156, 10253705337161624780, 3091191233208402889], "infinity": false }, { - "x": [ - 3541471743181642086, - 8117051273006688414, - 685909872467163024, - 2614724468827209722 - ], - "y": [ - 1096952120887201428, - 8197980407203032569, - 3949713006885563085, - 2838982585728277197 - ], + "x": [3541471743181642086, 8117051273006688414, 685909872467163024, 2614724468827209722], + "y": [1096952120887201428, 8197980407203032569, 3949713006885563085, 2838982585728277197], "infinity": false }, { - "x": [ - 12432945880074879560, - 13444859845042471186, - 16599097070979057001, - 3064039790213026567 - ], - "y": [ - 3745088406100356357, - 11715355314289478148, - 2282946417129489745, - 1619614407449915711 - ], + "x": [12432945880074879560, 13444859845042471186, 16599097070979057001, 3064039790213026567], + "y": [3745088406100356357, 11715355314289478148, 2282946417129489745, 1619614407449915711], "infinity": false }, { - "x": [ - 6864310053920223866, - 11095455024311706186, - 12229748247000682102, - 2475016349586561501 - ], - "y": [ - 2946781066962542712, - 14275500021265062654, - 7624481756022778467, - 1439658776940615826 - ], + "x": [6864310053920223866, 11095455024311706186, 12229748247000682102, 2475016349586561501], + "y": [2946781066962542712, 14275500021265062654, 7624481756022778467, 1439658776940615826], "infinity": false }, { - "x": [ - 13589273139905087785, - 10411035015021574213, - 7322465558208873130, - 1805943743448229826 - ], - "y": [ - 13035238946064559886, - 8309482746549063820, - 14229757515324464781, - 1676135665275665956 - ], + "x": [13589273139905087785, 10411035015021574213, 7322465558208873130, 1805943743448229826], + "y": [13035238946064559886, 8309482746549063820, 14229757515324464781, 1676135665275665956], "infinity": false }, { - "x": [ - 84006308859404982, - 13783127238980064918, - 14101945786439708601, - 3343881426944938693 - ], - "y": [ - 11959320721291234482, - 7288504259378326725, - 9638777183731403514, - 1648453409181088010 - ], + "x": [84006308859404982, 13783127238980064918, 14101945786439708601, 3343881426944938693], + "y": [11959320721291234482, 7288504259378326725, 9638777183731403514, 1648453409181088010], "infinity": false }, { - "x": [ - 10987163680360734145, - 3374907765066907489, - 14421201974855570464, - 3148542489906320493 - ], - "y": [ - 17180031485000081847, - 1609372527008367113, - 6050341427989573858, - 477684541505306009 - ], + "x": [10987163680360734145, 3374907765066907489, 14421201974855570464, 3148542489906320493], + "y": [17180031485000081847, 1609372527008367113, 6050341427989573858, 477684541505306009], "infinity": false }, { - "x": [ - 2257028353691713628, - 6330174784373016532, - 1686021628649718039, - 2159927805963705967 - ], - "y": [ - 10814125155819336479, - 9673780307204445954, - 7995606758095566598, - 2252251279727988680 - ], + "x": [2257028353691713628, 6330174784373016532, 1686021628649718039, 2159927805963705967], + "y": [10814125155819336479, 9673780307204445954, 7995606758095566598, 2252251279727988680], "infinity": false } ], "gate_selectors_commitments": [ { - "x": [ - 12209724104183572477, - 11631007075974892904, - 18407423517909669447, - 1123848354500646471 - ], - "y": [ - 4749227851055533192, - 16918951234067984229, - 5345146076707243019, - 2836719468222132526 - ], + "x": [12209724104183572477, 11631007075974892904, 18407423517909669447, 1123848354500646471], + "y": [4749227851055533192, 16918951234067984229, 5345146076707243019, 2836719468222132526], "infinity": false }, { - "x": [ - 7250866110466496804, - 16022969863388101391, - 16334300930347324147, - 2232272485807431638 - ], - "y": [ - 257675104580526310, - 8044331403028603186, - 2070174268860891010, - 412313474208091695 - ], + "x": [7250866110466496804, 16022969863388101391, 16334300930347324147, 2232272485807431638], + "y": [257675104580526310, 8044331403028603186, 2070174268860891010, 412313474208091695], "infinity": false } ], "permutation_commitments": [ { - "x": [ - 6736882681315025594, - 13400430183084617843, - 17182588928882896917, - 413858188107207402 - ], - "y": [ - 11944170108613027081, - 10598841640624895850, - 9086311820289524704, - 994240611047161478 - ], + "x": [6736882681315025594, 13400430183084617843, 17182588928882896917, 413858188107207402], + "y": [11944170108613027081, 10598841640624895850, 9086311820289524704, 994240611047161478], "infinity": false }, { - "x": [ - 9500318283622871785, - 5480449932874899465, - 13224510306395939252, - 1891329668301281157 - ], - "y": [ - 7314078756040350933, - 1023294602177498218, - 16475078688698425911, - 1793945182112302214 - ], + "x": [9500318283622871785, 5480449932874899465, 13224510306395939252, 1891329668301281157], + "y": [7314078756040350933, 1023294602177498218, 16475078688698425911, 1793945182112302214], "infinity": false }, { - "x": [ - 17207548058425781429, - 2519222249126358251, - 16087595361924038018, - 3470846273906312296 - ], - "y": [ - 7578361094884620755, - 7082109151721400218, - 13675372677342046523, - 3204472226310685459 - ], + "x": [17207548058425781429, 2519222249126358251, 16087595361924038018, 3470846273906312296], + "y": [7578361094884620755, 7082109151721400218, 13675372677342046523, 3204472226310685459], "infinity": false }, { - "x": [ - 7036282717341939568, - 3035419720331773758, - 6765191455902729185, - 1301973211946290083 - ], - "y": [ - 697377419426635450, - 14612037890797520515, - 11746079616766057625, - 1031190413179598818 - ], + "x": [7036282717341939568, 3035419720331773758, 6765191455902729185, 1301973211946290083], + "y": [697377419426635450, 14612037890797520515, 11746079616766057625, 1031190413179598818], "infinity": false } ], "total_lookup_entries_length": 6391155, "lookup_selector_commitment": { - "x": [ - 17111915492430945419, - 17971275185478677346, - 14211391044159602918, - 2381455978713737016 - ], - "y": [ - 13971515893527127207, - 7078722574057096191, - 6337080743811431820, - 757015217034494132 - ], + "x": [17111915492430945419, 17971275185478677346, 14211391044159602918, 2381455978713737016], + "y": [13971515893527127207, 7078722574057096191, 6337080743811431820, 757015217034494132], "infinity": false }, "lookup_tables_commitments": [ { - "x": [ - 5825422128268478267, - 9219263846299851036, - 3879231702557190566, - 1702488722758880769 - ], - "y": [ - 18311881100262470992, - 5742998199368802392, - 18106865487471159417, - 502191980176920012 - ], + "x": [5825422128268478267, 9219263846299851036, 3879231702557190566, 1702488722758880769], + "y": [18311881100262470992, 5742998199368802392, 18106865487471159417, 502191980176920012], "infinity": false }, { - "x": [ - 17195892082859417081, - 7890531942603584793, - 2381805632820057528, - 3173232410464566465 - ], - "y": [ - 16359614627947132075, - 3459600273035137079, - 4550762061432972122, - 3394559699318358224 - ], + "x": [17195892082859417081, 7890531942603584793, 2381805632820057528, 3173232410464566465], + "y": [16359614627947132075, 3459600273035137079, 4550762061432972122, 3394559699318358224], "infinity": false }, { - "x": [ - 1716103379277390185, - 18097936269579187542, - 16357329729761063450, - 1508640059338197502 - ], - "y": [ - 11014806739603983364, - 4396503314588777389, - 9397245609635151055, - 1703957955248411380 - ], + "x": [1716103379277390185, 18097936269579187542, 16357329729761063450, 1508640059338197502], + "y": [11014806739603983364, 4396503314588777389, 9397245609635151055, 1703957955248411380], "infinity": false }, { - "x": [ - 4770171350693477354, - 17110558673192292253, - 9799800677557311408, - 761984875463445481 - ], - "y": [ - 1560561403388310063, - 31331275310848146, - 287152055803835484, - 457826332542037277 - ], + "x": [4770171350693477354, 17110558673192292253, 9799800677557311408, 761984875463445481], + "y": [1560561403388310063, 31331275310848146, 287152055803835484, 457826332542037277], "infinity": false } ], "lookup_table_type_commitment": { - "x": [ - 12452920133699897102, - 6896642231513345496, - 4655495116895575043, - 1453525729114564853 - ], - "y": [ - 3574087764464303986, - 10141819911397868785, - 2342639320036978232, - 556196027732983028 - ], + "x": [12452920133699897102, 6896642231513345496, 4655495116895575043, 1453525729114564853], + "y": [3574087764464303986, 10141819911397868785, 2342639320036978232, 556196027732983028], "infinity": false }, "non_residues": [ - [ - 5, - 0, - 0, - 0 - ], - [ - 7, - 0, - 0, - 0 - ], - [ - 10, - 0, - 0, - 0 - ] + [5, 0, 0, 0], + [7, 0, 0, 0], + [10, 0, 0, 0] ], "g2_elements": [ { "x": { - "c0": [ - 5106727233969649389, - 7440829307424791261, - 4785637993704342649, - 1729627375292849782 - ], - "c1": [ - 10945020018377822914, - 17413811393473931026, - 8241798111626485029, - 1841571559660931130 - ] + "c0": [5106727233969649389, 7440829307424791261, 4785637993704342649, 1729627375292849782], + "c1": [10945020018377822914, 17413811393473931026, 8241798111626485029, 1841571559660931130] }, "y": { - "c0": [ - 5541340697920699818, - 16416156555105522555, - 5380518976772849807, - 1353435754470862315 - ], - "c1": [ - 6173549831154472795, - 13567992399387660019, - 17050234209342075797, - 650358724130500725 - ] + "c0": [5541340697920699818, 16416156555105522555, 5380518976772849807, 1353435754470862315], + "c1": [6173549831154472795, 13567992399387660019, 17050234209342075797, 650358724130500725] }, "infinity": false }, { "x": { - "c0": [ - 9089143573911733168, - 11482283522806384523, - 13585589533905622862, - 79029415676722370 - ], - "c1": [ - 5692040832573735873, - 16884514497384809355, - 16717166481813659368, - 2742131088506155463 - ] + "c0": [9089143573911733168, 11482283522806384523, 13585589533905622862, 79029415676722370], + "c1": [5692040832573735873, 16884514497384809355, 16717166481813659368, 2742131088506155463] }, "y": { - "c0": [ - 9604638503594647125, - 1289961608472612514, - 6217038149984805214, - 2521661352385209130 - ], - "c1": [ - 17168069778630926308, - 11309277837895768996, - 15154989611154567813, - 359271377050603491 - ] + "c0": [9604638503594647125, 1289961608472612514, 6217038149984805214, 2521661352385209130], + "c1": [17168069778630926308, 11309277837895768996, 15154989611154567813, 359271377050603491] }, "infinity": false } ] -} \ No newline at end of file +} diff --git a/core/bin/verification_key_generator_and_server/data/verification_16_key.json b/core/bin/verification_key_generator_and_server/data/verification_16_key.json index 356dbb3c531..674c931f1bd 100644 --- a/core/bin/verification_key_generator_and_server/data/verification_16_key.json +++ b/core/bin/verification_key_generator_and_server/data/verification_16_key.json @@ -5,395 +5,140 @@ "num_witness_polys": 0, "gate_setup_commitments": [ { - "x": [ - 3227382513538635502, - 10189582412003011525, - 1928710987967879299, - 1641062823248805930 - ], - "y": [ - 3271795224553087841, - 14036363906521936156, - 10253705337161624780, - 3091191233208402889 - ], + "x": [3227382513538635502, 10189582412003011525, 1928710987967879299, 1641062823248805930], + "y": [3271795224553087841, 14036363906521936156, 10253705337161624780, 3091191233208402889], "infinity": false }, { - "x": [ - 3541471743181642086, - 8117051273006688414, - 685909872467163024, - 2614724468827209722 - ], - "y": [ - 1096952120887201428, - 8197980407203032569, - 3949713006885563085, - 2838982585728277197 - ], + "x": [3541471743181642086, 8117051273006688414, 685909872467163024, 2614724468827209722], + "y": [1096952120887201428, 8197980407203032569, 3949713006885563085, 2838982585728277197], "infinity": false }, { - "x": [ - 12432945880074879560, - 13444859845042471186, - 16599097070979057001, - 3064039790213026567 - ], - "y": [ - 3745088406100356357, - 11715355314289478148, - 2282946417129489745, - 1619614407449915711 - ], + "x": [12432945880074879560, 13444859845042471186, 16599097070979057001, 3064039790213026567], + "y": [3745088406100356357, 11715355314289478148, 2282946417129489745, 1619614407449915711], "infinity": false }, { - "x": [ - 6864310053920223866, - 11095455024311706186, - 12229748247000682102, - 2475016349586561501 - ], - "y": [ - 2946781066962542712, - 14275500021265062654, - 7624481756022778467, - 1439658776940615826 - ], + "x": [6864310053920223866, 11095455024311706186, 12229748247000682102, 2475016349586561501], + "y": [2946781066962542712, 14275500021265062654, 7624481756022778467, 1439658776940615826], "infinity": false }, { - "x": [ - 13589273139905087785, - 10411035015021574213, - 7322465558208873130, - 1805943743448229826 - ], - "y": [ - 13035238946064559886, - 8309482746549063820, - 14229757515324464781, - 1676135665275665956 - ], + "x": [13589273139905087785, 10411035015021574213, 7322465558208873130, 1805943743448229826], + "y": [13035238946064559886, 8309482746549063820, 14229757515324464781, 1676135665275665956], "infinity": false }, { - "x": [ - 84006308859404982, - 13783127238980064918, - 14101945786439708601, - 3343881426944938693 - ], - "y": [ - 11959320721291234482, - 7288504259378326725, - 9638777183731403514, - 1648453409181088010 - ], + "x": [84006308859404982, 13783127238980064918, 14101945786439708601, 3343881426944938693], + "y": [11959320721291234482, 7288504259378326725, 9638777183731403514, 1648453409181088010], "infinity": false }, { - "x": [ - 10987163680360734145, - 3374907765066907489, - 14421201974855570464, - 3148542489906320493 - ], - "y": [ - 17180031485000081847, - 1609372527008367113, - 6050341427989573858, - 477684541505306009 - ], + "x": [10987163680360734145, 3374907765066907489, 14421201974855570464, 3148542489906320493], + "y": [17180031485000081847, 1609372527008367113, 6050341427989573858, 477684541505306009], "infinity": false }, { - "x": [ - 2257028353691713628, - 6330174784373016532, - 1686021628649718039, - 2159927805963705967 - ], - "y": [ - 10814125155819336479, - 9673780307204445954, - 7995606758095566598, - 2252251279727988680 - ], + "x": [2257028353691713628, 6330174784373016532, 1686021628649718039, 2159927805963705967], + "y": [10814125155819336479, 9673780307204445954, 7995606758095566598, 2252251279727988680], "infinity": false } ], "gate_selectors_commitments": [ { - "x": [ - 12209724104183572477, - 11631007075974892904, - 18407423517909669447, - 1123848354500646471 - ], - "y": [ - 4749227851055533192, - 16918951234067984229, - 5345146076707243019, - 2836719468222132526 - ], + "x": [12209724104183572477, 11631007075974892904, 18407423517909669447, 1123848354500646471], + "y": [4749227851055533192, 16918951234067984229, 5345146076707243019, 2836719468222132526], "infinity": false }, { - "x": [ - 7250866110466496804, - 16022969863388101391, - 16334300930347324147, - 2232272485807431638 - ], - "y": [ - 257675104580526310, - 8044331403028603186, - 2070174268860891010, - 412313474208091695 - ], + "x": [7250866110466496804, 16022969863388101391, 16334300930347324147, 2232272485807431638], + "y": [257675104580526310, 8044331403028603186, 2070174268860891010, 412313474208091695], "infinity": false } ], "permutation_commitments": [ { - "x": [ - 6736882681315025594, - 13400430183084617843, - 17182588928882896917, - 413858188107207402 - ], - "y": [ - 11944170108613027081, - 10598841640624895850, - 9086311820289524704, - 994240611047161478 - ], + "x": [6736882681315025594, 13400430183084617843, 17182588928882896917, 413858188107207402], + "y": [11944170108613027081, 10598841640624895850, 9086311820289524704, 994240611047161478], "infinity": false }, { - "x": [ - 9500318283622871785, - 5480449932874899465, - 13224510306395939252, - 1891329668301281157 - ], - "y": [ - 7314078756040350933, - 1023294602177498218, - 16475078688698425911, - 1793945182112302214 - ], + "x": [9500318283622871785, 5480449932874899465, 13224510306395939252, 1891329668301281157], + "y": [7314078756040350933, 1023294602177498218, 16475078688698425911, 1793945182112302214], "infinity": false }, { - "x": [ - 17207548058425781429, - 2519222249126358251, - 16087595361924038018, - 3470846273906312296 - ], - "y": [ - 7578361094884620755, - 7082109151721400218, - 13675372677342046523, - 3204472226310685459 - ], + "x": [17207548058425781429, 2519222249126358251, 16087595361924038018, 3470846273906312296], + "y": [7578361094884620755, 7082109151721400218, 13675372677342046523, 3204472226310685459], "infinity": false }, { - "x": [ - 7036282717341939568, - 3035419720331773758, - 6765191455902729185, - 1301973211946290083 - ], - "y": [ - 697377419426635450, - 14612037890797520515, - 11746079616766057625, - 1031190413179598818 - ], + "x": [7036282717341939568, 3035419720331773758, 6765191455902729185, 1301973211946290083], + "y": [697377419426635450, 14612037890797520515, 11746079616766057625, 1031190413179598818], "infinity": false } ], "total_lookup_entries_length": 6391155, "lookup_selector_commitment": { - "x": [ - 17111915492430945419, - 17971275185478677346, - 14211391044159602918, - 2381455978713737016 - ], - "y": [ - 13971515893527127207, - 7078722574057096191, - 6337080743811431820, - 757015217034494132 - ], + "x": [17111915492430945419, 17971275185478677346, 14211391044159602918, 2381455978713737016], + "y": [13971515893527127207, 7078722574057096191, 6337080743811431820, 757015217034494132], "infinity": false }, "lookup_tables_commitments": [ { - "x": [ - 5825422128268478267, - 9219263846299851036, - 3879231702557190566, - 1702488722758880769 - ], - "y": [ - 18311881100262470992, - 5742998199368802392, - 18106865487471159417, - 502191980176920012 - ], + "x": [5825422128268478267, 9219263846299851036, 3879231702557190566, 1702488722758880769], + "y": [18311881100262470992, 5742998199368802392, 18106865487471159417, 502191980176920012], "infinity": false }, { - "x": [ - 17195892082859417081, - 7890531942603584793, - 2381805632820057528, - 3173232410464566465 - ], - "y": [ - 16359614627947132075, - 3459600273035137079, - 4550762061432972122, - 3394559699318358224 - ], + "x": [17195892082859417081, 7890531942603584793, 2381805632820057528, 3173232410464566465], + "y": [16359614627947132075, 3459600273035137079, 4550762061432972122, 3394559699318358224], "infinity": false }, { - "x": [ - 1716103379277390185, - 18097936269579187542, - 16357329729761063450, - 1508640059338197502 - ], - "y": [ - 11014806739603983364, - 4396503314588777389, - 9397245609635151055, - 1703957955248411380 - ], + "x": [1716103379277390185, 18097936269579187542, 16357329729761063450, 1508640059338197502], + "y": [11014806739603983364, 4396503314588777389, 9397245609635151055, 1703957955248411380], "infinity": false }, { - "x": [ - 4770171350693477354, - 17110558673192292253, - 9799800677557311408, - 761984875463445481 - ], - "y": [ - 1560561403388310063, - 31331275310848146, - 287152055803835484, - 457826332542037277 - ], + "x": [4770171350693477354, 17110558673192292253, 9799800677557311408, 761984875463445481], + "y": [1560561403388310063, 31331275310848146, 287152055803835484, 457826332542037277], "infinity": false } ], "lookup_table_type_commitment": { - "x": [ - 12452920133699897102, - 6896642231513345496, - 4655495116895575043, - 1453525729114564853 - ], - "y": [ - 3574087764464303986, - 10141819911397868785, - 2342639320036978232, - 556196027732983028 - ], + "x": [12452920133699897102, 6896642231513345496, 4655495116895575043, 1453525729114564853], + "y": [3574087764464303986, 10141819911397868785, 2342639320036978232, 556196027732983028], "infinity": false }, "non_residues": [ - [ - 5, - 0, - 0, - 0 - ], - [ - 7, - 0, - 0, - 0 - ], - [ - 10, - 0, - 0, - 0 - ] + [5, 0, 0, 0], + [7, 0, 0, 0], + [10, 0, 0, 0] ], "g2_elements": [ { "x": { - "c0": [ - 5106727233969649389, - 7440829307424791261, - 4785637993704342649, - 1729627375292849782 - ], - "c1": [ - 10945020018377822914, - 17413811393473931026, - 8241798111626485029, - 1841571559660931130 - ] + "c0": [5106727233969649389, 7440829307424791261, 4785637993704342649, 1729627375292849782], + "c1": [10945020018377822914, 17413811393473931026, 8241798111626485029, 1841571559660931130] }, "y": { - "c0": [ - 5541340697920699818, - 16416156555105522555, - 5380518976772849807, - 1353435754470862315 - ], - "c1": [ - 6173549831154472795, - 13567992399387660019, - 17050234209342075797, - 650358724130500725 - ] + "c0": [5541340697920699818, 16416156555105522555, 5380518976772849807, 1353435754470862315], + "c1": [6173549831154472795, 13567992399387660019, 17050234209342075797, 650358724130500725] }, "infinity": false }, { "x": { - "c0": [ - 9089143573911733168, - 11482283522806384523, - 13585589533905622862, - 79029415676722370 - ], - "c1": [ - 5692040832573735873, - 16884514497384809355, - 16717166481813659368, - 2742131088506155463 - ] + "c0": [9089143573911733168, 11482283522806384523, 13585589533905622862, 79029415676722370], + "c1": [5692040832573735873, 16884514497384809355, 16717166481813659368, 2742131088506155463] }, "y": { - "c0": [ - 9604638503594647125, - 1289961608472612514, - 6217038149984805214, - 2521661352385209130 - ], - "c1": [ - 17168069778630926308, - 11309277837895768996, - 15154989611154567813, - 359271377050603491 - ] + "c0": [9604638503594647125, 1289961608472612514, 6217038149984805214, 2521661352385209130], + "c1": [17168069778630926308, 11309277837895768996, 15154989611154567813, 359271377050603491] }, "infinity": false } ] -} \ No newline at end of file +} diff --git a/core/bin/verification_key_generator_and_server/data/verification_17_key.json b/core/bin/verification_key_generator_and_server/data/verification_17_key.json index 4886f501712..274d4625f42 100644 --- a/core/bin/verification_key_generator_and_server/data/verification_17_key.json +++ b/core/bin/verification_key_generator_and_server/data/verification_17_key.json @@ -5,395 +5,140 @@ "num_witness_polys": 0, "gate_setup_commitments": [ { - "x": [ - 17914331890341023175, - 5200903915088916638, - 7417971632353510341, - 989671567770015891 - ], - "y": [ - 2927207345798721401, - 12686845373576710402, - 977520799157489114, - 1882223742569339495 - ], + "x": [17914331890341023175, 5200903915088916638, 7417971632353510341, 989671567770015891], + "y": [2927207345798721401, 12686845373576710402, 977520799157489114, 1882223742569339495], "infinity": false }, { - "x": [ - 17162848902278956536, - 16169550484471334725, - 10830640611178609260, - 1347016616567630867 - ], - "y": [ - 6224316231648682710, - 10518372790293065661, - 4887066336660303630, - 703109868065750569 - ], + "x": [17162848902278956536, 16169550484471334725, 10830640611178609260, 1347016616567630867], + "y": [6224316231648682710, 10518372790293065661, 4887066336660303630, 703109868065750569], "infinity": false }, { - "x": [ - 15783141083967762454, - 16153855592853073081, - 5667838393811413602, - 1552498518850981979 - ], - "y": [ - 4220445586486275972, - 13196202402039716924, - 17506868028821343237, - 2718319833724164541 - ], + "x": [15783141083967762454, 16153855592853073081, 5667838393811413602, 1552498518850981979], + "y": [4220445586486275972, 13196202402039716924, 17506868028821343237, 2718319833724164541], "infinity": false }, { - "x": [ - 4896615254637588846, - 5804270398165250639, - 10274952983674590649, - 1937027782721476561 - ], - "y": [ - 14180244016629518742, - 1376497406583367686, - 11268467489552574214, - 2331396669725958189 - ], + "x": [4896615254637588846, 5804270398165250639, 10274952983674590649, 1937027782721476561], + "y": [14180244016629518742, 1376497406583367686, 11268467489552574214, 2331396669725958189], "infinity": false }, { - "x": [ - 191294939748295885, - 2804205121966814820, - 3897841028303648224, - 3406986167359695085 - ], - "y": [ - 6000542982074572633, - 1697448874567677325, - 10313504031977824294, - 320347014349001728 - ], + "x": [191294939748295885, 2804205121966814820, 3897841028303648224, 3406986167359695085], + "y": [6000542982074572633, 1697448874567677325, 10313504031977824294, 320347014349001728], "infinity": false }, { - "x": [ - 6817435454105168413, - 15823888625999007373, - 9766931118761036330, - 3392959293697897728 - ], - "y": [ - 3549039265311512008, - 4758653036115592629, - 219467419355603781, - 83059544477934848 - ], + "x": [6817435454105168413, 15823888625999007373, 9766931118761036330, 3392959293697897728], + "y": [3549039265311512008, 4758653036115592629, 219467419355603781, 83059544477934848], "infinity": false }, { - "x": [ - 5038171725639341807, - 6859992384823395611, - 15284967171349293554, - 16807092603996758 - ], - "y": [ - 16504201956683368367, - 12931995037356002803, - 16812826192957092842, - 3169839139097845275 - ], + "x": [5038171725639341807, 6859992384823395611, 15284967171349293554, 16807092603996758], + "y": [16504201956683368367, 12931995037356002803, 16812826192957092842, 3169839139097845275], "infinity": false }, { - "x": [ - 7140480682142203727, - 9518528852331365100, - 6189914959408603471, - 535939568308325781 - ], - "y": [ - 5944679084532939174, - 17280810090456322382, - 3743919877743496107, - 1235924204609568068 - ], + "x": [7140480682142203727, 9518528852331365100, 6189914959408603471, 535939568308325781], + "y": [5944679084532939174, 17280810090456322382, 3743919877743496107, 1235924204609568068], "infinity": false } ], "gate_selectors_commitments": [ { - "x": [ - 1929812895882850703, - 10386198218814398503, - 17007521659662498274, - 1093092717342753672 - ], - "y": [ - 14834187133095267171, - 15506032964234961178, - 7626816120460943443, - 871778379365004315 - ], + "x": [1929812895882850703, 10386198218814398503, 17007521659662498274, 1093092717342753672], + "y": [14834187133095267171, 15506032964234961178, 7626816120460943443, 871778379365004315], "infinity": false }, { - "x": [ - 15660406110329165813, - 8146521122567923995, - 2421739551937359002, - 3037598346026174089 - ], - "y": [ - 526124545966722472, - 1168331442853419483, - 4128095883471549051, - 2951909971734725955 - ], + "x": [15660406110329165813, 8146521122567923995, 2421739551937359002, 3037598346026174089], + "y": [526124545966722472, 1168331442853419483, 4128095883471549051, 2951909971734725955], "infinity": false } ], "permutation_commitments": [ { - "x": [ - 6206240620508019400, - 3690935139087147193, - 15230272164329216928, - 2140680869789406894 - ], - "y": [ - 14967331981004447304, - 1624146052760537503, - 8986435052862626311, - 334011853307313390 - ], + "x": [6206240620508019400, 3690935139087147193, 15230272164329216928, 2140680869789406894], + "y": [14967331981004447304, 1624146052760537503, 8986435052862626311, 334011853307313390], "infinity": false }, { - "x": [ - 4342223064246074020, - 2037946044543710684, - 9057698479075332373, - 1955362957846693345 - ], - "y": [ - 13253375713250043938, - 6754658208742468331, - 9339617748652368850, - 3066524060291544175 - ], + "x": [4342223064246074020, 2037946044543710684, 9057698479075332373, 1955362957846693345], + "y": [13253375713250043938, 6754658208742468331, 9339617748652368850, 3066524060291544175], "infinity": false }, { - "x": [ - 17765629723696241082, - 14243015821582305127, - 922013493526048847, - 186830516636733479 - ], - "y": [ - 14465184942185208224, - 11235596895177038197, - 5490682932088517686, - 1253279069662324930 - ], + "x": [17765629723696241082, 14243015821582305127, 922013493526048847, 186830516636733479], + "y": [14465184942185208224, 11235596895177038197, 5490682932088517686, 1253279069662324930], "infinity": false }, { - "x": [ - 9369367805867402420, - 12663806522952881709, - 10184609326459106945, - 1664572000409921348 - ], - "y": [ - 4383960972942823390, - 6526609131568596717, - 1343118583674917141, - 113408414321095416 - ], + "x": [9369367805867402420, 12663806522952881709, 10184609326459106945, 1664572000409921348], + "y": [4383960972942823390, 6526609131568596717, 1343118583674917141, 113408414321095416], "infinity": false } ], "total_lookup_entries_length": 6306340, "lookup_selector_commitment": { - "x": [ - 8662938005624859815, - 9126108646717466191, - 14321121874090966307, - 2777446762308933634 - ], - "y": [ - 12555265159079607081, - 9054928862248682392, - 2784170007581120117, - 1769718192676345815 - ], + "x": [8662938005624859815, 9126108646717466191, 14321121874090966307, 2777446762308933634], + "y": [12555265159079607081, 9054928862248682392, 2784170007581120117, 1769718192676345815], "infinity": false }, "lookup_tables_commitments": [ { - "x": [ - 631990924006796604, - 16139625628991115157, - 13331739325995827711, - 1062301837743594995 - ], - "y": [ - 15303054606290800139, - 15906872095881647437, - 7093896572295020249, - 1342952934989901142 - ], + "x": [631990924006796604, 16139625628991115157, 13331739325995827711, 1062301837743594995], + "y": [15303054606290800139, 15906872095881647437, 7093896572295020249, 1342952934989901142], "infinity": false }, { - "x": [ - 7983921919542246393, - 13296544189644416678, - 17081022784392007697, - 1980832835348244027 - ], - "y": [ - 10874958134865200330, - 7702740658637630534, - 14052057929798961943, - 3193353539419869016 - ], + "x": [7983921919542246393, 13296544189644416678, 17081022784392007697, 1980832835348244027], + "y": [10874958134865200330, 7702740658637630534, 14052057929798961943, 3193353539419869016], "infinity": false }, { - "x": [ - 1114587284824996932, - 4636906500482867924, - 15328247172597030456, - 87946895873973686 - ], - "y": [ - 15573033830207915877, - 5194694185599035278, - 2562407345425607214, - 2782078999306862675 - ], + "x": [1114587284824996932, 4636906500482867924, 15328247172597030456, 87946895873973686], + "y": [15573033830207915877, 5194694185599035278, 2562407345425607214, 2782078999306862675], "infinity": false }, { - "x": [ - 18225112781127431982, - 18048613958187123807, - 7325490730844456621, - 1953409020724855888 - ], - "y": [ - 7577000130125917198, - 6193701449695751861, - 4102082927677054717, - 395350071385269650 - ], + "x": [18225112781127431982, 18048613958187123807, 7325490730844456621, 1953409020724855888], + "y": [7577000130125917198, 6193701449695751861, 4102082927677054717, 395350071385269650], "infinity": false } ], "lookup_table_type_commitment": { - "x": [ - 12644448349947379666, - 16345179309557779118, - 10854030671875297787, - 1358228639202695992 - ], - "y": [ - 2673142241557152443, - 11674634738064487673, - 12992693662201776412, - 1888958170754620568 - ], + "x": [12644448349947379666, 16345179309557779118, 10854030671875297787, 1358228639202695992], + "y": [2673142241557152443, 11674634738064487673, 12992693662201776412, 1888958170754620568], "infinity": false }, "non_residues": [ - [ - 5, - 0, - 0, - 0 - ], - [ - 7, - 0, - 0, - 0 - ], - [ - 10, - 0, - 0, - 0 - ] + [5, 0, 0, 0], + [7, 0, 0, 0], + [10, 0, 0, 0] ], "g2_elements": [ { "x": { - "c0": [ - 5106727233969649389, - 7440829307424791261, - 4785637993704342649, - 1729627375292849782 - ], - "c1": [ - 10945020018377822914, - 17413811393473931026, - 8241798111626485029, - 1841571559660931130 - ] + "c0": [5106727233969649389, 7440829307424791261, 4785637993704342649, 1729627375292849782], + "c1": [10945020018377822914, 17413811393473931026, 8241798111626485029, 1841571559660931130] }, "y": { - "c0": [ - 5541340697920699818, - 16416156555105522555, - 5380518976772849807, - 1353435754470862315 - ], - "c1": [ - 6173549831154472795, - 13567992399387660019, - 17050234209342075797, - 650358724130500725 - ] + "c0": [5541340697920699818, 16416156555105522555, 5380518976772849807, 1353435754470862315], + "c1": [6173549831154472795, 13567992399387660019, 17050234209342075797, 650358724130500725] }, "infinity": false }, { "x": { - "c0": [ - 9089143573911733168, - 11482283522806384523, - 13585589533905622862, - 79029415676722370 - ], - "c1": [ - 5692040832573735873, - 16884514497384809355, - 16717166481813659368, - 2742131088506155463 - ] + "c0": [9089143573911733168, 11482283522806384523, 13585589533905622862, 79029415676722370], + "c1": [5692040832573735873, 16884514497384809355, 16717166481813659368, 2742131088506155463] }, "y": { - "c0": [ - 9604638503594647125, - 1289961608472612514, - 6217038149984805214, - 2521661352385209130 - ], - "c1": [ - 17168069778630926308, - 11309277837895768996, - 15154989611154567813, - 359271377050603491 - ] + "c0": [9604638503594647125, 1289961608472612514, 6217038149984805214, 2521661352385209130], + "c1": [17168069778630926308, 11309277837895768996, 15154989611154567813, 359271377050603491] }, "infinity": false } ] -} \ No newline at end of file +} diff --git a/core/bin/verification_key_generator_and_server/data/verification_18_key.json b/core/bin/verification_key_generator_and_server/data/verification_18_key.json index 0987039dd1f..68457e3688f 100644 --- a/core/bin/verification_key_generator_and_server/data/verification_18_key.json +++ b/core/bin/verification_key_generator_and_server/data/verification_18_key.json @@ -5,395 +5,140 @@ "num_witness_polys": 0, "gate_setup_commitments": [ { - "x": [ - 8828437332483635107, - 13777915698231175292, - 11504510351588004199, - 2516385517175522236 - ], - "y": [ - 1530453459325046685, - 2126477283125660971, - 6874073688275717548, - 2971751478402184988 - ], + "x": [8828437332483635107, 13777915698231175292, 11504510351588004199, 2516385517175522236], + "y": [1530453459325046685, 2126477283125660971, 6874073688275717548, 2971751478402184988], "infinity": false }, { - "x": [ - 3490885152333630169, - 4123320877294819459, - 5138828731030738163, - 3039569146695764058 - ], - "y": [ - 10725322881860790776, - 1512262420257872325, - 10563843054743673205, - 447776577449487981 - ], + "x": [3490885152333630169, 4123320877294819459, 5138828731030738163, 3039569146695764058], + "y": [10725322881860790776, 1512262420257872325, 10563843054743673205, 447776577449487981], "infinity": false }, { - "x": [ - 14957646468235752771, - 6216555943494703122, - 7827110015048654177, - 2702223139144227095 - ], - "y": [ - 505353369980003046, - 9687811614109626117, - 5346740791392836415, - 1340467989233731971 - ], + "x": [14957646468235752771, 6216555943494703122, 7827110015048654177, 2702223139144227095], + "y": [505353369980003046, 9687811614109626117, 5346740791392836415, 1340467989233731971], "infinity": false }, { - "x": [ - 3201028595190213325, - 9659059230246338206, - 901122635500995415, - 765851963674764103 - ], - "y": [ - 10609226610841230792, - 8145519080052709505, - 17851750066177581293, - 362176586681460505 - ], + "x": [3201028595190213325, 9659059230246338206, 901122635500995415, 765851963674764103], + "y": [10609226610841230792, 8145519080052709505, 17851750066177581293, 362176586681460505], "infinity": false }, { - "x": [ - 13374935211181268625, - 1347742735582506393, - 4588995338963087243, - 94453217016201562 - ], - "y": [ - 4077548225372117006, - 11859845367084549583, - 2736752177668563039, - 1134818940315684409 - ], + "x": [13374935211181268625, 1347742735582506393, 4588995338963087243, 94453217016201562], + "y": [4077548225372117006, 11859845367084549583, 2736752177668563039, 1134818940315684409], "infinity": false }, { - "x": [ - 9467178015658262369, - 10545965721679492606, - 5726831550010619228, - 2051827871593168334 - ], - "y": [ - 6169140154733194545, - 5574043976386236933, - 12140759986363309479, - 1521273866181786590 - ], + "x": [9467178015658262369, 10545965721679492606, 5726831550010619228, 2051827871593168334], + "y": [6169140154733194545, 5574043976386236933, 12140759986363309479, 1521273866181786590], "infinity": false }, { - "x": [ - 9642818207174528085, - 15617465062711953088, - 11263174413902929450, - 639683138088730423 - ], - "y": [ - 15150652293369779803, - 11338278639695990684, - 12204993260723588081, - 2039902155290309382 - ], + "x": [9642818207174528085, 15617465062711953088, 11263174413902929450, 639683138088730423], + "y": [15150652293369779803, 11338278639695990684, 12204993260723588081, 2039902155290309382], "infinity": false }, { - "x": [ - 7292405600450693833, - 573142590034645775, - 1583019100043676600, - 1978695840953226358 - ], - "y": [ - 5154489367309996043, - 8763740977657654022, - 9821219773990064941, - 2636875463267519559 - ], + "x": [7292405600450693833, 573142590034645775, 1583019100043676600, 1978695840953226358], + "y": [5154489367309996043, 8763740977657654022, 9821219773990064941, 2636875463267519559], "infinity": false } ], "gate_selectors_commitments": [ { - "x": [ - 2075450237700219880, - 2920304484074114568, - 8294843245052708759, - 555293007149161182 - ], - "y": [ - 6360019558055677441, - 7673047654179899818, - 10263007591992092214, - 2148859098846651643 - ], + "x": [2075450237700219880, 2920304484074114568, 8294843245052708759, 555293007149161182], + "y": [6360019558055677441, 7673047654179899818, 10263007591992092214, 2148859098846651643], "infinity": false }, { - "x": [ - 3970783323754285443, - 13019363829879217592, - 18197490676081603277, - 630296172623407012 - ], - "y": [ - 7987745494904024640, - 9631048689610078757, - 1592818072678520163, - 2678374240960081558 - ], + "x": [3970783323754285443, 13019363829879217592, 18197490676081603277, 630296172623407012], + "y": [7987745494904024640, 9631048689610078757, 1592818072678520163, 2678374240960081558], "infinity": false } ], "permutation_commitments": [ { - "x": [ - 3055966415338102721, - 18231075292903695376, - 9187400351012014001, - 2311743062653684305 - ], - "y": [ - 2553578246375478674, - 930511927228692161, - 2271826946385879571, - 3124263363559878329 - ], + "x": [3055966415338102721, 18231075292903695376, 9187400351012014001, 2311743062653684305], + "y": [2553578246375478674, 930511927228692161, 2271826946385879571, 3124263363559878329], "infinity": false }, { - "x": [ - 6936812562216228782, - 15195638439305648290, - 17827467578192758430, - 2674740411261002393 - ], - "y": [ - 9738743088557108685, - 17225541903460577384, - 16627013813461429872, - 494410407050490065 - ], + "x": [6936812562216228782, 15195638439305648290, 17827467578192758430, 2674740411261002393], + "y": [9738743088557108685, 17225541903460577384, 16627013813461429872, 494410407050490065], "infinity": false }, { - "x": [ - 10570962909758341245, - 18167360144953681397, - 2744925075742623060, - 736412139310579435 - ], - "y": [ - 13849279071386536985, - 10093748777935480433, - 904764951143479286, - 138814932031469939 - ], + "x": [10570962909758341245, 18167360144953681397, 2744925075742623060, 736412139310579435], + "y": [13849279071386536985, 10093748777935480433, 904764951143479286, 138814932031469939], "infinity": false }, { - "x": [ - 4533871929444677010, - 10106157783629999301, - 4178648893377901718, - 3164693318611048089 - ], - "y": [ - 12699039702383686311, - 4388078229442418460, - 8961813905523894854, - 570254591975307765 - ], + "x": [4533871929444677010, 10106157783629999301, 4178648893377901718, 3164693318611048089], + "y": [12699039702383686311, 4388078229442418460, 8961813905523894854, 570254591975307765], "infinity": false } ], "total_lookup_entries_length": 18884644, "lookup_selector_commitment": { - "x": [ - 15022814412717317376, - 17444332185630324119, - 14685665421775887958, - 906494215348891007 - ], - "y": [ - 9833778905776399360, - 1648124311168457783, - 3500435402371619753, - 2370413643071351216 - ], + "x": [15022814412717317376, 17444332185630324119, 14685665421775887958, 906494215348891007], + "y": [9833778905776399360, 1648124311168457783, 3500435402371619753, 2370413643071351216], "infinity": false }, "lookup_tables_commitments": [ { - "x": [ - 631990924006796604, - 16139625628991115157, - 13331739325995827711, - 1062301837743594995 - ], - "y": [ - 15303054606290800139, - 15906872095881647437, - 7093896572295020249, - 1342952934989901142 - ], + "x": [631990924006796604, 16139625628991115157, 13331739325995827711, 1062301837743594995], + "y": [15303054606290800139, 15906872095881647437, 7093896572295020249, 1342952934989901142], "infinity": false }, { - "x": [ - 7983921919542246393, - 13296544189644416678, - 17081022784392007697, - 1980832835348244027 - ], - "y": [ - 10874958134865200330, - 7702740658637630534, - 14052057929798961943, - 3193353539419869016 - ], + "x": [7983921919542246393, 13296544189644416678, 17081022784392007697, 1980832835348244027], + "y": [10874958134865200330, 7702740658637630534, 14052057929798961943, 3193353539419869016], "infinity": false }, { - "x": [ - 1114587284824996932, - 4636906500482867924, - 15328247172597030456, - 87946895873973686 - ], - "y": [ - 15573033830207915877, - 5194694185599035278, - 2562407345425607214, - 2782078999306862675 - ], + "x": [1114587284824996932, 4636906500482867924, 15328247172597030456, 87946895873973686], + "y": [15573033830207915877, 5194694185599035278, 2562407345425607214, 2782078999306862675], "infinity": false }, { - "x": [ - 18225112781127431982, - 18048613958187123807, - 7325490730844456621, - 1953409020724855888 - ], - "y": [ - 7577000130125917198, - 6193701449695751861, - 4102082927677054717, - 395350071385269650 - ], + "x": [18225112781127431982, 18048613958187123807, 7325490730844456621, 1953409020724855888], + "y": [7577000130125917198, 6193701449695751861, 4102082927677054717, 395350071385269650], "infinity": false } ], "lookup_table_type_commitment": { - "x": [ - 8321950609730151216, - 18010887235457883784, - 17038267498493175776, - 1380842840607309871 - ], - "y": [ - 3264160671000273944, - 16611917363401804468, - 8505391859632632917, - 2149881676646664319 - ], + "x": [8321950609730151216, 18010887235457883784, 17038267498493175776, 1380842840607309871], + "y": [3264160671000273944, 16611917363401804468, 8505391859632632917, 2149881676646664319], "infinity": false }, "non_residues": [ - [ - 5, - 0, - 0, - 0 - ], - [ - 7, - 0, - 0, - 0 - ], - [ - 10, - 0, - 0, - 0 - ] + [5, 0, 0, 0], + [7, 0, 0, 0], + [10, 0, 0, 0] ], "g2_elements": [ { "x": { - "c0": [ - 5106727233969649389, - 7440829307424791261, - 4785637993704342649, - 1729627375292849782 - ], - "c1": [ - 10945020018377822914, - 17413811393473931026, - 8241798111626485029, - 1841571559660931130 - ] + "c0": [5106727233969649389, 7440829307424791261, 4785637993704342649, 1729627375292849782], + "c1": [10945020018377822914, 17413811393473931026, 8241798111626485029, 1841571559660931130] }, "y": { - "c0": [ - 5541340697920699818, - 16416156555105522555, - 5380518976772849807, - 1353435754470862315 - ], - "c1": [ - 6173549831154472795, - 13567992399387660019, - 17050234209342075797, - 650358724130500725 - ] + "c0": [5541340697920699818, 16416156555105522555, 5380518976772849807, 1353435754470862315], + "c1": [6173549831154472795, 13567992399387660019, 17050234209342075797, 650358724130500725] }, "infinity": false }, { "x": { - "c0": [ - 9089143573911733168, - 11482283522806384523, - 13585589533905622862, - 79029415676722370 - ], - "c1": [ - 5692040832573735873, - 16884514497384809355, - 16717166481813659368, - 2742131088506155463 - ] + "c0": [9089143573911733168, 11482283522806384523, 13585589533905622862, 79029415676722370], + "c1": [5692040832573735873, 16884514497384809355, 16717166481813659368, 2742131088506155463] }, "y": { - "c0": [ - 9604638503594647125, - 1289961608472612514, - 6217038149984805214, - 2521661352385209130 - ], - "c1": [ - 17168069778630926308, - 11309277837895768996, - 15154989611154567813, - 359271377050603491 - ] + "c0": [9604638503594647125, 1289961608472612514, 6217038149984805214, 2521661352385209130], + "c1": [17168069778630926308, 11309277837895768996, 15154989611154567813, 359271377050603491] }, "infinity": false } ] -} \ No newline at end of file +} diff --git a/core/bin/verification_key_generator_and_server/data/verification_1_key.json b/core/bin/verification_key_generator_and_server/data/verification_1_key.json index 0310303d2a5..03b5467f097 100644 --- a/core/bin/verification_key_generator_and_server/data/verification_1_key.json +++ b/core/bin/verification_key_generator_and_server/data/verification_1_key.json @@ -5,395 +5,140 @@ "num_witness_polys": 0, "gate_setup_commitments": [ { - "x": [ - 7601801432079276288, - 15201863322122857773, - 8806193975262404580, - 2590787273683229105 - ], - "y": [ - 16702527967956763728, - 6181870639994435984, - 1867123357108619315, - 2767403024411663364 - ], + "x": [7601801432079276288, 15201863322122857773, 8806193975262404580, 2590787273683229105], + "y": [16702527967956763728, 6181870639994435984, 1867123357108619315, 2767403024411663364], "infinity": false }, { - "x": [ - 2455316591212726341, - 2027771240685247927, - 10685588854446154162, - 3030775657966372875 - ], - "y": [ - 18300009037843703356, - 1612973442135305251, - 10693350009422283513, - 1442590213691840716 - ], + "x": [2455316591212726341, 2027771240685247927, 10685588854446154162, 3030775657966372875], + "y": [18300009037843703356, 1612973442135305251, 10693350009422283513, 1442590213691840716], "infinity": false }, { - "x": [ - 12311884457715965312, - 10390638194798557018, - 11306832124741148566, - 300716765354847473 - ], - "y": [ - 9707964220031061231, - 14753080439380196493, - 5717535245627190368, - 702219636062983319 - ], + "x": [12311884457715965312, 10390638194798557018, 11306832124741148566, 300716765354847473], + "y": [9707964220031061231, 14753080439380196493, 5717535245627190368, 702219636062983319], "infinity": false }, { - "x": [ - 7758453297146426337, - 1673770484163252092, - 14607544807007157753, - 857313958429629763 - ], - "y": [ - 14921629410308576937, - 15298335487420996140, - 2704982045392946878, - 2611590721009022852 - ], + "x": [7758453297146426337, 1673770484163252092, 14607544807007157753, 857313958429629763], + "y": [14921629410308576937, 15298335487420996140, 2704982045392946878, 2611590721009022852], "infinity": false }, { - "x": [ - 14311011031579784592, - 15625526098906078640, - 1319146597092063841, - 774276845418764858 - ], - "y": [ - 3893523842912943845, - 18146056093503974553, - 11030513442747849089, - 389965813625175232 - ], + "x": [14311011031579784592, 15625526098906078640, 1319146597092063841, 774276845418764858], + "y": [3893523842912943845, 18146056093503974553, 11030513442747849089, 389965813625175232], "infinity": false }, { - "x": [ - 7007915445081129178, - 2401922490835966325, - 418720827124106725, - 2770268368066902308 - ], - "y": [ - 12116308634970006696, - 14528630571959109449, - 9950799281726780069, - 724152027617190422 - ], + "x": [7007915445081129178, 2401922490835966325, 418720827124106725, 2770268368066902308], + "y": [12116308634970006696, 14528630571959109449, 9950799281726780069, 724152027617190422], "infinity": false }, { - "x": [ - 2442021019274420960, - 16295185893380203674, - 2439146651414642189, - 2243335375830582173 - ], - "y": [ - 3782090054162740071, - 4704457281172608987, - 4410900061257118309, - 764611777065564766 - ], + "x": [2442021019274420960, 16295185893380203674, 2439146651414642189, 2243335375830582173], + "y": [3782090054162740071, 4704457281172608987, 4410900061257118309, 764611777065564766], "infinity": false }, { - "x": [ - 17964884224938230037, - 7876675311267561320, - 16762398450655445790, - 1210707988542142007 - ], - "y": [ - 10470358785861361347, - 9485656365593190672, - 6046378362748740079, - 2457285875935475197 - ], + "x": [17964884224938230037, 7876675311267561320, 16762398450655445790, 1210707988542142007], + "y": [10470358785861361347, 9485656365593190672, 6046378362748740079, 2457285875935475197], "infinity": false } ], "gate_selectors_commitments": [ { - "x": [ - 17157526827088368172, - 11284084393440625999, - 9351565798611728109, - 3234841809825307363 - ], - "y": [ - 8319704714678793930, - 4159327153032521498, - 15356346081767327573, - 3239913585027348493 - ], + "x": [17157526827088368172, 11284084393440625999, 9351565798611728109, 3234841809825307363], + "y": [8319704714678793930, 4159327153032521498, 15356346081767327573, 3239913585027348493], "infinity": false }, { - "x": [ - 15456321646261647359, - 15891438700803416959, - 3317730603133051465, - 2641175705943818316 - ], - "y": [ - 1411951218052246200, - 1661720531643832913, - 13537400120511760371, - 2292851110898807736 - ], + "x": [15456321646261647359, 15891438700803416959, 3317730603133051465, 2641175705943818316], + "y": [1411951218052246200, 1661720531643832913, 13537400120511760371, 2292851110898807736], "infinity": false } ], "permutation_commitments": [ { - "x": [ - 10328956753700766823, - 2827084848292920926, - 6753362467616392790, - 3266354497443915853 - ], - "y": [ - 4786671171082888838, - 11071539213550223285, - 3886224490311829958, - 1435384580945051012 - ], + "x": [10328956753700766823, 2827084848292920926, 6753362467616392790, 3266354497443915853], + "y": [4786671171082888838, 11071539213550223285, 3886224490311829958, 1435384580945051012], "infinity": false }, { - "x": [ - 6970901872301032061, - 11845499850875638451, - 12523013241874863158, - 564589203700245768 - ], - "y": [ - 9149991346853645253, - 10833082414663634622, - 10032445307744641248, - 3184550747076826571 - ], + "x": [6970901872301032061, 11845499850875638451, 12523013241874863158, 564589203700245768], + "y": [9149991346853645253, 10833082414663634622, 10032445307744641248, 3184550747076826571], "infinity": false }, { - "x": [ - 2899501934612768796, - 7289832407727333580, - 15398305180487198919, - 2955735241334744486 - ], - "y": [ - 4963499698281910643, - 5723522390488208800, - 3637467607919864741, - 339118267031086794 - ], + "x": [2899501934612768796, 7289832407727333580, 15398305180487198919, 2955735241334744486], + "y": [4963499698281910643, 5723522390488208800, 3637467607919864741, 339118267031086794], "infinity": false }, { - "x": [ - 16561673014946600686, - 6893642268089467710, - 11554023210615815565, - 122477375056362239 - ], - "y": [ - 15978560303000591303, - 6087766803442805629, - 6114779478264008006, - 2753348573959524636 - ], + "x": [16561673014946600686, 6893642268089467710, 11554023210615815565, 122477375056362239], + "y": [15978560303000591303, 6087766803442805629, 6114779478264008006, 2753348573959524636], "infinity": false } ], "total_lookup_entries_length": 30899639, "lookup_selector_commitment": { - "x": [ - 4819118611809066421, - 16205075690681881406, - 8088108199972047891, - 2462381205202312681 - ], - "y": [ - 9403235417076804812, - 11746452954984920263, - 5479393366572364588, - 2168476120537571525 - ], + "x": [4819118611809066421, 16205075690681881406, 8088108199972047891, 2462381205202312681], + "y": [9403235417076804812, 11746452954984920263, 5479393366572364588, 2168476120537571525], "infinity": false }, "lookup_tables_commitments": [ { - "x": [ - 1589280911861251894, - 2000192568988587993, - 18399902493387281635, - 1843483375839232315 - ], - "y": [ - 14712825033319581746, - 11500494123399487569, - 4370642671010258701, - 567620704393396341 - ], + "x": [1589280911861251894, 2000192568988587993, 18399902493387281635, 1843483375839232315], + "y": [14712825033319581746, 11500494123399487569, 4370642671010258701, 567620704393396341], "infinity": false }, { - "x": [ - 0, - 0, - 0, - 0 - ], - "y": [ - 1, - 0, - 0, - 0 - ], + "x": [0, 0, 0, 0], + "y": [1, 0, 0, 0], "infinity": true }, { - "x": [ - 0, - 0, - 0, - 0 - ], - "y": [ - 1, - 0, - 0, - 0 - ], + "x": [0, 0, 0, 0], + "y": [1, 0, 0, 0], "infinity": true }, { - "x": [ - 5989740765536181742, - 7510673671757970234, - 7988398980529338112, - 2047433943537325290 - ], - "y": [ - 14952889876146512965, - 17141012675484923048, - 328206788961236528, - 866564802795139 - ], + "x": [5989740765536181742, 7510673671757970234, 7988398980529338112, 2047433943537325290], + "y": [14952889876146512965, 17141012675484923048, 328206788961236528, 866564802795139], "infinity": false } ], "lookup_table_type_commitment": { - "x": [ - 4824978155651454377, - 12191454623887257586, - 12973919510878979890, - 52932438992466171 - ], - "y": [ - 17857145998747603901, - 2092039184434926372, - 11018504664231591204, - 1321736242331612854 - ], + "x": [4824978155651454377, 12191454623887257586, 12973919510878979890, 52932438992466171], + "y": [17857145998747603901, 2092039184434926372, 11018504664231591204, 1321736242331612854], "infinity": false }, "non_residues": [ - [ - 5, - 0, - 0, - 0 - ], - [ - 7, - 0, - 0, - 0 - ], - [ - 10, - 0, - 0, - 0 - ] + [5, 0, 0, 0], + [7, 0, 0, 0], + [10, 0, 0, 0] ], "g2_elements": [ { "x": { - "c0": [ - 5106727233969649389, - 7440829307424791261, - 4785637993704342649, - 1729627375292849782 - ], - "c1": [ - 10945020018377822914, - 17413811393473931026, - 8241798111626485029, - 1841571559660931130 - ] + "c0": [5106727233969649389, 7440829307424791261, 4785637993704342649, 1729627375292849782], + "c1": [10945020018377822914, 17413811393473931026, 8241798111626485029, 1841571559660931130] }, "y": { - "c0": [ - 5541340697920699818, - 16416156555105522555, - 5380518976772849807, - 1353435754470862315 - ], - "c1": [ - 6173549831154472795, - 13567992399387660019, - 17050234209342075797, - 650358724130500725 - ] + "c0": [5541340697920699818, 16416156555105522555, 5380518976772849807, 1353435754470862315], + "c1": [6173549831154472795, 13567992399387660019, 17050234209342075797, 650358724130500725] }, "infinity": false }, { "x": { - "c0": [ - 9089143573911733168, - 11482283522806384523, - 13585589533905622862, - 79029415676722370 - ], - "c1": [ - 5692040832573735873, - 16884514497384809355, - 16717166481813659368, - 2742131088506155463 - ] + "c0": [9089143573911733168, 11482283522806384523, 13585589533905622862, 79029415676722370], + "c1": [5692040832573735873, 16884514497384809355, 16717166481813659368, 2742131088506155463] }, "y": { - "c0": [ - 9604638503594647125, - 1289961608472612514, - 6217038149984805214, - 2521661352385209130 - ], - "c1": [ - 17168069778630926308, - 11309277837895768996, - 15154989611154567813, - 359271377050603491 - ] + "c0": [9604638503594647125, 1289961608472612514, 6217038149984805214, 2521661352385209130], + "c1": [17168069778630926308, 11309277837895768996, 15154989611154567813, 359271377050603491] }, "infinity": false } ] -} \ No newline at end of file +} diff --git a/core/bin/verification_key_generator_and_server/data/verification_2_key.json b/core/bin/verification_key_generator_and_server/data/verification_2_key.json index 79b16257213..2937d676ad9 100644 --- a/core/bin/verification_key_generator_and_server/data/verification_2_key.json +++ b/core/bin/verification_key_generator_and_server/data/verification_2_key.json @@ -5,395 +5,140 @@ "num_witness_polys": 0, "gate_setup_commitments": [ { - "x": [ - 5518783475412319303, - 13900056820557691891, - 3293972357974626054, - 2215936931279678502 - ], - "y": [ - 7955917949806788616, - 13341003959544330056, - 2090626280536970058, - 340565138339520735 - ], + "x": [5518783475412319303, 13900056820557691891, 3293972357974626054, 2215936931279678502], + "y": [7955917949806788616, 13341003959544330056, 2090626280536970058, 340565138339520735], "infinity": false }, { - "x": [ - 14185170917510557830, - 8046892618400404954, - 16599645397148333553, - 2994187418830549588 - ], - "y": [ - 7234254448777026502, - 8445782435526889669, - 14116370103157060862, - 2248206929083565209 - ], + "x": [14185170917510557830, 8046892618400404954, 16599645397148333553, 2994187418830549588], + "y": [7234254448777026502, 8445782435526889669, 14116370103157060862, 2248206929083565209], "infinity": false }, { - "x": [ - 11154659552703848544, - 12941656139895069323, - 17062140236305086427, - 722110816848028084 - ], - "y": [ - 5009717036998782771, - 827592822749515890, - 15966856850732642654, - 618036931564479654 - ], + "x": [11154659552703848544, 12941656139895069323, 17062140236305086427, 722110816848028084], + "y": [5009717036998782771, 827592822749515890, 15966856850732642654, 618036931564479654], "infinity": false }, { - "x": [ - 5157594213696692987, - 15014090155482426422, - 706425002062263449, - 3203486979181293219 - ], - "y": [ - 14363949081622225749, - 9001876918808042476, - 1615414451418136701, - 444697301726425121 - ], + "x": [5157594213696692987, 15014090155482426422, 706425002062263449, 3203486979181293219], + "y": [14363949081622225749, 9001876918808042476, 1615414451418136701, 444697301726425121], "infinity": false }, { - "x": [ - 9176460251336839321, - 17295305184785757140, - 7831134341003191604, - 2666806971657364559 - ], - "y": [ - 2598277252699259004, - 11916936738177575234, - 2912317122505195338, - 2404138220482962548 - ], + "x": [9176460251336839321, 17295305184785757140, 7831134341003191604, 2666806971657364559], + "y": [2598277252699259004, 11916936738177575234, 2912317122505195338, 2404138220482962548], "infinity": false }, { - "x": [ - 11575910134534349159, - 14192914809594698195, - 18267718409201448839, - 142641722814285206 - ], - "y": [ - 5883506329268908990, - 2832339585209792351, - 14642260147093833347, - 392817691249359885 - ], + "x": [11575910134534349159, 14192914809594698195, 18267718409201448839, 142641722814285206], + "y": [5883506329268908990, 2832339585209792351, 14642260147093833347, 392817691249359885], "infinity": false }, { - "x": [ - 12908012748245269010, - 6525727331816152736, - 16979431824428028279, - 2845131870310951239 - ], - "y": [ - 1571963770034876851, - 17602700402136611105, - 13310928253737079884, - 3347891464097055062 - ], + "x": [12908012748245269010, 6525727331816152736, 16979431824428028279, 2845131870310951239], + "y": [1571963770034876851, 17602700402136611105, 13310928253737079884, 3347891464097055062], "infinity": false }, { - "x": [ - 832167803175150309, - 11457734167413059640, - 13250442890410377059, - 2814079984479722654 - ], - "y": [ - 1463471541691279258, - 1744973157713476297, - 1204969522442685286, - 1269233371856967282 - ], + "x": [832167803175150309, 11457734167413059640, 13250442890410377059, 2814079984479722654], + "y": [1463471541691279258, 1744973157713476297, 1204969522442685286, 1269233371856967282], "infinity": false } ], "gate_selectors_commitments": [ { - "x": [ - 10352656458395970023, - 3995520406692994966, - 13084432248093257522, - 2302839365715839904 - ], - "y": [ - 8225034751786073151, - 16771047952615636124, - 616708265068224682, - 186403683175385821 - ], + "x": [10352656458395970023, 3995520406692994966, 13084432248093257522, 2302839365715839904], + "y": [8225034751786073151, 16771047952615636124, 616708265068224682, 186403683175385821], "infinity": false }, { - "x": [ - 4270731028924703792, - 3128341040439802084, - 15083522049785140229, - 2261189689222904761 - ], - "y": [ - 8781157350107493893, - 14766318733918494793, - 9428422381369337621, - 419743052593117743 - ], + "x": [4270731028924703792, 3128341040439802084, 15083522049785140229, 2261189689222904761], + "y": [8781157350107493893, 14766318733918494793, 9428422381369337621, 419743052593117743], "infinity": false } ], "permutation_commitments": [ { - "x": [ - 11112968480130414212, - 11913364106966677596, - 36671493864905181, - 496058283903160224 - ], - "y": [ - 9691136012048916590, - 12909186572206021308, - 1700657689434945171, - 3072265811815532764 - ], + "x": [11112968480130414212, 11913364106966677596, 36671493864905181, 496058283903160224], + "y": [9691136012048916590, 12909186572206021308, 1700657689434945171, 3072265811815532764], "infinity": false }, { - "x": [ - 11360744654540534278, - 9830357778413675465, - 5192069313646589173, - 113131628631742646 - ], - "y": [ - 5515513518975242303, - 323890392099446701, - 2255482865429449468, - 2322464724330067577 - ], + "x": [11360744654540534278, 9830357778413675465, 5192069313646589173, 113131628631742646], + "y": [5515513518975242303, 323890392099446701, 2255482865429449468, 2322464724330067577], "infinity": false }, { - "x": [ - 3414259545645111239, - 5416149397109634837, - 12993204506510556426, - 2894091844446687144 - ], - "y": [ - 4731949297479191167, - 1043460441127916951, - 16890401788673829290, - 1356564712828723527 - ], + "x": [3414259545645111239, 5416149397109634837, 12993204506510556426, 2894091844446687144], + "y": [4731949297479191167, 1043460441127916951, 16890401788673829290, 1356564712828723527], "infinity": false }, { - "x": [ - 8993182433738017869, - 11441314659459910136, - 8181494681500166120, - 1591321336872387140 - ], - "y": [ - 5278254820002084488, - 17932571960593236295, - 7626453034762681225, - 3463596506399756742 - ], + "x": [8993182433738017869, 11441314659459910136, 8181494681500166120, 1591321336872387140], + "y": [5278254820002084488, 17932571960593236295, 7626453034762681225, 3463596506399756742], "infinity": false } ], "total_lookup_entries_length": 30783671, "lookup_selector_commitment": { - "x": [ - 1336161834228740427, - 15823221750660268452, - 13689567356831376139, - 1839611883700311389 - ], - "y": [ - 14875759795137726191, - 20318096045504920, - 8816565555629805366, - 75556627728969178 - ], + "x": [1336161834228740427, 15823221750660268452, 13689567356831376139, 1839611883700311389], + "y": [14875759795137726191, 20318096045504920, 8816565555629805366, 75556627728969178], "infinity": false }, "lookup_tables_commitments": [ { - "x": [ - 1589280911861251894, - 2000192568988587993, - 18399902493387281635, - 1843483375839232315 - ], - "y": [ - 14712825033319581746, - 11500494123399487569, - 4370642671010258701, - 567620704393396341 - ], + "x": [1589280911861251894, 2000192568988587993, 18399902493387281635, 1843483375839232315], + "y": [14712825033319581746, 11500494123399487569, 4370642671010258701, 567620704393396341], "infinity": false }, { - "x": [ - 0, - 0, - 0, - 0 - ], - "y": [ - 1, - 0, - 0, - 0 - ], + "x": [0, 0, 0, 0], + "y": [1, 0, 0, 0], "infinity": true }, { - "x": [ - 0, - 0, - 0, - 0 - ], - "y": [ - 1, - 0, - 0, - 0 - ], + "x": [0, 0, 0, 0], + "y": [1, 0, 0, 0], "infinity": true }, { - "x": [ - 5989740765536181742, - 7510673671757970234, - 7988398980529338112, - 2047433943537325290 - ], - "y": [ - 14952889876146512965, - 17141012675484923048, - 328206788961236528, - 866564802795139 - ], + "x": [5989740765536181742, 7510673671757970234, 7988398980529338112, 2047433943537325290], + "y": [14952889876146512965, 17141012675484923048, 328206788961236528, 866564802795139], "infinity": false } ], "lookup_table_type_commitment": { - "x": [ - 3408213281770836085, - 15382444791373914560, - 16110552627056571461, - 1161688479331593061 - ], - "y": [ - 13379188756114722390, - 12926267823879081751, - 14282599792449107495, - 3244837013658545871 - ], + "x": [3408213281770836085, 15382444791373914560, 16110552627056571461, 1161688479331593061], + "y": [13379188756114722390, 12926267823879081751, 14282599792449107495, 3244837013658545871], "infinity": false }, "non_residues": [ - [ - 5, - 0, - 0, - 0 - ], - [ - 7, - 0, - 0, - 0 - ], - [ - 10, - 0, - 0, - 0 - ] + [5, 0, 0, 0], + [7, 0, 0, 0], + [10, 0, 0, 0] ], "g2_elements": [ { "x": { - "c0": [ - 5106727233969649389, - 7440829307424791261, - 4785637993704342649, - 1729627375292849782 - ], - "c1": [ - 10945020018377822914, - 17413811393473931026, - 8241798111626485029, - 1841571559660931130 - ] + "c0": [5106727233969649389, 7440829307424791261, 4785637993704342649, 1729627375292849782], + "c1": [10945020018377822914, 17413811393473931026, 8241798111626485029, 1841571559660931130] }, "y": { - "c0": [ - 5541340697920699818, - 16416156555105522555, - 5380518976772849807, - 1353435754470862315 - ], - "c1": [ - 6173549831154472795, - 13567992399387660019, - 17050234209342075797, - 650358724130500725 - ] + "c0": [5541340697920699818, 16416156555105522555, 5380518976772849807, 1353435754470862315], + "c1": [6173549831154472795, 13567992399387660019, 17050234209342075797, 650358724130500725] }, "infinity": false }, { "x": { - "c0": [ - 9089143573911733168, - 11482283522806384523, - 13585589533905622862, - 79029415676722370 - ], - "c1": [ - 5692040832573735873, - 16884514497384809355, - 16717166481813659368, - 2742131088506155463 - ] + "c0": [9089143573911733168, 11482283522806384523, 13585589533905622862, 79029415676722370], + "c1": [5692040832573735873, 16884514497384809355, 16717166481813659368, 2742131088506155463] }, "y": { - "c0": [ - 9604638503594647125, - 1289961608472612514, - 6217038149984805214, - 2521661352385209130 - ], - "c1": [ - 17168069778630926308, - 11309277837895768996, - 15154989611154567813, - 359271377050603491 - ] + "c0": [9604638503594647125, 1289961608472612514, 6217038149984805214, 2521661352385209130], + "c1": [17168069778630926308, 11309277837895768996, 15154989611154567813, 359271377050603491] }, "infinity": false } ] -} \ No newline at end of file +} diff --git a/core/bin/verification_key_generator_and_server/data/verification_3_key.json b/core/bin/verification_key_generator_and_server/data/verification_3_key.json index efc3726eccd..88657dcb5cb 100644 --- a/core/bin/verification_key_generator_and_server/data/verification_3_key.json +++ b/core/bin/verification_key_generator_and_server/data/verification_3_key.json @@ -5,395 +5,140 @@ "num_witness_polys": 0, "gate_setup_commitments": [ { - "x": [ - 974750104498669965, - 8834694375170731028, - 17769568165179068263, - 1849964290686413257 - ], - "y": [ - 2843958502709968021, - 14935491193053445350, - 17474331455917570677, - 3480256926594645294 - ], + "x": [974750104498669965, 8834694375170731028, 17769568165179068263, 1849964290686413257], + "y": [2843958502709968021, 14935491193053445350, 17474331455917570677, 3480256926594645294], "infinity": false }, { - "x": [ - 12247266302470255326, - 5464334033464606744, - 14546720066962635103, - 3390803970213094244 - ], - "y": [ - 1712883459777313087, - 8894684513803091578, - 7336029034040207862, - 1084942733964754038 - ], + "x": [12247266302470255326, 5464334033464606744, 14546720066962635103, 3390803970213094244], + "y": [1712883459777313087, 8894684513803091578, 7336029034040207862, 1084942733964754038], "infinity": false }, { - "x": [ - 11977576082511042092, - 13911318721427630536, - 319094179978428102, - 953394664847088490 - ], - "y": [ - 5661602966428088380, - 18066888770140331931, - 10148625466830766086, - 532999801462127665 - ], + "x": [11977576082511042092, 13911318721427630536, 319094179978428102, 953394664847088490], + "y": [5661602966428088380, 18066888770140331931, 10148625466830766086, 532999801462127665], "infinity": false }, { - "x": [ - 10638316621700142822, - 6209825954391834011, - 6018402549491433521, - 2545954919587131385 - ], - "y": [ - 3871396302214628234, - 10421121582832311901, - 3487262368594849688, - 47097530491220969 - ], + "x": [10638316621700142822, 6209825954391834011, 6018402549491433521, 2545954919587131385], + "y": [3871396302214628234, 10421121582832311901, 3487262368594849688, 47097530491220969], "infinity": false }, { - "x": [ - 5177078736350587057, - 913561536392131154, - 5845225668116211782, - 1148177573394811202 - ], - "y": [ - 8211065483139055749, - 11150796128594731149, - 12060516803886544192, - 1369115203017663219 - ], + "x": [5177078736350587057, 913561536392131154, 5845225668116211782, 1148177573394811202], + "y": [8211065483139055749, 11150796128594731149, 12060516803886544192, 1369115203017663219], "infinity": false }, { - "x": [ - 13164869081104983842, - 8055457852373227775, - 14586708642322040767, - 1635508642571745116 - ], - "y": [ - 13200963466266892674, - 5743120645853669652, - 13845956436885115425, - 190245686570654182 - ], + "x": [13164869081104983842, 8055457852373227775, 14586708642322040767, 1635508642571745116], + "y": [13200963466266892674, 5743120645853669652, 13845956436885115425, 190245686570654182], "infinity": false }, { - "x": [ - 14509622964666644543, - 14326815147327339718, - 14403865749203816615, - 3250250446651605086 - ], - "y": [ - 16982880826411734238, - 7223038929743846372, - 13243677057981888895, - 3343376109946605946 - ], + "x": [14509622964666644543, 14326815147327339718, 14403865749203816615, 3250250446651605086], + "y": [16982880826411734238, 7223038929743846372, 13243677057981888895, 3343376109946605946], "infinity": false }, { - "x": [ - 2186705028467599783, - 10754157155083578321, - 9835223072941921904, - 622934131449235283 - ], - "y": [ - 18146384691082289702, - 3710418457832183420, - 9065618198278602094, - 1385809660894704773 - ], + "x": [2186705028467599783, 10754157155083578321, 9835223072941921904, 622934131449235283], + "y": [18146384691082289702, 3710418457832183420, 9065618198278602094, 1385809660894704773], "infinity": false } ], "gate_selectors_commitments": [ { - "x": [ - 17931943108498820694, - 4676695383650659094, - 9553383984112211657, - 2582659305204352628 - ], - "y": [ - 12954711565738560879, - 8077826911980788091, - 11395265968148743331, - 2855607571527172113 - ], + "x": [17931943108498820694, 4676695383650659094, 9553383984112211657, 2582659305204352628], + "y": [12954711565738560879, 8077826911980788091, 11395265968148743331, 2855607571527172113], "infinity": false }, { - "x": [ - 1579731699170899555, - 2930979681521170129, - 14423227389748779725, - 3843483067412713 - ], - "y": [ - 12757858203360676100, - 11658617912640524507, - 18404463112235833117, - 216398038700598122 - ], + "x": [1579731699170899555, 2930979681521170129, 14423227389748779725, 3843483067412713], + "y": [12757858203360676100, 11658617912640524507, 18404463112235833117, 216398038700598122], "infinity": false } ], "permutation_commitments": [ { - "x": [ - 17803109611249396349, - 11283859494780689211, - 13999735262776985506, - 1616317395767274315 - ], - "y": [ - 4702080082438660327, - 10318021266807502248, - 1343468927015043909, - 1458947702127238817 - ], + "x": [17803109611249396349, 11283859494780689211, 13999735262776985506, 1616317395767274315], + "y": [4702080082438660327, 10318021266807502248, 1343468927015043909, 1458947702127238817], "infinity": false }, { - "x": [ - 13991248091180946539, - 9572452770464844385, - 7281256466642465445, - 1589821161594539260 - ], - "y": [ - 16330872592308522669, - 11643961078499332590, - 7621286777424912214, - 1961788650881680195 - ], + "x": [13991248091180946539, 9572452770464844385, 7281256466642465445, 1589821161594539260], + "y": [16330872592308522669, 11643961078499332590, 7621286777424912214, 1961788650881680195], "infinity": false }, { - "x": [ - 14854997120241085994, - 893859077870132655, - 10853933192917459827, - 2671373989840251193 - ], - "y": [ - 11492939649862087988, - 1925620351626108277, - 12007636802682139817, - 1315346956977275889 - ], + "x": [14854997120241085994, 893859077870132655, 10853933192917459827, 2671373989840251193], + "y": [11492939649862087988, 1925620351626108277, 12007636802682139817, 1315346956977275889], "infinity": false }, { - "x": [ - 13343929807426311972, - 3234215523073799496, - 4658804614957804350, - 123243726695066707 - ], - "y": [ - 14958243475655956241, - 4034118281425140294, - 1019154098165161379, - 2657524750158613958 - ], + "x": [13343929807426311972, 3234215523073799496, 4658804614957804350, 123243726695066707], + "y": [14958243475655956241, 4034118281425140294, 1019154098165161379, 2657524750158613958], "infinity": false } ], "total_lookup_entries_length": 15208907, "lookup_selector_commitment": { - "x": [ - 3869759959209659371, - 17545310949245876386, - 6597968549104995840, - 1547642766729861753 - ], - "y": [ - 5629222579571396955, - 16315207580711001852, - 15947168783307514478, - 2534006098464270073 - ], + "x": [3869759959209659371, 17545310949245876386, 6597968549104995840, 1547642766729861753], + "y": [5629222579571396955, 16315207580711001852, 15947168783307514478, 2534006098464270073], "infinity": false }, "lookup_tables_commitments": [ { - "x": [ - 12925597216490182210, - 13030942092034120135, - 17733316148446765999, - 112547709703624791 - ], - "y": [ - 13293415162200038331, - 13010565234555563811, - 15476251035925496743, - 2588541998389664114 - ], + "x": [12925597216490182210, 13030942092034120135, 17733316148446765999, 112547709703624791], + "y": [13293415162200038331, 13010565234555563811, 15476251035925496743, 2588541998389664114], "infinity": false }, { - "x": [ - 11118240121224901946, - 9394562257959111170, - 9026436993514314918, - 1751747619588842429 - ], - "y": [ - 6039590802345873394, - 17531716309156986038, - 1711770599161550805, - 1941094644175870288 - ], + "x": [11118240121224901946, 9394562257959111170, 9026436993514314918, 1751747619588842429], + "y": [6039590802345873394, 17531716309156986038, 1711770599161550805, 1941094644175870288], "infinity": false }, { - "x": [ - 17999903301086933877, - 10468070608989378923, - 3479353092436121335, - 607756992244480908 - ], - "y": [ - 10863079642303790364, - 4737012301447477097, - 4605789209164294308, - 1430572887755557386 - ], + "x": [17999903301086933877, 10468070608989378923, 3479353092436121335, 607756992244480908], + "y": [10863079642303790364, 4737012301447477097, 4605789209164294308, 1430572887755557386], "infinity": false }, { - "x": [ - 4609762018249049814, - 4113097757442144437, - 4725434011535510809, - 2977599521231955696 - ], - "y": [ - 14636094180551257630, - 8819447661702130886, - 1091706295519429215, - 56675985696303183 - ], + "x": [4609762018249049814, 4113097757442144437, 4725434011535510809, 2977599521231955696], + "y": [14636094180551257630, 8819447661702130886, 1091706295519429215, 56675985696303183], "infinity": false } ], "lookup_table_type_commitment": { - "x": [ - 6380759427317126685, - 6672737265924091686, - 14552369645196037262, - 1668823783737500912 - ], - "y": [ - 4951884449279236371, - 16324193898368483526, - 10792452284404778772, - 929770155761471462 - ], + "x": [6380759427317126685, 6672737265924091686, 14552369645196037262, 1668823783737500912], + "y": [4951884449279236371, 16324193898368483526, 10792452284404778772, 929770155761471462], "infinity": false }, "non_residues": [ - [ - 5, - 0, - 0, - 0 - ], - [ - 7, - 0, - 0, - 0 - ], - [ - 10, - 0, - 0, - 0 - ] + [5, 0, 0, 0], + [7, 0, 0, 0], + [10, 0, 0, 0] ], "g2_elements": [ { "x": { - "c0": [ - 5106727233969649389, - 7440829307424791261, - 4785637993704342649, - 1729627375292849782 - ], - "c1": [ - 10945020018377822914, - 17413811393473931026, - 8241798111626485029, - 1841571559660931130 - ] + "c0": [5106727233969649389, 7440829307424791261, 4785637993704342649, 1729627375292849782], + "c1": [10945020018377822914, 17413811393473931026, 8241798111626485029, 1841571559660931130] }, "y": { - "c0": [ - 5541340697920699818, - 16416156555105522555, - 5380518976772849807, - 1353435754470862315 - ], - "c1": [ - 6173549831154472795, - 13567992399387660019, - 17050234209342075797, - 650358724130500725 - ] + "c0": [5541340697920699818, 16416156555105522555, 5380518976772849807, 1353435754470862315], + "c1": [6173549831154472795, 13567992399387660019, 17050234209342075797, 650358724130500725] }, "infinity": false }, { "x": { - "c0": [ - 9089143573911733168, - 11482283522806384523, - 13585589533905622862, - 79029415676722370 - ], - "c1": [ - 5692040832573735873, - 16884514497384809355, - 16717166481813659368, - 2742131088506155463 - ] + "c0": [9089143573911733168, 11482283522806384523, 13585589533905622862, 79029415676722370], + "c1": [5692040832573735873, 16884514497384809355, 16717166481813659368, 2742131088506155463] }, "y": { - "c0": [ - 9604638503594647125, - 1289961608472612514, - 6217038149984805214, - 2521661352385209130 - ], - "c1": [ - 17168069778630926308, - 11309277837895768996, - 15154989611154567813, - 359271377050603491 - ] + "c0": [9604638503594647125, 1289961608472612514, 6217038149984805214, 2521661352385209130], + "c1": [17168069778630926308, 11309277837895768996, 15154989611154567813, 359271377050603491] }, "infinity": false } ] -} \ No newline at end of file +} diff --git a/core/bin/verification_key_generator_and_server/data/verification_4_key.json b/core/bin/verification_key_generator_and_server/data/verification_4_key.json index 8d42dcd66a7..dc0c5da74a6 100644 --- a/core/bin/verification_key_generator_and_server/data/verification_4_key.json +++ b/core/bin/verification_key_generator_and_server/data/verification_4_key.json @@ -5,395 +5,140 @@ "num_witness_polys": 0, "gate_setup_commitments": [ { - "x": [ - 15923176050075197, - 8963905519117333456, - 5333091548039957996, - 1660697180439834807 - ], - "y": [ - 13105864494044341635, - 10079874572012628853, - 4164109084931753781, - 1860950003357484648 - ], + "x": [15923176050075197, 8963905519117333456, 5333091548039957996, 1660697180439834807], + "y": [13105864494044341635, 10079874572012628853, 4164109084931753781, 1860950003357484648], "infinity": false }, { - "x": [ - 8216018177730810417, - 13660800917029254431, - 2933384097067755755, - 2823425599268575868 - ], - "y": [ - 8768863192718196559, - 10146282684570870426, - 8275806247588563419, - 605489936306033583 - ], + "x": [8216018177730810417, 13660800917029254431, 2933384097067755755, 2823425599268575868], + "y": [8768863192718196559, 10146282684570870426, 8275806247588563419, 605489936306033583], "infinity": false }, { - "x": [ - 4277344855257545209, - 11172040917478096607, - 4489086903928758598, - 289283798032159440 - ], - "y": [ - 10444137083253378550, - 12133212848977612596, - 6748791972701343485, - 286274227999569844 - ], + "x": [4277344855257545209, 11172040917478096607, 4489086903928758598, 289283798032159440], + "y": [10444137083253378550, 12133212848977612596, 6748791972701343485, 286274227999569844], "infinity": false }, { - "x": [ - 8861797510071553254, - 12734094237204882518, - 13692967202881086499, - 641906135411222522 - ], - "y": [ - 6831762763487302461, - 11965405347371646114, - 6218256502970252800, - 3201462388136754725 - ], + "x": [8861797510071553254, 12734094237204882518, 13692967202881086499, 641906135411222522], + "y": [6831762763487302461, 11965405347371646114, 6218256502970252800, 3201462388136754725], "infinity": false }, { - "x": [ - 12385743015818134054, - 16282219738575446638, - 3256359841301423419, - 505673042938576760 - ], - "y": [ - 6744956686738207932, - 8994291190634790001, - 16789606231722015883, - 2027930268272962928 - ], + "x": [12385743015818134054, 16282219738575446638, 3256359841301423419, 505673042938576760], + "y": [6744956686738207932, 8994291190634790001, 16789606231722015883, 2027930268272962928], "infinity": false }, { - "x": [ - 13671822069226357541, - 818021157447551159, - 10542481209144358852, - 2459295197762128786 - ], - "y": [ - 1072649761929447549, - 6089126583512618706, - 1178131210084507361, - 1066836948212725576 - ], + "x": [13671822069226357541, 818021157447551159, 10542481209144358852, 2459295197762128786], + "y": [1072649761929447549, 6089126583512618706, 1178131210084507361, 1066836948212725576], "infinity": false }, { - "x": [ - 16878956366815094090, - 364977461173568122, - 5439594588743996145, - 1265442855735725449 - ], - "y": [ - 11461704536083653156, - 660278441271820299, - 4314245569905306892, - 1438663846765259508 - ], + "x": [16878956366815094090, 364977461173568122, 5439594588743996145, 1265442855735725449], + "y": [11461704536083653156, 660278441271820299, 4314245569905306892, 1438663846765259508], "infinity": false }, { - "x": [ - 9038539654045396650, - 539827912679485452, - 15399544523862100757, - 1256406598444490417 - ], - "y": [ - 5422113905848106255, - 4943961807853536385, - 10022409325033689104, - 3200702511424842211 - ], + "x": [9038539654045396650, 539827912679485452, 15399544523862100757, 1256406598444490417], + "y": [5422113905848106255, 4943961807853536385, 10022409325033689104, 3200702511424842211], "infinity": false } ], "gate_selectors_commitments": [ { - "x": [ - 7750990741566547331, - 12040155777441846781, - 3000981333322867315, - 2393292192734976436 - ], - "y": [ - 3394853839941291504, - 944019051205640111, - 1104911864338577098, - 2127308956089601096 - ], + "x": [7750990741566547331, 12040155777441846781, 3000981333322867315, 2393292192734976436], + "y": [3394853839941291504, 944019051205640111, 1104911864338577098, 2127308956089601096], "infinity": false }, { - "x": [ - 4735140124663926465, - 16935779121597983173, - 17111626619540374574, - 2327973550601526140 - ], - "y": [ - 8990848735371189388, - 4589751206662798166, - 7575424772436241307, - 2798852347400154642 - ], + "x": [4735140124663926465, 16935779121597983173, 17111626619540374574, 2327973550601526140], + "y": [8990848735371189388, 4589751206662798166, 7575424772436241307, 2798852347400154642], "infinity": false } ], "permutation_commitments": [ { - "x": [ - 4765077060699177749, - 15235935045874519477, - 2022237788491579392, - 354385727984957703 - ], - "y": [ - 11620113321350620961, - 2521830680983779826, - 14047226057605943635, - 2718701882953208503 - ], + "x": [4765077060699177749, 15235935045874519477, 2022237788491579392, 354385727984957703], + "y": [11620113321350620961, 2521830680983779826, 14047226057605943635, 2718701882953208503], "infinity": false }, { - "x": [ - 12967015398643083015, - 1100660813730542482, - 7835181433213557652, - 803165211156388599 - ], - "y": [ - 8557385569712401227, - 535900682745452035, - 16083571717847325979, - 396765644246918860 - ], + "x": [12967015398643083015, 1100660813730542482, 7835181433213557652, 803165211156388599], + "y": [8557385569712401227, 535900682745452035, 16083571717847325979, 396765644246918860], "infinity": false }, { - "x": [ - 6868107733370365435, - 17106601841261210672, - 12219407605084986215, - 2345246684976405066 - ], - "y": [ - 17532412968783851743, - 9996315626158111485, - 17970945522106166231, - 1003764081419207606 - ], + "x": [6868107733370365435, 17106601841261210672, 12219407605084986215, 2345246684976405066], + "y": [17532412968783851743, 9996315626158111485, 17970945522106166231, 1003764081419207606], "infinity": false }, { - "x": [ - 7011201477832405407, - 8818123127103997131, - 2979445003396953339, - 318603240233076406 - ], - "y": [ - 11712108043964996282, - 3474989587891133574, - 3983451673298542860, - 1181581919257021598 - ], + "x": [7011201477832405407, 8818123127103997131, 2979445003396953339, 318603240233076406], + "y": [11712108043964996282, 3474989587891133574, 3983451673298542860, 1181581919257021598], "infinity": false } ], "total_lookup_entries_length": 8484642, "lookup_selector_commitment": { - "x": [ - 27459247093738343, - 1785927757103538268, - 14972116880195568621, - 1034224917068963325 - ], - "y": [ - 17453858127001596558, - 6200103235089742197, - 16245568162666829501, - 651193715230511441 - ], + "x": [27459247093738343, 1785927757103538268, 14972116880195568621, 1034224917068963325], + "y": [17453858127001596558, 6200103235089742197, 16245568162666829501, 651193715230511441], "infinity": false }, "lookup_tables_commitments": [ { - "x": [ - 697552212563769686, - 7709943502535418760, - 15019345407325619175, - 3433081085078580257 - ], - "y": [ - 8668947019840357731, - 14698901351824712883, - 15088598879190660424, - 2873081208166433946 - ], + "x": [697552212563769686, 7709943502535418760, 15019345407325619175, 3433081085078580257], + "y": [8668947019840357731, 14698901351824712883, 15088598879190660424, 2873081208166433946], "infinity": false }, { - "x": [ - 7893133928909060673, - 7064922516930129957, - 3592836702741304814, - 2239702595710114437 - ], - "y": [ - 7691360541875191519, - 11379321785127235277, - 6653616064071569031, - 2555434628517540774 - ], + "x": [7893133928909060673, 7064922516930129957, 3592836702741304814, 2239702595710114437], + "y": [7691360541875191519, 11379321785127235277, 6653616064071569031, 2555434628517540774], "infinity": false }, { - "x": [ - 6243944238013052821, - 7908243182210136125, - 17178099109525791299, - 2553622184721264566 - ], - "y": [ - 736121280088239428, - 6158073429758170526, - 11217302997977204117, - 2594798912020899417 - ], + "x": [6243944238013052821, 7908243182210136125, 17178099109525791299, 2553622184721264566], + "y": [736121280088239428, 6158073429758170526, 11217302997977204117, 2594798912020899417], "infinity": false }, { - "x": [ - 2064240298596094591, - 16917726764104887991, - 11042784977532408536, - 3377647228930170830 - ], - "y": [ - 10635525052494768819, - 387400048616497096, - 9379200582543310995, - 1571766153703296253 - ], + "x": [2064240298596094591, 16917726764104887991, 11042784977532408536, 3377647228930170830], + "y": [10635525052494768819, 387400048616497096, 9379200582543310995, 1571766153703296253], "infinity": false } ], "lookup_table_type_commitment": { - "x": [ - 14868101692362122308, - 8135288013508071846, - 9460482611527381887, - 512823635961282598 - ], - "y": [ - 8358211286664762188, - 3532634521932288534, - 5862145521507736138, - 1807935137626658536 - ], + "x": [14868101692362122308, 8135288013508071846, 9460482611527381887, 512823635961282598], + "y": [8358211286664762188, 3532634521932288534, 5862145521507736138, 1807935137626658536], "infinity": false }, "non_residues": [ - [ - 5, - 0, - 0, - 0 - ], - [ - 7, - 0, - 0, - 0 - ], - [ - 10, - 0, - 0, - 0 - ] + [5, 0, 0, 0], + [7, 0, 0, 0], + [10, 0, 0, 0] ], "g2_elements": [ { "x": { - "c0": [ - 5106727233969649389, - 7440829307424791261, - 4785637993704342649, - 1729627375292849782 - ], - "c1": [ - 10945020018377822914, - 17413811393473931026, - 8241798111626485029, - 1841571559660931130 - ] + "c0": [5106727233969649389, 7440829307424791261, 4785637993704342649, 1729627375292849782], + "c1": [10945020018377822914, 17413811393473931026, 8241798111626485029, 1841571559660931130] }, "y": { - "c0": [ - 5541340697920699818, - 16416156555105522555, - 5380518976772849807, - 1353435754470862315 - ], - "c1": [ - 6173549831154472795, - 13567992399387660019, - 17050234209342075797, - 650358724130500725 - ] + "c0": [5541340697920699818, 16416156555105522555, 5380518976772849807, 1353435754470862315], + "c1": [6173549831154472795, 13567992399387660019, 17050234209342075797, 650358724130500725] }, "infinity": false }, { "x": { - "c0": [ - 9089143573911733168, - 11482283522806384523, - 13585589533905622862, - 79029415676722370 - ], - "c1": [ - 5692040832573735873, - 16884514497384809355, - 16717166481813659368, - 2742131088506155463 - ] + "c0": [9089143573911733168, 11482283522806384523, 13585589533905622862, 79029415676722370], + "c1": [5692040832573735873, 16884514497384809355, 16717166481813659368, 2742131088506155463] }, "y": { - "c0": [ - 9604638503594647125, - 1289961608472612514, - 6217038149984805214, - 2521661352385209130 - ], - "c1": [ - 17168069778630926308, - 11309277837895768996, - 15154989611154567813, - 359271377050603491 - ] + "c0": [9604638503594647125, 1289961608472612514, 6217038149984805214, 2521661352385209130], + "c1": [17168069778630926308, 11309277837895768996, 15154989611154567813, 359271377050603491] }, "infinity": false } ] -} \ No newline at end of file +} diff --git a/core/bin/verification_key_generator_and_server/data/verification_5_key.json b/core/bin/verification_key_generator_and_server/data/verification_5_key.json index b9a31b919f1..a76fe1018e5 100644 --- a/core/bin/verification_key_generator_and_server/data/verification_5_key.json +++ b/core/bin/verification_key_generator_and_server/data/verification_5_key.json @@ -5,395 +5,140 @@ "num_witness_polys": 0, "gate_setup_commitments": [ { - "x": [ - 12322129650547620518, - 4320033807979823995, - 4503809593276792861, - 630958448551597950 - ], - "y": [ - 4947307957322067889, - 1897773243457379956, - 1563584362302565484, - 802109862761172056 - ], + "x": [12322129650547620518, 4320033807979823995, 4503809593276792861, 630958448551597950], + "y": [4947307957322067889, 1897773243457379956, 1563584362302565484, 802109862761172056], "infinity": false }, { - "x": [ - 5860641327684713918, - 16885915425353665713, - 7037370194263044401, - 1837438863045303696 - ], - "y": [ - 13386292219804271609, - 4960073609197619993, - 7328379249582994262, - 191728769121948464 - ], + "x": [5860641327684713918, 16885915425353665713, 7037370194263044401, 1837438863045303696], + "y": [13386292219804271609, 4960073609197619993, 7328379249582994262, 191728769121948464], "infinity": false }, { - "x": [ - 9390502900121613993, - 17218409610830310329, - 4830832371938391322, - 1805131323553685028 - ], - "y": [ - 15707040961083920686, - 16216062707384374953, - 16957058843586642758, - 1341814870249072628 - ], + "x": [9390502900121613993, 17218409610830310329, 4830832371938391322, 1805131323553685028], + "y": [15707040961083920686, 16216062707384374953, 16957058843586642758, 1341814870249072628], "infinity": false }, { - "x": [ - 969252611989285232, - 181405773082212747, - 11110666465356509832, - 1888802363524687207 - ], - "y": [ - 5293477339288357424, - 12076391347720360980, - 11422893229655154394, - 3165450734777404812 - ], + "x": [969252611989285232, 181405773082212747, 11110666465356509832, 1888802363524687207], + "y": [5293477339288357424, 12076391347720360980, 11422893229655154394, 3165450734777404812], "infinity": false }, { - "x": [ - 642192487369089358, - 9585449571929647331, - 3847960352134961209, - 984199510163128792 - ], - "y": [ - 13950390676065893881, - 975256099594703300, - 253120832016214204, - 1860679841584192219 - ], + "x": [642192487369089358, 9585449571929647331, 3847960352134961209, 984199510163128792], + "y": [13950390676065893881, 975256099594703300, 253120832016214204, 1860679841584192219], "infinity": false }, { - "x": [ - 3564548447861991296, - 6278944799487206913, - 1163701992635366786, - 3214877162977671335 - ], - "y": [ - 13131873482361140204, - 14012120801722220187, - 13254371011592477950, - 1082108070640175604 - ], + "x": [3564548447861991296, 6278944799487206913, 1163701992635366786, 3214877162977671335], + "y": [13131873482361140204, 14012120801722220187, 13254371011592477950, 1082108070640175604], "infinity": false }, { - "x": [ - 14190764189814537607, - 18412181832598818289, - 17213387738194113336, - 1662783623959823461 - ], - "y": [ - 7987199081435644988, - 17119136750046780209, - 8770669323846078492, - 3183489396270587333 - ], + "x": [14190764189814537607, 18412181832598818289, 17213387738194113336, 1662783623959823461], + "y": [7987199081435644988, 17119136750046780209, 8770669323846078492, 3183489396270587333], "infinity": false }, { - "x": [ - 14638218826597535389, - 16409988612234258347, - 5025411344133541245, - 603088654230685360 - ], - "y": [ - 12538363432956258836, - 6558875956959901550, - 2415879426147965883, - 750702584304895055 - ], + "x": [14638218826597535389, 16409988612234258347, 5025411344133541245, 603088654230685360], + "y": [12538363432956258836, 6558875956959901550, 2415879426147965883, 750702584304895055], "infinity": false } ], "gate_selectors_commitments": [ { - "x": [ - 2599908293582905760, - 13534206398743622493, - 15926090086034346074, - 467418127379229858 - ], - "y": [ - 9529512934078774185, - 1459270552041127965, - 13418846370362665102, - 2270996612016337371 - ], + "x": [2599908293582905760, 13534206398743622493, 15926090086034346074, 467418127379229858], + "y": [9529512934078774185, 1459270552041127965, 13418846370362665102, 2270996612016337371], "infinity": false }, { - "x": [ - 7264275706530137047, - 5590205367072257545, - 17891440127697345143, - 360638857846382524 - ], - "y": [ - 17983779934218975397, - 1625779403076670241, - 1474025795387210129, - 1716171421120825643 - ], + "x": [7264275706530137047, 5590205367072257545, 17891440127697345143, 360638857846382524], + "y": [17983779934218975397, 1625779403076670241, 1474025795387210129, 1716171421120825643], "infinity": false } ], "permutation_commitments": [ { - "x": [ - 9354841115000244260, - 12887310615208346489, - 1120617137774653400, - 424227936372254439 - ], - "y": [ - 3626714025954019309, - 4480975902927818206, - 10093567956580931634, - 2779897825000836477 - ], + "x": [9354841115000244260, 12887310615208346489, 1120617137774653400, 424227936372254439], + "y": [3626714025954019309, 4480975902927818206, 10093567956580931634, 2779897825000836477], "infinity": false }, { - "x": [ - 1864884782104066211, - 1247154271168453374, - 9982166936353409582, - 1177339527115773898 - ], - "y": [ - 9932597332303163060, - 1888682277213109000, - 11684220277443154622, - 3062389133489783806 - ], + "x": [1864884782104066211, 1247154271168453374, 9982166936353409582, 1177339527115773898], + "y": [9932597332303163060, 1888682277213109000, 11684220277443154622, 3062389133489783806], "infinity": false }, { - "x": [ - 9943021177878836437, - 9004866876172522532, - 14085451328492136137, - 1567186274425392936 - ], - "y": [ - 7148906168793986389, - 4780330524752436486, - 10067456648871712650, - 179752856567560382 - ], + "x": [9943021177878836437, 9004866876172522532, 14085451328492136137, 1567186274425392936], + "y": [7148906168793986389, 4780330524752436486, 10067456648871712650, 179752856567560382], "infinity": false }, { - "x": [ - 14745822832390509907, - 13862030626549782961, - 10000268356302875837, - 705042314567833799 - ], - "y": [ - 11091254259539384938, - 11733968109785394056, - 11099103738494585500, - 1527456782567955191 - ], + "x": [14745822832390509907, 13862030626549782961, 10000268356302875837, 705042314567833799], + "y": [11091254259539384938, 11733968109785394056, 11099103738494585500, 1527456782567955191], "infinity": false } ], "total_lookup_entries_length": 35330543, "lookup_selector_commitment": { - "x": [ - 12333191731462980214, - 17841370099698959347, - 12878670991018181621, - 2894319630687016858 - ], - "y": [ - 76816727314643395, - 3214684791046221459, - 878301108738499830, - 126016925902987736 - ], + "x": [12333191731462980214, 17841370099698959347, 12878670991018181621, 2894319630687016858], + "y": [76816727314643395, 3214684791046221459, 878301108738499830, 126016925902987736], "infinity": false }, "lookup_tables_commitments": [ { - "x": [ - 911668445361375614, - 12752365066512000136, - 11550232015863976467, - 2053619216798992367 - ], - "y": [ - 4194339833917391280, - 1643071887467668153, - 3377480965202592691, - 1664272901450533719 - ], + "x": [911668445361375614, 12752365066512000136, 11550232015863976467, 2053619216798992367], + "y": [4194339833917391280, 1643071887467668153, 3377480965202592691, 1664272901450533719], "infinity": false }, { - "x": [ - 2999316735203966181, - 5189676006781764591, - 14324679313847304783, - 1264086978509739587 - ], - "y": [ - 8714172036038650967, - 10907167170124829028, - 8950970593162102458, - 1596853051185997037 - ], + "x": [2999316735203966181, 5189676006781764591, 14324679313847304783, 1264086978509739587], + "y": [8714172036038650967, 10907167170124829028, 8950970593162102458, 1596853051185997037], "infinity": false }, { - "x": [ - 1146500486770850326, - 13562754408872334896, - 14063471769392190265, - 3387351506820193517 - ], - "y": [ - 6677788829230735422, - 15425668102208730571, - 5341291772716012975, - 539156410041791428 - ], + "x": [1146500486770850326, 13562754408872334896, 14063471769392190265, 3387351506820193517], + "y": [6677788829230735422, 15425668102208730571, 5341291772716012975, 539156410041791428], "infinity": false }, { - "x": [ - 18159886519320172405, - 4286826840324377773, - 16364826089434525345, - 228697666397725767 - ], - "y": [ - 4850633487261444791, - 6327421534074497160, - 12883776034588695446, - 1510314148471267214 - ], + "x": [18159886519320172405, 4286826840324377773, 16364826089434525345, 228697666397725767], + "y": [4850633487261444791, 6327421534074497160, 12883776034588695446, 1510314148471267214], "infinity": false } ], "lookup_table_type_commitment": { - "x": [ - 18245233954308230592, - 8193493714287610439, - 6521078295132558240, - 861511081336275611 - ], - "y": [ - 4275834222266292944, - 13179071278128968874, - 5943013356852335765, - 2456639561657053045 - ], + "x": [18245233954308230592, 8193493714287610439, 6521078295132558240, 861511081336275611], + "y": [4275834222266292944, 13179071278128968874, 5943013356852335765, 2456639561657053045], "infinity": false }, "non_residues": [ - [ - 5, - 0, - 0, - 0 - ], - [ - 7, - 0, - 0, - 0 - ], - [ - 10, - 0, - 0, - 0 - ] + [5, 0, 0, 0], + [7, 0, 0, 0], + [10, 0, 0, 0] ], "g2_elements": [ { "x": { - "c0": [ - 5106727233969649389, - 7440829307424791261, - 4785637993704342649, - 1729627375292849782 - ], - "c1": [ - 10945020018377822914, - 17413811393473931026, - 8241798111626485029, - 1841571559660931130 - ] + "c0": [5106727233969649389, 7440829307424791261, 4785637993704342649, 1729627375292849782], + "c1": [10945020018377822914, 17413811393473931026, 8241798111626485029, 1841571559660931130] }, "y": { - "c0": [ - 5541340697920699818, - 16416156555105522555, - 5380518976772849807, - 1353435754470862315 - ], - "c1": [ - 6173549831154472795, - 13567992399387660019, - 17050234209342075797, - 650358724130500725 - ] + "c0": [5541340697920699818, 16416156555105522555, 5380518976772849807, 1353435754470862315], + "c1": [6173549831154472795, 13567992399387660019, 17050234209342075797, 650358724130500725] }, "infinity": false }, { "x": { - "c0": [ - 9089143573911733168, - 11482283522806384523, - 13585589533905622862, - 79029415676722370 - ], - "c1": [ - 5692040832573735873, - 16884514497384809355, - 16717166481813659368, - 2742131088506155463 - ] + "c0": [9089143573911733168, 11482283522806384523, 13585589533905622862, 79029415676722370], + "c1": [5692040832573735873, 16884514497384809355, 16717166481813659368, 2742131088506155463] }, "y": { - "c0": [ - 9604638503594647125, - 1289961608472612514, - 6217038149984805214, - 2521661352385209130 - ], - "c1": [ - 17168069778630926308, - 11309277837895768996, - 15154989611154567813, - 359271377050603491 - ] + "c0": [9604638503594647125, 1289961608472612514, 6217038149984805214, 2521661352385209130], + "c1": [17168069778630926308, 11309277837895768996, 15154989611154567813, 359271377050603491] }, "infinity": false } ] -} \ No newline at end of file +} diff --git a/core/bin/verification_key_generator_and_server/data/verification_6_key.json b/core/bin/verification_key_generator_and_server/data/verification_6_key.json index 34419df1770..7c8fbc650bb 100644 --- a/core/bin/verification_key_generator_and_server/data/verification_6_key.json +++ b/core/bin/verification_key_generator_and_server/data/verification_6_key.json @@ -5,395 +5,140 @@ "num_witness_polys": 0, "gate_setup_commitments": [ { - "x": [ - 11033020679838791108, - 14920056278440370765, - 8156477685651219112, - 2935096142913695825 - ], - "y": [ - 12780055516709256833, - 966513406268819160, - 9584266886886532866, - 892347068344972829 - ], + "x": [11033020679838791108, 14920056278440370765, 8156477685651219112, 2935096142913695825], + "y": [12780055516709256833, 966513406268819160, 9584266886886532866, 892347068344972829], "infinity": false }, { - "x": [ - 4044870432040348042, - 10630300946926732771, - 3143480015080245177, - 323917785885883620 - ], - "y": [ - 2297905282612888789, - 8206728682979815807, - 10628767928228215441, - 3062326525278498604 - ], + "x": [4044870432040348042, 10630300946926732771, 3143480015080245177, 323917785885883620], + "y": [2297905282612888789, 8206728682979815807, 10628767928228215441, 3062326525278498604], "infinity": false }, { - "x": [ - 14760731158538087565, - 9176522400170689419, - 9855180338242634009, - 2456568616568530201 - ], - "y": [ - 5168103953295979961, - 397013651969935557, - 13864468728668213717, - 2925074735515169158 - ], + "x": [14760731158538087565, 9176522400170689419, 9855180338242634009, 2456568616568530201], + "y": [5168103953295979961, 397013651969935557, 13864468728668213717, 2925074735515169158], "infinity": false }, { - "x": [ - 13613691592548742743, - 11339389230513898784, - 4864282628000142183, - 2568915564796772962 - ], - "y": [ - 13074021698952750513, - 14891339562597317806, - 6145754680491802845, - 913243322463864468 - ], + "x": [13613691592548742743, 11339389230513898784, 4864282628000142183, 2568915564796772962], + "y": [13074021698952750513, 14891339562597317806, 6145754680491802845, 913243322463864468], "infinity": false }, { - "x": [ - 9607983563343027008, - 1604609357347728263, - 6735137627175405143, - 91305611485454778 - ], - "y": [ - 2068449139446365265, - 6171753015906067998, - 16290186276604645197, - 420889087081901603 - ], + "x": [9607983563343027008, 1604609357347728263, 6735137627175405143, 91305611485454778], + "y": [2068449139446365265, 6171753015906067998, 16290186276604645197, 420889087081901603], "infinity": false }, { - "x": [ - 15994614598808477960, - 5137738490508028659, - 6599503545391493738, - 3293094250487745346 - ], - "y": [ - 3246688300070721763, - 8836841286539929132, - 1231014124908407748, - 3042941126579517307 - ], + "x": [15994614598808477960, 5137738490508028659, 6599503545391493738, 3293094250487745346], + "y": [3246688300070721763, 8836841286539929132, 1231014124908407748, 3042941126579517307], "infinity": false }, { - "x": [ - 12550390789117808745, - 14001030013656521177, - 16383284077678821701, - 1815317458772356897 - ], - "y": [ - 10125044837604978181, - 7468984969058409331, - 592554137766258541, - 2877688586321491725 - ], + "x": [12550390789117808745, 14001030013656521177, 16383284077678821701, 1815317458772356897], + "y": [10125044837604978181, 7468984969058409331, 592554137766258541, 2877688586321491725], "infinity": false }, { - "x": [ - 12238091769471133989, - 184716847866634800, - 5888077423956723698, - 609118759536864800 - ], - "y": [ - 7725369615076384544, - 7561073323636510559, - 10473734750023783127, - 861766554781597742 - ], + "x": [12238091769471133989, 184716847866634800, 5888077423956723698, 609118759536864800], + "y": [7725369615076384544, 7561073323636510559, 10473734750023783127, 861766554781597742], "infinity": false } ], "gate_selectors_commitments": [ { - "x": [ - 1206127807467530207, - 3510053718168412786, - 7933459343694333819, - 3179950874373950282 - ], - "y": [ - 5784856107466398982, - 395767970566909293, - 11244200096534021583, - 2068407511544404377 - ], + "x": [1206127807467530207, 3510053718168412786, 7933459343694333819, 3179950874373950282], + "y": [5784856107466398982, 395767970566909293, 11244200096534021583, 2068407511544404377], "infinity": false }, { - "x": [ - 4044617248058764838, - 11957266999135308674, - 17621747993137866783, - 990156155955733134 - ], - "y": [ - 17234504892477991728, - 17558826298225495489, - 9349531438753716103, - 2656409262947709594 - ], + "x": [4044617248058764838, 11957266999135308674, 17621747993137866783, 990156155955733134], + "y": [17234504892477991728, 17558826298225495489, 9349531438753716103, 2656409262947709594], "infinity": false } ], "permutation_commitments": [ { - "x": [ - 4308597000331285311, - 12130199317436319902, - 3842336010209461436, - 191866453597778475 - ], - "y": [ - 2144400171783010971, - 13016087318985913183, - 7166370365336301922, - 2216888390030560212 - ], + "x": [4308597000331285311, 12130199317436319902, 3842336010209461436, 191866453597778475], + "y": [2144400171783010971, 13016087318985913183, 7166370365336301922, 2216888390030560212], "infinity": false }, { - "x": [ - 4661184458541745063, - 12423889401726065791, - 11959346001895915074, - 779668716585305501 - ], - "y": [ - 16401363790535442499, - 7367694133722005848, - 8015837005184593399, - 454166987511489961 - ], + "x": [4661184458541745063, 12423889401726065791, 11959346001895915074, 779668716585305501], + "y": [16401363790535442499, 7367694133722005848, 8015837005184593399, 454166987511489961], "infinity": false }, { - "x": [ - 858215262803403659, - 1405268530667707386, - 7763962169005921611, - 2845435536097215865 - ], - "y": [ - 10639490331338262540, - 6397733211512468794, - 968161689973799899, - 2054756257253905633 - ], + "x": [858215262803403659, 1405268530667707386, 7763962169005921611, 2845435536097215865], + "y": [10639490331338262540, 6397733211512468794, 968161689973799899, 2054756257253905633], "infinity": false }, { - "x": [ - 17338818659525246480, - 13318488425310212471, - 10548319374858973842, - 87084958643052105 - ], - "y": [ - 2279840344577984658, - 15197280761751903251, - 16019225334594459873, - 149925650787595538 - ], + "x": [17338818659525246480, 13318488425310212471, 10548319374858973842, 87084958643052105], + "y": [2279840344577984658, 15197280761751903251, 16019225334594459873, 149925650787595538], "infinity": false } ], "total_lookup_entries_length": 3054916, "lookup_selector_commitment": { - "x": [ - 4844230422625825285, - 956290027823441223, - 763010695794739308, - 2426170829255106638 - ], - "y": [ - 13850520521470006763, - 9003994589054655373, - 10310690204425503422, - 3012516431885755457 - ], + "x": [4844230422625825285, 956290027823441223, 763010695794739308, 2426170829255106638], + "y": [13850520521470006763, 9003994589054655373, 10310690204425503422, 3012516431885755457], "infinity": false }, "lookup_tables_commitments": [ { - "x": [ - 5825422128268478267, - 9219263846299851036, - 3879231702557190566, - 1702488722758880769 - ], - "y": [ - 18311881100262470992, - 5742998199368802392, - 18106865487471159417, - 502191980176920012 - ], + "x": [5825422128268478267, 9219263846299851036, 3879231702557190566, 1702488722758880769], + "y": [18311881100262470992, 5742998199368802392, 18106865487471159417, 502191980176920012], "infinity": false }, { - "x": [ - 17195892082859417081, - 7890531942603584793, - 2381805632820057528, - 3173232410464566465 - ], - "y": [ - 16359614627947132075, - 3459600273035137079, - 4550762061432972122, - 3394559699318358224 - ], + "x": [17195892082859417081, 7890531942603584793, 2381805632820057528, 3173232410464566465], + "y": [16359614627947132075, 3459600273035137079, 4550762061432972122, 3394559699318358224], "infinity": false }, { - "x": [ - 1716103379277390185, - 18097936269579187542, - 16357329729761063450, - 1508640059338197502 - ], - "y": [ - 11014806739603983364, - 4396503314588777389, - 9397245609635151055, - 1703957955248411380 - ], + "x": [1716103379277390185, 18097936269579187542, 16357329729761063450, 1508640059338197502], + "y": [11014806739603983364, 4396503314588777389, 9397245609635151055, 1703957955248411380], "infinity": false }, { - "x": [ - 4770171350693477354, - 17110558673192292253, - 9799800677557311408, - 761984875463445481 - ], - "y": [ - 1560561403388310063, - 31331275310848146, - 287152055803835484, - 457826332542037277 - ], + "x": [4770171350693477354, 17110558673192292253, 9799800677557311408, 761984875463445481], + "y": [1560561403388310063, 31331275310848146, 287152055803835484, 457826332542037277], "infinity": false } ], "lookup_table_type_commitment": { - "x": [ - 16775586915653722908, - 9787338077086882544, - 8381721730521821042, - 2974660093975661578 - ], - "y": [ - 3011389235487891234, - 15409507493813096391, - 17416460976276029026, - 324418288749844627 - ], + "x": [16775586915653722908, 9787338077086882544, 8381721730521821042, 2974660093975661578], + "y": [3011389235487891234, 15409507493813096391, 17416460976276029026, 324418288749844627], "infinity": false }, "non_residues": [ - [ - 5, - 0, - 0, - 0 - ], - [ - 7, - 0, - 0, - 0 - ], - [ - 10, - 0, - 0, - 0 - ] + [5, 0, 0, 0], + [7, 0, 0, 0], + [10, 0, 0, 0] ], "g2_elements": [ { "x": { - "c0": [ - 5106727233969649389, - 7440829307424791261, - 4785637993704342649, - 1729627375292849782 - ], - "c1": [ - 10945020018377822914, - 17413811393473931026, - 8241798111626485029, - 1841571559660931130 - ] + "c0": [5106727233969649389, 7440829307424791261, 4785637993704342649, 1729627375292849782], + "c1": [10945020018377822914, 17413811393473931026, 8241798111626485029, 1841571559660931130] }, "y": { - "c0": [ - 5541340697920699818, - 16416156555105522555, - 5380518976772849807, - 1353435754470862315 - ], - "c1": [ - 6173549831154472795, - 13567992399387660019, - 17050234209342075797, - 650358724130500725 - ] + "c0": [5541340697920699818, 16416156555105522555, 5380518976772849807, 1353435754470862315], + "c1": [6173549831154472795, 13567992399387660019, 17050234209342075797, 650358724130500725] }, "infinity": false }, { "x": { - "c0": [ - 9089143573911733168, - 11482283522806384523, - 13585589533905622862, - 79029415676722370 - ], - "c1": [ - 5692040832573735873, - 16884514497384809355, - 16717166481813659368, - 2742131088506155463 - ] + "c0": [9089143573911733168, 11482283522806384523, 13585589533905622862, 79029415676722370], + "c1": [5692040832573735873, 16884514497384809355, 16717166481813659368, 2742131088506155463] }, "y": { - "c0": [ - 9604638503594647125, - 1289961608472612514, - 6217038149984805214, - 2521661352385209130 - ], - "c1": [ - 17168069778630926308, - 11309277837895768996, - 15154989611154567813, - 359271377050603491 - ] + "c0": [9604638503594647125, 1289961608472612514, 6217038149984805214, 2521661352385209130], + "c1": [17168069778630926308, 11309277837895768996, 15154989611154567813, 359271377050603491] }, "infinity": false } ] -} \ No newline at end of file +} diff --git a/core/bin/verification_key_generator_and_server/data/verification_7_key.json b/core/bin/verification_key_generator_and_server/data/verification_7_key.json index 406afcf4f0f..056dd64ad54 100644 --- a/core/bin/verification_key_generator_and_server/data/verification_7_key.json +++ b/core/bin/verification_key_generator_and_server/data/verification_7_key.json @@ -5,395 +5,140 @@ "num_witness_polys": 0, "gate_setup_commitments": [ { - "x": [ - 14104278525941001335, - 6652111379088654370, - 12369045377338511525, - 969809670184836151 - ], - "y": [ - 10111598525423302991, - 15018239425425696172, - 3683372413830991953, - 1023765059890131543 - ], + "x": [14104278525941001335, 6652111379088654370, 12369045377338511525, 969809670184836151], + "y": [10111598525423302991, 15018239425425696172, 3683372413830991953, 1023765059890131543], "infinity": false }, { - "x": [ - 11576486884237685781, - 16315823052257401029, - 9860864515877414033, - 3179959598270002012 - ], - "y": [ - 487035971539979311, - 5573003039451484772, - 15711637819381564577, - 1904127920269177012 - ], + "x": [11576486884237685781, 16315823052257401029, 9860864515877414033, 3179959598270002012], + "y": [487035971539979311, 5573003039451484772, 15711637819381564577, 1904127920269177012], "infinity": false }, { - "x": [ - 18299921128106602792, - 211731469708793711, - 17645028854462121436, - 675870769139913517 - ], - "y": [ - 15146647508675165454, - 18353083579110652488, - 12704645658780892142, - 2929235299763077823 - ], + "x": [18299921128106602792, 211731469708793711, 17645028854462121436, 675870769139913517], + "y": [15146647508675165454, 18353083579110652488, 12704645658780892142, 2929235299763077823], "infinity": false }, { - "x": [ - 11570586127780196277, - 2363872676317471379, - 7386811009552915084, - 959006902628416514 - ], - "y": [ - 17455735716787098890, - 14879699386306994564, - 5628100821420984321, - 2862659911936763739 - ], + "x": [11570586127780196277, 2363872676317471379, 7386811009552915084, 959006902628416514], + "y": [17455735716787098890, 14879699386306994564, 5628100821420984321, 2862659911936763739], "infinity": false }, { - "x": [ - 8746328571248006135, - 17089435014355939378, - 8764506524471462449, - 1810135458362589443 - ], - "y": [ - 14070512019208911265, - 8756287737315170424, - 14821473955626613, - 1559545289765661890 - ], + "x": [8746328571248006135, 17089435014355939378, 8764506524471462449, 1810135458362589443], + "y": [14070512019208911265, 8756287737315170424, 14821473955626613, 1559545289765661890], "infinity": false }, { - "x": [ - 2113591086436573082, - 12629483649401688389, - 11845953673798951216, - 3081238281103628853 - ], - "y": [ - 727696133406005469, - 14413827745813557208, - 6425035421156126073, - 291513487083052109 - ], + "x": [2113591086436573082, 12629483649401688389, 11845953673798951216, 3081238281103628853], + "y": [727696133406005469, 14413827745813557208, 6425035421156126073, 291513487083052109], "infinity": false }, { - "x": [ - 15346257923988607256, - 10403316660718504706, - 7158515894996917286, - 2702098910103276762 - ], - "y": [ - 16559143492878738107, - 12716298061927369795, - 12296985344891017351, - 2814996798832983835 - ], + "x": [15346257923988607256, 10403316660718504706, 7158515894996917286, 2702098910103276762], + "y": [16559143492878738107, 12716298061927369795, 12296985344891017351, 2814996798832983835], "infinity": false }, { - "x": [ - 2213195001372039295, - 8878300942582564036, - 10524986226191936528, - 1815326540993196034 - ], - "y": [ - 11397120982692424098, - 4455537142488107627, - 14205354993332845055, - 2313809587433567240 - ], + "x": [2213195001372039295, 8878300942582564036, 10524986226191936528, 1815326540993196034], + "y": [11397120982692424098, 4455537142488107627, 14205354993332845055, 2313809587433567240], "infinity": false } ], "gate_selectors_commitments": [ { - "x": [ - 14849046431510808003, - 11699893139960418168, - 6000246307731364190, - 3362832011707902866 - ], - "y": [ - 3242560497217933852, - 11672398501106836413, - 987926723326096281, - 2451226739475091625 - ], + "x": [14849046431510808003, 11699893139960418168, 6000246307731364190, 3362832011707902866], + "y": [3242560497217933852, 11672398501106836413, 987926723326096281, 2451226739475091625], "infinity": false }, { - "x": [ - 9272095445402359796, - 1201046264826394411, - 7424934554242366462, - 1125893484262333608 - ], - "y": [ - 15903920299684884420, - 17703294385387204708, - 2256937129195345942, - 1905295733884217610 - ], + "x": [9272095445402359796, 1201046264826394411, 7424934554242366462, 1125893484262333608], + "y": [15903920299684884420, 17703294385387204708, 2256937129195345942, 1905295733884217610], "infinity": false } ], "permutation_commitments": [ { - "x": [ - 7591926766688292250, - 10457199375342460747, - 3214976192729961314, - 1412860682249358355 - ], - "y": [ - 16894260140402496006, - 3666374878391815131, - 15124268261678582348, - 1340579262756129480 - ], + "x": [7591926766688292250, 10457199375342460747, 3214976192729961314, 1412860682249358355], + "y": [16894260140402496006, 3666374878391815131, 15124268261678582348, 1340579262756129480], "infinity": false }, { - "x": [ - 2963934507934439034, - 17415763666461861018, - 6331792462137338053, - 3122358526111186727 - ], - "y": [ - 15040784043381591388, - 7188410244350767315, - 14077554108063383431, - 1704329843327300001 - ], + "x": [2963934507934439034, 17415763666461861018, 6331792462137338053, 3122358526111186727], + "y": [15040784043381591388, 7188410244350767315, 14077554108063383431, 1704329843327300001], "infinity": false }, { - "x": [ - 7967507884960122293, - 13509230570773443525, - 11125712791473385552, - 2241808950326876268 - ], - "y": [ - 10594180941877323940, - 17179032413109513856, - 17941607623778808075, - 646138820984886096 - ], + "x": [7967507884960122293, 13509230570773443525, 11125712791473385552, 2241808950326876268], + "y": [10594180941877323940, 17179032413109513856, 17941607623778808075, 646138820984886096], "infinity": false }, { - "x": [ - 4729534828155895283, - 15489050734511381239, - 4847364931161261393, - 2461584260035042491 - ], - "y": [ - 15255817542606978857, - 6517429187947361297, - 17127878630247240853, - 3389541567226838859 - ], + "x": [4729534828155895283, 15489050734511381239, 4847364931161261393, 2461584260035042491], + "y": [15255817542606978857, 6517429187947361297, 17127878630247240853, 3389541567226838859], "infinity": false } ], "total_lookup_entries_length": 40724289, "lookup_selector_commitment": { - "x": [ - 5449769839889646584, - 2072406321611922291, - 9391796773218391195, - 2377769168011090955 - ], - "y": [ - 1789189431152658324, - 2639430755172378798, - 136577695530283091, - 3045539535973502646 - ], + "x": [5449769839889646584, 2072406321611922291, 9391796773218391195, 2377769168011090955], + "y": [1789189431152658324, 2639430755172378798, 136577695530283091, 3045539535973502646], "infinity": false }, "lookup_tables_commitments": [ { - "x": [ - 631990924006796604, - 16139625628991115157, - 13331739325995827711, - 1062301837743594995 - ], - "y": [ - 15303054606290800139, - 15906872095881647437, - 7093896572295020249, - 1342952934989901142 - ], + "x": [631990924006796604, 16139625628991115157, 13331739325995827711, 1062301837743594995], + "y": [15303054606290800139, 15906872095881647437, 7093896572295020249, 1342952934989901142], "infinity": false }, { - "x": [ - 7983921919542246393, - 13296544189644416678, - 17081022784392007697, - 1980832835348244027 - ], - "y": [ - 10874958134865200330, - 7702740658637630534, - 14052057929798961943, - 3193353539419869016 - ], + "x": [7983921919542246393, 13296544189644416678, 17081022784392007697, 1980832835348244027], + "y": [10874958134865200330, 7702740658637630534, 14052057929798961943, 3193353539419869016], "infinity": false }, { - "x": [ - 1114587284824996932, - 4636906500482867924, - 15328247172597030456, - 87946895873973686 - ], - "y": [ - 15573033830207915877, - 5194694185599035278, - 2562407345425607214, - 2782078999306862675 - ], + "x": [1114587284824996932, 4636906500482867924, 15328247172597030456, 87946895873973686], + "y": [15573033830207915877, 5194694185599035278, 2562407345425607214, 2782078999306862675], "infinity": false }, { - "x": [ - 18225112781127431982, - 18048613958187123807, - 7325490730844456621, - 1953409020724855888 - ], - "y": [ - 7577000130125917198, - 6193701449695751861, - 4102082927677054717, - 395350071385269650 - ], + "x": [18225112781127431982, 18048613958187123807, 7325490730844456621, 1953409020724855888], + "y": [7577000130125917198, 6193701449695751861, 4102082927677054717, 395350071385269650], "infinity": false } ], "lookup_table_type_commitment": { - "x": [ - 12639039925867405095, - 9606685454938605275, - 7802675863289639223, - 1948831418843225802 - ], - "y": [ - 11059150608777595761, - 10458812733010634961, - 16772660325487078311, - 340608886692078192 - ], + "x": [12639039925867405095, 9606685454938605275, 7802675863289639223, 1948831418843225802], + "y": [11059150608777595761, 10458812733010634961, 16772660325487078311, 340608886692078192], "infinity": false }, "non_residues": [ - [ - 5, - 0, - 0, - 0 - ], - [ - 7, - 0, - 0, - 0 - ], - [ - 10, - 0, - 0, - 0 - ] + [5, 0, 0, 0], + [7, 0, 0, 0], + [10, 0, 0, 0] ], "g2_elements": [ { "x": { - "c0": [ - 5106727233969649389, - 7440829307424791261, - 4785637993704342649, - 1729627375292849782 - ], - "c1": [ - 10945020018377822914, - 17413811393473931026, - 8241798111626485029, - 1841571559660931130 - ] + "c0": [5106727233969649389, 7440829307424791261, 4785637993704342649, 1729627375292849782], + "c1": [10945020018377822914, 17413811393473931026, 8241798111626485029, 1841571559660931130] }, "y": { - "c0": [ - 5541340697920699818, - 16416156555105522555, - 5380518976772849807, - 1353435754470862315 - ], - "c1": [ - 6173549831154472795, - 13567992399387660019, - 17050234209342075797, - 650358724130500725 - ] + "c0": [5541340697920699818, 16416156555105522555, 5380518976772849807, 1353435754470862315], + "c1": [6173549831154472795, 13567992399387660019, 17050234209342075797, 650358724130500725] }, "infinity": false }, { "x": { - "c0": [ - 9089143573911733168, - 11482283522806384523, - 13585589533905622862, - 79029415676722370 - ], - "c1": [ - 5692040832573735873, - 16884514497384809355, - 16717166481813659368, - 2742131088506155463 - ] + "c0": [9089143573911733168, 11482283522806384523, 13585589533905622862, 79029415676722370], + "c1": [5692040832573735873, 16884514497384809355, 16717166481813659368, 2742131088506155463] }, "y": { - "c0": [ - 9604638503594647125, - 1289961608472612514, - 6217038149984805214, - 2521661352385209130 - ], - "c1": [ - 17168069778630926308, - 11309277837895768996, - 15154989611154567813, - 359271377050603491 - ] + "c0": [9604638503594647125, 1289961608472612514, 6217038149984805214, 2521661352385209130], + "c1": [17168069778630926308, 11309277837895768996, 15154989611154567813, 359271377050603491] }, "infinity": false } ] -} \ No newline at end of file +} diff --git a/core/bin/verification_key_generator_and_server/data/verification_8_key.json b/core/bin/verification_key_generator_and_server/data/verification_8_key.json index b8511e17b75..23d632840ec 100644 --- a/core/bin/verification_key_generator_and_server/data/verification_8_key.json +++ b/core/bin/verification_key_generator_and_server/data/verification_8_key.json @@ -5,395 +5,140 @@ "num_witness_polys": 0, "gate_setup_commitments": [ { - "x": [ - 1834112096176967541, - 5137529514715617427, - 6540843391881340212, - 3033401888759110412 - ], - "y": [ - 8910602970094475216, - 13169513767982514776, - 5761530093694221441, - 2733318557350866268 - ], + "x": [1834112096176967541, 5137529514715617427, 6540843391881340212, 3033401888759110412], + "y": [8910602970094475216, 13169513767982514776, 5761530093694221441, 2733318557350866268], "infinity": false }, { - "x": [ - 4701064149158432365, - 5425087325981406309, - 7911131985858828309, - 1683257627049186617 - ], - "y": [ - 13565328904521460918, - 17013189171844282257, - 4897087111183007258, - 2345861178674095559 - ], + "x": [4701064149158432365, 5425087325981406309, 7911131985858828309, 1683257627049186617], + "y": [13565328904521460918, 17013189171844282257, 4897087111183007258, 2345861178674095559], "infinity": false }, { - "x": [ - 17285353863442654170, - 17787410547699779811, - 4803131526909484890, - 1607731426619418092 - ], - "y": [ - 3219378920021652314, - 11046862703797106703, - 10595836629242151972, - 2970963661532337787 - ], + "x": [17285353863442654170, 17787410547699779811, 4803131526909484890, 1607731426619418092], + "y": [3219378920021652314, 11046862703797106703, 10595836629242151972, 2970963661532337787], "infinity": false }, { - "x": [ - 6619857367954187649, - 8023974497004524989, - 10088058961892288757, - 938018804109053807 - ], - "y": [ - 15549411064757453720, - 1776820811429478220, - 8222111141823917842, - 290593315633281086 - ], + "x": [6619857367954187649, 8023974497004524989, 10088058961892288757, 938018804109053807], + "y": [15549411064757453720, 1776820811429478220, 8222111141823917842, 290593315633281086], "infinity": false }, { - "x": [ - 3338931670632164423, - 11330459786926502111, - 13560408114559586439, - 233279858410037466 - ], - "y": [ - 9757980615881472290, - 6475296714459436577, - 15954545788543926629, - 2522580407814024231 - ], + "x": [3338931670632164423, 11330459786926502111, 13560408114559586439, 233279858410037466], + "y": [9757980615881472290, 6475296714459436577, 15954545788543926629, 2522580407814024231], "infinity": false }, { - "x": [ - 2168501453409628158, - 16417992951888116942, - 1994813140597965849, - 1938552030580060698 - ], - "y": [ - 2393885012813093493, - 5109365147685051030, - 4449898145078443978, - 996506294158321126 - ], + "x": [2168501453409628158, 16417992951888116942, 1994813140597965849, 1938552030580060698], + "y": [2393885012813093493, 5109365147685051030, 4449898145078443978, 996506294158321126], "infinity": false }, { - "x": [ - 8163446935422765754, - 17127634458571165785, - 18101155318188210010, - 1502677094108070955 - ], - "y": [ - 4184320355428455210, - 15479528531137595907, - 8455846016430686855, - 2570922865513301289 - ], + "x": [8163446935422765754, 17127634458571165785, 18101155318188210010, 1502677094108070955], + "y": [4184320355428455210, 15479528531137595907, 8455846016430686855, 2570922865513301289], "infinity": false }, { - "x": [ - 407579941387952352, - 17088458915370169940, - 16892753644011369852, - 2421666516533613805 - ], - "y": [ - 597435837737447683, - 18122233368438707442, - 4844832744563923839, - 396103093107107006 - ], + "x": [407579941387952352, 17088458915370169940, 16892753644011369852, 2421666516533613805], + "y": [597435837737447683, 18122233368438707442, 4844832744563923839, 396103093107107006], "infinity": false } ], "gate_selectors_commitments": [ { - "x": [ - 16242434178832819081, - 2218928756172422054, - 5871927983870638422, - 810020555846721779 - ], - "y": [ - 9387856576677982883, - 5119490172321159350, - 14295435318421985120, - 1325809191818871673 - ], + "x": [16242434178832819081, 2218928756172422054, 5871927983870638422, 810020555846721779], + "y": [9387856576677982883, 5119490172321159350, 14295435318421985120, 1325809191818871673], "infinity": false }, { - "x": [ - 5933965238687071287, - 10681704800081225943, - 14555731010498897395, - 959799154476325145 - ], - "y": [ - 1501632601560034962, - 9401704677918783964, - 12292111854761501889, - 858616662661742045 - ], + "x": [5933965238687071287, 10681704800081225943, 14555731010498897395, 959799154476325145], + "y": [1501632601560034962, 9401704677918783964, 12292111854761501889, 858616662661742045], "infinity": false } ], "permutation_commitments": [ { - "x": [ - 12841507457971520539, - 6525486152471484441, - 3744486588589217686, - 2769451038405535407 - ], - "y": [ - 14145668232228974364, - 9864097401535863500, - 12665512227995054273, - 1710776254334161256 - ], + "x": [12841507457971520539, 6525486152471484441, 3744486588589217686, 2769451038405535407], + "y": [14145668232228974364, 9864097401535863500, 12665512227995054273, 1710776254334161256], "infinity": false }, { - "x": [ - 12108157388466567796, - 12008825937320240484, - 11228446795405478904, - 1520424921904150640 - ], - "y": [ - 18157047055378899649, - 10836823561088895074, - 583613418617515639, - 2570085764232471205 - ], + "x": [12108157388466567796, 12008825937320240484, 11228446795405478904, 1520424921904150640], + "y": [18157047055378899649, 10836823561088895074, 583613418617515639, 2570085764232471205], "infinity": false }, { - "x": [ - 3117226099128838157, - 10181632193024509490, - 1215328570209780930, - 1536961491401844084 - ], - "y": [ - 11646905141441654681, - 6168936708987385450, - 14459621573162108487, - 2047975568887748173 - ], + "x": [3117226099128838157, 10181632193024509490, 1215328570209780930, 1536961491401844084], + "y": [11646905141441654681, 6168936708987385450, 14459621573162108487, 2047975568887748173], "infinity": false }, { - "x": [ - 12034664246790330785, - 12032082546920592595, - 12002839514296456095, - 3009479689157977152 - ], - "y": [ - 180421277197569955, - 5815678523367268562, - 11718416396488597085, - 408186057258055191 - ], + "x": [12034664246790330785, 12032082546920592595, 12002839514296456095, 3009479689157977152], + "y": [180421277197569955, 5815678523367268562, 11718416396488597085, 408186057258055191], "infinity": false } ], "total_lookup_entries_length": 34384753, "lookup_selector_commitment": { - "x": [ - 3872970821419373956, - 13556503327407661223, - 12832313376327677595, - 211677646774476601 - ], - "y": [ - 17281673428499585093, - 235933066531227024, - 17890327653152417391, - 2551853991532334733 - ], + "x": [3872970821419373956, 13556503327407661223, 12832313376327677595, 211677646774476601], + "y": [17281673428499585093, 235933066531227024, 17890327653152417391, 2551853991532334733], "infinity": false }, "lookup_tables_commitments": [ { - "x": [ - 14943975734974680929, - 9516136771242606543, - 6695719565456036638, - 3449077049666620393 - ], - "y": [ - 11678209093898264827, - 4499447145490933412, - 6317798459829178953, - 1439219764789809864 - ], + "x": [14943975734974680929, 9516136771242606543, 6695719565456036638, 3449077049666620393], + "y": [11678209093898264827, 4499447145490933412, 6317798459829178953, 1439219764789809864], "infinity": false }, { - "x": [ - 13501290183905491407, - 17914451638435951710, - 5188762915201956497, - 1220375585898114161 - ], - "y": [ - 14519533874806433487, - 409100046306023, - 2203176115240501563, - 3105700623762337563 - ], + "x": [13501290183905491407, 17914451638435951710, 5188762915201956497, 1220375585898114161], + "y": [14519533874806433487, 409100046306023, 2203176115240501563, 3105700623762337563], "infinity": false }, { - "x": [ - 13968159480895722732, - 6973568812120893251, - 6250254745096478587, - 2299355969860561070 - ], - "y": [ - 7695944005480078577, - 12009671787784557856, - 13727042561077817002, - 219052945806305675 - ], + "x": [13968159480895722732, 6973568812120893251, 6250254745096478587, 2299355969860561070], + "y": [7695944005480078577, 12009671787784557856, 13727042561077817002, 219052945806305675], "infinity": false }, { - "x": [ - 4871629130106420314, - 4091595855728790015, - 1851744390500340594, - 3123168382710331270 - ], - "y": [ - 9703969956757970162, - 1215036492891076659, - 11876727836856213678, - 2640893636590396388 - ], + "x": [4871629130106420314, 4091595855728790015, 1851744390500340594, 3123168382710331270], + "y": [9703969956757970162, 1215036492891076659, 11876727836856213678, 2640893636590396388], "infinity": false } ], "lookup_table_type_commitment": { - "x": [ - 10299044894603982393, - 4664166516779563250, - 13124827128688646542, - 3361599897730972314 - ], - "y": [ - 18259946931458798404, - 10145479316480429602, - 15446978899103328376, - 265382288883021070 - ], + "x": [10299044894603982393, 4664166516779563250, 13124827128688646542, 3361599897730972314], + "y": [18259946931458798404, 10145479316480429602, 15446978899103328376, 265382288883021070], "infinity": false }, "non_residues": [ - [ - 5, - 0, - 0, - 0 - ], - [ - 7, - 0, - 0, - 0 - ], - [ - 10, - 0, - 0, - 0 - ] + [5, 0, 0, 0], + [7, 0, 0, 0], + [10, 0, 0, 0] ], "g2_elements": [ { "x": { - "c0": [ - 5106727233969649389, - 7440829307424791261, - 4785637993704342649, - 1729627375292849782 - ], - "c1": [ - 10945020018377822914, - 17413811393473931026, - 8241798111626485029, - 1841571559660931130 - ] + "c0": [5106727233969649389, 7440829307424791261, 4785637993704342649, 1729627375292849782], + "c1": [10945020018377822914, 17413811393473931026, 8241798111626485029, 1841571559660931130] }, "y": { - "c0": [ - 5541340697920699818, - 16416156555105522555, - 5380518976772849807, - 1353435754470862315 - ], - "c1": [ - 6173549831154472795, - 13567992399387660019, - 17050234209342075797, - 650358724130500725 - ] + "c0": [5541340697920699818, 16416156555105522555, 5380518976772849807, 1353435754470862315], + "c1": [6173549831154472795, 13567992399387660019, 17050234209342075797, 650358724130500725] }, "infinity": false }, { "x": { - "c0": [ - 9089143573911733168, - 11482283522806384523, - 13585589533905622862, - 79029415676722370 - ], - "c1": [ - 5692040832573735873, - 16884514497384809355, - 16717166481813659368, - 2742131088506155463 - ] + "c0": [9089143573911733168, 11482283522806384523, 13585589533905622862, 79029415676722370], + "c1": [5692040832573735873, 16884514497384809355, 16717166481813659368, 2742131088506155463] }, "y": { - "c0": [ - 9604638503594647125, - 1289961608472612514, - 6217038149984805214, - 2521661352385209130 - ], - "c1": [ - 17168069778630926308, - 11309277837895768996, - 15154989611154567813, - 359271377050603491 - ] + "c0": [9604638503594647125, 1289961608472612514, 6217038149984805214, 2521661352385209130], + "c1": [17168069778630926308, 11309277837895768996, 15154989611154567813, 359271377050603491] }, "infinity": false } ] -} \ No newline at end of file +} diff --git a/core/bin/verification_key_generator_and_server/data/verification_9_key.json b/core/bin/verification_key_generator_and_server/data/verification_9_key.json index 75de5f75c78..598f2083b41 100644 --- a/core/bin/verification_key_generator_and_server/data/verification_9_key.json +++ b/core/bin/verification_key_generator_and_server/data/verification_9_key.json @@ -5,395 +5,140 @@ "num_witness_polys": 0, "gate_setup_commitments": [ { - "x": [ - 15041888416700822899, - 15908701850433687369, - 6928173929840686173, - 501601364708497325 - ], - "y": [ - 9443860646360881208, - 15174745959183347299, - 3341918218952258763, - 1470216750942469587 - ], + "x": [15041888416700822899, 15908701850433687369, 6928173929840686173, 501601364708497325], + "y": [9443860646360881208, 15174745959183347299, 3341918218952258763, 1470216750942469587], "infinity": false }, { - "x": [ - 1713492202424532619, - 5921868784153327820, - 3919870428680620477, - 2459274846398943915 - ], - "y": [ - 8012717129874416534, - 13032363221581987781, - 9462161206147300944, - 1151760065513271967 - ], + "x": [1713492202424532619, 5921868784153327820, 3919870428680620477, 2459274846398943915], + "y": [8012717129874416534, 13032363221581987781, 9462161206147300944, 1151760065513271967], "infinity": false }, { - "x": [ - 6636128327108235840, - 9362733145474272574, - 7779132015244601843, - 474802631021936400 - ], - "y": [ - 3900992471196218787, - 113851245079995197, - 7493904056590361535, - 3140468871801097229 - ], + "x": [6636128327108235840, 9362733145474272574, 7779132015244601843, 474802631021936400], + "y": [3900992471196218787, 113851245079995197, 7493904056590361535, 3140468871801097229], "infinity": false }, { - "x": [ - 4340102674797800902, - 8715432707094353745, - 4331145745081713603, - 45456583984841487 - ], - "y": [ - 18326546742044058782, - 15443239165658185296, - 9765917874876721196, - 687859761729374839 - ], + "x": [4340102674797800902, 8715432707094353745, 4331145745081713603, 45456583984841487], + "y": [18326546742044058782, 15443239165658185296, 9765917874876721196, 687859761729374839], "infinity": false }, { - "x": [ - 10804694580890857975, - 10550068287306981825, - 14956274043654722561, - 3060589920124935341 - ], - "y": [ - 17010223672048359580, - 263749806111642373, - 8349695975133446526, - 2826070525773268002 - ], + "x": [10804694580890857975, 10550068287306981825, 14956274043654722561, 3060589920124935341], + "y": [17010223672048359580, 263749806111642373, 8349695975133446526, 2826070525773268002], "infinity": false }, { - "x": [ - 16133249269780245267, - 4275571784340824698, - 6262619645627758753, - 3231281899173719188 - ], - "y": [ - 11839616617849449709, - 7142633755989890055, - 10840735473548209733, - 2847350786075278882 - ], + "x": [16133249269780245267, 4275571784340824698, 6262619645627758753, 3231281899173719188], + "y": [11839616617849449709, 7142633755989890055, 10840735473548209733, 2847350786075278882], "infinity": false }, { - "x": [ - 16258572583186965203, - 1354691125575792689, - 17235265854934968790, - 1252220109588505888 - ], - "y": [ - 9336541637487074271, - 18402912967310224930, - 13223187653117829136, - 2979297976786733465 - ], + "x": [16258572583186965203, 1354691125575792689, 17235265854934968790, 1252220109588505888], + "y": [9336541637487074271, 18402912967310224930, 13223187653117829136, 2979297976786733465], "infinity": false }, { - "x": [ - 8525686695522099028, - 4103157564078645049, - 18392570749492199187, - 2911539491816599180 - ], - "y": [ - 114653447583918953, - 10470307038453386601, - 11189850644566793538, - 1298227034210846592 - ], + "x": [8525686695522099028, 4103157564078645049, 18392570749492199187, 2911539491816599180], + "y": [114653447583918953, 10470307038453386601, 11189850644566793538, 1298227034210846592], "infinity": false } ], "gate_selectors_commitments": [ { - "x": [ - 2069700145549311928, - 4250782333685017927, - 14207216715687122978, - 1145927286048477791 - ], - "y": [ - 9341202692364554712, - 12346939747104737180, - 2826478533799125818, - 2279570556437452275 - ], + "x": [2069700145549311928, 4250782333685017927, 14207216715687122978, 1145927286048477791], + "y": [9341202692364554712, 12346939747104737180, 2826478533799125818, 2279570556437452275], "infinity": false }, { - "x": [ - 12388902775325386546, - 1277383964095999647, - 10535796018183893831, - 3359866702323175506 - ], - "y": [ - 16500893366957272235, - 2806147688388338314, - 8233156072220488773, - 2867848844627212711 - ], + "x": [12388902775325386546, 1277383964095999647, 10535796018183893831, 3359866702323175506], + "y": [16500893366957272235, 2806147688388338314, 8233156072220488773, 2867848844627212711], "infinity": false } ], "permutation_commitments": [ { - "x": [ - 17521183961631816299, - 18327810537117645266, - 16586212795163003556, - 3052771534158410452 - ], - "y": [ - 8441310283734453731, - 14146088755801181801, - 17480253356603213989, - 3217948944323396651 - ], + "x": [17521183961631816299, 18327810537117645266, 16586212795163003556, 3052771534158410452], + "y": [8441310283734453731, 14146088755801181801, 17480253356603213989, 3217948944323396651], "infinity": false }, { - "x": [ - 16076801532842923524, - 7514743296775639295, - 2571323986448120255, - 184367540214459973 - ], - "y": [ - 13389643967183613114, - 17108261756464256828, - 11145735340309739417, - 2142196980030893874 - ], + "x": [16076801532842923524, 7514743296775639295, 2571323986448120255, 184367540214459973], + "y": [13389643967183613114, 17108261756464256828, 11145735340309739417, 2142196980030893874], "infinity": false }, { - "x": [ - 8034683328666433725, - 5436036566901194392, - 18053257213361014053, - 2821377847227509494 - ], - "y": [ - 14471305228212723444, - 8894846184648865892, - 7047725473055235530, - 2413388400332075493 - ], + "x": [8034683328666433725, 5436036566901194392, 18053257213361014053, 2821377847227509494], + "y": [14471305228212723444, 8894846184648865892, 7047725473055235530, 2413388400332075493], "infinity": false }, { - "x": [ - 14026981588443304814, - 14671946927765496183, - 13387079215022495926, - 2554705188091675830 - ], - "y": [ - 440116222237740520, - 1630168477189852269, - 17833425794232523381, - 908824471705597078 - ], + "x": [14026981588443304814, 14671946927765496183, 13387079215022495926, 2554705188091675830], + "y": [440116222237740520, 1630168477189852269, 17833425794232523381, 908824471705597078], "infinity": false } ], "total_lookup_entries_length": 41494904, "lookup_selector_commitment": { - "x": [ - 13889323383351416990, - 17887386740570674124, - 5463612855590268091, - 2434255340534820869 - ], - "y": [ - 2436699678434218349, - 11251365794004058995, - 11023509005141034197, - 2867854671852170604 - ], + "x": [13889323383351416990, 17887386740570674124, 5463612855590268091, 2434255340534820869], + "y": [2436699678434218349, 11251365794004058995, 11023509005141034197, 2867854671852170604], "infinity": false }, "lookup_tables_commitments": [ { - "x": [ - 631990924006796604, - 16139625628991115157, - 13331739325995827711, - 1062301837743594995 - ], - "y": [ - 15303054606290800139, - 15906872095881647437, - 7093896572295020249, - 1342952934989901142 - ], + "x": [631990924006796604, 16139625628991115157, 13331739325995827711, 1062301837743594995], + "y": [15303054606290800139, 15906872095881647437, 7093896572295020249, 1342952934989901142], "infinity": false }, { - "x": [ - 7983921919542246393, - 13296544189644416678, - 17081022784392007697, - 1980832835348244027 - ], - "y": [ - 10874958134865200330, - 7702740658637630534, - 14052057929798961943, - 3193353539419869016 - ], + "x": [7983921919542246393, 13296544189644416678, 17081022784392007697, 1980832835348244027], + "y": [10874958134865200330, 7702740658637630534, 14052057929798961943, 3193353539419869016], "infinity": false }, { - "x": [ - 1114587284824996932, - 4636906500482867924, - 15328247172597030456, - 87946895873973686 - ], - "y": [ - 15573033830207915877, - 5194694185599035278, - 2562407345425607214, - 2782078999306862675 - ], + "x": [1114587284824996932, 4636906500482867924, 15328247172597030456, 87946895873973686], + "y": [15573033830207915877, 5194694185599035278, 2562407345425607214, 2782078999306862675], "infinity": false }, { - "x": [ - 18225112781127431982, - 18048613958187123807, - 7325490730844456621, - 1953409020724855888 - ], - "y": [ - 7577000130125917198, - 6193701449695751861, - 4102082927677054717, - 395350071385269650 - ], + "x": [18225112781127431982, 18048613958187123807, 7325490730844456621, 1953409020724855888], + "y": [7577000130125917198, 6193701449695751861, 4102082927677054717, 395350071385269650], "infinity": false } ], "lookup_table_type_commitment": { - "x": [ - 3832160677272803715, - 2122279734318217808, - 811690144328522684, - 1416829483108546006 - ], - "y": [ - 10041279311991435550, - 14702496983143623186, - 4419862575487552747, - 1429817244630465543 - ], + "x": [3832160677272803715, 2122279734318217808, 811690144328522684, 1416829483108546006], + "y": [10041279311991435550, 14702496983143623186, 4419862575487552747, 1429817244630465543], "infinity": false }, "non_residues": [ - [ - 5, - 0, - 0, - 0 - ], - [ - 7, - 0, - 0, - 0 - ], - [ - 10, - 0, - 0, - 0 - ] + [5, 0, 0, 0], + [7, 0, 0, 0], + [10, 0, 0, 0] ], "g2_elements": [ { "x": { - "c0": [ - 5106727233969649389, - 7440829307424791261, - 4785637993704342649, - 1729627375292849782 - ], - "c1": [ - 10945020018377822914, - 17413811393473931026, - 8241798111626485029, - 1841571559660931130 - ] + "c0": [5106727233969649389, 7440829307424791261, 4785637993704342649, 1729627375292849782], + "c1": [10945020018377822914, 17413811393473931026, 8241798111626485029, 1841571559660931130] }, "y": { - "c0": [ - 5541340697920699818, - 16416156555105522555, - 5380518976772849807, - 1353435754470862315 - ], - "c1": [ - 6173549831154472795, - 13567992399387660019, - 17050234209342075797, - 650358724130500725 - ] + "c0": [5541340697920699818, 16416156555105522555, 5380518976772849807, 1353435754470862315], + "c1": [6173549831154472795, 13567992399387660019, 17050234209342075797, 650358724130500725] }, "infinity": false }, { "x": { - "c0": [ - 9089143573911733168, - 11482283522806384523, - 13585589533905622862, - 79029415676722370 - ], - "c1": [ - 5692040832573735873, - 16884514497384809355, - 16717166481813659368, - 2742131088506155463 - ] + "c0": [9089143573911733168, 11482283522806384523, 13585589533905622862, 79029415676722370], + "c1": [5692040832573735873, 16884514497384809355, 16717166481813659368, 2742131088506155463] }, "y": { - "c0": [ - 9604638503594647125, - 1289961608472612514, - 6217038149984805214, - 2521661352385209130 - ], - "c1": [ - 17168069778630926308, - 11309277837895768996, - 15154989611154567813, - 359271377050603491 - ] + "c0": [9604638503594647125, 1289961608472612514, 6217038149984805214, 2521661352385209130], + "c1": [17168069778630926308, 11309277837895768996, 15154989611154567813, 359271377050603491] }, "infinity": false } ] -} \ No newline at end of file +} diff --git a/core/lib/dal/sqlx-data.json b/core/lib/dal/sqlx-data.json index 6b47021e2f0..7f683ac7fce 100644 --- a/core/lib/dal/sqlx-data.json +++ b/core/lib/dal/sqlx-data.json @@ -5,10 +5,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Text", - "Int8" - ] + "Left": ["Text", "Int8"] } }, "query": "UPDATE proof_generation_details SET status=$1, updated_at = now() WHERE l1_batch_number = $2" @@ -92,28 +89,9 @@ "type_info": "Text" } ], - "nullable": [ - false, - false, - false, - false, - false, - false, - true, - true, - true, - true, - false, - false, - true, - true, - true - ], + "nullable": [false, false, false, false, false, false, true, true, true, true, false, false, true, true, true], "parameters": { - "Left": [ - "Int4Array", - "Text" - ] + "Left": ["Int4Array", "Text"] } }, "query": "\n UPDATE node_aggregation_witness_jobs_fri\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now(),\n picked_by = $2\n WHERE id = (\n SELECT id\n FROM node_aggregation_witness_jobs_fri\n WHERE status = 'queued'\n AND protocol_version = ANY($1)\n ORDER BY l1_batch_number ASC, depth ASC, id ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING node_aggregation_witness_jobs_fri.*\n " @@ -123,11 +101,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Text", - "Int4", - "Text" - ] + "Left": ["Text", "Int4", "Text"] } }, "query": "UPDATE gpu_prover_queue_fri SET instance_status = 'available', updated_at = now() WHERE instance_host = $1::text::inet AND instance_port = $2 AND instance_status = 'full' AND zone = $3\n " @@ -141,13 +115,9 @@ "type_info": "Bytea" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "SELECT bytecode_hash FROM factory_deps WHERE miniblock_number > $1" @@ -221,25 +191,9 @@ "type_info": "Int4" } ], - "nullable": [ - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true - ], + "nullable": [true, true, true, true, true, true, true, true, true, true, true, true, true], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "\n WITH events_select AS (\n SELECT\n address, topic1, topic2, topic3, topic4, value,\n miniblock_number, tx_hash, tx_index_in_block,\n event_index_in_block, event_index_in_tx\n FROM events\n WHERE miniblock_number > $1\n ORDER BY miniblock_number ASC, event_index_in_block ASC\n )\n SELECT miniblocks.hash as \"block_hash?\",\n address as \"address!\", topic1 as \"topic1!\", topic2 as \"topic2!\", topic3 as \"topic3!\", topic4 as \"topic4!\", value as \"value!\",\n miniblock_number as \"miniblock_number!\", miniblocks.l1_batch_number as \"l1_batch_number?\", tx_hash as \"tx_hash!\",\n tx_index_in_block as \"tx_index_in_block!\", event_index_in_block as \"event_index_in_block!\", event_index_in_tx as \"event_index_in_tx!\"\n FROM events_select\n INNER JOIN miniblocks ON events_select.miniblock_number = miniblocks.number\n ORDER BY miniblock_number ASC, event_index_in_block ASC\n " @@ -249,12 +203,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int8", - "Bytea", - "Text", - "Int4" - ] + "Left": ["Int8", "Bytea", "Text", "Int4"] } }, "query": "INSERT INTO witness_inputs(l1_batch_number, merkle_tree_paths, merkel_tree_paths_blob_url, status, protocol_version, created_at, updated_at) VALUES ($1, $2, $3, 'queued', $4, now(), now())\n ON CONFLICT (l1_batch_number) DO NOTHING" @@ -264,10 +213,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int4", - "Int4" - ] + "Left": ["Int4", "Int4"] } }, "query": "UPDATE eth_txs\n SET confirmed_eth_tx_history_id = $1\n WHERE id = $2" @@ -277,10 +223,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int8", - "Int4" - ] + "Left": ["Int8", "Int4"] } }, "query": "\n INSERT INTO node_aggregation_witness_jobs\n (l1_batch_number, protocol_version, status, created_at, updated_at)\n VALUES ($1, $2, 'waiting_for_artifacts', now(), now())\n " @@ -304,11 +247,7 @@ "type_info": "Int2" } ], - "nullable": [ - null, - false, - false - ], + "nullable": [null, false, false], "parameters": { "Left": [] } @@ -320,9 +259,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "ByteaArray" - ] + "Left": ["ByteaArray"] } }, "query": "UPDATE transactions SET in_mempool = FALSE FROM UNNEST ($1::bytea[]) AS s(address) WHERE transactions.in_mempool = TRUE AND transactions.initiator_address = s.address" @@ -336,9 +273,7 @@ "type_info": "Int8" } ], - "nullable": [ - null - ], + "nullable": [null], "parameters": { "Left": [] } @@ -354,17 +289,9 @@ "type_info": "Int8" } ], - "nullable": [ - null - ], + "nullable": [null], "parameters": { - "Left": [ - "Int8", - "Bytea", - "Bytea", - "Bytea", - "Bytea" - ] + "Left": ["Int8", "Bytea", "Bytea", "Bytea", "Bytea"] } }, "query": "SELECT COUNT(*) as \"count!\" FROM l1_batches WHERE number = $1 AND hash = $2 AND merkle_root_hash = $3 AND parent_hash = $4 AND l2_l1_merkle_root = $5" @@ -418,23 +345,9 @@ "type_info": "Timestamp" } ], - "nullable": [ - false, - false, - false, - false, - false, - true, - false, - false, - true - ], + "nullable": [false, false, false, false, false, true, false, false, true], "parameters": { - "Left": [ - "Interval", - "Int2", - "Text" - ] + "Left": ["Interval", "Int2", "Text"] } }, "query": "UPDATE gpu_prover_queue_fri SET instance_status = 'reserved', updated_at = now(), processing_started_at = now() WHERE id in ( SELECT id FROM gpu_prover_queue_fri WHERE specialized_prover_group_id=$2 AND zone=$3 AND ( instance_status = 'available' OR (instance_status = 'reserved' AND processing_started_at < now() - $1::interval) ) ORDER BY updated_at ASC LIMIT 1 FOR UPDATE SKIP LOCKED ) RETURNING gpu_prover_queue_fri.*\n " @@ -448,14 +361,9 @@ "type_info": "Int8" } ], - "nullable": [ - true - ], + "nullable": [true], "parameters": { - "Left": [ - "Bytea", - "Int8" - ] + "Left": ["Bytea", "Int8"] } }, "query": "SELECT nonce as \"nonce!\" FROM transactions WHERE initiator_address = $1 AND nonce >= $2 AND is_priority = FALSE AND (miniblock_number IS NOT NULL OR error IS NULL) ORDER BY nonce" @@ -469,13 +377,9 @@ "type_info": "Int8" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "SELECT timestamp FROM miniblocks WHERE number = $1" @@ -494,10 +398,7 @@ "type_info": "Text" } ], - "nullable": [ - null, - false - ], + "nullable": [null, false], "parameters": { "Left": [] } @@ -583,30 +484,9 @@ "type_info": "Int4" } ], - "nullable": [ - false, - false, - false, - false, - false, - true, - true, - true, - false, - false, - false, - true, - true, - false, - true - ], + "nullable": [false, false, false, false, false, true, true, true, false, false, false, true, true, false, true], "parameters": { - "Left": [ - "Interval", - "Int4", - "Int8", - "Int4Array" - ] + "Left": ["Interval", "Int4", "Int8", "Int4Array"] } }, "query": "\n UPDATE leaf_aggregation_witness_jobs\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now()\n WHERE l1_batch_number = (\n SELECT l1_batch_number\n FROM leaf_aggregation_witness_jobs\n WHERE l1_batch_number <= $3\n AND\n ( status = 'queued'\n OR (status = 'in_progress' AND processing_started_at < now() - $1::interval)\n OR (status = 'failed' AND attempts < $2)\n )\n AND protocol_version = ANY($4)\n ORDER BY l1_batch_number ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING leaf_aggregation_witness_jobs.*\n " @@ -620,14 +500,9 @@ "type_info": "Bytea" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { - "Left": [ - "Int8", - "Int8" - ] + "Left": ["Int8", "Int8"] } }, "query": "SELECT DISTINCT hashed_key FROM storage_logs WHERE miniblock_number BETWEEN $1 and $2" @@ -641,13 +516,9 @@ "type_info": "Text" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { - "Left": [ - "Int4" - ] + "Left": ["Int4"] } }, "query": "SELECT tx_hash FROM eth_txs_history\n WHERE eth_tx_id = $1 AND confirmed_at IS NOT NULL" @@ -661,9 +532,7 @@ "type_info": "Int8" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { "Left": [] } @@ -679,13 +548,9 @@ "type_info": "Int8" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "SELECT number from miniblocks where timestamp > $1 ORDER BY number ASC LIMIT 1" @@ -695,9 +560,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int8Array" - ] + "Left": ["Int8Array"] } }, "query": "\n UPDATE scheduler_witness_jobs\n SET is_blob_cleaned=TRUE\n WHERE l1_batch_number = ANY($1);\n " @@ -711,13 +574,9 @@ "type_info": "Bytea" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { - "Left": [ - "Numeric" - ] + "Left": ["Numeric"] } }, "query": "SELECT l1_address FROM tokens WHERE market_volume > $1" @@ -727,9 +586,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "DELETE FROM storage_logs WHERE miniblock_number > $1" @@ -743,13 +600,9 @@ "type_info": "Jsonb" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "SELECT serialized_events_queue FROM events_queue WHERE l1_batch_number = $1" @@ -768,15 +621,9 @@ "type_info": "Bytea" } ], - "nullable": [ - null, - null - ], + "nullable": [null, null], "parameters": { - "Left": [ - "ByteaArray", - "Int8" - ] + "Left": ["ByteaArray", "Int8"] } }, "query": "SELECT u.hashed_key as \"hashed_key!\", (SELECT value FROM storage_logs WHERE hashed_key = u.hashed_key AND miniblock_number <= $2 ORDER BY miniblock_number DESC, operation_number DESC LIMIT 1) as \"value?\" FROM UNNEST($1::bytea[]) AS u(hashed_key)" @@ -790,13 +637,9 @@ "type_info": "Int4" } ], - "nullable": [ - true - ], + "nullable": [true], "parameters": { - "Left": [ - "Int4" - ] + "Left": ["Int4"] } }, "query": "SELECT sent_at_block FROM eth_txs_history WHERE eth_tx_id = $1 AND sent_at_block IS NOT NULL ORDER BY created_at ASC LIMIT 1" @@ -840,22 +683,9 @@ "type_info": "Numeric" } ], - "nullable": [ - false, - false, - false, - false, - false, - false, - true - ], + "nullable": [false, false, false, false, false, false, true], "parameters": { - "Left": [ - "ByteaArray", - "Bytea", - "Bytea", - "Bytea" - ] + "Left": ["ByteaArray", "Bytea", "Bytea", "Bytea"] } }, "query": "\n SELECT storage.value as \"value!\",\n tokens.l1_address as \"l1_address!\", tokens.l2_address as \"l2_address!\",\n tokens.symbol as \"symbol!\", tokens.name as \"name!\", tokens.decimals as \"decimals!\", tokens.usd_price as \"usd_price?\"\n FROM storage\n INNER JOIN tokens ON\n storage.address = tokens.l2_address OR (storage.address = $2 AND tokens.l2_address = $3)\n WHERE storage.hashed_key = ANY($1) AND storage.value != $4\n " @@ -939,29 +769,9 @@ "type_info": "Bytea" } ], - "nullable": [ - false, - true, - true, - true, - true, - true, - false, - null, - null, - true, - false, - true, - false, - true, - false - ], + "nullable": [false, true, true, true, true, true, false, null, null, true, false, true, false, true, false], "parameters": { - "Left": [ - "Bytea", - "Bytea", - "Bytea" - ] + "Left": ["Bytea", "Bytea", "Bytea"] } }, "query": "\n WITH sl AS (\n SELECT * FROM storage_logs\n WHERE storage_logs.address = $1 AND storage_logs.tx_hash = $2\n ORDER BY storage_logs.miniblock_number DESC, storage_logs.operation_number DESC\n LIMIT 1\n )\n SELECT\n transactions.hash as tx_hash,\n transactions.index_in_block as index_in_block,\n transactions.l1_batch_tx_index as l1_batch_tx_index,\n transactions.miniblock_number as block_number,\n transactions.error as error,\n transactions.effective_gas_price as effective_gas_price,\n transactions.initiator_address as initiator_address,\n transactions.data->'to' as \"transfer_to?\",\n transactions.data->'contractAddress' as \"execute_contract_address?\",\n transactions.tx_format as \"tx_format?\",\n transactions.refunded_gas as refunded_gas,\n transactions.gas_limit as gas_limit,\n miniblocks.hash as \"block_hash?\",\n miniblocks.l1_batch_number as \"l1_batch_number?\",\n sl.key as \"contract_address?\"\n FROM transactions\n LEFT JOIN miniblocks\n ON miniblocks.number = transactions.miniblock_number\n LEFT JOIN sl\n ON sl.value != $3\n WHERE transactions.hash = $2\n " @@ -1045,27 +855,9 @@ "type_info": "Bytea" } ], - "nullable": [ - false, - false, - false, - false, - true, - false, - true, - false, - true, - false, - true, - false, - false, - true, - true - ], + "nullable": [false, false, false, false, true, false, true, false, true, false, true, false, false, true, true], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "\n SELECT l1_batches.number,\n l1_batches.timestamp,\n l1_batches.l1_tx_count,\n l1_batches.l2_tx_count,\n l1_batches.hash as \"root_hash?\",\n commit_tx.tx_hash as \"commit_tx_hash?\",\n commit_tx.confirmed_at as \"committed_at?\",\n prove_tx.tx_hash as \"prove_tx_hash?\",\n prove_tx.confirmed_at as \"proven_at?\",\n execute_tx.tx_hash as \"execute_tx_hash?\",\n execute_tx.confirmed_at as \"executed_at?\",\n l1_batches.l1_gas_price,\n l1_batches.l2_fair_gas_price,\n l1_batches.bootloader_code_hash,\n l1_batches.default_aa_code_hash\n FROM l1_batches\n LEFT JOIN eth_txs_history as commit_tx ON (l1_batches.eth_commit_tx_id = commit_tx.eth_tx_id AND commit_tx.confirmed_at IS NOT NULL)\n LEFT JOIN eth_txs_history as prove_tx ON (l1_batches.eth_prove_tx_id = prove_tx.eth_tx_id AND prove_tx.confirmed_at IS NOT NULL)\n LEFT JOIN eth_txs_history as execute_tx ON (l1_batches.eth_execute_tx_id = execute_tx.eth_tx_id AND execute_tx.confirmed_at IS NOT NULL)\n WHERE l1_batches.number = $1\n " @@ -1075,10 +867,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Text", - "Int8" - ] + "Left": ["Text", "Int8"] } }, "query": "\n UPDATE witness_inputs_fri SET status =$1, updated_at = now()\n WHERE l1_batch_number = $2\n " @@ -1088,10 +877,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Text", - "Int8" - ] + "Left": ["Text", "Int8"] } }, "query": "\n UPDATE prover_jobs\n SET status = $1, updated_at = now()\n WHERE id = $2\n " @@ -1115,11 +901,7 @@ "type_info": "Int4" } ], - "nullable": [ - false, - false, - false - ], + "nullable": [false, false, false], "parameters": { "Left": [] } @@ -1150,12 +932,7 @@ "type_info": "Text" } ], - "nullable": [ - null, - false, - false, - false - ], + "nullable": [null, false, false, false], "parameters": { "Left": [] } @@ -1167,10 +944,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int8", - "Text" - ] + "Left": ["Int8", "Text"] } }, "query": "INSERT INTO proof_compression_jobs_fri(l1_batch_number, status, created_at, updated_at) VALUES ($1, $2, now(), now()) ON CONFLICT (l1_batch_number) DO NOTHING" @@ -1294,9 +1068,7 @@ true ], "parameters": { - "Left": [ - "Int4" - ] + "Left": ["Int4"] } }, "query": "SELECT number, l1_tx_count, l2_tx_count, timestamp, is_finished, fee_account_address, l2_to_l1_logs, l2_to_l1_messages, bloom, priority_ops_onchain_data, used_contract_hashes, base_fee_per_gas, l1_gas_price, l2_fair_gas_price, bootloader_code_hash, default_aa_code_hash, protocol_version FROM l1_batches WHERE eth_commit_tx_id = $1 OR eth_prove_tx_id = $1 OR eth_execute_tx_id = $1" @@ -1310,13 +1082,9 @@ "type_info": "Int4" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { - "Left": [ - "Text" - ] + "Left": ["Text"] } }, "query": "SELECT eth_txs.id FROM eth_txs_history JOIN eth_txs\n ON eth_txs.confirmed_eth_tx_history_id = eth_txs_history.id\n WHERE eth_txs_history.tx_hash = $1" @@ -1436,9 +1204,7 @@ true ], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "SELECT * from prover_jobs where id=$1" @@ -1467,16 +1233,9 @@ "type_info": "Bytea" } ], - "nullable": [ - false, - false, - false, - false - ], + "nullable": [false, false, false, false], "parameters": { - "Left": [ - "Int4" - ] + "Left": ["Int4"] } }, "query": "SELECT recursion_scheduler_level_vk_hash, recursion_node_level_vk_hash, recursion_leaf_level_vk_hash, recursion_circuits_set_vks_hash\n FROM protocol_versions\n WHERE id = $1\n " @@ -1490,9 +1249,7 @@ "type_info": "Int8" } ], - "nullable": [ - null - ], + "nullable": [null], "parameters": { "Left": [] } @@ -1504,11 +1261,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int8", - "Text", - "Text" - ] + "Left": ["Int8", "Text", "Text"] } }, "query": "INSERT INTO proof_compression_jobs_fri(l1_batch_number, fri_proof_blob_url, status, created_at, updated_at) VALUES ($1, $2, $3, now(), now()) ON CONFLICT (l1_batch_number) DO NOTHING" @@ -1537,16 +1290,9 @@ "type_info": "Int4" } ], - "nullable": [ - true, - false, - true, - true - ], + "nullable": [true, false, true, true], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "\n SELECT miniblock_number as \"miniblock_number!\",\n hash, index_in_block as \"index_in_block!\", l1_batch_tx_index as \"l1_batch_tx_index!\"\n FROM transactions\n WHERE l1_batch_number = $1\n ORDER BY miniblock_number, index_in_block\n " @@ -1556,11 +1302,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Text", - "Text", - "Int8" - ] + "Left": ["Text", "Text", "Int8"] } }, "query": "UPDATE proof_compression_jobs_fri SET status =$1, error= $2, updated_at = now() WHERE l1_batch_number = $3" @@ -1570,10 +1312,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Text", - "Int8" - ] + "Left": ["Text", "Int8"] } }, "query": "\n UPDATE scheduler_witness_jobs_fri\n SET status ='failed', error= $1, updated_at = now()\n WHERE l1_batch_number = $2\n " @@ -1587,13 +1326,9 @@ "type_info": "Int4" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { - "Left": [ - "Text" - ] + "Left": ["Text"] } }, "query": "INSERT INTO eth_txs (raw_tx, nonce, tx_type, contract_address, predicted_gas_cost, created_at, updated_at)\n VALUES ('\\x00', 0, $1, '', 0, now(), now())\n RETURNING id" @@ -1617,15 +1352,9 @@ "type_info": "Text" } ], - "nullable": [ - false, - true, - true - ], + "nullable": [false, true, true], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "\n SELECT l1_batch_number, scheduler_witness_blob_url, final_node_aggregations_blob_url FROM scheduler_witness_jobs\n WHERE status='successful' AND is_blob_cleaned=FALSE\n AND updated_at < NOW() - INTERVAL '30 days'\n AND scheduler_witness_blob_url is NOT NULL\n AND final_node_aggregations_blob_url is NOT NULL\n LIMIT $1;\n " @@ -1649,15 +1378,9 @@ "type_info": "Int8" } ], - "nullable": [ - false, - false, - false - ], + "nullable": [false, false, false], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "SELECT hash, number, timestamp FROM miniblocks WHERE number > $1 ORDER BY number ASC" @@ -1721,23 +1444,9 @@ "type_info": "Timestamp" } ], - "nullable": [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - false - ], + "nullable": [false, false, false, false, false, false, false, false, false, true, false], "parameters": { - "Left": [ - "Int4" - ] + "Left": ["Int4"] } }, "query": "SELECT * FROM protocol_versions WHERE id = $1" @@ -1751,13 +1460,9 @@ "type_info": "Jsonb" } ], - "nullable": [ - true - ], + "nullable": [true], "parameters": { - "Left": [ - "Bytea" - ] + "Left": ["Bytea"] } }, "query": "SELECT verification_info FROM contracts_verification_info WHERE address = $1" @@ -1767,10 +1472,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Time", - "Int8" - ] + "Left": ["Time", "Int8"] } }, "query": "\n UPDATE node_aggregation_witness_jobs_fri\n SET status = 'successful', updated_at = now(), time_taken = $1\n WHERE id = $2\n " @@ -1839,24 +1541,9 @@ "type_info": "Int8" } ], - "nullable": [ - false, - false, - false, - false, - false, - false, - false, - false, - true, - true, - true, - false - ], + "nullable": [false, false, false, false, false, false, false, false, true, true, true, false], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "SELECT number, timestamp, hash, l1_tx_count, l2_tx_count, base_fee_per_gas, l1_gas_price, l2_fair_gas_price, bootloader_code_hash, default_aa_code_hash, protocol_version, virtual_blocks\n FROM miniblocks WHERE number = $1" @@ -1870,14 +1557,9 @@ "type_info": "Int8" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { - "Left": [ - "Int8", - "Int2" - ] + "Left": ["Int8", "Int2"] } }, "query": "SELECT id from prover_jobs_fri WHERE l1_batch_number = $1 AND status = 'successful' AND aggregation_round = $2" @@ -1891,9 +1573,7 @@ "type_info": "Int8" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { "Left": [] } @@ -1929,13 +1609,7 @@ "type_info": "Int4" } ], - "nullable": [ - false, - false, - false, - false, - false - ], + "nullable": [false, false, false, false, false], "parameters": { "Left": [] } @@ -1956,10 +1630,7 @@ "type_info": "Int2" } ], - "nullable": [ - false, - false - ], + "nullable": [false, false], "parameters": { "Left": [] } @@ -1971,10 +1642,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Bytea", - "Jsonb" - ] + "Left": ["Bytea", "Jsonb"] } }, "query": "INSERT INTO transaction_traces (tx_hash, trace, created_at, updated_at) VALUES ($1, $2, now(), now())" @@ -2202,12 +1870,7 @@ true ], "parameters": { - "Left": [ - "Int8", - "Numeric", - "Numeric", - "Int4" - ] + "Left": ["Int8", "Numeric", "Numeric", "Int4"] } }, "query": "UPDATE transactions\n SET in_mempool = TRUE\n FROM (\n SELECT hash FROM (\n SELECT hash\n FROM transactions\n WHERE miniblock_number IS NULL AND in_mempool = FALSE AND error IS NULL\n AND (is_priority = TRUE OR (max_fee_per_gas >= $2 and gas_per_pubdata_limit >= $3))\n AND tx_format != $4\n ORDER BY is_priority DESC, priority_op_id, received_at\n LIMIT $1\n ) as subquery1\n ORDER BY hash\n ) as subquery2\n WHERE transactions.hash = subquery2.hash\n RETURNING transactions.*" @@ -2217,10 +1880,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int8", - "Int4Array" - ] + "Left": ["Int8", "Int4Array"] } }, "query": "DELETE FROM storage_logs WHERE miniblock_number = $1 AND operation_number != ALL($2)" @@ -2230,10 +1890,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Bytea", - "Int8" - ] + "Left": ["Bytea", "Int8"] } }, "query": "UPDATE l1_batches SET hash = $1 WHERE number = $2" @@ -2247,13 +1904,9 @@ "type_info": "Int8" } ], - "nullable": [ - null - ], + "nullable": [null], "parameters": { - "Left": [ - "Bytea" - ] + "Left": ["Bytea"] } }, "query": "\n SELECT COUNT(*) as \"count!\"\n FROM contracts_verification_info\n WHERE address = $1\n " @@ -2267,14 +1920,9 @@ "type_info": "Bytea" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { - "Left": [ - "Bytea", - "Int8" - ] + "Left": ["Bytea", "Int8"] } }, "query": "SELECT bytecode FROM factory_deps WHERE bytecode_hash = $1 AND miniblock_number <= $2" @@ -2512,14 +2160,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int8", - "Int2", - "Int4", - "Text", - "Int4", - "Int4" - ] + "Left": ["Int8", "Int2", "Int4", "Text", "Int4", "Int4"] } }, "query": "INSERT INTO node_aggregation_witness_jobs_fri (l1_batch_number, circuit_id, depth, aggregations_url, number_of_dependent_jobs, protocol_version, status, created_at, updated_at)\n VALUES ($1, $2, $3, $4, $5, $6, 'waiting_for_proofs', now(), now())\n ON CONFLICT(l1_batch_number, circuit_id, depth)\n DO UPDATE SET updated_at=now()" @@ -2533,13 +2174,9 @@ "type_info": "Bytea" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { - "Left": [ - "ByteaArray" - ] + "Left": ["ByteaArray"] } }, "query": "SELECT hashed_key FROM initial_writes WHERE hashed_key = ANY($1)" @@ -2553,9 +2190,7 @@ "type_info": "Int8" } ], - "nullable": [ - null - ], + "nullable": [null], "parameters": { "Left": [] } @@ -2621,19 +2256,7 @@ "type_info": "Timestamp" } ], - "nullable": [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - false - ], + "nullable": [false, false, false, false, false, false, false, false, false, true, false], "parameters": { "Left": [] } @@ -2659,15 +2282,9 @@ "type_info": "Text" } ], - "nullable": [ - false, - true, - true - ], + "nullable": [false, true, true], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "\n SELECT l1_batch_number, leaf_layer_subqueues_blob_url, aggregation_outputs_blob_url FROM node_aggregation_witness_jobs\n WHERE status='successful' AND is_blob_cleaned=FALSE\n AND leaf_layer_subqueues_blob_url is NOT NULL\n AND aggregation_outputs_blob_url is NOT NULL\n AND updated_at < NOW() - INTERVAL '30 days'\n LIMIT $1;\n " @@ -2681,9 +2298,7 @@ "type_info": "Int8" } ], - "nullable": [ - null - ], + "nullable": [null], "parameters": { "Left": [] } @@ -2699,15 +2314,9 @@ "type_info": "Int4" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { - "Left": [ - "Int4", - "Text", - "Timestamp" - ] + "Left": ["Int4", "Text", "Timestamp"] } }, "query": "INSERT INTO eth_txs_history\n (eth_tx_id, base_fee_per_gas, priority_fee_per_gas, tx_hash, signed_raw_tx, created_at, updated_at, confirmed_at)\n VALUES ($1, 0, 0, $2, '\\x00', now(), now(), $3)\n RETURNING id" @@ -2726,14 +2335,9 @@ "type_info": "Bytea" } ], - "nullable": [ - false, - false - ], + "nullable": [false, false], "parameters": { - "Left": [ - "Bytea" - ] + "Left": ["Bytea"] } }, "query": "\n SELECT * FROM call_traces\n WHERE tx_hash = $1\n " @@ -2802,26 +2406,9 @@ "type_info": "Text" } ], - "nullable": [ - false, - true, - false, - false, - true, - false, - false, - true, - true, - true, - true, - true - ], + "nullable": [false, true, false, false, true, false, false, true, true, true, true, true], "parameters": { - "Left": [ - "Int8", - "Int4Array", - "Text" - ] + "Left": ["Int8", "Int4Array", "Text"] } }, "query": "\n UPDATE witness_inputs_fri\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now(),\n picked_by = $3\n WHERE l1_batch_number = (\n SELECT l1_batch_number\n FROM witness_inputs_fri\n WHERE l1_batch_number <= $1\n AND status = 'queued'\n AND protocol_version = ANY($2)\n ORDER BY l1_batch_number ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING witness_inputs_fri.*\n " @@ -2831,9 +2418,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "ByteaArray" - ] + "Left": ["ByteaArray"] } }, "query": "DELETE FROM call_traces\n WHERE tx_hash = ANY($1)" @@ -2917,30 +2502,9 @@ "type_info": "Int4" } ], - "nullable": [ - false, - false, - true, - false, - true, - true, - true, - false, - false, - false, - true, - true, - true, - false, - true - ], + "nullable": [false, false, true, false, true, true, true, false, false, false, true, true, true, false, true], "parameters": { - "Left": [ - "Interval", - "Int4", - "Int8", - "Int4Array" - ] + "Left": ["Interval", "Int4", "Int8", "Int4Array"] } }, "query": "\n UPDATE scheduler_witness_jobs\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now()\n WHERE l1_batch_number = (\n SELECT l1_batch_number\n FROM scheduler_witness_jobs\n WHERE l1_batch_number <= $3\n AND\n ( status = 'queued'\n OR (status = 'in_progress' AND processing_started_at < now() - $1::interval)\n OR (status = 'failed' AND attempts < $2)\n )\n AND protocol_version = ANY($4)\n ORDER BY l1_batch_number ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING scheduler_witness_jobs.*\n " @@ -2950,11 +2514,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int4Array", - "ByteaArray", - "Int8" - ] + "Left": ["Int4Array", "ByteaArray", "Int8"] } }, "query": "\n UPDATE transactions\n SET \n l1_batch_number = $3,\n l1_batch_tx_index = data_table.l1_batch_tx_index,\n updated_at = now()\n FROM\n (SELECT\n UNNEST($1::int[]) AS l1_batch_tx_index,\n UNNEST($2::bytea[]) AS hash\n ) AS data_table\n WHERE transactions.hash=data_table.hash \n " @@ -2964,9 +2524,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "DELETE FROM events WHERE miniblock_number > $1" @@ -2976,9 +2534,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Text" - ] + "Left": ["Text"] } }, "query": "DELETE FROM compiler_versions WHERE compiler = $1" @@ -2988,10 +2544,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "ByteaArray", - "ByteaArray" - ] + "Left": ["ByteaArray", "ByteaArray"] } }, "query": "UPDATE storage SET value = u.value FROM UNNEST($1::bytea[], $2::bytea[]) AS u(key, value) WHERE u.key = hashed_key" @@ -3010,15 +2563,9 @@ "type_info": "Bytea" } ], - "nullable": [ - false, - false - ], + "nullable": [false, false], "parameters": { - "Left": [ - "Int4", - "Int8" - ] + "Left": ["Int4", "Int8"] } }, "query": "SELECT number, hash FROM miniblocks WHERE protocol_version = $1 ORDER BY number DESC LIMIT $2" @@ -3028,10 +2575,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int8", - "Text" - ] + "Left": ["Int8", "Text"] } }, "query": "\n UPDATE scheduler_witness_jobs\n SET final_node_aggregations_blob_url = $2,\n status = 'waiting_for_proofs',\n updated_at = now()\n WHERE l1_batch_number = $1 AND status != 'queued'\n " @@ -3275,12 +2819,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int4", - "Int8", - "Text", - "Text" - ] + "Left": ["Int4", "Int8", "Text", "Text"] } }, "query": "\n UPDATE node_aggregation_witness_jobs\n SET number_of_leaf_circuits = $1,\n leaf_layer_subqueues_blob_url = $3,\n aggregation_outputs_blob_url = $4,\n status = 'waiting_for_proofs',\n updated_at = now()\n WHERE l1_batch_number = $2 AND status != 'queued'\n " @@ -3294,13 +2833,9 @@ "type_info": "Bytea" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "SELECT hash FROM miniblocks WHERE number = $1" @@ -3310,9 +2845,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int8Array" - ] + "Left": ["Int8Array"] } }, "query": "\n UPDATE scheduler_dependency_tracker_fri\n SET status='queued'\n WHERE l1_batch_number = ANY($1)\n " @@ -3336,13 +2869,9 @@ "type_info": "Bytea" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { - "Left": [ - "Interval" - ] + "Left": ["Interval"] } }, "query": "DELETE FROM transactions WHERE miniblock_number IS NULL AND received_at < now() - $1::interval AND is_priority=false AND error IS NULL RETURNING hash" @@ -3356,9 +2885,7 @@ "type_info": "Bytea" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { "Left": [] } @@ -3379,14 +2906,9 @@ "type_info": "Bytea" } ], - "nullable": [ - false, - false - ], + "nullable": [false, false], "parameters": { - "Left": [ - "ByteaArray" - ] + "Left": ["ByteaArray"] } }, "query": "SELECT hashed_key, value as \"value!\" FROM storage WHERE hashed_key = ANY($1)" @@ -3396,13 +2918,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int8", - "Int2", - "Text", - "Int4", - "Int4" - ] + "Left": ["Int8", "Int2", "Text", "Int4", "Int4"] } }, "query": "\n INSERT INTO leaf_aggregation_witness_jobs_fri\n (l1_batch_number, circuit_id, closed_form_inputs_blob_url, number_of_basic_circuits, protocol_version, status, created_at, updated_at)\n VALUES ($1, $2, $3, $4, $5, 'waiting_for_proofs', now(), now())\n ON CONFLICT(l1_batch_number, circuit_id)\n DO UPDATE SET updated_at=now()\n " @@ -3466,23 +2982,9 @@ "type_info": "Timestamp" } ], - "nullable": [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - false - ], + "nullable": [false, false, false, false, false, false, false, false, false, true, false], "parameters": { - "Left": [ - "Int4" - ] + "Left": ["Int4"] } }, "query": "SELECT * FROM protocol_versions\n WHERE id = $1\n " @@ -3501,10 +3003,7 @@ "type_info": "Text" } ], - "nullable": [ - null, - false - ], + "nullable": [null, false], "parameters": { "Left": [] } @@ -3516,9 +3015,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "DELETE FROM l2_to_l1_logs WHERE miniblock_number > $1" @@ -3532,9 +3029,7 @@ "type_info": "Int8" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { "Left": [] } @@ -3550,9 +3045,7 @@ "type_info": "Int8" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { "Left": [] } @@ -3568,9 +3061,7 @@ "type_info": "Int8" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { "Left": [] } @@ -3646,28 +3137,9 @@ "type_info": "Int2" } ], - "nullable": [ - false, - false, - false, - false, - false, - false, - true, - true, - true, - true, - false, - false, - true - ], + "nullable": [false, false, false, false, false, false, true, true, true, true, false, false, true], "parameters": { - "Left": [ - "Interval", - "Int2", - "Text", - "Text" - ] + "Left": ["Interval", "Int2", "Text", "Text"] } }, "query": "\n UPDATE gpu_prover_queue\n SET instance_status = 'reserved',\n updated_at = now(),\n processing_started_at = now()\n WHERE id in (\n SELECT id\n FROM gpu_prover_queue\n WHERE specialized_prover_group_id=$2\n AND region=$3\n AND zone=$4\n AND (\n instance_status = 'available'\n OR (instance_status = 'reserved' AND processing_started_at < now() - $1::interval)\n )\n ORDER BY updated_at ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING gpu_prover_queue.*\n " @@ -3691,16 +3163,9 @@ "type_info": "Int2" } ], - "nullable": [ - false, - false, - false - ], + "nullable": [false, false, false], "parameters": { - "Left": [ - "Interval", - "Int2" - ] + "Left": ["Interval", "Int2"] } }, "query": "UPDATE proof_compression_jobs_fri SET status = 'queued', attempts = attempts + 1, updated_at = now(), processing_started_at = now() WHERE (status = 'in_progress' AND processing_started_at <= now() - $1::interval AND attempts < $2) OR (status = 'failed' AND attempts < $2) RETURNING l1_batch_number, status, attempts" @@ -3710,9 +3175,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int4" - ] + "Left": ["Int4"] } }, "query": "UPDATE eth_txs SET has_failed = TRUE WHERE id = $1" @@ -3786,25 +3249,9 @@ "type_info": "Bytea" } ], - "nullable": [ - false, - null, - null, - false, - false, - false, - false, - true, - true, - false, - false, - true, - false - ], + "nullable": [false, null, null, false, false, false, false, true, true, false, false, true, false], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "\n SELECT miniblocks.number,\n COALESCE(miniblocks.l1_batch_number, (SELECT (max(number) + 1) FROM l1_batches)) as \"l1_batch_number!\",\n (SELECT max(m2.number) FROM miniblocks m2 WHERE miniblocks.l1_batch_number = m2.l1_batch_number) as \"last_batch_miniblock?\",\n miniblocks.timestamp,\n miniblocks.hash as \"root_hash?\",\n miniblocks.l1_gas_price,\n miniblocks.l2_fair_gas_price,\n miniblocks.bootloader_code_hash,\n miniblocks.default_aa_code_hash,\n miniblocks.virtual_blocks,\n miniblocks.hash,\n miniblocks.protocol_version as \"protocol_version!\",\n l1_batches.fee_account_address as \"fee_account_address?\"\n FROM miniblocks\n LEFT JOIN l1_batches ON miniblocks.l1_batch_number = l1_batches.number\n WHERE miniblocks.number = $1\n " @@ -3823,14 +3270,9 @@ "type_info": "Bytea" } ], - "nullable": [ - false, - false - ], + "nullable": [false, false], "parameters": { - "Left": [ - "Int4" - ] + "Left": ["Int4"] } }, "query": "SELECT bootloader_code_hash, default_account_code_hash FROM protocol_versions\n WHERE id = $1\n " @@ -3844,9 +3286,7 @@ "type_info": "Int8" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { "Left": [] } @@ -3912,23 +3352,9 @@ "type_info": "Timestamp" } ], - "nullable": [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, - false - ], + "nullable": [false, false, false, false, false, false, false, false, false, true, false], "parameters": { - "Left": [ - "Int4" - ] + "Left": ["Int4"] } }, "query": "SELECT * FROM protocol_versions\n WHERE id < $1\n ORDER BY id DESC\n LIMIT 1\n " @@ -3947,14 +3373,9 @@ "type_info": "Bytea" } ], - "nullable": [ - false, - false - ], + "nullable": [false, false], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "SELECT bytecode_hash, bytecode FROM factory_deps INNER JOIN miniblocks ON miniblocks.number = factory_deps.miniblock_number WHERE miniblocks.l1_batch_number = $1" @@ -3978,11 +3399,7 @@ "type_info": "Int8" } ], - "nullable": [ - false, - false, - null - ], + "nullable": [false, false, null], "parameters": { "Left": [] } @@ -3994,9 +3411,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int4" - ] + "Left": ["Int4"] } }, "query": "UPDATE miniblocks SET protocol_version = $1 WHERE l1_batch_number IS NULL" @@ -4006,11 +3421,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int4", - "Int8", - "Int8" - ] + "Left": ["Int4", "Int8", "Int8"] } }, "query": "UPDATE l1_batches SET eth_commit_tx_id = $1, updated_at = now() WHERE number BETWEEN $2 AND $3" @@ -4020,10 +3431,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int4", - "Int4" - ] + "Left": ["Int4", "Int4"] } }, "query": "UPDATE eth_txs_history SET sent_at_block = $2, sent_at = now()\n WHERE id = $1 AND sent_at_block IS NULL" @@ -4037,14 +3445,9 @@ "type_info": "Numeric" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { - "Left": [ - "Int8", - "Int8" - ] + "Left": ["Int8", "Int8"] } }, "query": "SELECT base_fee_per_gas FROM miniblocks WHERE number <= $1 ORDER BY number DESC LIMIT $2" @@ -4058,14 +3461,9 @@ "type_info": "Int8" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { - "Left": [ - "Int8", - "Numeric" - ] + "Left": ["Int8", "Numeric"] } }, "query": "SELECT number FROM ( SELECT number, sum(virtual_blocks) OVER(ORDER BY number) AS virtual_block_sum FROM miniblocks WHERE l1_batch_number >= $1 ) AS vts WHERE virtual_block_sum <= $2 ORDER BY number DESC LIMIT 1" @@ -4089,15 +3487,9 @@ "type_info": "Int4" } ], - "nullable": [ - false, - false, - false - ], + "nullable": [false, false, false], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "SELECT bootloader_code_hash, default_account_code_hash, id FROM protocol_versions\n WHERE timestamp <= $1\n ORDER BY id DESC\n LIMIT 1\n " @@ -4116,14 +3508,9 @@ "type_info": "Int8" } ], - "nullable": [ - false, - false - ], + "nullable": [false, false], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "SELECT hashed_key, index FROM initial_writes WHERE l1_batch_number = $1 ORDER BY index" @@ -4137,9 +3524,7 @@ "type_info": "Int8" } ], - "nullable": [ - null - ], + "nullable": [null], "parameters": { "Left": [] } @@ -4155,14 +3540,9 @@ "type_info": "Int8" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { - "Left": [ - "Int8", - "Numeric" - ] + "Left": ["Int8", "Numeric"] } }, "query": "SELECT number FROM ( SELECT number, sum(virtual_blocks) OVER(ORDER BY number) AS virtual_block_sum FROM miniblocks WHERE l1_batch_number >= $1 ) AS vts WHERE virtual_block_sum >= $2 ORDER BY number LIMIT 1" @@ -4181,15 +3561,9 @@ "type_info": "Int4" } ], - "nullable": [ - false, - false - ], + "nullable": [false, false], "parameters": { - "Left": [ - "Text", - "Int8" - ] + "Left": ["Text", "Int8"] } }, "query": "\n UPDATE prover_jobs\n SET status = 'failed', error = $1, updated_at = now()\n WHERE id = $2\n RETURNING l1_batch_number, attempts\n " @@ -4203,13 +3577,9 @@ "type_info": "Bytea" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { - "Left": [ - "Bytea" - ] + "Left": ["Bytea"] } }, "query": "SELECT value FROM storage WHERE hashed_key = $1" @@ -4219,10 +3589,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Text", - "Int8" - ] + "Left": ["Text", "Int8"] } }, "query": "\n UPDATE prover_jobs_fri\n SET status = 'failed', error = $1, updated_at = now()\n WHERE id = $2\n " @@ -4241,10 +3608,7 @@ "type_info": "Int4" } ], - "nullable": [ - null, - false - ], + "nullable": [null, false], "parameters": { "Left": [] } @@ -4260,9 +3624,7 @@ "type_info": "Int8" } ], - "nullable": [ - null - ], + "nullable": [null], "parameters": { "Left": [] } @@ -4274,13 +3636,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Text", - "Int8", - "Int2", - "Int4", - "Int4" - ] + "Left": ["Text", "Int8", "Int2", "Int4", "Int4"] } }, "query": "\n UPDATE node_aggregation_witness_jobs_fri\n SET aggregations_url = $1, number_of_dependent_jobs = $5, updated_at = now()\n WHERE l1_batch_number = $2\n AND circuit_id = $3\n AND depth = $4\n " @@ -4294,9 +3650,7 @@ "type_info": "Int8" } ], - "nullable": [ - null - ], + "nullable": [null], "parameters": { "Left": [] } @@ -4382,30 +3736,9 @@ "type_info": "Int4" } ], - "nullable": [ - false, - true, - true, - true, - false, - true, - true, - true, - false, - false, - false, - true, - true, - false, - true - ], + "nullable": [false, true, true, true, false, true, true, true, false, false, false, true, true, false, true], "parameters": { - "Left": [ - "Interval", - "Int4", - "Int8", - "Int4Array" - ] + "Left": ["Interval", "Int4", "Int8", "Int4Array"] } }, "query": "\n UPDATE node_aggregation_witness_jobs\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now()\n WHERE l1_batch_number = (\n SELECT l1_batch_number\n FROM node_aggregation_witness_jobs\n WHERE l1_batch_number <= $3\n AND\n ( status = 'queued'\n OR (status = 'in_progress' AND processing_started_at < now() - $1::interval)\n OR (status = 'failed' AND attempts < $2)\n )\n AND protocol_version = ANY($4)\n ORDER BY l1_batch_number ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING node_aggregation_witness_jobs.*\n " @@ -4424,14 +3757,9 @@ "type_info": "Int8" } ], - "nullable": [ - null, - null - ], + "nullable": [null, null], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "SELECT (SELECT l1_batch_number FROM miniblocks WHERE number = $1) as \"block_batch?\", (SELECT MAX(number) + 1 FROM l1_batches) as \"max_batch?\"" @@ -4445,9 +3773,7 @@ "type_info": "Int8" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { "Left": [] } @@ -4459,10 +3785,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int8", - "Jsonb" - ] + "Left": ["Int8", "Jsonb"] } }, "query": "INSERT INTO events_queue (l1_batch_number, serialized_events_queue) VALUES ($1, $2)" @@ -4472,9 +3795,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int4" - ] + "Left": ["Int4"] } }, "query": "DELETE FROM eth_txs_history\n WHERE id = $1" @@ -4486,15 +3807,11 @@ "name": "version", "ordinal": 0, "type_info": "Text" - } - ], - "nullable": [ - false + } ], + "nullable": [false], "parameters": { - "Left": [ - "Text" - ] + "Left": ["Text"] } }, "query": "SELECT version FROM compiler_versions WHERE compiler = $1 ORDER by version" @@ -4504,10 +3821,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "TextArray", - "Text" - ] + "Left": ["TextArray", "Text"] } }, "query": "\n INSERT INTO compiler_versions (version, compiler, created_at, updated_at)\n SELECT u.version, $2, now(), now()\n FROM UNNEST($1::text[])\n AS u(version)\n ON CONFLICT (version, compiler) DO NOTHING" @@ -4531,15 +3845,9 @@ "type_info": "Jsonb" } ], - "nullable": [ - false, - true, - true - ], + "nullable": [false, true, true], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "\n SELECT status, error, compilation_errors FROM contract_verification_requests\n WHERE id = $1\n " @@ -4583,22 +3891,9 @@ "type_info": "Bool" } ], - "nullable": [ - false, - false, - false, - false, - false, - false, - false - ], + "nullable": [false, false, false, false, false, false, false], "parameters": { - "Left": [ - "Int2Array", - "Int2Array", - "Int4Array", - "Text" - ] + "Left": ["Int2Array", "Int2Array", "Int4Array", "Text"] } }, "query": "\n UPDATE prover_jobs_fri\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now(),\n picked_by = $4\n WHERE id = (\n SELECT id\n FROM prover_jobs_fri\n WHERE status = 'queued'\n AND (circuit_id, aggregation_round) IN (\n SELECT * FROM UNNEST($1::smallint[], $2::smallint[])\n )\n AND protocol_version = ANY($3)\n ORDER BY aggregation_round DESC, l1_batch_number ASC, id ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING prover_jobs_fri.id, prover_jobs_fri.l1_batch_number, prover_jobs_fri.circuit_id,\n prover_jobs_fri.aggregation_round, prover_jobs_fri.sequence_number, prover_jobs_fri.depth,\n prover_jobs_fri.is_node_final_proof\n " @@ -4608,10 +3903,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Text", - "Int8" - ] + "Left": ["Text", "Int8"] } }, "query": "\n UPDATE node_aggregation_witness_jobs_fri\n SET status ='failed', error= $1, updated_at = now()\n WHERE id = $2\n " @@ -4621,12 +3913,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Time", - "Bytea", - "Text", - "Int8" - ] + "Left": ["Time", "Bytea", "Text", "Int8"] } }, "query": "\n UPDATE prover_jobs\n SET status = 'successful', updated_at = now(), time_taken = $1, result = $2, proccesed_by = $3\n WHERE id = $4\n " @@ -4640,13 +3927,9 @@ "type_info": "ByteaArray" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "SELECT l2_to_l1_logs FROM l1_batches WHERE number = $1" @@ -4660,9 +3943,7 @@ "type_info": "Int8" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { "Left": [] } @@ -4898,9 +4179,7 @@ true ], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "SELECT number, timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, rollup_last_leaf_index, zkporter_is_available, bootloader_code_hash, default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, meta_parameters_hash, protocol_version, events_queue_commitment, bootloader_initial_content_commitment FROM l1_batches LEFT JOIN commitments ON commitments.l1_batch_number = l1_batches.number WHERE number = $1" @@ -4910,11 +4189,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int8", - "Bytea", - "Bytea" - ] + "Left": ["Int8", "Bytea", "Bytea"] } }, "query": "INSERT INTO commitments (l1_batch_number, events_queue_commitment, bootloader_initial_content_commitment) VALUES ($1, $2, $3) ON CONFLICT (l1_batch_number) DO UPDATE SET events_queue_commitment = $2, bootloader_initial_content_commitment = $3" @@ -4958,21 +4233,9 @@ "type_info": "Bool" } ], - "nullable": [ - false, - false, - false, - false, - false, - false, - false - ], + "nullable": [false, false, false, false, false, false, false], "parameters": { - "Left": [ - "Time", - "Text", - "Int8" - ] + "Left": ["Time", "Text", "Int8"] } }, "query": "\n UPDATE prover_jobs_fri\n SET status = 'successful', updated_at = now(), time_taken = $1, proof_blob_url=$2\n WHERE id = $3\n RETURNING prover_jobs_fri.id, prover_jobs_fri.l1_batch_number, prover_jobs_fri.circuit_id,\n prover_jobs_fri.aggregation_round, prover_jobs_fri.sequence_number, prover_jobs_fri.depth,\n prover_jobs_fri.is_node_final_proof\n " @@ -4986,9 +4249,7 @@ "type_info": "Int4" } ], - "nullable": [ - null - ], + "nullable": [null], "parameters": { "Left": [] } @@ -5004,16 +4265,9 @@ "type_info": "Int4" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { - "Left": [ - "Bytea", - "Bytea", - "Bytea", - "Bytea" - ] + "Left": ["Bytea", "Bytea", "Bytea", "Bytea"] } }, "query": "SELECT id FROM prover_fri_protocol_versions WHERE recursion_circuits_set_vks_hash = $1 AND recursion_leaf_level_vk_hash = $2 AND recursion_node_level_vk_hash = $3 AND recursion_scheduler_level_vk_hash = $4 " @@ -5037,16 +4291,9 @@ "type_info": "Bytea" } ], - "nullable": [ - false, - false, - true - ], + "nullable": [false, false, true], "parameters": { - "Left": [ - "Bytea", - "Bytea" - ] + "Left": ["Bytea", "Bytea"] } }, "query": "\n SELECT factory_deps.bytecode, transactions.data as \"data?\", transactions.contract_address as \"contract_address?\"\n FROM (\n SELECT * FROM storage_logs\n WHERE storage_logs.hashed_key = $1\n ORDER BY miniblock_number DESC, operation_number DESC\n LIMIT 1\n ) storage_logs\n JOIN factory_deps ON factory_deps.bytecode_hash = storage_logs.value\n LEFT JOIN transactions ON transactions.hash = storage_logs.tx_hash\n WHERE storage_logs.value != $2\n " @@ -5060,14 +4307,9 @@ "type_info": "Bytea" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { - "Left": [ - "Int8", - "Int8" - ] + "Left": ["Int8", "Int8"] } }, "query": "SELECT hash FROM miniblocks WHERE number BETWEEN $1 AND $2 ORDER BY number" @@ -5105,13 +4347,9 @@ "type_info": "Int4" } ], - "nullable": [ - true - ], + "nullable": [true], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "\n SELECT protocol_version\n FROM witness_inputs\n WHERE l1_batch_number = $1\n " @@ -5345,11 +4583,7 @@ true ], "parameters": { - "Left": [ - "Int8", - "Int8", - "Int8" - ] + "Left": ["Int8", "Int8", "Int8"] } }, "query": "SELECT number, timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, rollup_last_leaf_index, zkporter_is_available, bootloader_code_hash, default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, meta_parameters_hash, protocol_version, events_queue_commitment, bootloader_initial_content_commitment FROM l1_batches LEFT JOIN commitments ON commitments.l1_batch_number = l1_batches.number WHERE number BETWEEN $1 AND $2 ORDER BY number LIMIT $3" @@ -5359,11 +4593,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "ByteaArray", - "ByteaArray", - "Int8" - ] + "Left": ["ByteaArray", "ByteaArray", "Int8"] } }, "query": "INSERT INTO factory_deps (bytecode_hash, bytecode, miniblock_number, created_at, updated_at) SELECT u.bytecode_hash, u.bytecode, $3, now(), now() FROM UNNEST($1::bytea[], $2::bytea[]) AS u(bytecode_hash, bytecode) ON CONFLICT (bytecode_hash) DO NOTHING" @@ -5387,15 +4617,9 @@ "type_info": "Text" } ], - "nullable": [ - false, - true, - true - ], + "nullable": [false, true, true], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "\n SELECT l1_batch_number, basic_circuits_blob_url, basic_circuits_inputs_blob_url FROM leaf_aggregation_witness_jobs\n WHERE status='successful' AND is_blob_cleaned=FALSE\n AND basic_circuits_blob_url is NOT NULL\n AND basic_circuits_inputs_blob_url is NOT NULL\n AND updated_at < NOW() - INTERVAL '30 days'\n LIMIT $1;\n " @@ -5414,14 +4638,9 @@ "type_info": "Int8" } ], - "nullable": [ - null, - null - ], + "nullable": [null, null], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "SELECT MIN(miniblocks.number) as \"min?\", MAX(miniblocks.number) as \"max?\" FROM miniblocks WHERE l1_batch_number = $1" @@ -5435,13 +4654,9 @@ "type_info": "Int8" } ], - "nullable": [ - true - ], + "nullable": [true], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "SELECT l1_batch_number FROM miniblocks WHERE number = $1" @@ -5455,9 +4670,7 @@ "type_info": "Int8" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { "Left": [] } @@ -5473,13 +4686,9 @@ "type_info": "Int8" } ], - "nullable": [ - null - ], + "nullable": [null], "parameters": { - "Left": [ - "Numeric" - ] + "Left": ["Numeric"] } }, "query": "SELECT max(l1_batches.number) FROM l1_batches JOIN eth_txs ON (l1_batches.eth_commit_tx_id = eth_txs.id) JOIN eth_txs_history AS commit_tx ON (eth_txs.confirmed_eth_tx_history_id = commit_tx.id) WHERE commit_tx.confirmed_at IS NOT NULL AND eth_prove_tx_id IS NOT NULL AND eth_execute_tx_id IS NULL AND EXTRACT(epoch FROM commit_tx.confirmed_at) < $1" @@ -5493,13 +4702,9 @@ "type_info": "ByteaArray" } ], - "nullable": [ - null - ], + "nullable": [null], "parameters": { - "Left": [ - "ByteaArray" - ] + "Left": ["ByteaArray"] } }, "query": "SELECT (SELECT ARRAY[address,key] FROM storage_logs WHERE hashed_key = u.hashed_key ORDER BY miniblock_number, operation_number LIMIT 1) as \"address_and_key?\" FROM UNNEST($1::bytea[]) AS u(hashed_key)" @@ -5513,9 +4718,7 @@ "type_info": "Int8" } ], - "nullable": [ - null - ], + "nullable": [null], "parameters": { "Left": [] } @@ -5536,14 +4739,9 @@ "type_info": "Bytea" } ], - "nullable": [ - false, - false - ], + "nullable": [false, false], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "SELECT * FROM call_traces WHERE tx_hash IN (SELECT hash FROM transactions WHERE miniblock_number = $1)" @@ -5553,15 +4751,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int8", - "Bytea", - "Bytea", - "Text", - "Text", - "Int4", - "Int4" - ] + "Left": ["Int8", "Bytea", "Bytea", "Text", "Text", "Int4", "Int4"] } }, "query": "\n INSERT INTO leaf_aggregation_witness_jobs\n (l1_batch_number, basic_circuits, basic_circuits_inputs, basic_circuits_blob_url, basic_circuits_inputs_blob_url, number_of_basic_circuits, protocol_version, status, created_at, updated_at)\n VALUES ($1, $2, $3, $4, $5, $6, $7, 'waiting_for_proofs', now(), now())\n " @@ -5580,14 +4770,9 @@ "type_info": "Text" } ], - "nullable": [ - false, - true - ], + "nullable": [false, true], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "SELECT l1_batch_number, merkel_tree_paths_blob_url FROM witness_inputs WHERE status = 'successful' AND is_blob_cleaned = FALSE AND merkel_tree_paths_blob_url is NOT NULL AND updated_at < NOW() - INTERVAL '30 days' LIMIT $1" @@ -5821,12 +5006,7 @@ true ], "parameters": { - "Left": [ - "Bytea", - "Bytea", - "Int4", - "Int8" - ] + "Left": ["Bytea", "Bytea", "Int4", "Int8"] } }, "query": "SELECT number, l1_batches.timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, rollup_last_leaf_index, zkporter_is_available, l1_batches.bootloader_code_hash, l1_batches.default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, meta_parameters_hash, protocol_version, events_queue_commitment, bootloader_initial_content_commitment FROM l1_batches LEFT JOIN commitments ON commitments.l1_batch_number = l1_batches.number JOIN protocol_versions ON protocol_versions.id = l1_batches.protocol_version WHERE eth_commit_tx_id IS NULL AND number != 0 AND protocol_versions.bootloader_code_hash = $1 AND protocol_versions.default_account_code_hash = $2 AND commitment IS NOT NULL AND (protocol_versions.id = $3 OR protocol_versions.upgrade_tx_hash IS NULL) ORDER BY number LIMIT $4" @@ -5836,11 +5016,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int8", - "Text", - "Int4" - ] + "Left": ["Int8", "Text", "Int4"] } }, "query": "INSERT INTO witness_inputs_fri(l1_batch_number, merkle_tree_paths_blob_url, protocol_version, status, created_at, updated_at) VALUES ($1, $2, $3, 'queued', now(), now()) ON CONFLICT (l1_batch_number) DO NOTHING" @@ -5960,10 +5136,7 @@ true ], "parameters": { - "Left": [ - "TextArray", - "Int4Array" - ] + "Left": ["TextArray", "Int4Array"] } }, "query": "\n UPDATE prover_jobs\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now()\n WHERE id = (\n SELECT id\n FROM prover_jobs\n WHERE circuit_type = ANY($1)\n AND status = 'queued'\n AND protocol_version = ANY($2)\n ORDER BY aggregation_round DESC, l1_batch_number ASC, id ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING prover_jobs.*\n " @@ -5977,13 +5150,9 @@ "type_info": "Bytea" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "UPDATE transactions\n SET l1_batch_number = NULL, miniblock_number = NULL, error = NULL, index_in_block = NULL, execution_info = '{}'\n WHERE miniblock_number > $1\n RETURNING hash\n " @@ -5993,11 +5162,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Bytea", - "Numeric", - "Timestamp" - ] + "Left": ["Bytea", "Numeric", "Timestamp"] } }, "query": "UPDATE tokens SET usd_price = $2, usd_price_updated_at = $3, updated_at = now() WHERE l1_address = $1" @@ -6007,10 +5172,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Bytea", - "Jsonb" - ] + "Left": ["Bytea", "Jsonb"] } }, "query": "\n INSERT INTO contracts_verification_info\n (address, verification_info)\n VALUES ($1, $2)\n ON CONFLICT (address)\n DO UPDATE SET verification_info = $2\n " @@ -6024,9 +5186,7 @@ "type_info": "Int8" } ], - "nullable": [ - null - ], + "nullable": [null], "parameters": { "Left": [] } @@ -6038,9 +5198,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "UPDATE miniblocks SET l1_batch_number = $1 WHERE l1_batch_number IS NULL" @@ -6114,25 +5272,9 @@ "type_info": "Bytea" } ], - "nullable": [ - false, - false, - false, - false, - null, - null, - false, - false, - false, - false, - false, - false, - false - ], + "nullable": [false, false, false, false, null, null, false, false, false, false, false, false, false], "parameters": { - "Left": [ - "Bytea" - ] + "Left": ["Bytea"] } }, "query": "SELECT miniblock_number, log_index_in_miniblock, log_index_in_tx, tx_hash, Null::bytea as \"block_hash\", Null::bigint as \"l1_batch_number?\", shard_id, is_service, tx_index_in_miniblock, tx_index_in_l1_batch, sender, key, value FROM l2_to_l1_logs WHERE tx_hash = $1 ORDER BY log_index_in_tx ASC" @@ -6151,15 +5293,9 @@ "type_info": "Text" } ], - "nullable": [ - false, - false - ], + "nullable": [false, false], "parameters": { - "Left": [ - "Text", - "Text" - ] + "Left": ["Text", "Text"] } }, "query": "SELECT l1_batch_number, status FROM proof_compression_jobs_fri\n WHERE l1_batch_number = ( SELECT MIN(l1_batch_number) FROM proof_compression_jobs_fri WHERE status = $1 OR status = $2\n )" @@ -6273,9 +5409,7 @@ true ], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "SELECT number, l1_tx_count, l2_tx_count, timestamp, is_finished, fee_account_address, l2_to_l1_logs, l2_to_l1_messages, bloom, priority_ops_onchain_data, used_contract_hashes, base_fee_per_gas, l1_gas_price, l2_fair_gas_price, bootloader_code_hash, default_aa_code_hash, protocol_version FROM l1_batches WHERE number = $1" @@ -6294,14 +5428,9 @@ "type_info": "Bytea" } ], - "nullable": [ - false, - true - ], + "nullable": [false, true], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "SELECT timestamp, hash FROM l1_batches WHERE number = $1" @@ -6311,9 +5440,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "DELETE FROM l1_batches WHERE number > $1" @@ -6332,14 +5459,9 @@ "type_info": "Text" } ], - "nullable": [ - false, - true - ], + "nullable": [false, true], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "\n SELECT id, circuit_input_blob_url FROM prover_jobs\n WHERE status='successful' AND is_blob_cleaned=FALSE\n AND circuit_input_blob_url is NOT NULL\n AND updated_at < NOW() - INTERVAL '30 days'\n LIMIT $1;\n " @@ -6363,16 +5485,9 @@ "type_info": "Int2" } ], - "nullable": [ - false, - false, - false - ], + "nullable": [false, false, false], "parameters": { - "Left": [ - "Interval", - "Int2" - ] + "Left": ["Interval", "Int2"] } }, "query": "\n UPDATE prover_jobs_fri\n SET status = 'queued', attempts = attempts + 1, updated_at = now(), processing_started_at = now()\n WHERE (status = 'in_progress' AND processing_started_at <= now() - $1::interval AND attempts < $2)\n OR (status = 'in_gpu_proof' AND processing_started_at <= now() - $1::interval AND attempts < $2)\n OR (status = 'failed' AND attempts < $2)\n RETURNING id, status, attempts\n " @@ -6441,24 +5556,9 @@ "type_info": "Text" } ], - "nullable": [ - false, - false, - true, - true, - false, - true, - true, - true, - false, - false, - false, - false - ], + "nullable": [false, false, true, true, false, true, true, true, false, false, false, false], "parameters": { - "Left": [ - "Bytea" - ] + "Left": ["Bytea"] } }, "query": "\n SELECT transactions.is_priority,\n transactions.initiator_address,\n transactions.gas_limit,\n transactions.gas_per_pubdata_limit,\n transactions.received_at,\n transactions.miniblock_number,\n transactions.error,\n transactions.effective_gas_price,\n transactions.refunded_gas,\n commit_tx.tx_hash as \"eth_commit_tx_hash?\",\n prove_tx.tx_hash as \"eth_prove_tx_hash?\",\n execute_tx.tx_hash as \"eth_execute_tx_hash?\"\n FROM transactions\n LEFT JOIN miniblocks ON miniblocks.number = transactions.miniblock_number\n LEFT JOIN l1_batches ON l1_batches.number = miniblocks.l1_batch_number\n LEFT JOIN eth_txs_history as commit_tx ON (l1_batches.eth_commit_tx_id = commit_tx.eth_tx_id AND commit_tx.confirmed_at IS NOT NULL)\n LEFT JOIN eth_txs_history as prove_tx ON (l1_batches.eth_prove_tx_id = prove_tx.eth_tx_id AND prove_tx.confirmed_at IS NOT NULL)\n LEFT JOIN eth_txs_history as execute_tx ON (l1_batches.eth_execute_tx_id = execute_tx.eth_tx_id AND execute_tx.confirmed_at IS NOT NULL)\n WHERE transactions.hash = $1\n " @@ -6467,12 +5567,8 @@ "describe": { "columns": [], "nullable": [], - "parameters": { - "Left": [ - "Int4", - "Int8", - "Int8" - ] + "parameters": { + "Left": ["Int4", "Int8", "Int8"] } }, "query": "UPDATE l1_batches SET eth_prove_tx_id = $1, updated_at = now() WHERE number BETWEEN $2 AND $3" @@ -6482,10 +5578,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Time", - "Int8" - ] + "Left": ["Time", "Int8"] } }, "query": "\n UPDATE leaf_aggregation_witness_jobs_fri\n SET status = 'successful', updated_at = now(), time_taken = $1\n WHERE id = $2\n " @@ -6605,9 +5698,7 @@ false ], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "\n SELECT miniblocks.number,\n COALESCE(miniblocks.l1_batch_number, (SELECT (max(number) + 1) FROM l1_batches)) as \"l1_batch_number!\",\n miniblocks.timestamp,\n miniblocks.l1_tx_count,\n miniblocks.l2_tx_count,\n miniblocks.hash as \"root_hash?\",\n commit_tx.tx_hash as \"commit_tx_hash?\",\n commit_tx.confirmed_at as \"committed_at?\",\n prove_tx.tx_hash as \"prove_tx_hash?\",\n prove_tx.confirmed_at as \"proven_at?\",\n execute_tx.tx_hash as \"execute_tx_hash?\",\n execute_tx.confirmed_at as \"executed_at?\",\n miniblocks.l1_gas_price,\n miniblocks.l2_fair_gas_price,\n miniblocks.bootloader_code_hash,\n miniblocks.default_aa_code_hash,\n miniblocks.protocol_version,\n l1_batches.fee_account_address as \"fee_account_address?\"\n FROM miniblocks\n LEFT JOIN l1_batches ON miniblocks.l1_batch_number = l1_batches.number\n LEFT JOIN eth_txs_history as commit_tx ON (l1_batches.eth_commit_tx_id = commit_tx.eth_tx_id AND commit_tx.confirmed_at IS NOT NULL)\n LEFT JOIN eth_txs_history as prove_tx ON (l1_batches.eth_prove_tx_id = prove_tx.eth_tx_id AND prove_tx.confirmed_at IS NOT NULL)\n LEFT JOIN eth_txs_history as execute_tx ON (l1_batches.eth_execute_tx_id = execute_tx.eth_tx_id AND execute_tx.confirmed_at IS NOT NULL)\n WHERE miniblocks.number = $1\n " @@ -6621,13 +5712,9 @@ "type_info": "Bytea" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "SELECT DISTINCT ON (hashed_key) hashed_key FROM (SELECT * FROM storage_logs WHERE miniblock_number > $1) inn" @@ -6651,11 +5738,7 @@ "type_info": "Int4" } ], - "nullable": [ - false, - false, - false - ], + "nullable": [false, false, false], "parameters": { "Left": [] } @@ -6667,9 +5750,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "UPDATE prover_jobs_fri SET status = 'sent_to_server', updated_at = now() WHERE l1_batch_number = $1" @@ -6679,9 +5760,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "\n INSERT INTO scheduler_dependency_tracker_fri\n (l1_batch_number, status, created_at, updated_at)\n VALUES ($1, 'waiting_for_proofs', now(), now())\n ON CONFLICT(l1_batch_number)\n DO UPDATE SET updated_at=now()\n " @@ -6722,9 +5801,7 @@ "type_info": "Bytea" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { "Left": [] } @@ -6740,17 +5817,9 @@ "type_info": "Int4" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { - "Left": [ - "Int4", - "Int8", - "Int8", - "Text", - "Bytea" - ] + "Left": ["Int4", "Int8", "Int8", "Text", "Bytea"] } }, "query": "INSERT INTO eth_txs_history\n (eth_tx_id, base_fee_per_gas, priority_fee_per_gas, tx_hash, signed_raw_tx, created_at, updated_at)\n VALUES ($1, $2, $3, $4, $5, now(), now())\n ON CONFLICT (tx_hash) DO NOTHING\n RETURNING id" @@ -6764,14 +5833,9 @@ "type_info": "Bytea" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { - "Left": [ - "Bytea", - "Int8" - ] + "Left": ["Bytea", "Int8"] } }, "query": "\n SELECT value\n FROM storage_logs\n WHERE storage_logs.hashed_key = $1 AND storage_logs.miniblock_number <= $2\n ORDER BY storage_logs.miniblock_number DESC, storage_logs.operation_number DESC\n LIMIT 1\n " @@ -6785,13 +5849,9 @@ "type_info": "Int4" } ], - "nullable": [ - true - ], + "nullable": [true], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "SELECT protocol_version FROM l1_batches WHERE number = $1" @@ -6860,28 +5920,9 @@ "type_info": "Int8" } ], - "nullable": [ - false, - false, - false, - false, - false, - true, - false, - false, - false, - true, - true, - false - ], + "nullable": [false, false, false, false, false, true, false, false, false, true, true, false], "parameters": { - "Left": [ - "Bytea", - "Int8", - "Text", - "Text", - "Int8" - ] + "Left": ["Bytea", "Int8", "Text", "Text", "Int8"] } }, "query": "INSERT INTO eth_txs (raw_tx, nonce, tx_type, contract_address, predicted_gas_cost, created_at, updated_at)\n VALUES ($1, $2, $3, $4, $5, now(), now())\n RETURNING *" @@ -6891,9 +5932,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int8Array" - ] + "Left": ["Int8Array"] } }, "query": "\n UPDATE prover_jobs\n SET is_blob_cleaned=TRUE\n WHERE id = ANY($1);\n " @@ -6907,14 +5946,9 @@ "type_info": "Int8" } ], - "nullable": [ - null - ], + "nullable": [null], "parameters": { - "Left": [ - "Bytea", - "Bytea" - ] + "Left": ["Bytea", "Bytea"] } }, "query": "SELECT COUNT(*) as \"count!\" FROM (SELECT * FROM storage_logs WHERE storage_logs.hashed_key = $1 ORDER BY storage_logs.miniblock_number DESC, storage_logs.operation_number DESC LIMIT 1) sl WHERE sl.value != $2" @@ -6924,9 +5958,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "ByteaArray" - ] + "Left": ["ByteaArray"] } }, "query": "DELETE FROM storage WHERE hashed_key = ANY($1)" @@ -6936,10 +5968,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Text", - "Int8" - ] + "Left": ["Text", "Int8"] } }, "query": "UPDATE prover_jobs_fri SET status = $1, updated_at = now() WHERE id = $2" @@ -7059,9 +6088,7 @@ true ], "parameters": { - "Left": [ - "Int4Array" - ] + "Left": ["Int4Array"] } }, "query": "\n UPDATE prover_jobs\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now()\n WHERE id = (\n SELECT id\n FROM prover_jobs\n WHERE status = 'queued'\n AND protocol_version = ANY($1)\n ORDER BY aggregation_round DESC, l1_batch_number ASC, id ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING prover_jobs.*\n " @@ -7103,12 +6130,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int8", - "Bytea", - "Text", - "Int4" - ] + "Left": ["Int8", "Bytea", "Text", "Int4"] } }, "query": "\n INSERT INTO scheduler_witness_jobs\n (l1_batch_number, scheduler_witness, scheduler_witness_blob_url, protocol_version, status, created_at, updated_at)\n VALUES ($1, $2, $3, $4, 'waiting_for_artifacts', now(), now())\n " @@ -7122,21 +6144,9 @@ "type_info": "Int8" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { - "Left": [ - "Bytea", - "Text", - "Text", - "Text", - "Text", - "Bool", - "Text", - "Bytea", - "Bool" - ] + "Left": ["Bytea", "Text", "Text", "Text", "Text", "Bool", "Text", "Bytea", "Bool"] } }, "query": "\n INSERT INTO contract_verification_requests (\n contract_address,\n source_code,\n contract_name,\n zk_compiler_version,\n compiler_version,\n optimization_used,\n optimizer_mode,\n constructor_arguments,\n is_system,\n status,\n created_at,\n updated_at\n )\n VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, 'queued', now(), now())\n RETURNING id\n " @@ -7146,15 +6156,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int8", - "Text", - "Int4", - "Bytea", - "Int4", - "Text", - "Int4" - ] + "Left": ["Int8", "Text", "Int4", "Bytea", "Int4", "Text", "Int4"] } }, "query": "\n INSERT INTO prover_jobs (l1_batch_number, circuit_type, sequence_number, prover_input, aggregation_round, circuit_input_blob_url, protocol_version, status, created_at, updated_at)\n VALUES ($1, $2, $3, $4, $5, $6, $7, 'queued', now(), now())\n ON CONFLICT(l1_batch_number, aggregation_round, sequence_number) DO NOTHING\n " @@ -7178,11 +6180,7 @@ "type_info": "Int8" } ], - "nullable": [ - null, - null, - null - ], + "nullable": [null, null, null], "parameters": { "Left": [] } @@ -7219,16 +6217,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int8", - "Int2", - "Text", - "Int2", - "Int4", - "Int4", - "Bool", - "Int4" - ] + "Left": ["Int8", "Int2", "Text", "Int2", "Int4", "Int4", "Bool", "Int4"] } }, "query": "\n INSERT INTO prover_jobs_fri (l1_batch_number, circuit_id, circuit_blob_url, aggregation_round, sequence_number, depth, is_node_final_proof, protocol_version, status, created_at, updated_at)\n VALUES ($1, $2, $3, $4, $5, $6, $7, $8, 'queued', now(), now())\n ON CONFLICT(l1_batch_number, aggregation_round, circuit_id, depth, sequence_number)\n DO UPDATE SET updated_at=now()\n " @@ -7287,22 +6276,9 @@ "type_info": "Bool" } ], - "nullable": [ - false, - false, - false, - false, - false, - false, - false, - true, - false, - false - ], + "nullable": [false, false, false, false, false, false, false, true, false, false], "parameters": { - "Left": [ - "Interval" - ] + "Left": ["Interval"] } }, "query": "UPDATE contract_verification_requests\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now()\n WHERE id = (\n SELECT id FROM contract_verification_requests\n WHERE status = 'queued' OR (status = 'in_progress' AND processing_started_at < now() - $1::interval)\n ORDER BY created_at\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING id, contract_address, source_code, contract_name, zk_compiler_version, compiler_version, optimization_used,\n optimizer_mode, constructor_arguments, is_system\n " @@ -7386,28 +6362,9 @@ "type_info": "Text" } ], - "nullable": [ - false, - false, - false, - true, - false, - false, - true, - false, - false, - true, - true, - true, - true, - true, - true - ], + "nullable": [false, false, false, true, false, false, true, false, false, true, true, true, true, true, true], "parameters": { - "Left": [ - "Int4Array", - "Text" - ] + "Left": ["Int4Array", "Text"] } }, "query": "\n UPDATE leaf_aggregation_witness_jobs_fri\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now(),\n picked_by = $2\n WHERE id = (\n SELECT id\n FROM leaf_aggregation_witness_jobs_fri\n WHERE status = 'queued'\n AND protocol_version = ANY($1)\n ORDER BY l1_batch_number ASC, id ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING leaf_aggregation_witness_jobs_fri.*\n " @@ -7421,13 +6378,9 @@ "type_info": "Bytea" } ], - "nullable": [ - true - ], + "nullable": [true], "parameters": { - "Left": [ - "Int4" - ] + "Left": ["Int4"] } }, "query": "\n SELECT upgrade_tx_hash FROM protocol_versions\n WHERE id = $1\n " @@ -7437,13 +6390,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int4", - "Bytea", - "Bytea", - "Bytea", - "Bytea" - ] + "Left": ["Int4", "Bytea", "Bytea", "Bytea", "Bytea"] } }, "query": "INSERT INTO prover_fri_protocol_versions (id, recursion_scheduler_level_vk_hash, recursion_node_level_vk_hash, recursion_leaf_level_vk_hash, recursion_circuits_set_vks_hash, created_at) VALUES ($1, $2, $3, $4, $5, now()) ON CONFLICT(id) DO NOTHING" @@ -7517,25 +6464,9 @@ "type_info": "Int4" } ], - "nullable": [ - false, - false, - false, - false, - false, - false, - null, - null, - false, - false, - false, - false, - false - ], + "nullable": [false, false, false, false, false, false, null, null, false, false, false, false, false], "parameters": { - "Left": [ - "Bytea" - ] + "Left": ["Bytea"] } }, "query": "\n SELECT\n address, topic1, topic2, topic3, topic4, value,\n Null::bytea as \"block_hash\", Null::bigint as \"l1_batch_number?\",\n miniblock_number, tx_hash, tx_index_in_block,\n event_index_in_block, event_index_in_tx\n FROM events\n WHERE tx_hash = $1\n ORDER BY miniblock_number ASC, event_index_in_block ASC\n " @@ -7545,11 +6476,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int4", - "Int8", - "Int8" - ] + "Left": ["Int4", "Int8", "Int8"] } }, "query": "UPDATE l1_batches SET eth_execute_tx_id = $1, updated_at = now() WHERE number BETWEEN $2 AND $3" @@ -7559,9 +6486,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "\n UPDATE scheduler_witness_jobs_fri\n SET status='queued'\n WHERE l1_batch_number = $1\n AND status != 'successful'\n AND status != 'in_progress'\n " @@ -7580,15 +6505,9 @@ "type_info": "Timestamp" } ], - "nullable": [ - false, - false - ], + "nullable": [false, false], "parameters": { - "Left": [ - "Timestamp", - "Int8" - ] + "Left": ["Timestamp", "Int8"] } }, "query": "SELECT transactions.hash, transactions.received_at FROM transactions LEFT JOIN miniblocks ON miniblocks.number = miniblock_number WHERE received_at > $1 ORDER BY received_at ASC LIMIT $2" @@ -7598,10 +6517,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int8", - "Text" - ] + "Left": ["Int8", "Text"] } }, "query": "INSERT INTO proof_generation_details (l1_batch_number, status, proof_gen_data_blob_url, created_at, updated_at) VALUES ($1, 'ready_to_be_proven', $2, now(), now()) ON CONFLICT (l1_batch_number) DO NOTHING" @@ -7615,13 +6531,9 @@ "type_info": "Int4" } ], - "nullable": [ - null - ], + "nullable": [null], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "SELECT MAX(operation_number) as \"max?\" FROM storage_logs WHERE miniblock_number = $1" @@ -7635,13 +6547,9 @@ "type_info": "Int8" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { - "Left": [ - "Bytea" - ] + "Left": ["Bytea"] } }, "query": "SELECT l1_batch_number FROM initial_writes WHERE hashed_key = $1" @@ -7660,15 +6568,9 @@ "type_info": "Bytea" } ], - "nullable": [ - true, - true - ], + "nullable": [true, true], "parameters": { - "Left": [ - "Int8", - "Int8" - ] + "Left": ["Int8", "Int8"] } }, "query": "SELECT prover_jobs.result as proof, scheduler_witness_jobs.aggregation_result_coords\n FROM prover_jobs\n INNER JOIN scheduler_witness_jobs\n ON prover_jobs.l1_batch_number = scheduler_witness_jobs.l1_batch_number\n WHERE prover_jobs.l1_batch_number >= $1 AND prover_jobs.l1_batch_number <= $2\n AND prover_jobs.aggregation_round = 3\n AND prover_jobs.status = 'successful'\n " @@ -7737,24 +6639,9 @@ "type_info": "Int8" } ], - "nullable": [ - false, - false, - false, - false, - false, - true, - false, - false, - false, - true, - true, - false - ], + "nullable": [false, false, false, false, false, true, false, false, false, true, true, false], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "SELECT * FROM eth_txs \n WHERE id > (SELECT COALESCE(MAX(eth_tx_id), 0) FROM eth_txs_history)\n ORDER BY id\n LIMIT $1\n " @@ -7764,12 +6651,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Text", - "Time", - "Text", - "Int8" - ] + "Left": ["Text", "Time", "Text", "Int8"] } }, "query": "UPDATE proof_compression_jobs_fri SET status = $1, updated_at = now(), time_taken = $2, l1_proof_blob_url = $3WHERE l1_batch_number = $4" @@ -7783,9 +6665,7 @@ "type_info": "Int8" } ], - "nullable": [ - null - ], + "nullable": [null], "parameters": { "Left": [] } @@ -7801,9 +6681,7 @@ "type_info": "Int8" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { "Left": [] } @@ -7815,11 +6693,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "ByteaArray", - "Int8Array", - "Int8" - ] + "Left": ["ByteaArray", "Int8Array", "Int8"] } }, "query": "INSERT INTO initial_writes (hashed_key, index, l1_batch_number, created_at, updated_at) SELECT u.hashed_key, u.index, $3, now(), now() FROM UNNEST($1::bytea[], $2::bigint[]) AS u(hashed_key, index)" @@ -7877,29 +6751,15 @@ "ordinal": 9, "type_info": "Int4" }, - { - "name": "sent_at", - "ordinal": 10, - "type_info": "Timestamp" - } - ], - "nullable": [ - false, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true + { + "name": "sent_at", + "ordinal": 10, + "type_info": "Timestamp" + } ], + "nullable": [false, false, false, false, false, false, false, true, true, true, true], "parameters": { - "Left": [ - "Int4" - ] + "Left": ["Int4"] } }, "query": "SELECT * FROM eth_txs_history WHERE eth_tx_id = $1 ORDER BY created_at DESC LIMIT 1" @@ -7909,10 +6769,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Bytea", - "Int8" - ] + "Left": ["Bytea", "Int8"] } }, "query": "\n UPDATE scheduler_witness_jobs\n SET aggregation_result_coords = $1,\n updated_at = now()\n WHERE l1_batch_number = $2\n " @@ -7922,9 +6779,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "DELETE FROM factory_deps WHERE miniblock_number > $1" @@ -7943,14 +6798,9 @@ "type_info": "Int4" } ], - "nullable": [ - true, - true - ], + "nullable": [true, true], "parameters": { - "Left": [ - "Bytea" - ] + "Left": ["Bytea"] } }, "query": "SELECT l1_batch_number, l1_batch_tx_index FROM transactions WHERE hash = $1" @@ -7960,10 +6810,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Time", - "Int8" - ] + "Left": ["Time", "Int8"] } }, "query": "\n UPDATE scheduler_witness_jobs_fri\n SET status = 'successful', updated_at = now(), time_taken = $1\n WHERE l1_batch_number = $2\n " @@ -7977,9 +6824,7 @@ "type_info": "Int4" } ], - "nullable": [ - true - ], + "nullable": [true], "parameters": { "Left": [] } @@ -8045,23 +6890,9 @@ "type_info": "Timestamp" } ], - "nullable": [ - false, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true - ], + "nullable": [false, false, false, false, false, false, false, true, true, true, true], "parameters": { - "Left": [ - "Int4" - ] + "Left": ["Int4"] } }, "query": "SELECT * FROM eth_txs_history WHERE eth_tx_id = $1 ORDER BY created_at DESC" @@ -8071,10 +6902,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Text", - "Int8" - ] + "Left": ["Text", "Int8"] } }, "query": "\n UPDATE leaf_aggregation_witness_jobs_fri\n SET status ='failed', error= $1, updated_at = now()\n WHERE id = $2\n " @@ -8084,10 +6912,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int8Array", - "ByteaArray" - ] + "Left": ["Int8Array", "ByteaArray"] } }, "query": "UPDATE miniblocks SET hash = u.hash FROM UNNEST($1::bigint[], $2::bytea[]) AS u(number, hash) WHERE miniblocks.number = u.number\n " @@ -8106,15 +6931,9 @@ "type_info": "Bytea" } ], - "nullable": [ - false, - false - ], + "nullable": [false, false], "parameters": { - "Left": [ - "Int8", - "Int8" - ] + "Left": ["Int8", "Int8"] } }, "query": "SELECT number, hash FROM miniblocks WHERE number > $1 ORDER BY number ASC LIMIT $2" @@ -8162,10 +6981,7 @@ "type_info": "Bytea" } ], - "nullable": [ - false, - false - ], + "nullable": [false, false], "parameters": { "Left": [] } @@ -8401,10 +7217,7 @@ true ], "parameters": { - "Left": [ - "Int8", - "Int8" - ] + "Left": ["Int8", "Int8"] } }, "query": "SELECT number, timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, rollup_last_leaf_index, zkporter_is_available, bootloader_code_hash, default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, meta_parameters_hash, protocol_version, events_queue_commitment, bootloader_initial_content_commitment FROM (SELECT l1_batches.*, row_number() OVER (ORDER BY number ASC) AS row_number FROM l1_batches WHERE eth_commit_tx_id IS NOT NULL AND l1_batches.skip_proof = TRUE AND l1_batches.number > $1 ORDER BY number LIMIT $2) inn LEFT JOIN commitments ON commitments.l1_batch_number = inn.number WHERE number - row_number = $1" @@ -8473,20 +7286,7 @@ "type_info": "Int8" } ], - "nullable": [ - false, - false, - false, - false, - false, - true, - false, - false, - false, - true, - true, - false - ], + "nullable": [false, false, false, false, false, true, false, false, false, true, true, false], "parameters": { "Left": [] } @@ -8498,15 +7298,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int4", - "Int8", - "Bytea", - "Bytea", - "Bytea", - "Bytea", - "Bytea" - ] + "Left": ["Int4", "Int8", "Bytea", "Bytea", "Bytea", "Bytea", "Bytea"] } }, "query": "INSERT INTO prover_protocol_versions\n (id, timestamp, recursion_scheduler_level_vk_hash, recursion_node_level_vk_hash,\n recursion_leaf_level_vk_hash, recursion_circuits_set_vks_hash, verifier_address, created_at)\n VALUES ($1, $2, $3, $4, $5, $6, $7, now())\n " @@ -8565,18 +7357,7 @@ "type_info": "Bool" } ], - "nullable": [ - false, - false, - false, - false, - false, - false, - false, - true, - false, - false - ], + "nullable": [false, false, false, false, false, false, false, true, false, false], "parameters": { "Left": [] } @@ -8602,16 +7383,9 @@ "type_info": "Int2" } ], - "nullable": [ - false, - false, - false - ], + "nullable": [false, false, false], "parameters": { - "Left": [ - "Interval", - "Int2" - ] + "Left": ["Interval", "Int2"] } }, "query": "\n UPDATE leaf_aggregation_witness_jobs_fri\n SET status = 'queued', attempts = attempts + 1, updated_at = now(), processing_started_at = now()\n WHERE (status = 'in_progress' AND processing_started_at <= now() - $1::interval AND attempts < $2)\n OR (status = 'failed' AND attempts < $2)\n RETURNING id, status, attempts\n " @@ -8635,16 +7409,9 @@ "type_info": "Int2" } ], - "nullable": [ - false, - false, - false - ], + "nullable": [false, false, false], "parameters": { - "Left": [ - "Interval", - "Int2" - ] + "Left": ["Interval", "Int2"] } }, "query": "\n UPDATE witness_inputs_fri\n SET status = 'queued', attempts = attempts + 1, updated_at = now(), processing_started_at = now()\n WHERE (status = 'in_progress' AND processing_started_at <= now() - $1::interval AND attempts < $2)\n OR (status = 'in_gpu_proof' AND processing_started_at <= now() - $1::interval AND attempts < $2)\n OR (status = 'failed' AND attempts < $2)\n RETURNING l1_batch_number, status, attempts\n " @@ -8658,13 +7425,9 @@ "type_info": "Int8" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { - "Left": [ - "Interval" - ] + "Left": ["Interval"] } }, "query": "UPDATE proof_generation_details SET status = 'picked_by_prover', updated_at = now(), prover_taken_at = now() WHERE l1_batch_number = ( SELECT l1_batch_number FROM proof_generation_details WHERE status = 'ready_to_be_proven' OR (status = 'picked_by_prover' AND prover_taken_at < now() - $1::interval) ORDER BY l1_batch_number ASC LIMIT 1 FOR UPDATE SKIP LOCKED ) RETURNING proof_generation_details.l1_batch_number" @@ -8678,15 +7441,9 @@ "type_info": "Int8" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { - "Left": [ - "Text", - "Text", - "Text" - ] + "Left": ["Text", "Text", "Text"] } }, "query": "UPDATE proof_compression_jobs_fri SET status = $1, attempts = attempts + 1, updated_at = now(), processing_started_at = now(), picked_by = $3 WHERE l1_batch_number = ( SELECT l1_batch_number FROM proof_compression_jobs_fri WHERE status = $2 ORDER BY l1_batch_number ASC LIMIT 1 FOR UPDATE SKIP LOCKED ) RETURNING proof_compression_jobs_fri.l1_batch_number" @@ -8920,9 +7677,7 @@ true ], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "SELECT number, timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, rollup_last_leaf_index, zkporter_is_available, bootloader_code_hash, default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, meta_parameters_hash, protocol_version, events_queue_commitment, bootloader_initial_content_commitment FROM l1_batches LEFT JOIN commitments ON commitments.l1_batch_number = l1_batches.number WHERE eth_commit_tx_id IS NOT NULL AND eth_prove_tx_id IS NULL ORDER BY number LIMIT $1" @@ -8936,16 +7691,9 @@ "type_info": "Int8" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { - "Left": [ - "Int8", - "Int2", - "Int2", - "Int4" - ] + "Left": ["Int8", "Int2", "Int2", "Int4"] } }, "query": "\n SELECT id from prover_jobs_fri\n WHERE l1_batch_number = $1\n AND circuit_id = $2\n AND aggregation_round = $3\n AND depth = $4\n AND status = 'successful'\n ORDER BY sequence_number ASC;\n " @@ -8964,14 +7712,9 @@ "type_info": "Bytea" } ], - "nullable": [ - false, - false - ], + "nullable": [false, false], "parameters": { - "Left": [ - "ByteaArray" - ] + "Left": ["ByteaArray"] } }, "query": "SELECT bytecode, bytecode_hash FROM factory_deps WHERE bytecode_hash = ANY($1)" @@ -8985,13 +7728,9 @@ "type_info": "Int4" } ], - "nullable": [ - true - ], + "nullable": [true], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "SELECT protocol_version FROM miniblocks WHERE number = $1" @@ -9055,24 +7794,9 @@ "type_info": "Text" } ], - "nullable": [ - false, - false, - false, - true, - true, - true, - false, - false, - false, - true, - true - ], + "nullable": [false, false, false, true, true, true, false, false, false, true, true], "parameters": { - "Left": [ - "Int4Array", - "Text" - ] + "Left": ["Int4Array", "Text"] } }, "query": "\n UPDATE scheduler_witness_jobs_fri\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now(),\n picked_by = $2\n WHERE l1_batch_number = (\n SELECT l1_batch_number\n FROM scheduler_witness_jobs_fri\n WHERE status = 'queued'\n AND protocol_version = ANY($1)\n ORDER BY l1_batch_number ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING scheduler_witness_jobs_fri.*\n " @@ -9082,10 +7806,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "ByteaArray", - "ByteaArray" - ] + "Left": ["ByteaArray", "ByteaArray"] } }, "query": "\n INSERT INTO call_traces (tx_hash, call_trace)\n SELECT u.tx_hash, u.call_trace\n FROM UNNEST($1::bytea[], $2::bytea[])\n AS u(tx_hash, call_trace)\n " @@ -9099,13 +7820,9 @@ "type_info": "Int8Array" } ], - "nullable": [ - true - ], + "nullable": [true], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "SELECT storage_refunds FROM l1_batches WHERE number = $1" @@ -9129,16 +7846,9 @@ "type_info": "Int2" } ], - "nullable": [ - false, - false, - false - ], + "nullable": [false, false, false], "parameters": { - "Left": [ - "Interval", - "Int2" - ] + "Left": ["Interval", "Int2"] } }, "query": "\n UPDATE scheduler_witness_jobs_fri\n SET status = 'queued', attempts = attempts + 1, updated_at = now(), processing_started_at = now()\n WHERE (status = 'in_progress' AND processing_started_at <= now() - $1::interval AND attempts < $2)\n OR (status = 'failed' AND attempts < $2)\n RETURNING l1_batch_number, status, attempts\n " @@ -9372,9 +8082,7 @@ true ], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "SELECT number, timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, rollup_last_leaf_index, zkporter_is_available, bootloader_code_hash, default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, meta_parameters_hash, protocol_version, events_queue_commitment, bootloader_initial_content_commitment FROM l1_batches LEFT JOIN commitments ON commitments.l1_batch_number = l1_batches.number WHERE eth_prove_tx_id IS NOT NULL AND eth_execute_tx_id IS NULL ORDER BY number LIMIT $1" @@ -9384,15 +8092,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int8", - "ByteaArray", - "Int4Array", - "VarcharArray", - "JsonbArray", - "Int8Array", - "NumericArray" - ] + "Left": ["Int8", "ByteaArray", "Int4Array", "VarcharArray", "JsonbArray", "Int8Array", "NumericArray"] } }, "query": "\n UPDATE transactions\n SET\n miniblock_number = $1,\n index_in_block = data_table.index_in_block,\n error = NULLIF(data_table.error, ''),\n in_mempool=FALSE,\n execution_info = execution_info || data_table.new_execution_info,\n refunded_gas = data_table.refunded_gas,\n effective_gas_price = data_table.effective_gas_price,\n updated_at = now()\n FROM\n (\n SELECT\n UNNEST($2::bytea[]) AS hash,\n UNNEST($3::integer[]) AS index_in_block,\n UNNEST($4::varchar[]) AS error,\n UNNEST($5::jsonb[]) AS new_execution_info,\n UNNEST($6::bigint[]) as refunded_gas,\n UNNEST($7::numeric[]) as effective_gas_price\n ) AS data_table\n WHERE transactions.hash = data_table.hash\n " @@ -9436,15 +8136,7 @@ "type_info": "Int8" } ], - "nullable": [ - false, - false, - false, - false, - false, - true, - false - ], + "nullable": [false, false, false, false, false, true, false], "parameters": { "Left": [] } @@ -9470,16 +8162,9 @@ "type_info": "Int4" } ], - "nullable": [ - false, - false, - false - ], + "nullable": [false, false, false], "parameters": { - "Left": [ - "Interval", - "Int4" - ] + "Left": ["Interval", "Int4"] } }, "query": "\n UPDATE prover_jobs\n SET status = 'queued', attempts = attempts + 1, updated_at = now(), processing_started_at = now()\n WHERE (status = 'in_progress' AND processing_started_at <= now() - $1::interval AND attempts < $2)\n OR (status = 'in_gpu_proof' AND processing_started_at <= now() - $1::interval AND attempts < $2)\n OR (status = 'failed' AND attempts < $2)\n RETURNING id, status, attempts\n " @@ -9493,9 +8178,7 @@ "type_info": "Int8" } ], - "nullable": [ - null - ], + "nullable": [null], "parameters": { "Left": [] } @@ -9507,10 +8190,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Time", - "Int8" - ] + "Left": ["Time", "Int8"] } }, "query": "\n UPDATE witness_inputs_fri\n SET status = 'successful', updated_at = now(), time_taken = $1\n WHERE l1_batch_number = $2\n " @@ -9520,9 +8200,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int8Array" - ] + "Left": ["Int8Array"] } }, "query": "\n UPDATE node_aggregation_witness_jobs\n SET is_blob_cleaned=TRUE\n WHERE l1_batch_number = ANY($1);\n " @@ -9536,15 +8214,9 @@ "type_info": "Bytea" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { - "Left": [ - "Bytea", - "Int8", - "Bytea" - ] + "Left": ["Bytea", "Int8", "Bytea"] } }, "query": "\n SELECT bytecode FROM (\n SELECT * FROM storage_logs\n WHERE\n storage_logs.hashed_key = $1 AND\n storage_logs.miniblock_number <= $2\n ORDER BY\n storage_logs.miniblock_number DESC, storage_logs.operation_number DESC\n LIMIT 1\n ) t\n JOIN factory_deps ON value = factory_deps.bytecode_hash\n WHERE value != $3\n " @@ -9554,11 +8226,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int8", - "Int4", - "Int4" - ] + "Left": ["Int8", "Int4", "Int4"] } }, "query": "UPDATE eth_txs\n SET gas_used = $1, confirmed_eth_tx_history_id = $2\n WHERE id = $3" @@ -9577,14 +8245,9 @@ "type_info": "Bytea" } ], - "nullable": [ - false, - false - ], + "nullable": [false, false], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "SELECT address, key FROM protective_reads WHERE l1_batch_number = $1" @@ -9603,14 +8266,9 @@ "type_info": "Timestamp" } ], - "nullable": [ - true, - true - ], + "nullable": [true, true], "parameters": { - "Left": [ - "Bytea" - ] + "Left": ["Bytea"] } }, "query": "SELECT usd_price, usd_price_updated_at FROM tokens WHERE l2_address = $1" @@ -9620,9 +8278,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int8Array" - ] + "Left": ["Int8Array"] } }, "query": "UPDATE witness_inputs SET is_blob_cleaned = TRUE WHERE l1_batch_number = ANY($1)" @@ -9632,36 +8288,17 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Text", - "Int4", - "Int4", - "Int2", - "Text", - "Text", - "Int2" - ] + "Left": ["Text", "Int4", "Int4", "Int2", "Text", "Text", "Int2"] } }, "query": "\n INSERT INTO gpu_prover_queue (instance_host, instance_port, queue_capacity, queue_free_slots, instance_status, specialized_prover_group_id, region, zone, num_gpu, created_at, updated_at)\n VALUES (cast($1::text as inet), $2, $3, $3, 'available', $4, $5, $6, $7, now(), now())\n ON CONFLICT(instance_host, instance_port, region, zone)\n DO UPDATE SET instance_status='available', queue_capacity=$3, queue_free_slots=$3, specialized_prover_group_id=$4, region=$5, zone=$6, num_gpu=$7, updated_at=now()" }, - "cc20350af9e837ae6b6160be65f88e6b675f62e207252f91f2ce7dcaaddb12b1": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Int4", - "Int8", - "Bytea", - "Bytea", - "Bytea", - "Bytea", - "Bytea", - "Bytea", - "Bytea", - "Bytea" - ] + "cc20350af9e837ae6b6160be65f88e6b675f62e207252f91f2ce7dcaaddb12b1": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": ["Int4", "Int8", "Bytea", "Bytea", "Bytea", "Bytea", "Bytea", "Bytea", "Bytea", "Bytea"] } }, "query": "INSERT INTO protocol_versions (id, timestamp, recursion_scheduler_level_vk_hash, recursion_node_level_vk_hash, recursion_leaf_level_vk_hash, recursion_circuits_set_vks_hash, bootloader_code_hash, default_account_code_hash, verifier_address, upgrade_tx_hash, created_at) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, now())" @@ -9671,11 +8308,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Bytea", - "Int8", - "Bytea" - ] + "Left": ["Bytea", "Int8", "Bytea"] } }, "query": "\n DELETE FROM tokens \n WHERE l2_address IN\n (\n SELECT substring(key, 12, 20) FROM storage_logs \n WHERE storage_logs.address = $1 AND miniblock_number > $2 AND NOT EXISTS (\n SELECT 1 FROM storage_logs as s\n WHERE\n s.hashed_key = storage_logs.hashed_key AND\n (s.miniblock_number, s.operation_number) >= (storage_logs.miniblock_number, storage_logs.operation_number) AND\n s.value = $3\n )\n )\n " @@ -9685,9 +8318,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "DELETE FROM miniblocks WHERE number > $1" @@ -9697,12 +8328,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int8", - "Text", - "Jsonb", - "Text" - ] + "Left": ["Int8", "Text", "Jsonb", "Text"] } }, "query": "\n UPDATE contract_verification_requests\n SET status = 'failed', updated_at = now(), error = $2, compilation_errors = $3, panic_message = $4\n WHERE id = $1\n " @@ -9726,11 +8352,7 @@ "type_info": "Text" } ], - "nullable": [ - null, - false, - false - ], + "nullable": [null, false, false], "parameters": { "Left": [] } @@ -9746,9 +8368,7 @@ "type_info": "Int8" } ], - "nullable": [ - null - ], + "nullable": [null], "parameters": { "Left": [] } @@ -9760,14 +8380,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Text", - "Text", - "Int4", - "Int4", - "Text", - "Text" - ] + "Left": ["Text", "Text", "Int4", "Int4", "Text", "Text"] } }, "query": "\n UPDATE gpu_prover_queue\n SET instance_status = $1, updated_at = now(), queue_free_slots = $4\n WHERE instance_host = $2::text::inet\n AND instance_port = $3\n AND region = $5\n AND zone = $6\n " @@ -9811,20 +8424,9 @@ "type_info": "Bool" } ], - "nullable": [ - false, - false, - false, - false, - false, - false, - false - ], + "nullable": [false, false, false, false, false, false, false], "parameters": { - "Left": [ - "Int4Array", - "Text" - ] + "Left": ["Int4Array", "Text"] } }, "query": "\n UPDATE prover_jobs_fri\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now(),\n picked_by = $2\n WHERE id = (\n SELECT id\n FROM prover_jobs_fri\n WHERE status = 'queued'\n AND protocol_version = ANY($1)\n ORDER BY aggregation_round DESC, l1_batch_number ASC, id ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING prover_jobs_fri.id, prover_jobs_fri.l1_batch_number, prover_jobs_fri.circuit_id,\n prover_jobs_fri.aggregation_round, prover_jobs_fri.sequence_number, prover_jobs_fri.depth,\n prover_jobs_fri.is_node_final_proof\n " @@ -9848,15 +8450,9 @@ "type_info": "Int8" } ], - "nullable": [ - false, - false, - false - ], + "nullable": [false, false, false], "parameters": { - "Left": [ - "ByteaArray" - ] + "Left": ["ByteaArray"] } }, "query": "SELECT hashed_key, l1_batch_number, index FROM initial_writes WHERE hashed_key = ANY($1::bytea[])" @@ -9866,12 +8462,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Bytea", - "Varchar", - "Varchar", - "Int4" - ] + "Left": ["Bytea", "Varchar", "Varchar", "Int4"] } }, "query": "UPDATE tokens SET token_list_name = $2, token_list_symbol = $3,\n token_list_decimals = $4, well_known = true, updated_at = now()\n WHERE l1_address = $1\n " @@ -9885,16 +8476,9 @@ "type_info": "Int4" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { - "Left": [ - "Bytea", - "Bytea", - "Bytea", - "Bytea" - ] + "Left": ["Bytea", "Bytea", "Bytea", "Bytea"] } }, "query": "\n SELECT id\n FROM prover_protocol_versions\n WHERE recursion_circuits_set_vks_hash = $1\n AND recursion_leaf_level_vk_hash = $2\n AND recursion_node_level_vk_hash = $3\n AND recursion_scheduler_level_vk_hash = $4\n " @@ -9908,13 +8492,9 @@ "type_info": "Bytea" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { - "Left": [ - "Bytea" - ] + "Left": ["Bytea"] } }, "query": "SELECT bytecode FROM factory_deps WHERE bytecode_hash = $1" @@ -9924,9 +8504,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "UPDATE l1_batches SET skip_proof = TRUE WHERE number = $1" @@ -9940,9 +8518,7 @@ "type_info": "Int8" } ], - "nullable": [ - null - ], + "nullable": [null], "parameters": { "Left": [] } @@ -9968,16 +8544,9 @@ "type_info": "Int2" } ], - "nullable": [ - false, - false, - false - ], + "nullable": [false, false, false], "parameters": { - "Left": [ - "Interval", - "Int2" - ] + "Left": ["Interval", "Int2"] } }, "query": "\n UPDATE node_aggregation_witness_jobs_fri\n SET status = 'queued', attempts = attempts + 1, updated_at = now(), processing_started_at = now()\n WHERE (status = 'in_progress' AND processing_started_at <= now() - $1::interval AND attempts < $2)\n OR (status = 'failed' AND attempts < $2)\n RETURNING id, status, attempts\n " @@ -10024,13 +8593,9 @@ "type_info": "Int8" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "SELECT l1_batch_number FROM witness_inputs WHERE length(merkle_tree_paths) <> 0 ORDER BY l1_batch_number DESC LIMIT $1" @@ -10040,10 +8605,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Varchar", - "Bytea" - ] + "Left": ["Varchar", "Bytea"] } }, "query": "UPDATE transactions\n SET error = $1, updated_at = now()\n WHERE hash = $2" @@ -10057,9 +8619,7 @@ "type_info": "Int4" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { "Left": [] } @@ -10080,15 +8640,9 @@ "type_info": "Bytea" } ], - "nullable": [ - false, - true - ], + "nullable": [false, true], "parameters": { - "Left": [ - "Int8", - "Int4" - ] + "Left": ["Int8", "Int4"] } }, "query": "\n SELECT circuit_type, result from prover_jobs\n WHERE l1_batch_number = $1 AND status = 'successful' AND aggregation_round = $2\n ORDER BY sequence_number ASC;\n " @@ -10098,12 +8652,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Text", - "Text", - "Int4", - "Text" - ] + "Left": ["Text", "Text", "Int4", "Text"] } }, "query": "UPDATE gpu_prover_queue_fri SET instance_status = $1, updated_at = now() WHERE instance_host = $2::text::inet AND instance_port = $3 AND zone = $4\n " @@ -10117,13 +8666,9 @@ "type_info": "Int4" } ], - "nullable": [ - true - ], + "nullable": [true], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "SELECT protocol_version FROM witness_inputs_fri WHERE l1_batch_number = $1" @@ -10133,13 +8678,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "ByteaArray", - "ByteaArray", - "ByteaArray", - "ByteaArray", - "ByteaArray" - ] + "Left": ["ByteaArray", "ByteaArray", "ByteaArray", "ByteaArray", "ByteaArray"] } }, "query": "INSERT INTO storage (hashed_key, address, key, value, tx_hash, created_at, updated_at) SELECT u.hashed_key, u.address, u.key, u.value, u.tx_hash, now(), now() FROM UNNEST ($1::bytea[], $2::bytea[], $3::bytea[], $4::bytea[], $5::bytea[]) AS u(hashed_key, address, key, value, tx_hash) ON CONFLICT (hashed_key) DO UPDATE SET tx_hash = excluded.tx_hash, value = excluded.value, updated_at = now()" @@ -10208,27 +8747,9 @@ "type_info": "Int4" } ], - "nullable": [ - false, - true, - false, - false, - false, - false, - true, - true, - false, - true, - false, - true - ], + "nullable": [false, true, false, false, false, false, true, true, false, true, false, true], "parameters": { - "Left": [ - "Interval", - "Int4", - "Int8", - "Int4Array" - ] + "Left": ["Interval", "Int4", "Int8", "Int4Array"] } }, "query": "\n UPDATE witness_inputs\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now()\n WHERE l1_batch_number = (\n SELECT l1_batch_number\n FROM witness_inputs\n WHERE l1_batch_number <= $3\n AND\n ( status = 'queued'\n OR (status = 'in_progress' AND processing_started_at < now() - $1::interval)\n OR (status = 'failed' AND attempts < $2)\n )\n AND protocol_version = ANY($4)\n ORDER BY l1_batch_number ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING witness_inputs.*\n " @@ -10247,15 +8768,9 @@ "type_info": "Int8" } ], - "nullable": [ - false, - false - ], + "nullable": [false, false], "parameters": { - "Left": [ - "Int8", - "Int8" - ] + "Left": ["Int8", "Int8"] } }, "query": "SELECT timestamp, virtual_blocks FROM miniblocks WHERE number BETWEEN $1 AND $2 ORDER BY number" @@ -10274,14 +8789,9 @@ "type_info": "Int4" } ], - "nullable": [ - false, - false - ], + "nullable": [false, false], "parameters": { - "Left": [ - "Text" - ] + "Left": ["Text"] } }, "query": "UPDATE eth_txs_history\n SET updated_at = now(), confirmed_at = now()\n WHERE tx_hash = $1\n RETURNING id, eth_tx_id" @@ -10300,16 +8810,9 @@ "type_info": "Bytea" } ], - "nullable": [ - false, - false - ], + "nullable": [false, false], "parameters": { - "Left": [ - "Int8", - "Int4", - "Int8" - ] + "Left": ["Int8", "Int4", "Int8"] } }, "query": "SELECT number, hash FROM miniblocks WHERE number >= $1 and protocol_version = $2 ORDER BY number LIMIT $3" @@ -10319,10 +8822,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Text", - "Int8" - ] + "Left": ["Text", "Int8"] } }, "query": "UPDATE proof_generation_details SET status='generated', proof_blob_url = $1, updated_at = now() WHERE l1_batch_number = $2" @@ -10446,9 +8946,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "ByteaArray" - ] + "Left": ["ByteaArray"] } }, "query": "DELETE FROM transactions WHERE in_mempool = TRUE AND initiator_address = ANY($1)" @@ -10468,11 +8966,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int8", - "Text", - "Int4" - ] + "Left": ["Int8", "Text", "Int4"] } }, "query": "\n INSERT INTO scheduler_witness_jobs_fri\n (l1_batch_number, scheduler_partial_input_blob_url, protocol_version, status, created_at, updated_at)\n VALUES ($1, $2, $3, 'waiting_for_proofs', now(), now())\n ON CONFLICT(l1_batch_number)\n DO UPDATE SET updated_at=now()\n " @@ -10700,9 +9194,7 @@ true ], "parameters": { - "Left": [ - "Bytea" - ] + "Left": ["Bytea"] } }, "query": "\n SELECT * FROM transactions\n WHERE hash = $1\n " @@ -10712,10 +9204,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int8", - "Int8" - ] + "Left": ["Int8", "Int8"] } }, "query": "UPDATE l1_batches SET predicted_commit_gas_cost = $2, updated_at = now() WHERE number = $1" @@ -10725,12 +9214,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Text", - "Int4", - "Int2", - "Text" - ] + "Left": ["Text", "Int4", "Int2", "Text"] } }, "query": "INSERT INTO gpu_prover_queue_fri (instance_host, instance_port, instance_status, specialized_prover_group_id, zone, created_at, updated_at) VALUES (cast($1::text as inet), $2, 'available', $3, $4, now(), now()) ON CONFLICT(instance_host, instance_port, zone) DO UPDATE SET instance_status='available', specialized_prover_group_id=$3, zone=$4, updated_at=now()" @@ -10744,9 +9228,7 @@ "type_info": "Int8" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { "Left": [] } @@ -10758,9 +9240,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int8Array" - ] + "Left": ["Int8Array"] } }, "query": "\n UPDATE leaf_aggregation_witness_jobs\n SET is_blob_cleaned=TRUE\n WHERE l1_batch_number = ANY($1);\n " @@ -10800,13 +9280,9 @@ "type_info": "Jsonb" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "SELECT initial_bootloader_heap_content FROM l1_batches WHERE number = $1" @@ -10820,9 +9296,7 @@ "type_info": "Bool" } ], - "nullable": [ - null - ], + "nullable": [null], "parameters": { "Left": [ "Bytea", @@ -11072,9 +9546,7 @@ true ], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "SELECT * FROM transactions WHERE miniblock_number = $1 ORDER BY index_in_block" @@ -11088,13 +9560,9 @@ "type_info": "Bytea" } ], - "nullable": [ - true - ], + "nullable": [true], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "SELECT hash FROM l1_batches WHERE number = $1" @@ -11108,9 +9576,7 @@ "type_info": "Int8" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { "Left": [] } @@ -11122,13 +9588,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Text", - "Int4", - "Int4", - "Text", - "Text" - ] + "Left": ["Text", "Int4", "Int4", "Text", "Text"] } }, "query": "\n UPDATE gpu_prover_queue\n SET instance_status = 'available', updated_at = now(), queue_free_slots = $3\n WHERE instance_host = $1::text::inet\n AND instance_port = $2\n AND instance_status = 'full'\n AND region = $4\n AND zone = $5\n " @@ -11152,15 +9612,9 @@ "type_info": "Bytea" } ], - "nullable": [ - false, - false, - false - ], + "nullable": [false, false, false], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "SELECT address, key, value FROM storage_logs WHERE miniblock_number BETWEEN (SELECT MIN(number) FROM miniblocks WHERE l1_batch_number = $1) AND (SELECT MAX(number) FROM miniblocks WHERE l1_batch_number = $1) ORDER BY miniblock_number, operation_number" @@ -11170,10 +9624,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Text", - "Int8" - ] + "Left": ["Text", "Int8"] } }, "query": "\n UPDATE witness_inputs_fri SET status ='failed', error= $1, updated_at = now()\n WHERE l1_batch_number = $2\n " @@ -11187,13 +9638,9 @@ "type_info": "Jsonb" } ], - "nullable": [ - false - ], + "nullable": [false], "parameters": { - "Left": [ - "Bytea" - ] + "Left": ["Bytea"] } }, "query": "SELECT trace FROM transaction_traces WHERE tx_hash = $1" @@ -11262,20 +9709,7 @@ "type_info": "Int8" } ], - "nullable": [ - false, - false, - false, - false, - false, - false, - false, - false, - true, - true, - true, - false - ], + "nullable": [false, false, false, false, false, false, false, false, true, true, true, false], "parameters": { "Left": [] } @@ -11391,9 +9825,7 @@ false ], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "\n SELECT * FROM scheduler_dependency_tracker_fri\n WHERE l1_batch_number = $1\n " @@ -11407,9 +9839,7 @@ "type_info": "Int8" } ], - "nullable": [ - null - ], + "nullable": [null], "parameters": { "Left": [] } @@ -11480,24 +9910,9 @@ "type_info": "Int8" } ], - "nullable": [ - false, - false, - false, - false, - false, - true, - false, - false, - false, - true, - true, - false - ], + "nullable": [false, false, false, false, false, true, false, false, false, true, true, false], "parameters": { - "Left": [ - "Int4" - ] + "Left": ["Int4"] } }, "query": "SELECT * FROM eth_txs WHERE id = $1" @@ -11507,9 +9922,7 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Int8" - ] + "Left": ["Int8"] } }, "query": "\n UPDATE contract_verification_requests\n SET status = 'successful', updated_at = now()\n WHERE id = $1\n " @@ -11523,13 +9936,9 @@ "type_info": "Int8" } ], - "nullable": [ - null - ], + "nullable": [null], "parameters": { - "Left": [ - "Int4" - ] + "Left": ["Int4"] } }, "query": "SELECT COUNT(*) as \"count!\" FROM prover_protocol_versions WHERE id = $1" @@ -11539,12 +9948,9 @@ "columns": [], "nullable": [], "parameters": { - "Left": [ - "Text", - "Int8" - ] + "Left": ["Text", "Int8"] } }, "query": "UPDATE proof_compression_jobs_fri SET status = $1, updated_at = now() WHERE l1_batch_number = $2" } -} \ No newline at end of file +} diff --git a/core/tests/revert-test/tsconfig.json b/core/tests/revert-test/tsconfig.json index 6c8907a8601..9b3bd705b36 100644 --- a/core/tests/revert-test/tsconfig.json +++ b/core/tests/revert-test/tsconfig.json @@ -1,9 +1,9 @@ { - "compilerOptions": { - "target": "es2019", - "module": "commonjs", - "strict": true, - "esModuleInterop": true, - "skipLibCheck": true - } + "compilerOptions": { + "target": "es2019", + "module": "commonjs", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true + } } diff --git a/core/tests/ts-integration/jest.config.json b/core/tests/ts-integration/jest.config.json index 109e7a1e008..77dd5158c55 100644 --- a/core/tests/ts-integration/jest.config.json +++ b/core/tests/ts-integration/jest.config.json @@ -1,20 +1,15 @@ { - "reporters": [ - "default", - "github-actions" - ], - "transform": { - "^.+\\.ts?$": "ts-jest" - }, - "//": "!!! Do not increase the test timeout blindly!!!", - "//": "Timeout is set to match ~4 L1 operations with 10 blocks confirmation", - "//": "If you need bigger timeout, consider either disabling the test outside of fast mode or increasing timeout on a single test", - "//": "If this value would be too big, it may cause tests on stage to get stuck for too long", - "testTimeout": 605000, - "globalSetup": "/src/jest-setup/global-setup.ts", - "globalTeardown": "/src/jest-setup/global-teardown.ts", - "setupFilesAfterEnv": [ - "/src/jest-setup/add-matchers.ts" - ], - "slowTestThreshold": 120 + "reporters": ["default", "github-actions"], + "transform": { + "^.+\\.ts?$": "ts-jest" + }, + "//": "!!! Do not increase the test timeout blindly!!!", + "//": "Timeout is set to match ~4 L1 operations with 10 blocks confirmation", + "//": "If you need bigger timeout, consider either disabling the test outside of fast mode or increasing timeout on a single test", + "//": "If this value would be too big, it may cause tests on stage to get stuck for too long", + "testTimeout": 605000, + "globalSetup": "/src/jest-setup/global-setup.ts", + "globalTeardown": "/src/jest-setup/global-teardown.ts", + "setupFilesAfterEnv": ["/src/jest-setup/add-matchers.ts"], + "slowTestThreshold": 120 } diff --git a/core/tests/ts-integration/package.json b/core/tests/ts-integration/package.json index b039cb4978b..882b1c77a76 100644 --- a/core/tests/ts-integration/package.json +++ b/core/tests/ts-integration/package.json @@ -1,33 +1,33 @@ { - "name": "ts-integration", - "version": "0.1.0", - "license": "MIT", - "private": true, - "scripts": { - "test": "zk f jest --forceExit --testTimeout 60000", - "long-running-test": "zk f jest", - "fee-test": "RUN_FEE_TEST=1 zk f jest -- fees.test.ts", - "api-test": "zk f jest -- api/web3.test.ts", - "contract-verification-test": "zk f jest -- api/contract-verification.test.ts" - }, - "devDependencies": { - "@matterlabs/hardhat-zksync-deploy": "^0.6.1", - "@matterlabs/hardhat-zksync-solc": "^0.3.15", - "@matterlabs/hardhat-zksync-vyper": "^0.2.0", - "@nomiclabs/hardhat-vyper": "^3.0.3", - "@types/jest": "^29.0.3", - "@types/node": "^14.14.5", - "@types/node-fetch": "^2.5.7", - "chalk": "^4.0.0", - "ethereumjs-abi": "^0.6.8", - "ethers": "~5.7.0", - "hardhat": "^2.12.4", - "jest": "^29.0.3", - "jest-matcher-utils": "^29.0.3", - "node-fetch": "^2.6.1", - "ts-jest": "^29.0.1", - "ts-node": "^10.1.0", - "typescript": "^4.3.5", - "zksync-web3": "link:../../../sdk/zksync-web3.js" - } + "name": "ts-integration", + "version": "0.1.0", + "license": "MIT", + "private": true, + "scripts": { + "test": "zk f jest --forceExit --testTimeout 60000", + "long-running-test": "zk f jest", + "fee-test": "RUN_FEE_TEST=1 zk f jest -- fees.test.ts", + "api-test": "zk f jest -- api/web3.test.ts", + "contract-verification-test": "zk f jest -- api/contract-verification.test.ts" + }, + "devDependencies": { + "@matterlabs/hardhat-zksync-deploy": "^0.6.1", + "@matterlabs/hardhat-zksync-solc": "^0.3.15", + "@matterlabs/hardhat-zksync-vyper": "^0.2.0", + "@nomiclabs/hardhat-vyper": "^3.0.3", + "@types/jest": "^29.0.3", + "@types/node": "^14.14.5", + "@types/node-fetch": "^2.5.7", + "chalk": "^4.0.0", + "ethereumjs-abi": "^0.6.8", + "ethers": "~5.7.0", + "hardhat": "^2.12.4", + "jest": "^29.0.3", + "jest-matcher-utils": "^29.0.3", + "node-fetch": "^2.6.1", + "ts-jest": "^29.0.1", + "ts-node": "^10.1.0", + "typescript": "^4.3.5", + "zksync-web3": "link:../../../sdk/zksync-web3.js" + } } diff --git a/core/tests/ts-integration/tsconfig.json b/core/tests/ts-integration/tsconfig.json index baf2b2d0a79..d3093921ca2 100644 --- a/core/tests/ts-integration/tsconfig.json +++ b/core/tests/ts-integration/tsconfig.json @@ -1,16 +1,12 @@ { - "compilerOptions": { - "target": "es2019", - "module": "commonjs", - "esModuleInterop": true, - "strict": true, - "skipLibCheck": true, - "noEmitOnError": true - }, - "include": [ - "**/*.ts" - ], - "exclude": [ - "node_modules" - ] + "compilerOptions": { + "target": "es2019", + "module": "commonjs", + "esModuleInterop": true, + "strict": true, + "skipLibCheck": true, + "noEmitOnError": true + }, + "include": ["**/*.ts"], + "exclude": ["node_modules"] } diff --git a/core/tests/upgrade-test/tsconfig.json b/core/tests/upgrade-test/tsconfig.json index 6c8907a8601..9b3bd705b36 100644 --- a/core/tests/upgrade-test/tsconfig.json +++ b/core/tests/upgrade-test/tsconfig.json @@ -1,9 +1,9 @@ { - "compilerOptions": { - "target": "es2019", - "module": "commonjs", - "strict": true, - "esModuleInterop": true, - "skipLibCheck": true - } + "compilerOptions": { + "target": "es2019", + "module": "commonjs", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true + } } diff --git a/etc/commitment_tests/zksync_testharness_test.json b/etc/commitment_tests/zksync_testharness_test.json index 3240c3b4d9e..55506cec544 100644 --- a/etc/commitment_tests/zksync_testharness_test.json +++ b/etc/commitment_tests/zksync_testharness_test.json @@ -17,7 +17,6 @@ "key": "0xcb99d29a1b4ffeaefdbf74b8b8b07c78e5e02b3100946f8d0463b79789086aff", "value": "0x0000000000000000000000000000000000000000000000000000000000000001" } - ], "initial_writes": [ { diff --git a/etc/test_config/constant/api.json b/etc/test_config/constant/api.json index 050daba0e66..a8d75555dbe 100644 --- a/etc/test_config/constant/api.json +++ b/etc/test_config/constant/api.json @@ -1,3 +1,3 @@ { - "rest_api_url": "http://127.0.0.1:3001" + "rest_api_url": "http://127.0.0.1:3001" } diff --git a/etc/test_config/constant/eth.json b/etc/test_config/constant/eth.json index 624e605e3c2..9a5571a641f 100644 --- a/etc/test_config/constant/eth.json +++ b/etc/test_config/constant/eth.json @@ -1,5 +1,5 @@ { - "web3_url": "http://127.0.0.1:8545", - "test_mnemonic": "stuff slice staff easily soup parent arm payment cotton trade scatter struggle", - "mnemonic": "fine music test violin matrix prize squirrel panther purchase material script deal" + "web3_url": "http://127.0.0.1:8545", + "test_mnemonic": "stuff slice staff easily soup parent arm payment cotton trade scatter struggle", + "mnemonic": "fine music test violin matrix prize squirrel panther purchase material script deal" } diff --git a/etc/upgrades/1692195639-upgrade-system/common.json b/etc/upgrades/1692195639-upgrade-system/common.json index 4aa0c5bacd0..bd12423d49a 100644 --- a/etc/upgrades/1692195639-upgrade-system/common.json +++ b/etc/upgrades/1692195639-upgrade-system/common.json @@ -2,4 +2,4 @@ "name": "upgrade-system", "creationTimestamp": 1692195639, "protocolVersion": "12" -} \ No newline at end of file +} diff --git a/etc/upgrades/1692195639-upgrade-system/mainnet2/facetCuts.json b/etc/upgrades/1692195639-upgrade-system/mainnet2/facetCuts.json index bfad4bfe0b9..5d5ef1b8c37 100644 --- a/etc/upgrades/1692195639-upgrade-system/mainnet2/facetCuts.json +++ b/etc/upgrades/1692195639-upgrade-system/mainnet2/facetCuts.json @@ -1,25 +1,13 @@ [ { "facet": "0x0000000000000000000000000000000000000000", - "selectors": [ - "0x0c4dd810", - "0xce9dcf16", - "0x7739cbe7", - "0xa9a2d18a" - ], + "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], "action": 2, "isFreezable": false }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": [ - "0x6c0960f9", - "0xb473318e", - "0x042901c7", - "0x263b7f8e", - "0xe4948f43", - "0xeb672419" - ], + "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], "action": 2, "isFreezable": false }, @@ -153,38 +141,20 @@ }, { "facet": "0x5349E94435Cc9Cab9FfB40A492DA46935052733A", - "selectors": [ - "0x6c0960f9", - "0xb473318e", - "0x042901c7", - "0x263b7f8e", - "0xe4948f43", - "0xeb672419" - ], + "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], "action": 0, "isFreezable": true }, { "facet": "0x16615a85B451edfb6FCBea0b34405D9C7ca1a22A", - "selectors": [ - "0x0c4dd810", - "0xce9dcf16", - "0x7739cbe7", - "0xa9a2d18a" - ], + "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], "action": 0, "isFreezable": true }, { "facet": "0x2E64926BE35412f7710A3E097Ba076740bF97CC0", - "selectors": [ - "0xe58bb639", - "0xf235757f", - "0x1cc5d103", - "0xbe6f11cf", - "0x4623c91d" - ], + "selectors": ["0xe58bb639", "0xf235757f", "0x1cc5d103", "0xbe6f11cf", "0x4623c91d"], "action": 0, "isFreezable": true } -] \ No newline at end of file +] diff --git a/etc/upgrades/1692195639-upgrade-system/mainnet2/facets.json b/etc/upgrades/1692195639-upgrade-system/mainnet2/facets.json index f8247ebc353..41924c56024 100644 --- a/etc/upgrades/1692195639-upgrade-system/mainnet2/facets.json +++ b/etc/upgrades/1692195639-upgrade-system/mainnet2/facets.json @@ -19,4 +19,4 @@ "address": "0x5349E94435Cc9Cab9FfB40A492DA46935052733A", "txHash": "0x5040611a8ba1811851e998aa8d7bbe4aa3027db9ccc526a84a1237bc2f9fa698" } -} \ No newline at end of file +} diff --git a/etc/upgrades/1692195639-upgrade-system/mainnet2/l2Upgrade.json b/etc/upgrades/1692195639-upgrade-system/mainnet2/l2Upgrade.json index da024be79e3..2a772be7564 100644 --- a/etc/upgrades/1692195639-upgrade-system/mainnet2/l2Upgrade.json +++ b/etc/upgrades/1692195639-upgrade-system/mainnet2/l2Upgrade.json @@ -2,100 +2,72 @@ "systemContracts": [ { "name": "AccountCodeStorage", - "bytecodeHashes": [ - "0x01000091af8506f97c5a2b2ff4edf06ba1bfd2ec2304056fb9987ce717970105" - ], + "bytecodeHashes": ["0x01000091af8506f97c5a2b2ff4edf06ba1bfd2ec2304056fb9987ce717970105"], "address": "0x0000000000000000000000000000000000008002" }, { "name": "NonceHolder", - "bytecodeHashes": [ - "0x0100012f78c4022788ff0deb6c282f93df2b209d3c819999c3384498f1fec9b4" - ], + "bytecodeHashes": ["0x0100012f78c4022788ff0deb6c282f93df2b209d3c819999c3384498f1fec9b4"], "address": "0x0000000000000000000000000000000000008003" }, { "name": "KnownCodesStorage", - "bytecodeHashes": [ - "0x0100008fa5c8a47d82ec783ad7cdefd382f5b031e7ef0754fcf242ccb4c65fd3" - ], + "bytecodeHashes": ["0x0100008fa5c8a47d82ec783ad7cdefd382f5b031e7ef0754fcf242ccb4c65fd3"], "address": "0x0000000000000000000000000000000000008004" }, { "name": "ImmutableSimulator", - "bytecodeHashes": [ - "0x010000475561147799af163bef4d19262be10ed2d4a8977f793a195cd077e83d" - ], + "bytecodeHashes": ["0x010000475561147799af163bef4d19262be10ed2d4a8977f793a195cd077e83d"], "address": "0x0000000000000000000000000000000000008005" }, { "name": "ContractDeployer", - "bytecodeHashes": [ - "0x010005c17cd3ee506e5156f76afda69c905dfdc22578bec37609a1693bba4fdc" - ], + "bytecodeHashes": ["0x010005c17cd3ee506e5156f76afda69c905dfdc22578bec37609a1693bba4fdc"], "address": "0x0000000000000000000000000000000000008006" }, { "name": "L1Messenger", - "bytecodeHashes": [ - "0x0100007562a15173ca081ddb179bb321500997ba6b43b15cf601cdf266af1cdb" - ], + "bytecodeHashes": ["0x0100007562a15173ca081ddb179bb321500997ba6b43b15cf601cdf266af1cdb"], "address": "0x0000000000000000000000000000000000008008" }, { "name": "MsgValueSimulator", - "bytecodeHashes": [ - "0x010000711288f63c4cd27ecd73df769b834eeda2645f6567beea6b7ed44aaf03" - ], + "bytecodeHashes": ["0x010000711288f63c4cd27ecd73df769b834eeda2645f6567beea6b7ed44aaf03"], "address": "0x0000000000000000000000000000000000008009" }, { "name": "L2EthToken", - "bytecodeHashes": [ - "0x010001397d906d62832c455f701b9f81267a1687e52210986d4e943b3f440d7d" - ], + "bytecodeHashes": ["0x010001397d906d62832c455f701b9f81267a1687e52210986d4e943b3f440d7d"], "address": "0x000000000000000000000000000000000000800a" }, { "name": "SystemContext", - "bytecodeHashes": [ - "0x010000f1d9ad80b5eb80ad14232d7438b1c09314dda76f296eca922da87dbfcc" - ], + "bytecodeHashes": ["0x010000f1d9ad80b5eb80ad14232d7438b1c09314dda76f296eca922da87dbfcc"], "address": "0x000000000000000000000000000000000000800b" }, { "name": "BootloaderUtilities", - "bytecodeHashes": [ - "0x010009ad8e522bb120c5f52d2236035edeb0a4259b89c3429c5ece7d1dc50286" - ], + "bytecodeHashes": ["0x010009ad8e522bb120c5f52d2236035edeb0a4259b89c3429c5ece7d1dc50286"], "address": "0x000000000000000000000000000000000000800c" }, { "name": "BytecodeCompressor", - "bytecodeHashes": [ - "0x010000e1066c916b985495ac9e671ae6930e373e9b5074499c7f6014c439a04a" - ], + "bytecodeHashes": ["0x010000e1066c916b985495ac9e671ae6930e373e9b5074499c7f6014c439a04a"], "address": "0x000000000000000000000000000000000000800e" }, { "name": "ComplexUpgrader", - "bytecodeHashes": [ - "0x0100005b3e7150f7f6daac7cc9a46522f5ad593f9a3e3f0573282b41f86acf16" - ], + "bytecodeHashes": ["0x0100005b3e7150f7f6daac7cc9a46522f5ad593f9a3e3f0573282b41f86acf16"], "address": "0x000000000000000000000000000000000000800f" } ], "bootloader": { "name": "Bootloader", - "bytecodeHashes": [ - "0x010007af2271352ac99f97670a7d6999ae63b53f4e9480a957091d8848a46c61" - ] + "bytecodeHashes": ["0x010007af2271352ac99f97670a7d6999ae63b53f4e9480a957091d8848a46c61"] }, "defaultAA": { "name": "DefaultAccount", - "bytecodeHashes": [ - "0x0100067d592a040e8914eda295f3521561d64b1a4c1b9e6dbd2933093102febf" - ] + "bytecodeHashes": ["0x0100067d592a040e8914eda295f3521561d64b1a4c1b9e6dbd2933093102febf"] }, "forcedDeployments": [ { @@ -196,16 +168,11 @@ "paymaster": 0, "nonce": "12", "value": 0, - "reserved": [ - 0, - 0, - 0, - 0 - ], + "reserved": [0, 0, 0, 0], "data": "0xe9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c001000091af8506f97c5a2b2ff4edf06ba1bfd2ec2304056fb9987ce71797010500000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f78c4022788ff0deb6c282f93df2b209d3c819999c3384498f1fec9b400000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fa5c8a47d82ec783ad7cdefd382f5b031e7ef0754fcf242ccb4c65fd300000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475561147799af163bef4d19262be10ed2d4a8977f793a195cd077e83d00000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c17cd3ee506e5156f76afda69c905dfdc22578bec37609a1693bba4fdc00000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100007562a15173ca081ddb179bb321500997ba6b43b15cf601cdf266af1cdb00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000711288f63c4cd27ecd73df769b834eeda2645f6567beea6b7ed44aaf0300000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010001397d906d62832c455f701b9f81267a1687e52210986d4e943b3f440d7d000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000f1d9ad80b5eb80ad14232d7438b1c09314dda76f296eca922da87dbfcc000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009ad8e522bb120c5f52d2236035edeb0a4259b89c3429c5ece7d1dc50286000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1066c916b985495ac9e671ae6930e373e9b5074499c7f6014c439a04a000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005b3e7150f7f6daac7cc9a46522f5ad593f9a3e3f0573282b41f86acf16000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000", "signature": "0x", "factoryDeps": [], "paymasterInput": "0x", "reservedDynamic": "0x" } -} \ No newline at end of file +} diff --git a/etc/upgrades/1692195639-upgrade-system/mainnet2/transactions.json b/etc/upgrades/1692195639-upgrade-system/mainnet2/transactions.json index badf4772a3c..40a0041f332 100644 --- a/etc/upgrades/1692195639-upgrade-system/mainnet2/transactions.json +++ b/etc/upgrades/1692195639-upgrade-system/mainnet2/transactions.json @@ -11,12 +11,7 @@ "paymaster": 0, "nonce": "12", "value": 0, - "reserved": [ - 0, - 0, - 0, - 0 - ], + "reserved": [0, 0, 0, 0], "data": "0xe9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c001000091af8506f97c5a2b2ff4edf06ba1bfd2ec2304056fb9987ce71797010500000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f78c4022788ff0deb6c282f93df2b209d3c819999c3384498f1fec9b400000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fa5c8a47d82ec783ad7cdefd382f5b031e7ef0754fcf242ccb4c65fd300000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475561147799af163bef4d19262be10ed2d4a8977f793a195cd077e83d00000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c17cd3ee506e5156f76afda69c905dfdc22578bec37609a1693bba4fdc00000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100007562a15173ca081ddb179bb321500997ba6b43b15cf601cdf266af1cdb00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000711288f63c4cd27ecd73df769b834eeda2645f6567beea6b7ed44aaf0300000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010001397d906d62832c455f701b9f81267a1687e52210986d4e943b3f440d7d000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000f1d9ad80b5eb80ad14232d7438b1c09314dda76f296eca922da87dbfcc000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009ad8e522bb120c5f52d2236035edeb0a4259b89c3429c5ece7d1dc50286000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1066c916b985495ac9e671ae6930e373e9b5074499c7f6014c439a04a000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005b3e7150f7f6daac7cc9a46522f5ad593f9a3e3f0573282b41f86acf16000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000", "signature": "0x", "factoryDeps": [], @@ -54,25 +49,13 @@ "facetCuts": [ { "facet": "0x0000000000000000000000000000000000000000", - "selectors": [ - "0x0c4dd810", - "0xce9dcf16", - "0x7739cbe7", - "0xa9a2d18a" - ], + "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], "action": 2, "isFreezable": false }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": [ - "0x6c0960f9", - "0xb473318e", - "0x042901c7", - "0x263b7f8e", - "0xe4948f43", - "0xeb672419" - ], + "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], "action": 2, "isFreezable": false }, @@ -206,37 +189,19 @@ }, { "facet": "0x5349E94435Cc9Cab9FfB40A492DA46935052733A", - "selectors": [ - "0x6c0960f9", - "0xb473318e", - "0x042901c7", - "0x263b7f8e", - "0xe4948f43", - "0xeb672419" - ], + "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], "action": 0, "isFreezable": true }, { "facet": "0x16615a85B451edfb6FCBea0b34405D9C7ca1a22A", - "selectors": [ - "0x0c4dd810", - "0xce9dcf16", - "0x7739cbe7", - "0xa9a2d18a" - ], + "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], "action": 0, "isFreezable": true }, { "facet": "0x2E64926BE35412f7710A3E097Ba076740bF97CC0", - "selectors": [ - "0xe58bb639", - "0xf235757f", - "0x1cc5d103", - "0xbe6f11cf", - "0x4623c91d" - ], + "selectors": ["0xe58bb639", "0xf235757f", "0x1cc5d103", "0xbe6f11cf", "0x4623c91d"], "action": 0, "isFreezable": true } @@ -245,4 +210,4 @@ "initCalldata": "0x1ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000f80010007af2271352ac99f97670a7d6999ae63b53f4e9480a957091d8848a46c610100067d592a040e8914eda295f3521561d64b1a4c1b9e6dbd2933093102febf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa00000000000000000000000000000000000000000000000000000000000000fc00000000000000000000000000000000000000000000000000000000064ec7e30000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fe0000000000000000000000000000000000000000000000000000000000008007000000000000000000000000000000000000000000000000000000000000800600000000000000000000000000000000000000000000000000000000044aa2000000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000d600000000000000000000000000000000000000000000000000000000000000d800000000000000000000000000000000000000000000000000000000000000da00000000000000000000000000000000000000000000000000000000000000dc00000000000000000000000000000000000000000000000000000000000000ac4e9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c001000091af8506f97c5a2b2ff4edf06ba1bfd2ec2304056fb9987ce71797010500000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f78c4022788ff0deb6c282f93df2b209d3c819999c3384498f1fec9b400000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fa5c8a47d82ec783ad7cdefd382f5b031e7ef0754fcf242ccb4c65fd300000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475561147799af163bef4d19262be10ed2d4a8977f793a195cd077e83d00000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c17cd3ee506e5156f76afda69c905dfdc22578bec37609a1693bba4fdc00000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100007562a15173ca081ddb179bb321500997ba6b43b15cf601cdf266af1cdb00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000711288f63c4cd27ecd73df769b834eeda2645f6567beea6b7ed44aaf0300000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010001397d906d62832c455f701b9f81267a1687e52210986d4e943b3f440d7d000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000f1d9ad80b5eb80ad14232d7438b1c09314dda76f296eca922da87dbfcc000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009ad8e522bb120c5f52d2236035edeb0a4259b89c3429c5ece7d1dc50286000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1066c916b985495ac9e671ae6930e373e9b5074499c7f6014c439a04a000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005b3e7150f7f6daac7cc9a46522f5ad593f9a3e3f0573282b41f86acf16000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, "executeUpgradeCalldata": "0x36d4eb8400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000091ca046dad8c3db41f296267e1720d9c940f613d00000000000000000000000000000000000000000000000000000000000016c0000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000026000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000005a000000000000000000000000000000000000000000000000000000000000007400000000000000000000000000000000000000000000000000000000000000be00000000000000000000000000000000000000000000000000000000000000d80000000000000000000000000000000000000000000000000000000000000128000000000000000000000000000000000000000000000000000000000000013e00000000000000000000000000000000000000000000000000000000000001500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000040c4dd81000000000000000000000000000000000000000000000000000000000ce9dcf16000000000000000000000000000000000000000000000000000000007739cbe700000000000000000000000000000000000000000000000000000000a9a2d18a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000066c0960f900000000000000000000000000000000000000000000000000000000b473318e00000000000000000000000000000000000000000000000000000000042901c700000000000000000000000000000000000000000000000000000000263b7f8e00000000000000000000000000000000000000000000000000000000e4948f4300000000000000000000000000000000000000000000000000000000eb672419000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000ae58bb63900000000000000000000000000000000000000000000000000000000ed6d06c00000000000000000000000000000000000000000000000000000000086cb9909000000000000000000000000000000000000000000000000000000000707ac0900000000000000000000000000000000000000000000000000000000f235757f000000000000000000000000000000000000000000000000000000001cc5d10300000000000000000000000000000000000000000000000000000000be6f11cf000000000000000000000000000000000000000000000000000000004623c91d000000000000000000000000000000000000000000000000000000005437988d000000000000000000000000000000000000000000000000000000000b508883000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000873fb92970000000000000000000000000000000000000000000000000000000036d4eb840000000000000000000000000000000000000000000000000000000027ae4c16000000000000000000000000000000000000000000000000000000000551448c000000000000000000000000000000000000000000000000000000008043760a00000000000000000000000000000000000000000000000000000000beda4b12000000000000000000000000000000000000000000000000000000001733894500000000000000000000000000000000000000000000000000000000587809c70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000020cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed62700000000000000000000000000000000000000000000000000000000a7cd63b700000000000000000000000000000000000000000000000000000000fe10226d0000000000000000000000000000000000000000000000000000000079823c9a000000000000000000000000000000000000000000000000000000004fc07d7500000000000000000000000000000000000000000000000000000000d86970d800000000000000000000000000000000000000000000000000000000fd791f3c000000000000000000000000000000000000000000000000000000008665b15000000000000000000000000000000000000000000000000000000000631f4bac000000000000000000000000000000000000000000000000000000000ec6b0b7000000000000000000000000000000000000000000000000000000001b60e62600000000000000000000000000000000000000000000000000000000e39d3bff000000000000000000000000000000000000000000000000000000000ef240a000000000000000000000000000000000000000000000000000000000fe26699e000000000000000000000000000000000000000000000000000000003960738200000000000000000000000000000000000000000000000000000000af6a2dcd00000000000000000000000000000000000000000000000000000000a1954fc500000000000000000000000000000000000000000000000000000000a39980a00000000000000000000000000000000000000000000000000000000046657fe90000000000000000000000000000000000000000000000000000000018e3a941000000000000000000000000000000000000000000000000000000003db920ce0000000000000000000000000000000000000000000000000000000029b98c6700000000000000000000000000000000000000000000000000000000bd7c541200000000000000000000000000000000000000000000000000000000c3bbd2d700000000000000000000000000000000000000000000000000000000e81e0ba100000000000000000000000000000000000000000000000000000000facd743b000000000000000000000000000000000000000000000000000000009cd939e40000000000000000000000000000000000000000000000000000000056142d7a0000000000000000000000000000000000000000000000000000000074f4d30d00000000000000000000000000000000000000000000000000000000000000000000000000000000c6f7e57c6e1e20468d869fe33675524e243cd6a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000873fb92970000000000000000000000000000000000000000000000000000000036d4eb840000000000000000000000000000000000000000000000000000000027ae4c16000000000000000000000000000000000000000000000000000000000551448c000000000000000000000000000000000000000000000000000000008043760a00000000000000000000000000000000000000000000000000000000beda4b12000000000000000000000000000000000000000000000000000000001733894500000000000000000000000000000000000000000000000000000000587809c7000000000000000000000000000000000000000000000000000000000000000000000000000000007444de636699f080ca1c033528d2bb3705b391ce0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000023cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed62700000000000000000000000000000000000000000000000000000000a7cd63b700000000000000000000000000000000000000000000000000000000fe10226d0000000000000000000000000000000000000000000000000000000079823c9a000000000000000000000000000000000000000000000000000000004fc07d7500000000000000000000000000000000000000000000000000000000d86970d800000000000000000000000000000000000000000000000000000000fd791f3c000000000000000000000000000000000000000000000000000000009d1b5a81000000000000000000000000000000000000000000000000000000007b30c8da000000000000000000000000000000000000000000000000000000008665b15000000000000000000000000000000000000000000000000000000000631f4bac000000000000000000000000000000000000000000000000000000000ec6b0b7000000000000000000000000000000000000000000000000000000001b60e62600000000000000000000000000000000000000000000000000000000e39d3bff0000000000000000000000000000000000000000000000000000000033ce93fe000000000000000000000000000000000000000000000000000000000ef240a000000000000000000000000000000000000000000000000000000000fe26699e000000000000000000000000000000000000000000000000000000003960738200000000000000000000000000000000000000000000000000000000af6a2dcd00000000000000000000000000000000000000000000000000000000a1954fc500000000000000000000000000000000000000000000000000000000a39980a00000000000000000000000000000000000000000000000000000000046657fe90000000000000000000000000000000000000000000000000000000018e3a941000000000000000000000000000000000000000000000000000000003db920ce0000000000000000000000000000000000000000000000000000000029b98c6700000000000000000000000000000000000000000000000000000000bd7c541200000000000000000000000000000000000000000000000000000000c3bbd2d700000000000000000000000000000000000000000000000000000000e81e0ba100000000000000000000000000000000000000000000000000000000facd743b000000000000000000000000000000000000000000000000000000009cd939e40000000000000000000000000000000000000000000000000000000056142d7a0000000000000000000000000000000000000000000000000000000074f4d30d000000000000000000000000000000000000000000000000000000000000000000000000000000005349e94435cc9cab9ffb40a492da46935052733a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000066c0960f900000000000000000000000000000000000000000000000000000000b473318e00000000000000000000000000000000000000000000000000000000042901c700000000000000000000000000000000000000000000000000000000263b7f8e00000000000000000000000000000000000000000000000000000000e4948f4300000000000000000000000000000000000000000000000000000000eb6724190000000000000000000000000000000000000000000000000000000000000000000000000000000016615a85b451edfb6fcbea0b34405d9c7ca1a22a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000040c4dd81000000000000000000000000000000000000000000000000000000000ce9dcf16000000000000000000000000000000000000000000000000000000007739cbe700000000000000000000000000000000000000000000000000000000a9a2d18a000000000000000000000000000000000000000000000000000000000000000000000000000000002e64926be35412f7710a3e097ba076740bf97cc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000005e58bb63900000000000000000000000000000000000000000000000000000000f235757f000000000000000000000000000000000000000000000000000000001cc5d10300000000000000000000000000000000000000000000000000000000be6f11cf000000000000000000000000000000000000000000000000000000004623c91d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010041ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000f80010007af2271352ac99f97670a7d6999ae63b53f4e9480a957091d8848a46c610100067d592a040e8914eda295f3521561d64b1a4c1b9e6dbd2933093102febf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa00000000000000000000000000000000000000000000000000000000000000fc00000000000000000000000000000000000000000000000000000000064ec7e30000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fe0000000000000000000000000000000000000000000000000000000000008007000000000000000000000000000000000000000000000000000000000000800600000000000000000000000000000000000000000000000000000000044aa2000000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000d600000000000000000000000000000000000000000000000000000000000000d800000000000000000000000000000000000000000000000000000000000000da00000000000000000000000000000000000000000000000000000000000000dc00000000000000000000000000000000000000000000000000000000000000ac4e9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c001000091af8506f97c5a2b2ff4edf06ba1bfd2ec2304056fb9987ce71797010500000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f78c4022788ff0deb6c282f93df2b209d3c819999c3384498f1fec9b400000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fa5c8a47d82ec783ad7cdefd382f5b031e7ef0754fcf242ccb4c65fd300000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475561147799af163bef4d19262be10ed2d4a8977f793a195cd077e83d00000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c17cd3ee506e5156f76afda69c905dfdc22578bec37609a1693bba4fdc00000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100007562a15173ca081ddb179bb321500997ba6b43b15cf601cdf266af1cdb00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000711288f63c4cd27ecd73df769b834eeda2645f6567beea6b7ed44aaf0300000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010001397d906d62832c455f701b9f81267a1687e52210986d4e943b3f440d7d000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000f1d9ad80b5eb80ad14232d7438b1c09314dda76f296eca922da87dbfcc000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009ad8e522bb120c5f52d2236035edeb0a4259b89c3429c5ece7d1dc50286000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1066c916b985495ac9e671ae6930e373e9b5074499c7f6014c439a04a000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005b3e7150f7f6daac7cc9a46522f5ad593f9a3e3f0573282b41f86acf16000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" -} \ No newline at end of file +} diff --git a/etc/upgrades/1692195639-upgrade-system/stage2/facetCuts.json b/etc/upgrades/1692195639-upgrade-system/stage2/facetCuts.json index 3a1f9b3c57b..0c411cd2fba 100644 --- a/etc/upgrades/1692195639-upgrade-system/stage2/facetCuts.json +++ b/etc/upgrades/1692195639-upgrade-system/stage2/facetCuts.json @@ -1,25 +1,13 @@ [ { "facet": "0x0000000000000000000000000000000000000000", - "selectors": [ - "0x0c4dd810", - "0xce9dcf16", - "0x7739cbe7", - "0xa9a2d18a" - ], + "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], "action": 2, "isFreezable": false }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": [ - "0x6c0960f9", - "0xb473318e", - "0x042901c7", - "0x263b7f8e", - "0xe4948f43", - "0xeb672419" - ], + "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], "action": 2, "isFreezable": false }, @@ -153,38 +141,20 @@ }, { "facet": "0x5349E94435Cc9Cab9FfB40A492DA46935052733A", - "selectors": [ - "0x6c0960f9", - "0xb473318e", - "0x042901c7", - "0x263b7f8e", - "0xe4948f43", - "0xeb672419" - ], + "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], "action": 0, "isFreezable": true }, { "facet": "0xB54f822966FD4940b6fb465AC67075e5119094C3", - "selectors": [ - "0x0c4dd810", - "0xce9dcf16", - "0x7739cbe7", - "0xa9a2d18a" - ], + "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], "action": 0, "isFreezable": true }, { "facet": "0x2E64926BE35412f7710A3E097Ba076740bF97CC0", - "selectors": [ - "0xe58bb639", - "0xf235757f", - "0x1cc5d103", - "0xbe6f11cf", - "0x4623c91d" - ], + "selectors": ["0xe58bb639", "0xf235757f", "0x1cc5d103", "0xbe6f11cf", "0x4623c91d"], "action": 0, "isFreezable": true } -] \ No newline at end of file +] diff --git a/etc/upgrades/1692195639-upgrade-system/stage2/facets.json b/etc/upgrades/1692195639-upgrade-system/stage2/facets.json index 9fcdac88c7e..7977f86a5d1 100644 --- a/etc/upgrades/1692195639-upgrade-system/stage2/facets.json +++ b/etc/upgrades/1692195639-upgrade-system/stage2/facets.json @@ -19,4 +19,4 @@ "address": "0x5349E94435Cc9Cab9FfB40A492DA46935052733A", "txHash": "0xe0f50dd600de1240d6b753cf5a88e97679f754e3e6d0e93ba66877da0ca70d0e" } -} \ No newline at end of file +} diff --git a/etc/upgrades/1692195639-upgrade-system/stage2/l2Upgrade.json b/etc/upgrades/1692195639-upgrade-system/stage2/l2Upgrade.json index 63fbb387322..2ad5949f93d 100644 --- a/etc/upgrades/1692195639-upgrade-system/stage2/l2Upgrade.json +++ b/etc/upgrades/1692195639-upgrade-system/stage2/l2Upgrade.json @@ -2,100 +2,72 @@ "systemContracts": [ { "name": "AccountCodeStorage", - "bytecodeHashes": [ - "0x01000091af8506f97c5a2b2ff4edf06ba1bfd2ec2304056fb9987ce717970105" - ], + "bytecodeHashes": ["0x01000091af8506f97c5a2b2ff4edf06ba1bfd2ec2304056fb9987ce717970105"], "address": "0x0000000000000000000000000000000000008002" }, { "name": "NonceHolder", - "bytecodeHashes": [ - "0x0100012f78c4022788ff0deb6c282f93df2b209d3c819999c3384498f1fec9b4" - ], + "bytecodeHashes": ["0x0100012f78c4022788ff0deb6c282f93df2b209d3c819999c3384498f1fec9b4"], "address": "0x0000000000000000000000000000000000008003" }, { "name": "KnownCodesStorage", - "bytecodeHashes": [ - "0x0100008fa5c8a47d82ec783ad7cdefd382f5b031e7ef0754fcf242ccb4c65fd3" - ], + "bytecodeHashes": ["0x0100008fa5c8a47d82ec783ad7cdefd382f5b031e7ef0754fcf242ccb4c65fd3"], "address": "0x0000000000000000000000000000000000008004" }, { "name": "ImmutableSimulator", - "bytecodeHashes": [ - "0x010000475561147799af163bef4d19262be10ed2d4a8977f793a195cd077e83d" - ], + "bytecodeHashes": ["0x010000475561147799af163bef4d19262be10ed2d4a8977f793a195cd077e83d"], "address": "0x0000000000000000000000000000000000008005" }, { "name": "ContractDeployer", - "bytecodeHashes": [ - "0x010005c17cd3ee506e5156f76afda69c905dfdc22578bec37609a1693bba4fdc" - ], + "bytecodeHashes": ["0x010005c17cd3ee506e5156f76afda69c905dfdc22578bec37609a1693bba4fdc"], "address": "0x0000000000000000000000000000000000008006" }, { "name": "L1Messenger", - "bytecodeHashes": [ - "0x0100007562a15173ca081ddb179bb321500997ba6b43b15cf601cdf266af1cdb" - ], + "bytecodeHashes": ["0x0100007562a15173ca081ddb179bb321500997ba6b43b15cf601cdf266af1cdb"], "address": "0x0000000000000000000000000000000000008008" }, { "name": "MsgValueSimulator", - "bytecodeHashes": [ - "0x010000711288f63c4cd27ecd73df769b834eeda2645f6567beea6b7ed44aaf03" - ], + "bytecodeHashes": ["0x010000711288f63c4cd27ecd73df769b834eeda2645f6567beea6b7ed44aaf03"], "address": "0x0000000000000000000000000000000000008009" }, { "name": "L2EthToken", - "bytecodeHashes": [ - "0x010001397d906d62832c455f701b9f81267a1687e52210986d4e943b3f440d7d" - ], + "bytecodeHashes": ["0x010001397d906d62832c455f701b9f81267a1687e52210986d4e943b3f440d7d"], "address": "0x000000000000000000000000000000000000800a" }, { "name": "SystemContext", - "bytecodeHashes": [ - "0x010000f1d9ad80b5eb80ad14232d7438b1c09314dda76f296eca922da87dbfcc" - ], + "bytecodeHashes": ["0x010000f1d9ad80b5eb80ad14232d7438b1c09314dda76f296eca922da87dbfcc"], "address": "0x000000000000000000000000000000000000800b" }, { "name": "BootloaderUtilities", - "bytecodeHashes": [ - "0x010009ad8e522bb120c5f52d2236035edeb0a4259b89c3429c5ece7d1dc50286" - ], + "bytecodeHashes": ["0x010009ad8e522bb120c5f52d2236035edeb0a4259b89c3429c5ece7d1dc50286"], "address": "0x000000000000000000000000000000000000800c" }, { "name": "BytecodeCompressor", - "bytecodeHashes": [ - "0x010000e1066c916b985495ac9e671ae6930e373e9b5074499c7f6014c439a04a" - ], + "bytecodeHashes": ["0x010000e1066c916b985495ac9e671ae6930e373e9b5074499c7f6014c439a04a"], "address": "0x000000000000000000000000000000000000800e" }, { "name": "ComplexUpgrader", - "bytecodeHashes": [ - "0x0100005b3e7150f7f6daac7cc9a46522f5ad593f9a3e3f0573282b41f86acf16" - ], + "bytecodeHashes": ["0x0100005b3e7150f7f6daac7cc9a46522f5ad593f9a3e3f0573282b41f86acf16"], "address": "0x000000000000000000000000000000000000800f" } ], "bootloader": { "name": "Bootloader", - "bytecodeHashes": [ - "0x010007af2271352ac99f97670a7d6999ae63b53f4e9480a957091d8848a46c61" - ] + "bytecodeHashes": ["0x010007af2271352ac99f97670a7d6999ae63b53f4e9480a957091d8848a46c61"] }, "defaultAA": { "name": "DefaultAccount", - "bytecodeHashes": [ - "0x0100067d592a040e8914eda295f3521561d64b1a4c1b9e6dbd2933093102febf" - ] + "bytecodeHashes": ["0x0100067d592a040e8914eda295f3521561d64b1a4c1b9e6dbd2933093102febf"] }, "tx": { "txType": 254, @@ -108,12 +80,7 @@ "paymaster": 0, "nonce": "12", "value": 0, - "reserved": [ - 0, - 0, - 0, - 0 - ], + "reserved": [0, 0, 0, 0], "data": "0xe9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c001000091af8506f97c5a2b2ff4edf06ba1bfd2ec2304056fb9987ce71797010500000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f78c4022788ff0deb6c282f93df2b209d3c819999c3384498f1fec9b400000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fa5c8a47d82ec783ad7cdefd382f5b031e7ef0754fcf242ccb4c65fd300000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475561147799af163bef4d19262be10ed2d4a8977f793a195cd077e83d00000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c17cd3ee506e5156f76afda69c905dfdc22578bec37609a1693bba4fdc00000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100007562a15173ca081ddb179bb321500997ba6b43b15cf601cdf266af1cdb00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000711288f63c4cd27ecd73df769b834eeda2645f6567beea6b7ed44aaf0300000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010001397d906d62832c455f701b9f81267a1687e52210986d4e943b3f440d7d000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000f1d9ad80b5eb80ad14232d7438b1c09314dda76f296eca922da87dbfcc000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009ad8e522bb120c5f52d2236035edeb0a4259b89c3429c5ece7d1dc50286000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1066c916b985495ac9e671ae6930e373e9b5074499c7f6014c439a04a000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005b3e7150f7f6daac7cc9a46522f5ad593f9a3e3f0573282b41f86acf16000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000", "signature": "0x", "factoryDeps": [], @@ -208,4 +175,4 @@ ], "forcedDeploymentCalldata": "0xe9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c001000091af8506f97c5a2b2ff4edf06ba1bfd2ec2304056fb9987ce71797010500000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f78c4022788ff0deb6c282f93df2b209d3c819999c3384498f1fec9b400000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fa5c8a47d82ec783ad7cdefd382f5b031e7ef0754fcf242ccb4c65fd300000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475561147799af163bef4d19262be10ed2d4a8977f793a195cd077e83d00000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c17cd3ee506e5156f76afda69c905dfdc22578bec37609a1693bba4fdc00000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100007562a15173ca081ddb179bb321500997ba6b43b15cf601cdf266af1cdb00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000711288f63c4cd27ecd73df769b834eeda2645f6567beea6b7ed44aaf0300000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010001397d906d62832c455f701b9f81267a1687e52210986d4e943b3f440d7d000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000f1d9ad80b5eb80ad14232d7438b1c09314dda76f296eca922da87dbfcc000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009ad8e522bb120c5f52d2236035edeb0a4259b89c3429c5ece7d1dc50286000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1066c916b985495ac9e671ae6930e373e9b5074499c7f6014c439a04a000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005b3e7150f7f6daac7cc9a46522f5ad593f9a3e3f0573282b41f86acf16000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000", "calldata": "0xe9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c001000091af8506f97c5a2b2ff4edf06ba1bfd2ec2304056fb9987ce71797010500000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f78c4022788ff0deb6c282f93df2b209d3c819999c3384498f1fec9b400000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fa5c8a47d82ec783ad7cdefd382f5b031e7ef0754fcf242ccb4c65fd300000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475561147799af163bef4d19262be10ed2d4a8977f793a195cd077e83d00000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c17cd3ee506e5156f76afda69c905dfdc22578bec37609a1693bba4fdc00000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100007562a15173ca081ddb179bb321500997ba6b43b15cf601cdf266af1cdb00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000711288f63c4cd27ecd73df769b834eeda2645f6567beea6b7ed44aaf0300000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010001397d906d62832c455f701b9f81267a1687e52210986d4e943b3f440d7d000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000f1d9ad80b5eb80ad14232d7438b1c09314dda76f296eca922da87dbfcc000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009ad8e522bb120c5f52d2236035edeb0a4259b89c3429c5ece7d1dc50286000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1066c916b985495ac9e671ae6930e373e9b5074499c7f6014c439a04a000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005b3e7150f7f6daac7cc9a46522f5ad593f9a3e3f0573282b41f86acf16000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000" -} \ No newline at end of file +} diff --git a/etc/upgrades/1692195639-upgrade-system/stage2/transactions.json b/etc/upgrades/1692195639-upgrade-system/stage2/transactions.json index 9cc3c1eb7fd..76fd2da9539 100644 --- a/etc/upgrades/1692195639-upgrade-system/stage2/transactions.json +++ b/etc/upgrades/1692195639-upgrade-system/stage2/transactions.json @@ -11,12 +11,7 @@ "paymaster": 0, "nonce": "12", "value": 0, - "reserved": [ - 0, - 0, - 0, - 0 - ], + "reserved": [0, 0, 0, 0], "data": "0xe9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c001000091af8506f97c5a2b2ff4edf06ba1bfd2ec2304056fb9987ce71797010500000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f78c4022788ff0deb6c282f93df2b209d3c819999c3384498f1fec9b400000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fa5c8a47d82ec783ad7cdefd382f5b031e7ef0754fcf242ccb4c65fd300000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475561147799af163bef4d19262be10ed2d4a8977f793a195cd077e83d00000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c17cd3ee506e5156f76afda69c905dfdc22578bec37609a1693bba4fdc00000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100007562a15173ca081ddb179bb321500997ba6b43b15cf601cdf266af1cdb00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000711288f63c4cd27ecd73df769b834eeda2645f6567beea6b7ed44aaf0300000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010001397d906d62832c455f701b9f81267a1687e52210986d4e943b3f440d7d000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000f1d9ad80b5eb80ad14232d7438b1c09314dda76f296eca922da87dbfcc000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009ad8e522bb120c5f52d2236035edeb0a4259b89c3429c5ece7d1dc50286000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1066c916b985495ac9e671ae6930e373e9b5074499c7f6014c439a04a000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005b3e7150f7f6daac7cc9a46522f5ad593f9a3e3f0573282b41f86acf16000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000", "signature": "0x", "factoryDeps": [], @@ -54,25 +49,13 @@ "facetCuts": [ { "facet": "0x0000000000000000000000000000000000000000", - "selectors": [ - "0x0c4dd810", - "0xce9dcf16", - "0x7739cbe7", - "0xa9a2d18a" - ], + "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], "action": 2, "isFreezable": false }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": [ - "0x6c0960f9", - "0xb473318e", - "0x042901c7", - "0x263b7f8e", - "0xe4948f43", - "0xeb672419" - ], + "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], "action": 2, "isFreezable": false }, @@ -206,37 +189,19 @@ }, { "facet": "0x5349E94435Cc9Cab9FfB40A492DA46935052733A", - "selectors": [ - "0x6c0960f9", - "0xb473318e", - "0x042901c7", - "0x263b7f8e", - "0xe4948f43", - "0xeb672419" - ], + "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], "action": 0, "isFreezable": true }, { "facet": "0xB54f822966FD4940b6fb465AC67075e5119094C3", - "selectors": [ - "0x0c4dd810", - "0xce9dcf16", - "0x7739cbe7", - "0xa9a2d18a" - ], + "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], "action": 0, "isFreezable": true }, { "facet": "0x2E64926BE35412f7710A3E097Ba076740bF97CC0", - "selectors": [ - "0xe58bb639", - "0xf235757f", - "0x1cc5d103", - "0xbe6f11cf", - "0x4623c91d" - ], + "selectors": ["0xe58bb639", "0xf235757f", "0x1cc5d103", "0xbe6f11cf", "0x4623c91d"], "action": 0, "isFreezable": true } @@ -245,4 +210,4 @@ "initCalldata": "0x1ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000f80010007af2271352ac99f97670a7d6999ae63b53f4e9480a957091d8848a46c610100067d592a040e8914eda295f3521561d64b1a4c1b9e6dbd2933093102febf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa00000000000000000000000000000000000000000000000000000000000000fc00000000000000000000000000000000000000000000000000000000064ddf6a8000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fe0000000000000000000000000000000000000000000000000000000000008007000000000000000000000000000000000000000000000000000000000000800600000000000000000000000000000000000000000000000000000000044aa2000000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000d600000000000000000000000000000000000000000000000000000000000000d800000000000000000000000000000000000000000000000000000000000000da00000000000000000000000000000000000000000000000000000000000000dc00000000000000000000000000000000000000000000000000000000000000ac4e9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c001000091af8506f97c5a2b2ff4edf06ba1bfd2ec2304056fb9987ce71797010500000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f78c4022788ff0deb6c282f93df2b209d3c819999c3384498f1fec9b400000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fa5c8a47d82ec783ad7cdefd382f5b031e7ef0754fcf242ccb4c65fd300000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475561147799af163bef4d19262be10ed2d4a8977f793a195cd077e83d00000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c17cd3ee506e5156f76afda69c905dfdc22578bec37609a1693bba4fdc00000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100007562a15173ca081ddb179bb321500997ba6b43b15cf601cdf266af1cdb00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000711288f63c4cd27ecd73df769b834eeda2645f6567beea6b7ed44aaf0300000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010001397d906d62832c455f701b9f81267a1687e52210986d4e943b3f440d7d000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000f1d9ad80b5eb80ad14232d7438b1c09314dda76f296eca922da87dbfcc000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009ad8e522bb120c5f52d2236035edeb0a4259b89c3429c5ece7d1dc50286000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1066c916b985495ac9e671ae6930e373e9b5074499c7f6014c439a04a000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005b3e7150f7f6daac7cc9a46522f5ad593f9a3e3f0573282b41f86acf16000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, "executeUpgradeCalldata": "0x36d4eb84000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000db876240f01a6dd38f5efc4ecefe52e5c13db3c700000000000000000000000000000000000000000000000000000000000016c0000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000026000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000008600000000000000000000000000000000000000000000000000000000000000a400000000000000000000000000000000000000000000000000000000000000be00000000000000000000000000000000000000000000000000000000000000d80000000000000000000000000000000000000000000000000000000000000128000000000000000000000000000000000000000000000000000000000000013e00000000000000000000000000000000000000000000000000000000000001500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000040c4dd81000000000000000000000000000000000000000000000000000000000ce9dcf16000000000000000000000000000000000000000000000000000000007739cbe700000000000000000000000000000000000000000000000000000000a9a2d18a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000066c0960f900000000000000000000000000000000000000000000000000000000b473318e00000000000000000000000000000000000000000000000000000000042901c700000000000000000000000000000000000000000000000000000000263b7f8e00000000000000000000000000000000000000000000000000000000e4948f4300000000000000000000000000000000000000000000000000000000eb6724190000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000020cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed62700000000000000000000000000000000000000000000000000000000a7cd63b700000000000000000000000000000000000000000000000000000000fe10226d0000000000000000000000000000000000000000000000000000000079823c9a000000000000000000000000000000000000000000000000000000004fc07d7500000000000000000000000000000000000000000000000000000000d86970d800000000000000000000000000000000000000000000000000000000fd791f3c000000000000000000000000000000000000000000000000000000008665b15000000000000000000000000000000000000000000000000000000000631f4bac000000000000000000000000000000000000000000000000000000000ec6b0b7000000000000000000000000000000000000000000000000000000001b60e62600000000000000000000000000000000000000000000000000000000e39d3bff000000000000000000000000000000000000000000000000000000000ef240a000000000000000000000000000000000000000000000000000000000fe26699e000000000000000000000000000000000000000000000000000000003960738200000000000000000000000000000000000000000000000000000000af6a2dcd00000000000000000000000000000000000000000000000000000000a1954fc500000000000000000000000000000000000000000000000000000000a39980a00000000000000000000000000000000000000000000000000000000046657fe90000000000000000000000000000000000000000000000000000000018e3a941000000000000000000000000000000000000000000000000000000003db920ce0000000000000000000000000000000000000000000000000000000029b98c6700000000000000000000000000000000000000000000000000000000bd7c541200000000000000000000000000000000000000000000000000000000c3bbd2d700000000000000000000000000000000000000000000000000000000e81e0ba100000000000000000000000000000000000000000000000000000000facd743b000000000000000000000000000000000000000000000000000000009cd939e40000000000000000000000000000000000000000000000000000000056142d7a0000000000000000000000000000000000000000000000000000000074f4d30d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000ae58bb63900000000000000000000000000000000000000000000000000000000ed6d06c00000000000000000000000000000000000000000000000000000000086cb9909000000000000000000000000000000000000000000000000000000000707ac0900000000000000000000000000000000000000000000000000000000f235757f000000000000000000000000000000000000000000000000000000001cc5d10300000000000000000000000000000000000000000000000000000000be6f11cf000000000000000000000000000000000000000000000000000000004623c91d000000000000000000000000000000000000000000000000000000005437988d000000000000000000000000000000000000000000000000000000000b508883000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000873fb92970000000000000000000000000000000000000000000000000000000036d4eb840000000000000000000000000000000000000000000000000000000027ae4c16000000000000000000000000000000000000000000000000000000000551448c000000000000000000000000000000000000000000000000000000008043760a00000000000000000000000000000000000000000000000000000000beda4b12000000000000000000000000000000000000000000000000000000001733894500000000000000000000000000000000000000000000000000000000587809c700000000000000000000000000000000000000000000000000000000000000000000000000000000c6f7e57c6e1e20468d869fe33675524e243cd6a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000873fb92970000000000000000000000000000000000000000000000000000000036d4eb840000000000000000000000000000000000000000000000000000000027ae4c16000000000000000000000000000000000000000000000000000000000551448c000000000000000000000000000000000000000000000000000000008043760a00000000000000000000000000000000000000000000000000000000beda4b12000000000000000000000000000000000000000000000000000000001733894500000000000000000000000000000000000000000000000000000000587809c7000000000000000000000000000000000000000000000000000000000000000000000000000000007444de636699f080ca1c033528d2bb3705b391ce0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000023cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed62700000000000000000000000000000000000000000000000000000000a7cd63b700000000000000000000000000000000000000000000000000000000fe10226d0000000000000000000000000000000000000000000000000000000079823c9a000000000000000000000000000000000000000000000000000000004fc07d7500000000000000000000000000000000000000000000000000000000d86970d800000000000000000000000000000000000000000000000000000000fd791f3c000000000000000000000000000000000000000000000000000000009d1b5a81000000000000000000000000000000000000000000000000000000007b30c8da000000000000000000000000000000000000000000000000000000008665b15000000000000000000000000000000000000000000000000000000000631f4bac000000000000000000000000000000000000000000000000000000000ec6b0b7000000000000000000000000000000000000000000000000000000001b60e62600000000000000000000000000000000000000000000000000000000e39d3bff0000000000000000000000000000000000000000000000000000000033ce93fe000000000000000000000000000000000000000000000000000000000ef240a000000000000000000000000000000000000000000000000000000000fe26699e000000000000000000000000000000000000000000000000000000003960738200000000000000000000000000000000000000000000000000000000af6a2dcd00000000000000000000000000000000000000000000000000000000a1954fc500000000000000000000000000000000000000000000000000000000a39980a00000000000000000000000000000000000000000000000000000000046657fe90000000000000000000000000000000000000000000000000000000018e3a941000000000000000000000000000000000000000000000000000000003db920ce0000000000000000000000000000000000000000000000000000000029b98c6700000000000000000000000000000000000000000000000000000000bd7c541200000000000000000000000000000000000000000000000000000000c3bbd2d700000000000000000000000000000000000000000000000000000000e81e0ba100000000000000000000000000000000000000000000000000000000facd743b000000000000000000000000000000000000000000000000000000009cd939e40000000000000000000000000000000000000000000000000000000056142d7a0000000000000000000000000000000000000000000000000000000074f4d30d000000000000000000000000000000000000000000000000000000000000000000000000000000005349e94435cc9cab9ffb40a492da46935052733a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000066c0960f900000000000000000000000000000000000000000000000000000000b473318e00000000000000000000000000000000000000000000000000000000042901c700000000000000000000000000000000000000000000000000000000263b7f8e00000000000000000000000000000000000000000000000000000000e4948f4300000000000000000000000000000000000000000000000000000000eb67241900000000000000000000000000000000000000000000000000000000000000000000000000000000b54f822966fd4940b6fb465ac67075e5119094c300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000040c4dd81000000000000000000000000000000000000000000000000000000000ce9dcf16000000000000000000000000000000000000000000000000000000007739cbe700000000000000000000000000000000000000000000000000000000a9a2d18a000000000000000000000000000000000000000000000000000000000000000000000000000000002e64926be35412f7710a3e097ba076740bf97cc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000005e58bb63900000000000000000000000000000000000000000000000000000000f235757f000000000000000000000000000000000000000000000000000000001cc5d10300000000000000000000000000000000000000000000000000000000be6f11cf000000000000000000000000000000000000000000000000000000004623c91d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010041ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000f80010007af2271352ac99f97670a7d6999ae63b53f4e9480a957091d8848a46c610100067d592a040e8914eda295f3521561d64b1a4c1b9e6dbd2933093102febf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa00000000000000000000000000000000000000000000000000000000000000fc00000000000000000000000000000000000000000000000000000000064ddf6a8000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fe0000000000000000000000000000000000000000000000000000000000008007000000000000000000000000000000000000000000000000000000000000800600000000000000000000000000000000000000000000000000000000044aa2000000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000d600000000000000000000000000000000000000000000000000000000000000d800000000000000000000000000000000000000000000000000000000000000da00000000000000000000000000000000000000000000000000000000000000dc00000000000000000000000000000000000000000000000000000000000000ac4e9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c001000091af8506f97c5a2b2ff4edf06ba1bfd2ec2304056fb9987ce71797010500000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f78c4022788ff0deb6c282f93df2b209d3c819999c3384498f1fec9b400000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fa5c8a47d82ec783ad7cdefd382f5b031e7ef0754fcf242ccb4c65fd300000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475561147799af163bef4d19262be10ed2d4a8977f793a195cd077e83d00000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c17cd3ee506e5156f76afda69c905dfdc22578bec37609a1693bba4fdc00000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100007562a15173ca081ddb179bb321500997ba6b43b15cf601cdf266af1cdb00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000711288f63c4cd27ecd73df769b834eeda2645f6567beea6b7ed44aaf0300000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010001397d906d62832c455f701b9f81267a1687e52210986d4e943b3f440d7d000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000f1d9ad80b5eb80ad14232d7438b1c09314dda76f296eca922da87dbfcc000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009ad8e522bb120c5f52d2236035edeb0a4259b89c3429c5ece7d1dc50286000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1066c916b985495ac9e671ae6930e373e9b5074499c7f6014c439a04a000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005b3e7150f7f6daac7cc9a46522f5ad593f9a3e3f0573282b41f86acf16000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" -} \ No newline at end of file +} diff --git a/etc/upgrades/1692195639-upgrade-system/testnet2/facetCuts.json b/etc/upgrades/1692195639-upgrade-system/testnet2/facetCuts.json index f48328679fe..c3660b47705 100644 --- a/etc/upgrades/1692195639-upgrade-system/testnet2/facetCuts.json +++ b/etc/upgrades/1692195639-upgrade-system/testnet2/facetCuts.json @@ -1,25 +1,13 @@ [ { "facet": "0x0000000000000000000000000000000000000000", - "selectors": [ - "0x0c4dd810", - "0xce9dcf16", - "0x7739cbe7", - "0xa9a2d18a" - ], + "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], "action": 2, "isFreezable": false }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": [ - "0x6c0960f9", - "0xb473318e", - "0x042901c7", - "0x263b7f8e", - "0xe4948f43", - "0xeb672419" - ], + "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], "action": 2, "isFreezable": false }, @@ -153,38 +141,20 @@ }, { "facet": "0x5349E94435Cc9Cab9FfB40A492DA46935052733A", - "selectors": [ - "0x6c0960f9", - "0xb473318e", - "0x042901c7", - "0x263b7f8e", - "0xe4948f43", - "0xeb672419" - ], + "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], "action": 0, "isFreezable": true }, { "facet": "0xB54f822966FD4940b6fb465AC67075e5119094C3", - "selectors": [ - "0x0c4dd810", - "0xce9dcf16", - "0x7739cbe7", - "0xa9a2d18a" - ], + "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], "action": 0, "isFreezable": true }, { "facet": "0x2E64926BE35412f7710A3E097Ba076740bF97CC0", - "selectors": [ - "0xe58bb639", - "0xf235757f", - "0x1cc5d103", - "0xbe6f11cf", - "0x4623c91d" - ], + "selectors": ["0xe58bb639", "0xf235757f", "0x1cc5d103", "0xbe6f11cf", "0x4623c91d"], "action": 0, "isFreezable": true } -] \ No newline at end of file +] diff --git a/etc/upgrades/1692195639-upgrade-system/testnet2/facets.json b/etc/upgrades/1692195639-upgrade-system/testnet2/facets.json index 56fbbc60131..2e52ec41fd4 100644 --- a/etc/upgrades/1692195639-upgrade-system/testnet2/facets.json +++ b/etc/upgrades/1692195639-upgrade-system/testnet2/facets.json @@ -19,4 +19,4 @@ "address": "0x5349E94435Cc9Cab9FfB40A492DA46935052733A", "txHash": "0x2a584f3e8229a38e5f976fadf563411728c4dbc3ff6259c067dfc7ffccb0dd80" } -} \ No newline at end of file +} diff --git a/etc/upgrades/1692195639-upgrade-system/testnet2/l2Upgrade.json b/etc/upgrades/1692195639-upgrade-system/testnet2/l2Upgrade.json index da024be79e3..2a772be7564 100644 --- a/etc/upgrades/1692195639-upgrade-system/testnet2/l2Upgrade.json +++ b/etc/upgrades/1692195639-upgrade-system/testnet2/l2Upgrade.json @@ -2,100 +2,72 @@ "systemContracts": [ { "name": "AccountCodeStorage", - "bytecodeHashes": [ - "0x01000091af8506f97c5a2b2ff4edf06ba1bfd2ec2304056fb9987ce717970105" - ], + "bytecodeHashes": ["0x01000091af8506f97c5a2b2ff4edf06ba1bfd2ec2304056fb9987ce717970105"], "address": "0x0000000000000000000000000000000000008002" }, { "name": "NonceHolder", - "bytecodeHashes": [ - "0x0100012f78c4022788ff0deb6c282f93df2b209d3c819999c3384498f1fec9b4" - ], + "bytecodeHashes": ["0x0100012f78c4022788ff0deb6c282f93df2b209d3c819999c3384498f1fec9b4"], "address": "0x0000000000000000000000000000000000008003" }, { "name": "KnownCodesStorage", - "bytecodeHashes": [ - "0x0100008fa5c8a47d82ec783ad7cdefd382f5b031e7ef0754fcf242ccb4c65fd3" - ], + "bytecodeHashes": ["0x0100008fa5c8a47d82ec783ad7cdefd382f5b031e7ef0754fcf242ccb4c65fd3"], "address": "0x0000000000000000000000000000000000008004" }, { "name": "ImmutableSimulator", - "bytecodeHashes": [ - "0x010000475561147799af163bef4d19262be10ed2d4a8977f793a195cd077e83d" - ], + "bytecodeHashes": ["0x010000475561147799af163bef4d19262be10ed2d4a8977f793a195cd077e83d"], "address": "0x0000000000000000000000000000000000008005" }, { "name": "ContractDeployer", - "bytecodeHashes": [ - "0x010005c17cd3ee506e5156f76afda69c905dfdc22578bec37609a1693bba4fdc" - ], + "bytecodeHashes": ["0x010005c17cd3ee506e5156f76afda69c905dfdc22578bec37609a1693bba4fdc"], "address": "0x0000000000000000000000000000000000008006" }, { "name": "L1Messenger", - "bytecodeHashes": [ - "0x0100007562a15173ca081ddb179bb321500997ba6b43b15cf601cdf266af1cdb" - ], + "bytecodeHashes": ["0x0100007562a15173ca081ddb179bb321500997ba6b43b15cf601cdf266af1cdb"], "address": "0x0000000000000000000000000000000000008008" }, { "name": "MsgValueSimulator", - "bytecodeHashes": [ - "0x010000711288f63c4cd27ecd73df769b834eeda2645f6567beea6b7ed44aaf03" - ], + "bytecodeHashes": ["0x010000711288f63c4cd27ecd73df769b834eeda2645f6567beea6b7ed44aaf03"], "address": "0x0000000000000000000000000000000000008009" }, { "name": "L2EthToken", - "bytecodeHashes": [ - "0x010001397d906d62832c455f701b9f81267a1687e52210986d4e943b3f440d7d" - ], + "bytecodeHashes": ["0x010001397d906d62832c455f701b9f81267a1687e52210986d4e943b3f440d7d"], "address": "0x000000000000000000000000000000000000800a" }, { "name": "SystemContext", - "bytecodeHashes": [ - "0x010000f1d9ad80b5eb80ad14232d7438b1c09314dda76f296eca922da87dbfcc" - ], + "bytecodeHashes": ["0x010000f1d9ad80b5eb80ad14232d7438b1c09314dda76f296eca922da87dbfcc"], "address": "0x000000000000000000000000000000000000800b" }, { "name": "BootloaderUtilities", - "bytecodeHashes": [ - "0x010009ad8e522bb120c5f52d2236035edeb0a4259b89c3429c5ece7d1dc50286" - ], + "bytecodeHashes": ["0x010009ad8e522bb120c5f52d2236035edeb0a4259b89c3429c5ece7d1dc50286"], "address": "0x000000000000000000000000000000000000800c" }, { "name": "BytecodeCompressor", - "bytecodeHashes": [ - "0x010000e1066c916b985495ac9e671ae6930e373e9b5074499c7f6014c439a04a" - ], + "bytecodeHashes": ["0x010000e1066c916b985495ac9e671ae6930e373e9b5074499c7f6014c439a04a"], "address": "0x000000000000000000000000000000000000800e" }, { "name": "ComplexUpgrader", - "bytecodeHashes": [ - "0x0100005b3e7150f7f6daac7cc9a46522f5ad593f9a3e3f0573282b41f86acf16" - ], + "bytecodeHashes": ["0x0100005b3e7150f7f6daac7cc9a46522f5ad593f9a3e3f0573282b41f86acf16"], "address": "0x000000000000000000000000000000000000800f" } ], "bootloader": { "name": "Bootloader", - "bytecodeHashes": [ - "0x010007af2271352ac99f97670a7d6999ae63b53f4e9480a957091d8848a46c61" - ] + "bytecodeHashes": ["0x010007af2271352ac99f97670a7d6999ae63b53f4e9480a957091d8848a46c61"] }, "defaultAA": { "name": "DefaultAccount", - "bytecodeHashes": [ - "0x0100067d592a040e8914eda295f3521561d64b1a4c1b9e6dbd2933093102febf" - ] + "bytecodeHashes": ["0x0100067d592a040e8914eda295f3521561d64b1a4c1b9e6dbd2933093102febf"] }, "forcedDeployments": [ { @@ -196,16 +168,11 @@ "paymaster": 0, "nonce": "12", "value": 0, - "reserved": [ - 0, - 0, - 0, - 0 - ], + "reserved": [0, 0, 0, 0], "data": "0xe9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c001000091af8506f97c5a2b2ff4edf06ba1bfd2ec2304056fb9987ce71797010500000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f78c4022788ff0deb6c282f93df2b209d3c819999c3384498f1fec9b400000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fa5c8a47d82ec783ad7cdefd382f5b031e7ef0754fcf242ccb4c65fd300000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475561147799af163bef4d19262be10ed2d4a8977f793a195cd077e83d00000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c17cd3ee506e5156f76afda69c905dfdc22578bec37609a1693bba4fdc00000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100007562a15173ca081ddb179bb321500997ba6b43b15cf601cdf266af1cdb00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000711288f63c4cd27ecd73df769b834eeda2645f6567beea6b7ed44aaf0300000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010001397d906d62832c455f701b9f81267a1687e52210986d4e943b3f440d7d000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000f1d9ad80b5eb80ad14232d7438b1c09314dda76f296eca922da87dbfcc000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009ad8e522bb120c5f52d2236035edeb0a4259b89c3429c5ece7d1dc50286000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1066c916b985495ac9e671ae6930e373e9b5074499c7f6014c439a04a000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005b3e7150f7f6daac7cc9a46522f5ad593f9a3e3f0573282b41f86acf16000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000", "signature": "0x", "factoryDeps": [], "paymasterInput": "0x", "reservedDynamic": "0x" } -} \ No newline at end of file +} diff --git a/etc/upgrades/1692195639-upgrade-system/testnet2/transactions.json b/etc/upgrades/1692195639-upgrade-system/testnet2/transactions.json index 82f3a1d9d75..18c909b7045 100644 --- a/etc/upgrades/1692195639-upgrade-system/testnet2/transactions.json +++ b/etc/upgrades/1692195639-upgrade-system/testnet2/transactions.json @@ -11,12 +11,7 @@ "paymaster": 0, "nonce": "12", "value": 0, - "reserved": [ - 0, - 0, - 0, - 0 - ], + "reserved": [0, 0, 0, 0], "data": "0xe9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c001000091af8506f97c5a2b2ff4edf06ba1bfd2ec2304056fb9987ce71797010500000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f78c4022788ff0deb6c282f93df2b209d3c819999c3384498f1fec9b400000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fa5c8a47d82ec783ad7cdefd382f5b031e7ef0754fcf242ccb4c65fd300000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475561147799af163bef4d19262be10ed2d4a8977f793a195cd077e83d00000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c17cd3ee506e5156f76afda69c905dfdc22578bec37609a1693bba4fdc00000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100007562a15173ca081ddb179bb321500997ba6b43b15cf601cdf266af1cdb00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000711288f63c4cd27ecd73df769b834eeda2645f6567beea6b7ed44aaf0300000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010001397d906d62832c455f701b9f81267a1687e52210986d4e943b3f440d7d000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000f1d9ad80b5eb80ad14232d7438b1c09314dda76f296eca922da87dbfcc000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009ad8e522bb120c5f52d2236035edeb0a4259b89c3429c5ece7d1dc50286000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1066c916b985495ac9e671ae6930e373e9b5074499c7f6014c439a04a000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005b3e7150f7f6daac7cc9a46522f5ad593f9a3e3f0573282b41f86acf16000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000", "signature": "0x", "factoryDeps": [], @@ -54,25 +49,13 @@ "facetCuts": [ { "facet": "0x0000000000000000000000000000000000000000", - "selectors": [ - "0x0c4dd810", - "0xce9dcf16", - "0x7739cbe7", - "0xa9a2d18a" - ], + "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], "action": 2, "isFreezable": false }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": [ - "0x6c0960f9", - "0xb473318e", - "0x042901c7", - "0x263b7f8e", - "0xe4948f43", - "0xeb672419" - ], + "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], "action": 2, "isFreezable": false }, @@ -206,37 +189,19 @@ }, { "facet": "0x5349E94435Cc9Cab9FfB40A492DA46935052733A", - "selectors": [ - "0x6c0960f9", - "0xb473318e", - "0x042901c7", - "0x263b7f8e", - "0xe4948f43", - "0xeb672419" - ], + "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], "action": 0, "isFreezable": true }, { "facet": "0xB54f822966FD4940b6fb465AC67075e5119094C3", - "selectors": [ - "0x0c4dd810", - "0xce9dcf16", - "0x7739cbe7", - "0xa9a2d18a" - ], + "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], "action": 0, "isFreezable": true }, { "facet": "0x2E64926BE35412f7710A3E097Ba076740bF97CC0", - "selectors": [ - "0xe58bb639", - "0xf235757f", - "0x1cc5d103", - "0xbe6f11cf", - "0x4623c91d" - ], + "selectors": ["0xe58bb639", "0xf235757f", "0x1cc5d103", "0xbe6f11cf", "0x4623c91d"], "action": 0, "isFreezable": true } @@ -245,4 +210,4 @@ "initCalldata": "0x1ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000f80010007af2271352ac99f97670a7d6999ae63b53f4e9480a957091d8848a46c610100067d592a040e8914eda295f3521561d64b1a4c1b9e6dbd2933093102febf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa00000000000000000000000000000000000000000000000000000000000000fc00000000000000000000000000000000000000000000000000000000064e35670000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fe0000000000000000000000000000000000000000000000000000000000008007000000000000000000000000000000000000000000000000000000000000800600000000000000000000000000000000000000000000000000000000044aa2000000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000d600000000000000000000000000000000000000000000000000000000000000d800000000000000000000000000000000000000000000000000000000000000da00000000000000000000000000000000000000000000000000000000000000dc00000000000000000000000000000000000000000000000000000000000000ac4e9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c001000091af8506f97c5a2b2ff4edf06ba1bfd2ec2304056fb9987ce71797010500000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f78c4022788ff0deb6c282f93df2b209d3c819999c3384498f1fec9b400000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fa5c8a47d82ec783ad7cdefd382f5b031e7ef0754fcf242ccb4c65fd300000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475561147799af163bef4d19262be10ed2d4a8977f793a195cd077e83d00000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c17cd3ee506e5156f76afda69c905dfdc22578bec37609a1693bba4fdc00000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100007562a15173ca081ddb179bb321500997ba6b43b15cf601cdf266af1cdb00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000711288f63c4cd27ecd73df769b834eeda2645f6567beea6b7ed44aaf0300000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010001397d906d62832c455f701b9f81267a1687e52210986d4e943b3f440d7d000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000f1d9ad80b5eb80ad14232d7438b1c09314dda76f296eca922da87dbfcc000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009ad8e522bb120c5f52d2236035edeb0a4259b89c3429c5ece7d1dc50286000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1066c916b985495ac9e671ae6930e373e9b5074499c7f6014c439a04a000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005b3e7150f7f6daac7cc9a46522f5ad593f9a3e3f0573282b41f86acf16000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, "executeUpgradeCalldata": "0x36d4eb8400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000070eedd750ce140c6320a721d3e6ff62c80e29db800000000000000000000000000000000000000000000000000000000000016c0000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000026000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000005a000000000000000000000000000000000000000000000000000000000000007400000000000000000000000000000000000000000000000000000000000000be00000000000000000000000000000000000000000000000000000000000000d80000000000000000000000000000000000000000000000000000000000000128000000000000000000000000000000000000000000000000000000000000013e00000000000000000000000000000000000000000000000000000000000001500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000040c4dd81000000000000000000000000000000000000000000000000000000000ce9dcf16000000000000000000000000000000000000000000000000000000007739cbe700000000000000000000000000000000000000000000000000000000a9a2d18a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000066c0960f900000000000000000000000000000000000000000000000000000000b473318e00000000000000000000000000000000000000000000000000000000042901c700000000000000000000000000000000000000000000000000000000263b7f8e00000000000000000000000000000000000000000000000000000000e4948f4300000000000000000000000000000000000000000000000000000000eb672419000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000ae58bb63900000000000000000000000000000000000000000000000000000000ed6d06c00000000000000000000000000000000000000000000000000000000086cb9909000000000000000000000000000000000000000000000000000000000707ac0900000000000000000000000000000000000000000000000000000000f235757f000000000000000000000000000000000000000000000000000000001cc5d10300000000000000000000000000000000000000000000000000000000be6f11cf000000000000000000000000000000000000000000000000000000004623c91d000000000000000000000000000000000000000000000000000000005437988d000000000000000000000000000000000000000000000000000000000b508883000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000873fb92970000000000000000000000000000000000000000000000000000000036d4eb840000000000000000000000000000000000000000000000000000000027ae4c16000000000000000000000000000000000000000000000000000000000551448c000000000000000000000000000000000000000000000000000000008043760a00000000000000000000000000000000000000000000000000000000beda4b12000000000000000000000000000000000000000000000000000000001733894500000000000000000000000000000000000000000000000000000000587809c70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000020cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed62700000000000000000000000000000000000000000000000000000000a7cd63b700000000000000000000000000000000000000000000000000000000fe10226d0000000000000000000000000000000000000000000000000000000079823c9a000000000000000000000000000000000000000000000000000000004fc07d7500000000000000000000000000000000000000000000000000000000d86970d800000000000000000000000000000000000000000000000000000000fd791f3c000000000000000000000000000000000000000000000000000000008665b15000000000000000000000000000000000000000000000000000000000631f4bac000000000000000000000000000000000000000000000000000000000ec6b0b7000000000000000000000000000000000000000000000000000000001b60e62600000000000000000000000000000000000000000000000000000000e39d3bff000000000000000000000000000000000000000000000000000000000ef240a000000000000000000000000000000000000000000000000000000000fe26699e000000000000000000000000000000000000000000000000000000003960738200000000000000000000000000000000000000000000000000000000af6a2dcd00000000000000000000000000000000000000000000000000000000a1954fc500000000000000000000000000000000000000000000000000000000a39980a00000000000000000000000000000000000000000000000000000000046657fe90000000000000000000000000000000000000000000000000000000018e3a941000000000000000000000000000000000000000000000000000000003db920ce0000000000000000000000000000000000000000000000000000000029b98c6700000000000000000000000000000000000000000000000000000000bd7c541200000000000000000000000000000000000000000000000000000000c3bbd2d700000000000000000000000000000000000000000000000000000000e81e0ba100000000000000000000000000000000000000000000000000000000facd743b000000000000000000000000000000000000000000000000000000009cd939e40000000000000000000000000000000000000000000000000000000056142d7a0000000000000000000000000000000000000000000000000000000074f4d30d00000000000000000000000000000000000000000000000000000000000000000000000000000000c6f7e57c6e1e20468d869fe33675524e243cd6a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000873fb92970000000000000000000000000000000000000000000000000000000036d4eb840000000000000000000000000000000000000000000000000000000027ae4c16000000000000000000000000000000000000000000000000000000000551448c000000000000000000000000000000000000000000000000000000008043760a00000000000000000000000000000000000000000000000000000000beda4b12000000000000000000000000000000000000000000000000000000001733894500000000000000000000000000000000000000000000000000000000587809c7000000000000000000000000000000000000000000000000000000000000000000000000000000007444de636699f080ca1c033528d2bb3705b391ce0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000023cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed62700000000000000000000000000000000000000000000000000000000a7cd63b700000000000000000000000000000000000000000000000000000000fe10226d0000000000000000000000000000000000000000000000000000000079823c9a000000000000000000000000000000000000000000000000000000004fc07d7500000000000000000000000000000000000000000000000000000000d86970d800000000000000000000000000000000000000000000000000000000fd791f3c000000000000000000000000000000000000000000000000000000009d1b5a81000000000000000000000000000000000000000000000000000000007b30c8da000000000000000000000000000000000000000000000000000000008665b15000000000000000000000000000000000000000000000000000000000631f4bac000000000000000000000000000000000000000000000000000000000ec6b0b7000000000000000000000000000000000000000000000000000000001b60e62600000000000000000000000000000000000000000000000000000000e39d3bff0000000000000000000000000000000000000000000000000000000033ce93fe000000000000000000000000000000000000000000000000000000000ef240a000000000000000000000000000000000000000000000000000000000fe26699e000000000000000000000000000000000000000000000000000000003960738200000000000000000000000000000000000000000000000000000000af6a2dcd00000000000000000000000000000000000000000000000000000000a1954fc500000000000000000000000000000000000000000000000000000000a39980a00000000000000000000000000000000000000000000000000000000046657fe90000000000000000000000000000000000000000000000000000000018e3a941000000000000000000000000000000000000000000000000000000003db920ce0000000000000000000000000000000000000000000000000000000029b98c6700000000000000000000000000000000000000000000000000000000bd7c541200000000000000000000000000000000000000000000000000000000c3bbd2d700000000000000000000000000000000000000000000000000000000e81e0ba100000000000000000000000000000000000000000000000000000000facd743b000000000000000000000000000000000000000000000000000000009cd939e40000000000000000000000000000000000000000000000000000000056142d7a0000000000000000000000000000000000000000000000000000000074f4d30d000000000000000000000000000000000000000000000000000000000000000000000000000000005349e94435cc9cab9ffb40a492da46935052733a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000066c0960f900000000000000000000000000000000000000000000000000000000b473318e00000000000000000000000000000000000000000000000000000000042901c700000000000000000000000000000000000000000000000000000000263b7f8e00000000000000000000000000000000000000000000000000000000e4948f4300000000000000000000000000000000000000000000000000000000eb67241900000000000000000000000000000000000000000000000000000000000000000000000000000000b54f822966fd4940b6fb465ac67075e5119094c300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000040c4dd81000000000000000000000000000000000000000000000000000000000ce9dcf16000000000000000000000000000000000000000000000000000000007739cbe700000000000000000000000000000000000000000000000000000000a9a2d18a000000000000000000000000000000000000000000000000000000000000000000000000000000002e64926be35412f7710a3e097ba076740bf97cc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000005e58bb63900000000000000000000000000000000000000000000000000000000f235757f000000000000000000000000000000000000000000000000000000001cc5d10300000000000000000000000000000000000000000000000000000000be6f11cf000000000000000000000000000000000000000000000000000000004623c91d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010041ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000f80010007af2271352ac99f97670a7d6999ae63b53f4e9480a957091d8848a46c610100067d592a040e8914eda295f3521561d64b1a4c1b9e6dbd2933093102febf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa00000000000000000000000000000000000000000000000000000000000000fc00000000000000000000000000000000000000000000000000000000064e35670000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fe0000000000000000000000000000000000000000000000000000000000008007000000000000000000000000000000000000000000000000000000000000800600000000000000000000000000000000000000000000000000000000044aa2000000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000d600000000000000000000000000000000000000000000000000000000000000d800000000000000000000000000000000000000000000000000000000000000da00000000000000000000000000000000000000000000000000000000000000dc00000000000000000000000000000000000000000000000000000000000000ac4e9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c001000091af8506f97c5a2b2ff4edf06ba1bfd2ec2304056fb9987ce71797010500000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f78c4022788ff0deb6c282f93df2b209d3c819999c3384498f1fec9b400000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fa5c8a47d82ec783ad7cdefd382f5b031e7ef0754fcf242ccb4c65fd300000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475561147799af163bef4d19262be10ed2d4a8977f793a195cd077e83d00000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c17cd3ee506e5156f76afda69c905dfdc22578bec37609a1693bba4fdc00000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100007562a15173ca081ddb179bb321500997ba6b43b15cf601cdf266af1cdb00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000711288f63c4cd27ecd73df769b834eeda2645f6567beea6b7ed44aaf0300000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010001397d906d62832c455f701b9f81267a1687e52210986d4e943b3f440d7d000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000f1d9ad80b5eb80ad14232d7438b1c09314dda76f296eca922da87dbfcc000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009ad8e522bb120c5f52d2236035edeb0a4259b89c3429c5ece7d1dc50286000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1066c916b985495ac9e671ae6930e373e9b5074499c7f6014c439a04a000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005b3e7150f7f6daac7cc9a46522f5ad593f9a3e3f0573282b41f86acf16000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" -} \ No newline at end of file +} diff --git a/etc/upgrades/1693318788-virtual-block-timestamp/common.json b/etc/upgrades/1693318788-virtual-block-timestamp/common.json index c2da970debe..1da04cec70b 100644 --- a/etc/upgrades/1693318788-virtual-block-timestamp/common.json +++ b/etc/upgrades/1693318788-virtual-block-timestamp/common.json @@ -2,4 +2,4 @@ "name": "virtual-block-timestamp", "creationTimestamp": 1693318788, "protocolVersion": "13" -} \ No newline at end of file +} diff --git a/etc/upgrades/1693318788-virtual-block-timestamp/stage2/facetCuts.json b/etc/upgrades/1693318788-virtual-block-timestamp/stage2/facetCuts.json index 4dca4e604b2..02f3a8bf31e 100644 --- a/etc/upgrades/1693318788-virtual-block-timestamp/stage2/facetCuts.json +++ b/etc/upgrades/1693318788-virtual-block-timestamp/stage2/facetCuts.json @@ -58,37 +58,19 @@ }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": [ - "0x6c0960f9", - "0xb473318e", - "0x042901c7", - "0x263b7f8e", - "0xe4948f43", - "0xeb672419" - ], + "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], "action": 2, "isFreezable": false }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": [ - "0x0c4dd810", - "0xce9dcf16", - "0x7739cbe7", - "0xa9a2d18a" - ], + "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], "action": 2, "isFreezable": false }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": [ - "0xe58bb639", - "0xf235757f", - "0x1cc5d103", - "0xbe6f11cf", - "0x4623c91d" - ], + "selectors": ["0xe58bb639", "0xf235757f", "0x1cc5d103", "0xbe6f11cf", "0x4623c91d"], "action": 2, "isFreezable": false }, @@ -151,38 +133,20 @@ }, { "facet": "0x0aE41F9fc8A83FBC6062bA956224AB86fA6D1507", - "selectors": [ - "0x6c0960f9", - "0xb473318e", - "0x042901c7", - "0x263b7f8e", - "0xe4948f43", - "0xeb672419" - ], + "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], "action": 0, "isFreezable": true }, { "facet": "0x69b8cdA4c8E66A0b51Fc82834458e087039dB2Ab", - "selectors": [ - "0x0c4dd810", - "0xce9dcf16", - "0x7739cbe7", - "0xa9a2d18a" - ], + "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], "action": 0, "isFreezable": true }, { "facet": "0x2E64926BE35412f7710A3E097Ba076740bF97CC0", - "selectors": [ - "0xe58bb639", - "0xf235757f", - "0x1cc5d103", - "0xbe6f11cf", - "0x4623c91d" - ], + "selectors": ["0xe58bb639", "0xf235757f", "0x1cc5d103", "0xbe6f11cf", "0x4623c91d"], "action": 0, "isFreezable": true } -] \ No newline at end of file +] diff --git a/etc/upgrades/1693318788-virtual-block-timestamp/stage2/facets.json b/etc/upgrades/1693318788-virtual-block-timestamp/stage2/facets.json index 8825c24c582..bd5107c9f0d 100644 --- a/etc/upgrades/1693318788-virtual-block-timestamp/stage2/facets.json +++ b/etc/upgrades/1693318788-virtual-block-timestamp/stage2/facets.json @@ -19,4 +19,4 @@ "address": "0x0aE41F9fc8A83FBC6062bA956224AB86fA6D1507", "txHash": "0x670ec0ed30ecb0950c54321bc06ad9d98cd063eef282d17253446f248978691f" } -} \ No newline at end of file +} diff --git a/etc/upgrades/1693318788-virtual-block-timestamp/stage2/l2Upgrade.json b/etc/upgrades/1693318788-virtual-block-timestamp/stage2/l2Upgrade.json index 33bc8587bbb..188adf7ddc3 100644 --- a/etc/upgrades/1693318788-virtual-block-timestamp/stage2/l2Upgrade.json +++ b/etc/upgrades/1693318788-virtual-block-timestamp/stage2/l2Upgrade.json @@ -2,100 +2,72 @@ "systemContracts": [ { "name": "AccountCodeStorage", - "bytecodeHashes": [ - "0x010000911c610c6e91d050e608ac4f5db8b08c33bb032a57f70899cdd250a75e" - ], + "bytecodeHashes": ["0x010000911c610c6e91d050e608ac4f5db8b08c33bb032a57f70899cdd250a75e"], "address": "0x0000000000000000000000000000000000008002" }, { "name": "NonceHolder", - "bytecodeHashes": [ - "0x0100012f42627ab0dd09d78d8a25f459e3b3caf2126668fdfc19887eb5cbf4de" - ], + "bytecodeHashes": ["0x0100012f42627ab0dd09d78d8a25f459e3b3caf2126668fdfc19887eb5cbf4de"], "address": "0x0000000000000000000000000000000000008003" }, { "name": "KnownCodesStorage", - "bytecodeHashes": [ - "0x0100008fd05a39ae3ccc0c081732b2c09b783810773a66d6429cfb03d813a692" - ], + "bytecodeHashes": ["0x0100008fd05a39ae3ccc0c081732b2c09b783810773a66d6429cfb03d813a692"], "address": "0x0000000000000000000000000000000000008004" }, { "name": "ImmutableSimulator", - "bytecodeHashes": [ - "0x010000475ebeaf64663ebad3ab3fd14b6e985f576c816a66f84bda5a18253107" - ], + "bytecodeHashes": ["0x010000475ebeaf64663ebad3ab3fd14b6e985f576c816a66f84bda5a18253107"], "address": "0x0000000000000000000000000000000000008005" }, { "name": "ContractDeployer", - "bytecodeHashes": [ - "0x010005c1731dded081c794319523b82102fd09237011e23e0dda219b1a814799" - ], + "bytecodeHashes": ["0x010005c1731dded081c794319523b82102fd09237011e23e0dda219b1a814799"], "address": "0x0000000000000000000000000000000000008006" }, { "name": "L1Messenger", - "bytecodeHashes": [ - "0x01000075efc5d3c37f1861e7c9f7f12c5c71f7b98c8e96bc1ae750441942911a" - ], + "bytecodeHashes": ["0x01000075efc5d3c37f1861e7c9f7f12c5c71f7b98c8e96bc1ae750441942911a"], "address": "0x0000000000000000000000000000000000008008" }, { "name": "MsgValueSimulator", - "bytecodeHashes": [ - "0x01000071fb47c4855b3cee15acfc19af66272afb61ae2196cdf8f0af81316c22" - ], + "bytecodeHashes": ["0x01000071fb47c4855b3cee15acfc19af66272afb61ae2196cdf8f0af81316c22"], "address": "0x0000000000000000000000000000000000008009" }, { "name": "L2EthToken", - "bytecodeHashes": [ - "0x01000139d95a414e7910bb755fecc60531a8c7ba6cc49c2fbd763df8541e4fae" - ], + "bytecodeHashes": ["0x01000139d95a414e7910bb755fecc60531a8c7ba6cc49c2fbd763df8541e4fae"], "address": "0x000000000000000000000000000000000000800a" }, { "name": "SystemContext", - "bytecodeHashes": [ - "0x0100021f8bc6a6311dc169f267fafb32fa14724539b5488a9c62788b158e8fcd" - ], + "bytecodeHashes": ["0x0100021f8bc6a6311dc169f267fafb32fa14724539b5488a9c62788b158e8fcd"], "address": "0x000000000000000000000000000000000000800b" }, { "name": "BootloaderUtilities", - "bytecodeHashes": [ - "0x010009adf7ebf8227ee5d057438bf502d132ed4c7017255f16f691286f3dd7b3" - ], + "bytecodeHashes": ["0x010009adf7ebf8227ee5d057438bf502d132ed4c7017255f16f691286f3dd7b3"], "address": "0x000000000000000000000000000000000000800c" }, { "name": "BytecodeCompressor", - "bytecodeHashes": [ - "0x010000e1073ab7b4226bb86ca2746fbf1ecb305e23c61240b900c4e0ea161a99" - ], + "bytecodeHashes": ["0x010000e1073ab7b4226bb86ca2746fbf1ecb305e23c61240b900c4e0ea161a99"], "address": "0x000000000000000000000000000000000000800e" }, { "name": "ComplexUpgrader", - "bytecodeHashes": [ - "0x0100005bc7e5e9f6718a7a59ba32849b08a12d957bcf517cb6ba68faf03983ba" - ], + "bytecodeHashes": ["0x0100005bc7e5e9f6718a7a59ba32849b08a12d957bcf517cb6ba68faf03983ba"], "address": "0x000000000000000000000000000000000000800f" } ], "defaultAA": { "name": "DefaultAccount", - "bytecodeHashes": [ - "0x0100067d16a5485875b4249040bf421f53e869337fe118ec747cf40a4c777e5f" - ] + "bytecodeHashes": ["0x0100067d16a5485875b4249040bf421f53e869337fe118ec747cf40a4c777e5f"] }, "bootloader": { "name": "Bootloader", - "bytecodeHashes": [ - "0x0100089b29c64a520d9033da5a4f80c6f74132cbd44142c6afc5913c26f0487d" - ] + "bytecodeHashes": ["0x0100089b29c64a520d9033da5a4f80c6f74132cbd44142c6afc5913c26f0487d"] }, "forcedDeployments": [ { @@ -196,16 +168,11 @@ "paymaster": 0, "nonce": "13", "value": 0, - "reserved": [ - 0, - 0, - 0, - 0 - ], + "reserved": [0, 0, 0, 0], "data": "0xe9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c0010000911c610c6e91d050e608ac4f5db8b08c33bb032a57f70899cdd250a75e00000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f42627ab0dd09d78d8a25f459e3b3caf2126668fdfc19887eb5cbf4de00000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fd05a39ae3ccc0c081732b2c09b783810773a66d6429cfb03d813a69200000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475ebeaf64663ebad3ab3fd14b6e985f576c816a66f84bda5a1825310700000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c1731dded081c794319523b82102fd09237011e23e0dda219b1a81479900000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000075efc5d3c37f1861e7c9f7f12c5c71f7b98c8e96bc1ae750441942911a00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000071fb47c4855b3cee15acfc19af66272afb61ae2196cdf8f0af81316c2200000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000139d95a414e7910bb755fecc60531a8c7ba6cc49c2fbd763df8541e4fae000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100021f8bc6a6311dc169f267fafb32fa14724539b5488a9c62788b158e8fcd000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009adf7ebf8227ee5d057438bf502d132ed4c7017255f16f691286f3dd7b3000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1073ab7b4226bb86ca2746fbf1ecb305e23c61240b900c4e0ea161a99000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005bc7e5e9f6718a7a59ba32849b08a12d957bcf517cb6ba68faf03983ba000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000", "signature": "0x", "factoryDeps": [], "paymasterInput": "0x", "reservedDynamic": "0x" } -} \ No newline at end of file +} diff --git a/etc/upgrades/1693318788-virtual-block-timestamp/stage2/transactions.json b/etc/upgrades/1693318788-virtual-block-timestamp/stage2/transactions.json index 0e954c5c1d9..b1d32391be9 100644 --- a/etc/upgrades/1693318788-virtual-block-timestamp/stage2/transactions.json +++ b/etc/upgrades/1693318788-virtual-block-timestamp/stage2/transactions.json @@ -11,12 +11,7 @@ "paymaster": 0, "nonce": "13", "value": 0, - "reserved": [ - 0, - 0, - 0, - 0 - ], + "reserved": [0, 0, 0, 0], "data": "0xe9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c0010000911c610c6e91d050e608ac4f5db8b08c33bb032a57f70899cdd250a75e00000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f42627ab0dd09d78d8a25f459e3b3caf2126668fdfc19887eb5cbf4de00000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fd05a39ae3ccc0c081732b2c09b783810773a66d6429cfb03d813a69200000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475ebeaf64663ebad3ab3fd14b6e985f576c816a66f84bda5a1825310700000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c1731dded081c794319523b82102fd09237011e23e0dda219b1a81479900000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000075efc5d3c37f1861e7c9f7f12c5c71f7b98c8e96bc1ae750441942911a00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000071fb47c4855b3cee15acfc19af66272afb61ae2196cdf8f0af81316c2200000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000139d95a414e7910bb755fecc60531a8c7ba6cc49c2fbd763df8541e4fae000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100021f8bc6a6311dc169f267fafb32fa14724539b5488a9c62788b158e8fcd000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009adf7ebf8227ee5d057438bf502d132ed4c7017255f16f691286f3dd7b3000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1073ab7b4226bb86ca2746fbf1ecb305e23c61240b900c4e0ea161a99000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005bc7e5e9f6718a7a59ba32849b08a12d957bcf517cb6ba68faf03983ba000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000", "signature": "0x", "factoryDeps": [], @@ -111,37 +106,19 @@ }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": [ - "0x6c0960f9", - "0xb473318e", - "0x042901c7", - "0x263b7f8e", - "0xe4948f43", - "0xeb672419" - ], + "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], "action": 2, "isFreezable": false }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": [ - "0x0c4dd810", - "0xce9dcf16", - "0x7739cbe7", - "0xa9a2d18a" - ], + "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], "action": 2, "isFreezable": false }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": [ - "0xe58bb639", - "0xf235757f", - "0x1cc5d103", - "0xbe6f11cf", - "0x4623c91d" - ], + "selectors": ["0xe58bb639", "0xf235757f", "0x1cc5d103", "0xbe6f11cf", "0x4623c91d"], "action": 2, "isFreezable": false }, @@ -204,37 +181,19 @@ }, { "facet": "0x0aE41F9fc8A83FBC6062bA956224AB86fA6D1507", - "selectors": [ - "0x6c0960f9", - "0xb473318e", - "0x042901c7", - "0x263b7f8e", - "0xe4948f43", - "0xeb672419" - ], + "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], "action": 0, "isFreezable": true }, { "facet": "0x69b8cdA4c8E66A0b51Fc82834458e087039dB2Ab", - "selectors": [ - "0x0c4dd810", - "0xce9dcf16", - "0x7739cbe7", - "0xa9a2d18a" - ], + "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], "action": 0, "isFreezable": true }, { "facet": "0x2E64926BE35412f7710A3E097Ba076740bF97CC0", - "selectors": [ - "0xe58bb639", - "0xf235757f", - "0x1cc5d103", - "0xbe6f11cf", - "0x4623c91d" - ], + "selectors": ["0xe58bb639", "0xf235757f", "0x1cc5d103", "0xbe6f11cf", "0x4623c91d"], "action": 0, "isFreezable": true } @@ -243,4 +202,4 @@ "initCalldata": "0x1ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000f800100089b29c64a520d9033da5a4f80c6f74132cbd44142c6afc5913c26f0487d0100067d16a5485875b4249040bf421f53e869337fe118ec747cf40a4c777e5f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa00000000000000000000000000000000000000000000000000000000000000fc00000000000000000000000000000000000000000000000000000000064ef2a90000000000000000000000000000000000000000000000000000000000000000d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fe0000000000000000000000000000000000000000000000000000000000008007000000000000000000000000000000000000000000000000000000000000800600000000000000000000000000000000000000000000000000000000044aa2000000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000d600000000000000000000000000000000000000000000000000000000000000d800000000000000000000000000000000000000000000000000000000000000da00000000000000000000000000000000000000000000000000000000000000dc00000000000000000000000000000000000000000000000000000000000000ac4e9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c0010000911c610c6e91d050e608ac4f5db8b08c33bb032a57f70899cdd250a75e00000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f42627ab0dd09d78d8a25f459e3b3caf2126668fdfc19887eb5cbf4de00000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fd05a39ae3ccc0c081732b2c09b783810773a66d6429cfb03d813a69200000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475ebeaf64663ebad3ab3fd14b6e985f576c816a66f84bda5a1825310700000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c1731dded081c794319523b82102fd09237011e23e0dda219b1a81479900000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000075efc5d3c37f1861e7c9f7f12c5c71f7b98c8e96bc1ae750441942911a00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000071fb47c4855b3cee15acfc19af66272afb61ae2196cdf8f0af81316c2200000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000139d95a414e7910bb755fecc60531a8c7ba6cc49c2fbd763df8541e4fae000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100021f8bc6a6311dc169f267fafb32fa14724539b5488a9c62788b158e8fcd000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009adf7ebf8227ee5d057438bf502d132ed4c7017255f16f691286f3dd7b3000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1073ab7b4226bb86ca2746fbf1ecb305e23c61240b900c4e0ea161a99000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005bc7e5e9f6718a7a59ba32849b08a12d957bcf517cb6ba68faf03983ba000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, "executeUpgradeCalldata": "0x36d4eb84000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000db876240f01a6dd38f5efc4ecefe52e5c13db3c70000000000000000000000000000000000000000000000000000000000001680000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000009400000000000000000000000000000000000000000000000000000000000000a600000000000000000000000000000000000000000000000000000000000000ba00000000000000000000000000000000000000000000000000000000000000d40000000000000000000000000000000000000000000000000000000000000124000000000000000000000000000000000000000000000000000000000000013a000000000000000000000000000000000000000000000000000000000000014c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000873fb92970000000000000000000000000000000000000000000000000000000036d4eb840000000000000000000000000000000000000000000000000000000027ae4c16000000000000000000000000000000000000000000000000000000000551448c000000000000000000000000000000000000000000000000000000008043760a00000000000000000000000000000000000000000000000000000000beda4b12000000000000000000000000000000000000000000000000000000001733894500000000000000000000000000000000000000000000000000000000587809c70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000023cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed62700000000000000000000000000000000000000000000000000000000a7cd63b700000000000000000000000000000000000000000000000000000000fe10226d0000000000000000000000000000000000000000000000000000000079823c9a000000000000000000000000000000000000000000000000000000004fc07d7500000000000000000000000000000000000000000000000000000000d86970d800000000000000000000000000000000000000000000000000000000fd791f3c000000000000000000000000000000000000000000000000000000009d1b5a81000000000000000000000000000000000000000000000000000000007b30c8da000000000000000000000000000000000000000000000000000000008665b15000000000000000000000000000000000000000000000000000000000631f4bac000000000000000000000000000000000000000000000000000000000ec6b0b7000000000000000000000000000000000000000000000000000000001b60e62600000000000000000000000000000000000000000000000000000000e39d3bff0000000000000000000000000000000000000000000000000000000033ce93fe000000000000000000000000000000000000000000000000000000000ef240a000000000000000000000000000000000000000000000000000000000fe26699e000000000000000000000000000000000000000000000000000000003960738200000000000000000000000000000000000000000000000000000000af6a2dcd00000000000000000000000000000000000000000000000000000000a1954fc500000000000000000000000000000000000000000000000000000000a39980a00000000000000000000000000000000000000000000000000000000046657fe90000000000000000000000000000000000000000000000000000000018e3a941000000000000000000000000000000000000000000000000000000003db920ce0000000000000000000000000000000000000000000000000000000029b98c6700000000000000000000000000000000000000000000000000000000bd7c541200000000000000000000000000000000000000000000000000000000c3bbd2d700000000000000000000000000000000000000000000000000000000e81e0ba100000000000000000000000000000000000000000000000000000000facd743b000000000000000000000000000000000000000000000000000000009cd939e40000000000000000000000000000000000000000000000000000000056142d7a0000000000000000000000000000000000000000000000000000000074f4d30d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000066c0960f900000000000000000000000000000000000000000000000000000000b473318e00000000000000000000000000000000000000000000000000000000042901c700000000000000000000000000000000000000000000000000000000263b7f8e00000000000000000000000000000000000000000000000000000000e4948f4300000000000000000000000000000000000000000000000000000000eb67241900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000040c4dd81000000000000000000000000000000000000000000000000000000000ce9dcf16000000000000000000000000000000000000000000000000000000007739cbe700000000000000000000000000000000000000000000000000000000a9a2d18a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000005e58bb63900000000000000000000000000000000000000000000000000000000f235757f000000000000000000000000000000000000000000000000000000001cc5d10300000000000000000000000000000000000000000000000000000000be6f11cf000000000000000000000000000000000000000000000000000000004623c91d00000000000000000000000000000000000000000000000000000000000000000000000000000000dc7c3d03845efe2c4a9e758a70a68ba6bba9fac4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000873fb92970000000000000000000000000000000000000000000000000000000036d4eb840000000000000000000000000000000000000000000000000000000027ae4c16000000000000000000000000000000000000000000000000000000000551448c000000000000000000000000000000000000000000000000000000008043760a00000000000000000000000000000000000000000000000000000000beda4b12000000000000000000000000000000000000000000000000000000001733894500000000000000000000000000000000000000000000000000000000587809c7000000000000000000000000000000000000000000000000000000000000000000000000000000007444de636699f080ca1c033528d2bb3705b391ce0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000023cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed62700000000000000000000000000000000000000000000000000000000a7cd63b700000000000000000000000000000000000000000000000000000000fe10226d0000000000000000000000000000000000000000000000000000000079823c9a000000000000000000000000000000000000000000000000000000004fc07d7500000000000000000000000000000000000000000000000000000000d86970d800000000000000000000000000000000000000000000000000000000fd791f3c000000000000000000000000000000000000000000000000000000009d1b5a81000000000000000000000000000000000000000000000000000000007b30c8da000000000000000000000000000000000000000000000000000000008665b15000000000000000000000000000000000000000000000000000000000631f4bac000000000000000000000000000000000000000000000000000000000ec6b0b7000000000000000000000000000000000000000000000000000000001b60e62600000000000000000000000000000000000000000000000000000000e39d3bff0000000000000000000000000000000000000000000000000000000033ce93fe000000000000000000000000000000000000000000000000000000000ef240a000000000000000000000000000000000000000000000000000000000fe26699e000000000000000000000000000000000000000000000000000000003960738200000000000000000000000000000000000000000000000000000000af6a2dcd00000000000000000000000000000000000000000000000000000000a1954fc500000000000000000000000000000000000000000000000000000000a39980a00000000000000000000000000000000000000000000000000000000046657fe90000000000000000000000000000000000000000000000000000000018e3a941000000000000000000000000000000000000000000000000000000003db920ce0000000000000000000000000000000000000000000000000000000029b98c6700000000000000000000000000000000000000000000000000000000bd7c541200000000000000000000000000000000000000000000000000000000c3bbd2d700000000000000000000000000000000000000000000000000000000e81e0ba100000000000000000000000000000000000000000000000000000000facd743b000000000000000000000000000000000000000000000000000000009cd939e40000000000000000000000000000000000000000000000000000000056142d7a0000000000000000000000000000000000000000000000000000000074f4d30d000000000000000000000000000000000000000000000000000000000000000000000000000000000ae41f9fc8a83fbc6062ba956224ab86fa6d150700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000066c0960f900000000000000000000000000000000000000000000000000000000b473318e00000000000000000000000000000000000000000000000000000000042901c700000000000000000000000000000000000000000000000000000000263b7f8e00000000000000000000000000000000000000000000000000000000e4948f4300000000000000000000000000000000000000000000000000000000eb6724190000000000000000000000000000000000000000000000000000000000000000000000000000000069b8cda4c8e66a0b51fc82834458e087039db2ab00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000040c4dd81000000000000000000000000000000000000000000000000000000000ce9dcf16000000000000000000000000000000000000000000000000000000007739cbe700000000000000000000000000000000000000000000000000000000a9a2d18a000000000000000000000000000000000000000000000000000000000000000000000000000000002e64926be35412f7710a3e097ba076740bf97cc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000005e58bb63900000000000000000000000000000000000000000000000000000000f235757f000000000000000000000000000000000000000000000000000000001cc5d10300000000000000000000000000000000000000000000000000000000be6f11cf000000000000000000000000000000000000000000000000000000004623c91d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010041ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000f800100089b29c64a520d9033da5a4f80c6f74132cbd44142c6afc5913c26f0487d0100067d16a5485875b4249040bf421f53e869337fe118ec747cf40a4c777e5f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa00000000000000000000000000000000000000000000000000000000000000fc00000000000000000000000000000000000000000000000000000000064ef2a90000000000000000000000000000000000000000000000000000000000000000d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fe0000000000000000000000000000000000000000000000000000000000008007000000000000000000000000000000000000000000000000000000000000800600000000000000000000000000000000000000000000000000000000044aa2000000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000d600000000000000000000000000000000000000000000000000000000000000d800000000000000000000000000000000000000000000000000000000000000da00000000000000000000000000000000000000000000000000000000000000dc00000000000000000000000000000000000000000000000000000000000000ac4e9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c0010000911c610c6e91d050e608ac4f5db8b08c33bb032a57f70899cdd250a75e00000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f42627ab0dd09d78d8a25f459e3b3caf2126668fdfc19887eb5cbf4de00000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fd05a39ae3ccc0c081732b2c09b783810773a66d6429cfb03d813a69200000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475ebeaf64663ebad3ab3fd14b6e985f576c816a66f84bda5a1825310700000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c1731dded081c794319523b82102fd09237011e23e0dda219b1a81479900000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000075efc5d3c37f1861e7c9f7f12c5c71f7b98c8e96bc1ae750441942911a00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000071fb47c4855b3cee15acfc19af66272afb61ae2196cdf8f0af81316c2200000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000139d95a414e7910bb755fecc60531a8c7ba6cc49c2fbd763df8541e4fae000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100021f8bc6a6311dc169f267fafb32fa14724539b5488a9c62788b158e8fcd000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009adf7ebf8227ee5d057438bf502d132ed4c7017255f16f691286f3dd7b3000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1073ab7b4226bb86ca2746fbf1ecb305e23c61240b900c4e0ea161a99000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005bc7e5e9f6718a7a59ba32849b08a12d957bcf517cb6ba68faf03983ba000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" -} \ No newline at end of file +} diff --git a/etc/upgrades/1693318788-virtual-block-timestamp/testnet2/facetCuts.json b/etc/upgrades/1693318788-virtual-block-timestamp/testnet2/facetCuts.json index 4dca4e604b2..02f3a8bf31e 100644 --- a/etc/upgrades/1693318788-virtual-block-timestamp/testnet2/facetCuts.json +++ b/etc/upgrades/1693318788-virtual-block-timestamp/testnet2/facetCuts.json @@ -58,37 +58,19 @@ }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": [ - "0x6c0960f9", - "0xb473318e", - "0x042901c7", - "0x263b7f8e", - "0xe4948f43", - "0xeb672419" - ], + "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], "action": 2, "isFreezable": false }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": [ - "0x0c4dd810", - "0xce9dcf16", - "0x7739cbe7", - "0xa9a2d18a" - ], + "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], "action": 2, "isFreezable": false }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": [ - "0xe58bb639", - "0xf235757f", - "0x1cc5d103", - "0xbe6f11cf", - "0x4623c91d" - ], + "selectors": ["0xe58bb639", "0xf235757f", "0x1cc5d103", "0xbe6f11cf", "0x4623c91d"], "action": 2, "isFreezable": false }, @@ -151,38 +133,20 @@ }, { "facet": "0x0aE41F9fc8A83FBC6062bA956224AB86fA6D1507", - "selectors": [ - "0x6c0960f9", - "0xb473318e", - "0x042901c7", - "0x263b7f8e", - "0xe4948f43", - "0xeb672419" - ], + "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], "action": 0, "isFreezable": true }, { "facet": "0x69b8cdA4c8E66A0b51Fc82834458e087039dB2Ab", - "selectors": [ - "0x0c4dd810", - "0xce9dcf16", - "0x7739cbe7", - "0xa9a2d18a" - ], + "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], "action": 0, "isFreezable": true }, { "facet": "0x2E64926BE35412f7710A3E097Ba076740bF97CC0", - "selectors": [ - "0xe58bb639", - "0xf235757f", - "0x1cc5d103", - "0xbe6f11cf", - "0x4623c91d" - ], + "selectors": ["0xe58bb639", "0xf235757f", "0x1cc5d103", "0xbe6f11cf", "0x4623c91d"], "action": 0, "isFreezable": true } -] \ No newline at end of file +] diff --git a/etc/upgrades/1693318788-virtual-block-timestamp/testnet2/facets.json b/etc/upgrades/1693318788-virtual-block-timestamp/testnet2/facets.json index 122b3dfd6e4..7fd669b93fa 100644 --- a/etc/upgrades/1693318788-virtual-block-timestamp/testnet2/facets.json +++ b/etc/upgrades/1693318788-virtual-block-timestamp/testnet2/facets.json @@ -19,4 +19,4 @@ "address": "0x0aE41F9fc8A83FBC6062bA956224AB86fA6D1507", "txHash": "0xf987dc0ee0b50a8003f153c2cff78db56202fac9c1cd6f374760c63f80f17f53" } -} \ No newline at end of file +} diff --git a/etc/upgrades/1693318788-virtual-block-timestamp/testnet2/l2Upgrade.json b/etc/upgrades/1693318788-virtual-block-timestamp/testnet2/l2Upgrade.json index 33bc8587bbb..188adf7ddc3 100644 --- a/etc/upgrades/1693318788-virtual-block-timestamp/testnet2/l2Upgrade.json +++ b/etc/upgrades/1693318788-virtual-block-timestamp/testnet2/l2Upgrade.json @@ -2,100 +2,72 @@ "systemContracts": [ { "name": "AccountCodeStorage", - "bytecodeHashes": [ - "0x010000911c610c6e91d050e608ac4f5db8b08c33bb032a57f70899cdd250a75e" - ], + "bytecodeHashes": ["0x010000911c610c6e91d050e608ac4f5db8b08c33bb032a57f70899cdd250a75e"], "address": "0x0000000000000000000000000000000000008002" }, { "name": "NonceHolder", - "bytecodeHashes": [ - "0x0100012f42627ab0dd09d78d8a25f459e3b3caf2126668fdfc19887eb5cbf4de" - ], + "bytecodeHashes": ["0x0100012f42627ab0dd09d78d8a25f459e3b3caf2126668fdfc19887eb5cbf4de"], "address": "0x0000000000000000000000000000000000008003" }, { "name": "KnownCodesStorage", - "bytecodeHashes": [ - "0x0100008fd05a39ae3ccc0c081732b2c09b783810773a66d6429cfb03d813a692" - ], + "bytecodeHashes": ["0x0100008fd05a39ae3ccc0c081732b2c09b783810773a66d6429cfb03d813a692"], "address": "0x0000000000000000000000000000000000008004" }, { "name": "ImmutableSimulator", - "bytecodeHashes": [ - "0x010000475ebeaf64663ebad3ab3fd14b6e985f576c816a66f84bda5a18253107" - ], + "bytecodeHashes": ["0x010000475ebeaf64663ebad3ab3fd14b6e985f576c816a66f84bda5a18253107"], "address": "0x0000000000000000000000000000000000008005" }, { "name": "ContractDeployer", - "bytecodeHashes": [ - "0x010005c1731dded081c794319523b82102fd09237011e23e0dda219b1a814799" - ], + "bytecodeHashes": ["0x010005c1731dded081c794319523b82102fd09237011e23e0dda219b1a814799"], "address": "0x0000000000000000000000000000000000008006" }, { "name": "L1Messenger", - "bytecodeHashes": [ - "0x01000075efc5d3c37f1861e7c9f7f12c5c71f7b98c8e96bc1ae750441942911a" - ], + "bytecodeHashes": ["0x01000075efc5d3c37f1861e7c9f7f12c5c71f7b98c8e96bc1ae750441942911a"], "address": "0x0000000000000000000000000000000000008008" }, { "name": "MsgValueSimulator", - "bytecodeHashes": [ - "0x01000071fb47c4855b3cee15acfc19af66272afb61ae2196cdf8f0af81316c22" - ], + "bytecodeHashes": ["0x01000071fb47c4855b3cee15acfc19af66272afb61ae2196cdf8f0af81316c22"], "address": "0x0000000000000000000000000000000000008009" }, { "name": "L2EthToken", - "bytecodeHashes": [ - "0x01000139d95a414e7910bb755fecc60531a8c7ba6cc49c2fbd763df8541e4fae" - ], + "bytecodeHashes": ["0x01000139d95a414e7910bb755fecc60531a8c7ba6cc49c2fbd763df8541e4fae"], "address": "0x000000000000000000000000000000000000800a" }, { "name": "SystemContext", - "bytecodeHashes": [ - "0x0100021f8bc6a6311dc169f267fafb32fa14724539b5488a9c62788b158e8fcd" - ], + "bytecodeHashes": ["0x0100021f8bc6a6311dc169f267fafb32fa14724539b5488a9c62788b158e8fcd"], "address": "0x000000000000000000000000000000000000800b" }, { "name": "BootloaderUtilities", - "bytecodeHashes": [ - "0x010009adf7ebf8227ee5d057438bf502d132ed4c7017255f16f691286f3dd7b3" - ], + "bytecodeHashes": ["0x010009adf7ebf8227ee5d057438bf502d132ed4c7017255f16f691286f3dd7b3"], "address": "0x000000000000000000000000000000000000800c" }, { "name": "BytecodeCompressor", - "bytecodeHashes": [ - "0x010000e1073ab7b4226bb86ca2746fbf1ecb305e23c61240b900c4e0ea161a99" - ], + "bytecodeHashes": ["0x010000e1073ab7b4226bb86ca2746fbf1ecb305e23c61240b900c4e0ea161a99"], "address": "0x000000000000000000000000000000000000800e" }, { "name": "ComplexUpgrader", - "bytecodeHashes": [ - "0x0100005bc7e5e9f6718a7a59ba32849b08a12d957bcf517cb6ba68faf03983ba" - ], + "bytecodeHashes": ["0x0100005bc7e5e9f6718a7a59ba32849b08a12d957bcf517cb6ba68faf03983ba"], "address": "0x000000000000000000000000000000000000800f" } ], "defaultAA": { "name": "DefaultAccount", - "bytecodeHashes": [ - "0x0100067d16a5485875b4249040bf421f53e869337fe118ec747cf40a4c777e5f" - ] + "bytecodeHashes": ["0x0100067d16a5485875b4249040bf421f53e869337fe118ec747cf40a4c777e5f"] }, "bootloader": { "name": "Bootloader", - "bytecodeHashes": [ - "0x0100089b29c64a520d9033da5a4f80c6f74132cbd44142c6afc5913c26f0487d" - ] + "bytecodeHashes": ["0x0100089b29c64a520d9033da5a4f80c6f74132cbd44142c6afc5913c26f0487d"] }, "forcedDeployments": [ { @@ -196,16 +168,11 @@ "paymaster": 0, "nonce": "13", "value": 0, - "reserved": [ - 0, - 0, - 0, - 0 - ], + "reserved": [0, 0, 0, 0], "data": "0xe9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c0010000911c610c6e91d050e608ac4f5db8b08c33bb032a57f70899cdd250a75e00000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f42627ab0dd09d78d8a25f459e3b3caf2126668fdfc19887eb5cbf4de00000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fd05a39ae3ccc0c081732b2c09b783810773a66d6429cfb03d813a69200000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475ebeaf64663ebad3ab3fd14b6e985f576c816a66f84bda5a1825310700000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c1731dded081c794319523b82102fd09237011e23e0dda219b1a81479900000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000075efc5d3c37f1861e7c9f7f12c5c71f7b98c8e96bc1ae750441942911a00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000071fb47c4855b3cee15acfc19af66272afb61ae2196cdf8f0af81316c2200000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000139d95a414e7910bb755fecc60531a8c7ba6cc49c2fbd763df8541e4fae000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100021f8bc6a6311dc169f267fafb32fa14724539b5488a9c62788b158e8fcd000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009adf7ebf8227ee5d057438bf502d132ed4c7017255f16f691286f3dd7b3000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1073ab7b4226bb86ca2746fbf1ecb305e23c61240b900c4e0ea161a99000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005bc7e5e9f6718a7a59ba32849b08a12d957bcf517cb6ba68faf03983ba000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000", "signature": "0x", "factoryDeps": [], "paymasterInput": "0x", "reservedDynamic": "0x" } -} \ No newline at end of file +} diff --git a/etc/upgrades/1693318788-virtual-block-timestamp/testnet2/transactions.json b/etc/upgrades/1693318788-virtual-block-timestamp/testnet2/transactions.json index 203c9e4c0b5..0bc589c5d31 100644 --- a/etc/upgrades/1693318788-virtual-block-timestamp/testnet2/transactions.json +++ b/etc/upgrades/1693318788-virtual-block-timestamp/testnet2/transactions.json @@ -11,12 +11,7 @@ "paymaster": 0, "nonce": "13", "value": 0, - "reserved": [ - 0, - 0, - 0, - 0 - ], + "reserved": [0, 0, 0, 0], "data": "0xe9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c0010000911c610c6e91d050e608ac4f5db8b08c33bb032a57f70899cdd250a75e00000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f42627ab0dd09d78d8a25f459e3b3caf2126668fdfc19887eb5cbf4de00000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fd05a39ae3ccc0c081732b2c09b783810773a66d6429cfb03d813a69200000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475ebeaf64663ebad3ab3fd14b6e985f576c816a66f84bda5a1825310700000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c1731dded081c794319523b82102fd09237011e23e0dda219b1a81479900000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000075efc5d3c37f1861e7c9f7f12c5c71f7b98c8e96bc1ae750441942911a00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000071fb47c4855b3cee15acfc19af66272afb61ae2196cdf8f0af81316c2200000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000139d95a414e7910bb755fecc60531a8c7ba6cc49c2fbd763df8541e4fae000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100021f8bc6a6311dc169f267fafb32fa14724539b5488a9c62788b158e8fcd000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009adf7ebf8227ee5d057438bf502d132ed4c7017255f16f691286f3dd7b3000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1073ab7b4226bb86ca2746fbf1ecb305e23c61240b900c4e0ea161a99000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005bc7e5e9f6718a7a59ba32849b08a12d957bcf517cb6ba68faf03983ba000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000", "signature": "0x", "factoryDeps": [], @@ -111,37 +106,19 @@ }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": [ - "0x6c0960f9", - "0xb473318e", - "0x042901c7", - "0x263b7f8e", - "0xe4948f43", - "0xeb672419" - ], + "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], "action": 2, "isFreezable": false }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": [ - "0x0c4dd810", - "0xce9dcf16", - "0x7739cbe7", - "0xa9a2d18a" - ], + "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], "action": 2, "isFreezable": false }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": [ - "0xe58bb639", - "0xf235757f", - "0x1cc5d103", - "0xbe6f11cf", - "0x4623c91d" - ], + "selectors": ["0xe58bb639", "0xf235757f", "0x1cc5d103", "0xbe6f11cf", "0x4623c91d"], "action": 2, "isFreezable": false }, @@ -204,37 +181,19 @@ }, { "facet": "0x0aE41F9fc8A83FBC6062bA956224AB86fA6D1507", - "selectors": [ - "0x6c0960f9", - "0xb473318e", - "0x042901c7", - "0x263b7f8e", - "0xe4948f43", - "0xeb672419" - ], + "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], "action": 0, "isFreezable": true }, { "facet": "0x69b8cdA4c8E66A0b51Fc82834458e087039dB2Ab", - "selectors": [ - "0x0c4dd810", - "0xce9dcf16", - "0x7739cbe7", - "0xa9a2d18a" - ], + "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], "action": 0, "isFreezable": true }, { "facet": "0x2E64926BE35412f7710A3E097Ba076740bF97CC0", - "selectors": [ - "0xe58bb639", - "0xf235757f", - "0x1cc5d103", - "0xbe6f11cf", - "0x4623c91d" - ], + "selectors": ["0xe58bb639", "0xf235757f", "0x1cc5d103", "0xbe6f11cf", "0x4623c91d"], "action": 0, "isFreezable": true } @@ -243,4 +202,4 @@ "initCalldata": "0x1ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000f800100089b29c64a520d9033da5a4f80c6f74132cbd44142c6afc5913c26f0487d0100067d16a5485875b4249040bf421f53e869337fe118ec747cf40a4c777e5f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa00000000000000000000000000000000000000000000000000000000000000fc00000000000000000000000000000000000000000000000000000000064f080c0000000000000000000000000000000000000000000000000000000000000000d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fe0000000000000000000000000000000000000000000000000000000000008007000000000000000000000000000000000000000000000000000000000000800600000000000000000000000000000000000000000000000000000000044aa2000000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000d600000000000000000000000000000000000000000000000000000000000000d800000000000000000000000000000000000000000000000000000000000000da00000000000000000000000000000000000000000000000000000000000000dc00000000000000000000000000000000000000000000000000000000000000ac4e9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c0010000911c610c6e91d050e608ac4f5db8b08c33bb032a57f70899cdd250a75e00000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f42627ab0dd09d78d8a25f459e3b3caf2126668fdfc19887eb5cbf4de00000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fd05a39ae3ccc0c081732b2c09b783810773a66d6429cfb03d813a69200000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475ebeaf64663ebad3ab3fd14b6e985f576c816a66f84bda5a1825310700000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c1731dded081c794319523b82102fd09237011e23e0dda219b1a81479900000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000075efc5d3c37f1861e7c9f7f12c5c71f7b98c8e96bc1ae750441942911a00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000071fb47c4855b3cee15acfc19af66272afb61ae2196cdf8f0af81316c2200000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000139d95a414e7910bb755fecc60531a8c7ba6cc49c2fbd763df8541e4fae000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100021f8bc6a6311dc169f267fafb32fa14724539b5488a9c62788b158e8fcd000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009adf7ebf8227ee5d057438bf502d132ed4c7017255f16f691286f3dd7b3000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1073ab7b4226bb86ca2746fbf1ecb305e23c61240b900c4e0ea161a99000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005bc7e5e9f6718a7a59ba32849b08a12d957bcf517cb6ba68faf03983ba000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, "executeUpgradeCalldata": "0x36d4eb8400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000070eedd750ce140c6320a721d3e6ff62c80e29db80000000000000000000000000000000000000000000000000000000000001680000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000009400000000000000000000000000000000000000000000000000000000000000a600000000000000000000000000000000000000000000000000000000000000ba00000000000000000000000000000000000000000000000000000000000000d40000000000000000000000000000000000000000000000000000000000000124000000000000000000000000000000000000000000000000000000000000013a000000000000000000000000000000000000000000000000000000000000014c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000873fb92970000000000000000000000000000000000000000000000000000000036d4eb840000000000000000000000000000000000000000000000000000000027ae4c16000000000000000000000000000000000000000000000000000000000551448c000000000000000000000000000000000000000000000000000000008043760a00000000000000000000000000000000000000000000000000000000beda4b12000000000000000000000000000000000000000000000000000000001733894500000000000000000000000000000000000000000000000000000000587809c70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000023cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed62700000000000000000000000000000000000000000000000000000000a7cd63b700000000000000000000000000000000000000000000000000000000fe10226d0000000000000000000000000000000000000000000000000000000079823c9a000000000000000000000000000000000000000000000000000000004fc07d7500000000000000000000000000000000000000000000000000000000d86970d800000000000000000000000000000000000000000000000000000000fd791f3c000000000000000000000000000000000000000000000000000000009d1b5a81000000000000000000000000000000000000000000000000000000007b30c8da000000000000000000000000000000000000000000000000000000008665b15000000000000000000000000000000000000000000000000000000000631f4bac000000000000000000000000000000000000000000000000000000000ec6b0b7000000000000000000000000000000000000000000000000000000001b60e62600000000000000000000000000000000000000000000000000000000e39d3bff0000000000000000000000000000000000000000000000000000000033ce93fe000000000000000000000000000000000000000000000000000000000ef240a000000000000000000000000000000000000000000000000000000000fe26699e000000000000000000000000000000000000000000000000000000003960738200000000000000000000000000000000000000000000000000000000af6a2dcd00000000000000000000000000000000000000000000000000000000a1954fc500000000000000000000000000000000000000000000000000000000a39980a00000000000000000000000000000000000000000000000000000000046657fe90000000000000000000000000000000000000000000000000000000018e3a941000000000000000000000000000000000000000000000000000000003db920ce0000000000000000000000000000000000000000000000000000000029b98c6700000000000000000000000000000000000000000000000000000000bd7c541200000000000000000000000000000000000000000000000000000000c3bbd2d700000000000000000000000000000000000000000000000000000000e81e0ba100000000000000000000000000000000000000000000000000000000facd743b000000000000000000000000000000000000000000000000000000009cd939e40000000000000000000000000000000000000000000000000000000056142d7a0000000000000000000000000000000000000000000000000000000074f4d30d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000066c0960f900000000000000000000000000000000000000000000000000000000b473318e00000000000000000000000000000000000000000000000000000000042901c700000000000000000000000000000000000000000000000000000000263b7f8e00000000000000000000000000000000000000000000000000000000e4948f4300000000000000000000000000000000000000000000000000000000eb67241900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000040c4dd81000000000000000000000000000000000000000000000000000000000ce9dcf16000000000000000000000000000000000000000000000000000000007739cbe700000000000000000000000000000000000000000000000000000000a9a2d18a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000005e58bb63900000000000000000000000000000000000000000000000000000000f235757f000000000000000000000000000000000000000000000000000000001cc5d10300000000000000000000000000000000000000000000000000000000be6f11cf000000000000000000000000000000000000000000000000000000004623c91d00000000000000000000000000000000000000000000000000000000000000000000000000000000dc7c3d03845efe2c4a9e758a70a68ba6bba9fac4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000873fb92970000000000000000000000000000000000000000000000000000000036d4eb840000000000000000000000000000000000000000000000000000000027ae4c16000000000000000000000000000000000000000000000000000000000551448c000000000000000000000000000000000000000000000000000000008043760a00000000000000000000000000000000000000000000000000000000beda4b12000000000000000000000000000000000000000000000000000000001733894500000000000000000000000000000000000000000000000000000000587809c7000000000000000000000000000000000000000000000000000000000000000000000000000000007444de636699f080ca1c033528d2bb3705b391ce0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000023cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed62700000000000000000000000000000000000000000000000000000000a7cd63b700000000000000000000000000000000000000000000000000000000fe10226d0000000000000000000000000000000000000000000000000000000079823c9a000000000000000000000000000000000000000000000000000000004fc07d7500000000000000000000000000000000000000000000000000000000d86970d800000000000000000000000000000000000000000000000000000000fd791f3c000000000000000000000000000000000000000000000000000000009d1b5a81000000000000000000000000000000000000000000000000000000007b30c8da000000000000000000000000000000000000000000000000000000008665b15000000000000000000000000000000000000000000000000000000000631f4bac000000000000000000000000000000000000000000000000000000000ec6b0b7000000000000000000000000000000000000000000000000000000001b60e62600000000000000000000000000000000000000000000000000000000e39d3bff0000000000000000000000000000000000000000000000000000000033ce93fe000000000000000000000000000000000000000000000000000000000ef240a000000000000000000000000000000000000000000000000000000000fe26699e000000000000000000000000000000000000000000000000000000003960738200000000000000000000000000000000000000000000000000000000af6a2dcd00000000000000000000000000000000000000000000000000000000a1954fc500000000000000000000000000000000000000000000000000000000a39980a00000000000000000000000000000000000000000000000000000000046657fe90000000000000000000000000000000000000000000000000000000018e3a941000000000000000000000000000000000000000000000000000000003db920ce0000000000000000000000000000000000000000000000000000000029b98c6700000000000000000000000000000000000000000000000000000000bd7c541200000000000000000000000000000000000000000000000000000000c3bbd2d700000000000000000000000000000000000000000000000000000000e81e0ba100000000000000000000000000000000000000000000000000000000facd743b000000000000000000000000000000000000000000000000000000009cd939e40000000000000000000000000000000000000000000000000000000056142d7a0000000000000000000000000000000000000000000000000000000074f4d30d000000000000000000000000000000000000000000000000000000000000000000000000000000000ae41f9fc8a83fbc6062ba956224ab86fa6d150700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000066c0960f900000000000000000000000000000000000000000000000000000000b473318e00000000000000000000000000000000000000000000000000000000042901c700000000000000000000000000000000000000000000000000000000263b7f8e00000000000000000000000000000000000000000000000000000000e4948f4300000000000000000000000000000000000000000000000000000000eb6724190000000000000000000000000000000000000000000000000000000000000000000000000000000069b8cda4c8e66a0b51fc82834458e087039db2ab00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000040c4dd81000000000000000000000000000000000000000000000000000000000ce9dcf16000000000000000000000000000000000000000000000000000000007739cbe700000000000000000000000000000000000000000000000000000000a9a2d18a000000000000000000000000000000000000000000000000000000000000000000000000000000002e64926be35412f7710a3e097ba076740bf97cc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000005e58bb63900000000000000000000000000000000000000000000000000000000f235757f000000000000000000000000000000000000000000000000000000001cc5d10300000000000000000000000000000000000000000000000000000000be6f11cf000000000000000000000000000000000000000000000000000000004623c91d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010041ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000f800100089b29c64a520d9033da5a4f80c6f74132cbd44142c6afc5913c26f0487d0100067d16a5485875b4249040bf421f53e869337fe118ec747cf40a4c777e5f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa00000000000000000000000000000000000000000000000000000000000000fc00000000000000000000000000000000000000000000000000000000064f080c0000000000000000000000000000000000000000000000000000000000000000d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fe0000000000000000000000000000000000000000000000000000000000008007000000000000000000000000000000000000000000000000000000000000800600000000000000000000000000000000000000000000000000000000044aa2000000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000d600000000000000000000000000000000000000000000000000000000000000d800000000000000000000000000000000000000000000000000000000000000da00000000000000000000000000000000000000000000000000000000000000dc00000000000000000000000000000000000000000000000000000000000000ac4e9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c0010000911c610c6e91d050e608ac4f5db8b08c33bb032a57f70899cdd250a75e00000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f42627ab0dd09d78d8a25f459e3b3caf2126668fdfc19887eb5cbf4de00000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fd05a39ae3ccc0c081732b2c09b783810773a66d6429cfb03d813a69200000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475ebeaf64663ebad3ab3fd14b6e985f576c816a66f84bda5a1825310700000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c1731dded081c794319523b82102fd09237011e23e0dda219b1a81479900000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000075efc5d3c37f1861e7c9f7f12c5c71f7b98c8e96bc1ae750441942911a00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000071fb47c4855b3cee15acfc19af66272afb61ae2196cdf8f0af81316c2200000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000139d95a414e7910bb755fecc60531a8c7ba6cc49c2fbd763df8541e4fae000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100021f8bc6a6311dc169f267fafb32fa14724539b5488a9c62788b158e8fcd000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009adf7ebf8227ee5d057438bf502d132ed4c7017255f16f691286f3dd7b3000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1073ab7b4226bb86ca2746fbf1ecb305e23c61240b900c4e0ea161a99000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005bc7e5e9f6718a7a59ba32849b08a12d957bcf517cb6ba68faf03983ba000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" -} \ No newline at end of file +} diff --git a/etc/upgrades/1693905748-virtual-block-timestamp-fixed/common.json b/etc/upgrades/1693905748-virtual-block-timestamp-fixed/common.json index 02205de8d97..4ad940e774e 100644 --- a/etc/upgrades/1693905748-virtual-block-timestamp-fixed/common.json +++ b/etc/upgrades/1693905748-virtual-block-timestamp-fixed/common.json @@ -2,4 +2,4 @@ "name": "virtual-block-timestamp-fixed", "creationTimestamp": 1693905748, "protocolVersion": "14" -} \ No newline at end of file +} diff --git a/etc/upgrades/1693905748-virtual-block-timestamp-fixed/mainnet2/facetCuts.json b/etc/upgrades/1693905748-virtual-block-timestamp-fixed/mainnet2/facetCuts.json index 0356a0cee4b..50697fc105f 100644 --- a/etc/upgrades/1693905748-virtual-block-timestamp-fixed/mainnet2/facetCuts.json +++ b/etc/upgrades/1693905748-virtual-block-timestamp-fixed/mainnet2/facetCuts.json @@ -58,37 +58,19 @@ }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": [ - "0x6c0960f9", - "0xb473318e", - "0x042901c7", - "0x263b7f8e", - "0xe4948f43", - "0xeb672419" - ], + "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], "action": 2, "isFreezable": false }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": [ - "0x0c4dd810", - "0xce9dcf16", - "0x7739cbe7", - "0xa9a2d18a" - ], + "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], "action": 2, "isFreezable": false }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": [ - "0xe58bb639", - "0xf235757f", - "0x1cc5d103", - "0xbe6f11cf", - "0x4623c91d" - ], + "selectors": ["0xe58bb639", "0xf235757f", "0x1cc5d103", "0xbe6f11cf", "0x4623c91d"], "action": 2, "isFreezable": false }, @@ -151,38 +133,20 @@ }, { "facet": "0x62aA95ac4740A367746A664C4C69034d52E968EF", - "selectors": [ - "0x6c0960f9", - "0xb473318e", - "0x042901c7", - "0x263b7f8e", - "0xe4948f43", - "0xeb672419" - ], + "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], "action": 0, "isFreezable": true }, { "facet": "0x7Ed066718Dfb1b2B04D94780Eca92b67ECF3330b", - "selectors": [ - "0x0c4dd810", - "0xce9dcf16", - "0x7739cbe7", - "0xa9a2d18a" - ], + "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], "action": 0, "isFreezable": true }, { "facet": "0x2E64926BE35412f7710A3E097Ba076740bF97CC0", - "selectors": [ - "0xe58bb639", - "0xf235757f", - "0x1cc5d103", - "0xbe6f11cf", - "0x4623c91d" - ], + "selectors": ["0xe58bb639", "0xf235757f", "0x1cc5d103", "0xbe6f11cf", "0x4623c91d"], "action": 0, "isFreezable": true } -] \ No newline at end of file +] diff --git a/etc/upgrades/1693905748-virtual-block-timestamp-fixed/mainnet2/facets.json b/etc/upgrades/1693905748-virtual-block-timestamp-fixed/mainnet2/facets.json index c46371fe276..290151be8a8 100644 --- a/etc/upgrades/1693905748-virtual-block-timestamp-fixed/mainnet2/facets.json +++ b/etc/upgrades/1693905748-virtual-block-timestamp-fixed/mainnet2/facets.json @@ -19,4 +19,4 @@ "address": "0x62aA95ac4740A367746A664C4C69034d52E968EF", "txHash": "0x0000000000000000000000000000000000000000000000000000000000000000" } -} \ No newline at end of file +} diff --git a/etc/upgrades/1693905748-virtual-block-timestamp-fixed/mainnet2/l2Upgrade.json b/etc/upgrades/1693905748-virtual-block-timestamp-fixed/mainnet2/l2Upgrade.json index 70ac985e482..9bd7e529db9 100644 --- a/etc/upgrades/1693905748-virtual-block-timestamp-fixed/mainnet2/l2Upgrade.json +++ b/etc/upgrades/1693905748-virtual-block-timestamp-fixed/mainnet2/l2Upgrade.json @@ -2,100 +2,72 @@ "systemContracts": [ { "name": "AccountCodeStorage", - "bytecodeHashes": [ - "0x010000911c610c6e91d050e608ac4f5db8b08c33bb032a57f70899cdd250a75e" - ], + "bytecodeHashes": ["0x010000911c610c6e91d050e608ac4f5db8b08c33bb032a57f70899cdd250a75e"], "address": "0x0000000000000000000000000000000000008002" }, { "name": "NonceHolder", - "bytecodeHashes": [ - "0x0100012f42627ab0dd09d78d8a25f459e3b3caf2126668fdfc19887eb5cbf4de" - ], + "bytecodeHashes": ["0x0100012f42627ab0dd09d78d8a25f459e3b3caf2126668fdfc19887eb5cbf4de"], "address": "0x0000000000000000000000000000000000008003" }, { "name": "KnownCodesStorage", - "bytecodeHashes": [ - "0x0100008fd05a39ae3ccc0c081732b2c09b783810773a66d6429cfb03d813a692" - ], + "bytecodeHashes": ["0x0100008fd05a39ae3ccc0c081732b2c09b783810773a66d6429cfb03d813a692"], "address": "0x0000000000000000000000000000000000008004" }, { "name": "ImmutableSimulator", - "bytecodeHashes": [ - "0x010000475ebeaf64663ebad3ab3fd14b6e985f576c816a66f84bda5a18253107" - ], + "bytecodeHashes": ["0x010000475ebeaf64663ebad3ab3fd14b6e985f576c816a66f84bda5a18253107"], "address": "0x0000000000000000000000000000000000008005" }, { "name": "ContractDeployer", - "bytecodeHashes": [ - "0x010005c1731dded081c794319523b82102fd09237011e23e0dda219b1a814799" - ], + "bytecodeHashes": ["0x010005c1731dded081c794319523b82102fd09237011e23e0dda219b1a814799"], "address": "0x0000000000000000000000000000000000008006" }, { "name": "L1Messenger", - "bytecodeHashes": [ - "0x01000075efc5d3c37f1861e7c9f7f12c5c71f7b98c8e96bc1ae750441942911a" - ], + "bytecodeHashes": ["0x01000075efc5d3c37f1861e7c9f7f12c5c71f7b98c8e96bc1ae750441942911a"], "address": "0x0000000000000000000000000000000000008008" }, { "name": "MsgValueSimulator", - "bytecodeHashes": [ - "0x01000071fb47c4855b3cee15acfc19af66272afb61ae2196cdf8f0af81316c22" - ], + "bytecodeHashes": ["0x01000071fb47c4855b3cee15acfc19af66272afb61ae2196cdf8f0af81316c22"], "address": "0x0000000000000000000000000000000000008009" }, { "name": "L2EthToken", - "bytecodeHashes": [ - "0x01000139d95a414e7910bb755fecc60531a8c7ba6cc49c2fbd763df8541e4fae" - ], + "bytecodeHashes": ["0x01000139d95a414e7910bb755fecc60531a8c7ba6cc49c2fbd763df8541e4fae"], "address": "0x000000000000000000000000000000000000800a" }, { "name": "SystemContext", - "bytecodeHashes": [ - "0x0100021f60c503126f404845b8cd748b0fa2e71cd99e14462008009e6fe1ab03" - ], + "bytecodeHashes": ["0x0100021f60c503126f404845b8cd748b0fa2e71cd99e14462008009e6fe1ab03"], "address": "0x000000000000000000000000000000000000800b" }, { "name": "BootloaderUtilities", - "bytecodeHashes": [ - "0x010009adf7ebf8227ee5d057438bf502d132ed4c7017255f16f691286f3dd7b3" - ], + "bytecodeHashes": ["0x010009adf7ebf8227ee5d057438bf502d132ed4c7017255f16f691286f3dd7b3"], "address": "0x000000000000000000000000000000000000800c" }, { "name": "BytecodeCompressor", - "bytecodeHashes": [ - "0x010000e1073ab7b4226bb86ca2746fbf1ecb305e23c61240b900c4e0ea161a99" - ], + "bytecodeHashes": ["0x010000e1073ab7b4226bb86ca2746fbf1ecb305e23c61240b900c4e0ea161a99"], "address": "0x000000000000000000000000000000000000800e" }, { "name": "ComplexUpgrader", - "bytecodeHashes": [ - "0x0100005bc7e5e9f6718a7a59ba32849b08a12d957bcf517cb6ba68faf03983ba" - ], + "bytecodeHashes": ["0x0100005bc7e5e9f6718a7a59ba32849b08a12d957bcf517cb6ba68faf03983ba"], "address": "0x000000000000000000000000000000000000800f" } ], "defaultAA": { "name": "DefaultAccount", - "bytecodeHashes": [ - "0x0100067d16a5485875b4249040bf421f53e869337fe118ec747cf40a4c777e5f" - ] + "bytecodeHashes": ["0x0100067d16a5485875b4249040bf421f53e869337fe118ec747cf40a4c777e5f"] }, "bootloader": { "name": "Bootloader", - "bytecodeHashes": [ - "0x0100089b8a2f2e6a20ba28f02c9e0ed0c13d702932364561a0ea61621f65f0a8" - ] + "bytecodeHashes": ["0x0100089b8a2f2e6a20ba28f02c9e0ed0c13d702932364561a0ea61621f65f0a8"] }, "forcedDeployments": [ { @@ -196,16 +168,11 @@ "paymaster": 0, "nonce": "14", "value": 0, - "reserved": [ - 0, - 0, - 0, - 0 - ], + "reserved": [0, 0, 0, 0], "data": "0xe9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c0010000911c610c6e91d050e608ac4f5db8b08c33bb032a57f70899cdd250a75e00000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f42627ab0dd09d78d8a25f459e3b3caf2126668fdfc19887eb5cbf4de00000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fd05a39ae3ccc0c081732b2c09b783810773a66d6429cfb03d813a69200000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475ebeaf64663ebad3ab3fd14b6e985f576c816a66f84bda5a1825310700000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c1731dded081c794319523b82102fd09237011e23e0dda219b1a81479900000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000075efc5d3c37f1861e7c9f7f12c5c71f7b98c8e96bc1ae750441942911a00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000071fb47c4855b3cee15acfc19af66272afb61ae2196cdf8f0af81316c2200000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000139d95a414e7910bb755fecc60531a8c7ba6cc49c2fbd763df8541e4fae000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100021f60c503126f404845b8cd748b0fa2e71cd99e14462008009e6fe1ab03000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009adf7ebf8227ee5d057438bf502d132ed4c7017255f16f691286f3dd7b3000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1073ab7b4226bb86ca2746fbf1ecb305e23c61240b900c4e0ea161a99000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005bc7e5e9f6718a7a59ba32849b08a12d957bcf517cb6ba68faf03983ba000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000", "signature": "0x", "factoryDeps": [], "paymasterInput": "0x", "reservedDynamic": "0x" } -} \ No newline at end of file +} diff --git a/etc/upgrades/1693905748-virtual-block-timestamp-fixed/mainnet2/transactions.json b/etc/upgrades/1693905748-virtual-block-timestamp-fixed/mainnet2/transactions.json index 3025aac1848..c6508b1c828 100644 --- a/etc/upgrades/1693905748-virtual-block-timestamp-fixed/mainnet2/transactions.json +++ b/etc/upgrades/1693905748-virtual-block-timestamp-fixed/mainnet2/transactions.json @@ -11,12 +11,7 @@ "paymaster": 0, "nonce": "14", "value": 0, - "reserved": [ - 0, - 0, - 0, - 0 - ], + "reserved": [0, 0, 0, 0], "data": "0xe9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c0010000911c610c6e91d050e608ac4f5db8b08c33bb032a57f70899cdd250a75e00000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f42627ab0dd09d78d8a25f459e3b3caf2126668fdfc19887eb5cbf4de00000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fd05a39ae3ccc0c081732b2c09b783810773a66d6429cfb03d813a69200000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475ebeaf64663ebad3ab3fd14b6e985f576c816a66f84bda5a1825310700000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c1731dded081c794319523b82102fd09237011e23e0dda219b1a81479900000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000075efc5d3c37f1861e7c9f7f12c5c71f7b98c8e96bc1ae750441942911a00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000071fb47c4855b3cee15acfc19af66272afb61ae2196cdf8f0af81316c2200000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000139d95a414e7910bb755fecc60531a8c7ba6cc49c2fbd763df8541e4fae000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100021f60c503126f404845b8cd748b0fa2e71cd99e14462008009e6fe1ab03000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009adf7ebf8227ee5d057438bf502d132ed4c7017255f16f691286f3dd7b3000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1073ab7b4226bb86ca2746fbf1ecb305e23c61240b900c4e0ea161a99000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005bc7e5e9f6718a7a59ba32849b08a12d957bcf517cb6ba68faf03983ba000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000", "signature": "0x", "factoryDeps": [], @@ -111,37 +106,19 @@ }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": [ - "0x6c0960f9", - "0xb473318e", - "0x042901c7", - "0x263b7f8e", - "0xe4948f43", - "0xeb672419" - ], + "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], "action": 2, "isFreezable": false }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": [ - "0x0c4dd810", - "0xce9dcf16", - "0x7739cbe7", - "0xa9a2d18a" - ], + "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], "action": 2, "isFreezable": false }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": [ - "0xe58bb639", - "0xf235757f", - "0x1cc5d103", - "0xbe6f11cf", - "0x4623c91d" - ], + "selectors": ["0xe58bb639", "0xf235757f", "0x1cc5d103", "0xbe6f11cf", "0x4623c91d"], "action": 2, "isFreezable": false }, @@ -204,37 +181,19 @@ }, { "facet": "0x62aA95ac4740A367746A664C4C69034d52E968EF", - "selectors": [ - "0x6c0960f9", - "0xb473318e", - "0x042901c7", - "0x263b7f8e", - "0xe4948f43", - "0xeb672419" - ], + "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], "action": 0, "isFreezable": true }, { "facet": "0x7Ed066718Dfb1b2B04D94780Eca92b67ECF3330b", - "selectors": [ - "0x0c4dd810", - "0xce9dcf16", - "0x7739cbe7", - "0xa9a2d18a" - ], + "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], "action": 0, "isFreezable": true }, { "facet": "0x2E64926BE35412f7710A3E097Ba076740bF97CC0", - "selectors": [ - "0xe58bb639", - "0xf235757f", - "0x1cc5d103", - "0xbe6f11cf", - "0x4623c91d" - ], + "selectors": ["0xe58bb639", "0xf235757f", "0x1cc5d103", "0xbe6f11cf", "0x4623c91d"], "action": 0, "isFreezable": true } @@ -243,4 +202,4 @@ "initCalldata": "0x1ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000f800100089b8a2f2e6a20ba28f02c9e0ed0c13d702932364561a0ea61621f65f0a80100067d16a5485875b4249040bf421f53e869337fe118ec747cf40a4c777e5f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa00000000000000000000000000000000000000000000000000000000000000fc00000000000000000000000000000000000000000000000000000000064f9a628000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fe0000000000000000000000000000000000000000000000000000000000008007000000000000000000000000000000000000000000000000000000000000800600000000000000000000000000000000000000000000000000000000044aa2000000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000d600000000000000000000000000000000000000000000000000000000000000d800000000000000000000000000000000000000000000000000000000000000da00000000000000000000000000000000000000000000000000000000000000dc00000000000000000000000000000000000000000000000000000000000000ac4e9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c0010000911c610c6e91d050e608ac4f5db8b08c33bb032a57f70899cdd250a75e00000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f42627ab0dd09d78d8a25f459e3b3caf2126668fdfc19887eb5cbf4de00000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fd05a39ae3ccc0c081732b2c09b783810773a66d6429cfb03d813a69200000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475ebeaf64663ebad3ab3fd14b6e985f576c816a66f84bda5a1825310700000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c1731dded081c794319523b82102fd09237011e23e0dda219b1a81479900000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000075efc5d3c37f1861e7c9f7f12c5c71f7b98c8e96bc1ae750441942911a00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000071fb47c4855b3cee15acfc19af66272afb61ae2196cdf8f0af81316c2200000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000139d95a414e7910bb755fecc60531a8c7ba6cc49c2fbd763df8541e4fae000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100021f60c503126f404845b8cd748b0fa2e71cd99e14462008009e6fe1ab03000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009adf7ebf8227ee5d057438bf502d132ed4c7017255f16f691286f3dd7b3000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1073ab7b4226bb86ca2746fbf1ecb305e23c61240b900c4e0ea161a99000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005bc7e5e9f6718a7a59ba32849b08a12d957bcf517cb6ba68faf03983ba000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, "executeUpgradeCalldata": "0x36d4eb8400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000091ca046dad8c3db41f296267e1720d9c940f613d0000000000000000000000000000000000000000000000000000000000001680000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000009400000000000000000000000000000000000000000000000000000000000000a600000000000000000000000000000000000000000000000000000000000000ba00000000000000000000000000000000000000000000000000000000000000d40000000000000000000000000000000000000000000000000000000000000124000000000000000000000000000000000000000000000000000000000000013a000000000000000000000000000000000000000000000000000000000000014c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000873fb92970000000000000000000000000000000000000000000000000000000036d4eb840000000000000000000000000000000000000000000000000000000027ae4c16000000000000000000000000000000000000000000000000000000000551448c000000000000000000000000000000000000000000000000000000008043760a00000000000000000000000000000000000000000000000000000000beda4b12000000000000000000000000000000000000000000000000000000001733894500000000000000000000000000000000000000000000000000000000587809c70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000023cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed62700000000000000000000000000000000000000000000000000000000a7cd63b700000000000000000000000000000000000000000000000000000000fe10226d0000000000000000000000000000000000000000000000000000000079823c9a000000000000000000000000000000000000000000000000000000004fc07d7500000000000000000000000000000000000000000000000000000000d86970d800000000000000000000000000000000000000000000000000000000fd791f3c000000000000000000000000000000000000000000000000000000009d1b5a81000000000000000000000000000000000000000000000000000000007b30c8da000000000000000000000000000000000000000000000000000000008665b15000000000000000000000000000000000000000000000000000000000631f4bac000000000000000000000000000000000000000000000000000000000ec6b0b7000000000000000000000000000000000000000000000000000000001b60e62600000000000000000000000000000000000000000000000000000000e39d3bff0000000000000000000000000000000000000000000000000000000033ce93fe000000000000000000000000000000000000000000000000000000000ef240a000000000000000000000000000000000000000000000000000000000fe26699e000000000000000000000000000000000000000000000000000000003960738200000000000000000000000000000000000000000000000000000000af6a2dcd00000000000000000000000000000000000000000000000000000000a1954fc500000000000000000000000000000000000000000000000000000000a39980a00000000000000000000000000000000000000000000000000000000046657fe90000000000000000000000000000000000000000000000000000000018e3a941000000000000000000000000000000000000000000000000000000003db920ce0000000000000000000000000000000000000000000000000000000029b98c6700000000000000000000000000000000000000000000000000000000bd7c541200000000000000000000000000000000000000000000000000000000c3bbd2d700000000000000000000000000000000000000000000000000000000e81e0ba100000000000000000000000000000000000000000000000000000000facd743b000000000000000000000000000000000000000000000000000000009cd939e40000000000000000000000000000000000000000000000000000000056142d7a0000000000000000000000000000000000000000000000000000000074f4d30d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000066c0960f900000000000000000000000000000000000000000000000000000000b473318e00000000000000000000000000000000000000000000000000000000042901c700000000000000000000000000000000000000000000000000000000263b7f8e00000000000000000000000000000000000000000000000000000000e4948f4300000000000000000000000000000000000000000000000000000000eb67241900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000040c4dd81000000000000000000000000000000000000000000000000000000000ce9dcf16000000000000000000000000000000000000000000000000000000007739cbe700000000000000000000000000000000000000000000000000000000a9a2d18a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000005e58bb63900000000000000000000000000000000000000000000000000000000f235757f000000000000000000000000000000000000000000000000000000001cc5d10300000000000000000000000000000000000000000000000000000000be6f11cf000000000000000000000000000000000000000000000000000000004623c91d00000000000000000000000000000000000000000000000000000000000000000000000000000000dc7c3d03845efe2c4a9e758a70a68ba6bba9fac4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000873fb92970000000000000000000000000000000000000000000000000000000036d4eb840000000000000000000000000000000000000000000000000000000027ae4c16000000000000000000000000000000000000000000000000000000000551448c000000000000000000000000000000000000000000000000000000008043760a00000000000000000000000000000000000000000000000000000000beda4b12000000000000000000000000000000000000000000000000000000001733894500000000000000000000000000000000000000000000000000000000587809c7000000000000000000000000000000000000000000000000000000000000000000000000000000007444de636699f080ca1c033528d2bb3705b391ce0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000023cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed62700000000000000000000000000000000000000000000000000000000a7cd63b700000000000000000000000000000000000000000000000000000000fe10226d0000000000000000000000000000000000000000000000000000000079823c9a000000000000000000000000000000000000000000000000000000004fc07d7500000000000000000000000000000000000000000000000000000000d86970d800000000000000000000000000000000000000000000000000000000fd791f3c000000000000000000000000000000000000000000000000000000009d1b5a81000000000000000000000000000000000000000000000000000000007b30c8da000000000000000000000000000000000000000000000000000000008665b15000000000000000000000000000000000000000000000000000000000631f4bac000000000000000000000000000000000000000000000000000000000ec6b0b7000000000000000000000000000000000000000000000000000000001b60e62600000000000000000000000000000000000000000000000000000000e39d3bff0000000000000000000000000000000000000000000000000000000033ce93fe000000000000000000000000000000000000000000000000000000000ef240a000000000000000000000000000000000000000000000000000000000fe26699e000000000000000000000000000000000000000000000000000000003960738200000000000000000000000000000000000000000000000000000000af6a2dcd00000000000000000000000000000000000000000000000000000000a1954fc500000000000000000000000000000000000000000000000000000000a39980a00000000000000000000000000000000000000000000000000000000046657fe90000000000000000000000000000000000000000000000000000000018e3a941000000000000000000000000000000000000000000000000000000003db920ce0000000000000000000000000000000000000000000000000000000029b98c6700000000000000000000000000000000000000000000000000000000bd7c541200000000000000000000000000000000000000000000000000000000c3bbd2d700000000000000000000000000000000000000000000000000000000e81e0ba100000000000000000000000000000000000000000000000000000000facd743b000000000000000000000000000000000000000000000000000000009cd939e40000000000000000000000000000000000000000000000000000000056142d7a0000000000000000000000000000000000000000000000000000000074f4d30d0000000000000000000000000000000000000000000000000000000000000000000000000000000062aa95ac4740a367746a664c4c69034d52e968ef00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000066c0960f900000000000000000000000000000000000000000000000000000000b473318e00000000000000000000000000000000000000000000000000000000042901c700000000000000000000000000000000000000000000000000000000263b7f8e00000000000000000000000000000000000000000000000000000000e4948f4300000000000000000000000000000000000000000000000000000000eb672419000000000000000000000000000000000000000000000000000000000000000000000000000000007ed066718dfb1b2b04d94780eca92b67ecf3330b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000040c4dd81000000000000000000000000000000000000000000000000000000000ce9dcf16000000000000000000000000000000000000000000000000000000007739cbe700000000000000000000000000000000000000000000000000000000a9a2d18a000000000000000000000000000000000000000000000000000000000000000000000000000000002e64926be35412f7710a3e097ba076740bf97cc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000005e58bb63900000000000000000000000000000000000000000000000000000000f235757f000000000000000000000000000000000000000000000000000000001cc5d10300000000000000000000000000000000000000000000000000000000be6f11cf000000000000000000000000000000000000000000000000000000004623c91d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010041ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000f800100089b8a2f2e6a20ba28f02c9e0ed0c13d702932364561a0ea61621f65f0a80100067d16a5485875b4249040bf421f53e869337fe118ec747cf40a4c777e5f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa00000000000000000000000000000000000000000000000000000000000000fc00000000000000000000000000000000000000000000000000000000064f9a628000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fe0000000000000000000000000000000000000000000000000000000000008007000000000000000000000000000000000000000000000000000000000000800600000000000000000000000000000000000000000000000000000000044aa2000000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000d600000000000000000000000000000000000000000000000000000000000000d800000000000000000000000000000000000000000000000000000000000000da00000000000000000000000000000000000000000000000000000000000000dc00000000000000000000000000000000000000000000000000000000000000ac4e9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c0010000911c610c6e91d050e608ac4f5db8b08c33bb032a57f70899cdd250a75e00000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f42627ab0dd09d78d8a25f459e3b3caf2126668fdfc19887eb5cbf4de00000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fd05a39ae3ccc0c081732b2c09b783810773a66d6429cfb03d813a69200000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475ebeaf64663ebad3ab3fd14b6e985f576c816a66f84bda5a1825310700000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c1731dded081c794319523b82102fd09237011e23e0dda219b1a81479900000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000075efc5d3c37f1861e7c9f7f12c5c71f7b98c8e96bc1ae750441942911a00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000071fb47c4855b3cee15acfc19af66272afb61ae2196cdf8f0af81316c2200000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000139d95a414e7910bb755fecc60531a8c7ba6cc49c2fbd763df8541e4fae000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100021f60c503126f404845b8cd748b0fa2e71cd99e14462008009e6fe1ab03000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009adf7ebf8227ee5d057438bf502d132ed4c7017255f16f691286f3dd7b3000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1073ab7b4226bb86ca2746fbf1ecb305e23c61240b900c4e0ea161a99000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005bc7e5e9f6718a7a59ba32849b08a12d957bcf517cb6ba68faf03983ba000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" -} \ No newline at end of file +} diff --git a/etc/upgrades/1693905748-virtual-block-timestamp-fixed/stage2/l2Upgrade.json b/etc/upgrades/1693905748-virtual-block-timestamp-fixed/stage2/l2Upgrade.json index 4f1536a8552..fdb4abf8d91 100644 --- a/etc/upgrades/1693905748-virtual-block-timestamp-fixed/stage2/l2Upgrade.json +++ b/etc/upgrades/1693905748-virtual-block-timestamp-fixed/stage2/l2Upgrade.json @@ -2,17 +2,13 @@ "systemContracts": [ { "name": "SystemContext", - "bytecodeHashes": [ - "0x0100021f60c503126f404845b8cd748b0fa2e71cd99e14462008009e6fe1ab03" - ], + "bytecodeHashes": ["0x0100021f60c503126f404845b8cd748b0fa2e71cd99e14462008009e6fe1ab03"], "address": "0x000000000000000000000000000000000000800b" } ], "bootloader": { "name": "Bootloader", - "bytecodeHashes": [ - "0x0100089b8a2f2e6a20ba28f02c9e0ed0c13d702932364561a0ea61621f65f0a8" - ] + "bytecodeHashes": ["0x0100089b8a2f2e6a20ba28f02c9e0ed0c13d702932364561a0ea61621f65f0a8"] }, "forcedDeployments": [ { @@ -36,16 +32,11 @@ "paymaster": 0, "nonce": "14", "value": 0, - "reserved": [ - 0, - 0, - 0, - 0 - ], + "reserved": [0, 0, 0, 0], "data": "0xe9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200100021f60c503126f404845b8cd748b0fa2e71cd99e14462008009e6fe1ab03000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000", "signature": "0x", "factoryDeps": [], "paymasterInput": "0x", "reservedDynamic": "0x" } -} \ No newline at end of file +} diff --git a/etc/upgrades/1693905748-virtual-block-timestamp-fixed/stage2/transactions.json b/etc/upgrades/1693905748-virtual-block-timestamp-fixed/stage2/transactions.json index 97c542dc85e..f44cdeb1922 100644 --- a/etc/upgrades/1693905748-virtual-block-timestamp-fixed/stage2/transactions.json +++ b/etc/upgrades/1693905748-virtual-block-timestamp-fixed/stage2/transactions.json @@ -11,12 +11,7 @@ "paymaster": 0, "nonce": "14", "value": 0, - "reserved": [ - 0, - 0, - 0, - 0 - ], + "reserved": [0, 0, 0, 0], "data": "0xe9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200100021f60c503126f404845b8cd748b0fa2e71cd99e14462008009e6fe1ab03000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000", "signature": "0x", "factoryDeps": [], @@ -56,4 +51,4 @@ "initCalldata": "0x1ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000005e00100089b8a2f2e6a20ba28f02c9e0ed0c13d702932364561a0ea61621f65f0a800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006200000000000000000000000000000000000000000000000000000000064f6e4b0000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fe0000000000000000000000000000000000000000000000000000000000008007000000000000000000000000000000000000000000000000000000000000800600000000000000000000000000000000000000000000000000000000044aa2000000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000026000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000003e0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004200000000000000000000000000000000000000000000000000000000000000124e9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200100021f60c503126f404845b8cd748b0fa2e71cd99e14462008009e6fe1ab03000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, "executeUpgradeCalldata": "0x36d4eb84000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000db876240f01a6dd38f5efc4ecefe52e5c13db3c70000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006641ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000005e00100089b8a2f2e6a20ba28f02c9e0ed0c13d702932364561a0ea61621f65f0a800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006200000000000000000000000000000000000000000000000000000000064f6e4b0000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fe0000000000000000000000000000000000000000000000000000000000008007000000000000000000000000000000000000000000000000000000000000800600000000000000000000000000000000000000000000000000000000044aa2000000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000026000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000003e0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004200000000000000000000000000000000000000000000000000000000000000124e9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200100021f60c503126f404845b8cd748b0fa2e71cd99e14462008009e6fe1ab03000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" -} \ No newline at end of file +} diff --git a/etc/upgrades/1693905748-virtual-block-timestamp-fixed/testnet2/l2Upgrade.json b/etc/upgrades/1693905748-virtual-block-timestamp-fixed/testnet2/l2Upgrade.json index 4f1536a8552..fdb4abf8d91 100644 --- a/etc/upgrades/1693905748-virtual-block-timestamp-fixed/testnet2/l2Upgrade.json +++ b/etc/upgrades/1693905748-virtual-block-timestamp-fixed/testnet2/l2Upgrade.json @@ -2,17 +2,13 @@ "systemContracts": [ { "name": "SystemContext", - "bytecodeHashes": [ - "0x0100021f60c503126f404845b8cd748b0fa2e71cd99e14462008009e6fe1ab03" - ], + "bytecodeHashes": ["0x0100021f60c503126f404845b8cd748b0fa2e71cd99e14462008009e6fe1ab03"], "address": "0x000000000000000000000000000000000000800b" } ], "bootloader": { "name": "Bootloader", - "bytecodeHashes": [ - "0x0100089b8a2f2e6a20ba28f02c9e0ed0c13d702932364561a0ea61621f65f0a8" - ] + "bytecodeHashes": ["0x0100089b8a2f2e6a20ba28f02c9e0ed0c13d702932364561a0ea61621f65f0a8"] }, "forcedDeployments": [ { @@ -36,16 +32,11 @@ "paymaster": 0, "nonce": "14", "value": 0, - "reserved": [ - 0, - 0, - 0, - 0 - ], + "reserved": [0, 0, 0, 0], "data": "0xe9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200100021f60c503126f404845b8cd748b0fa2e71cd99e14462008009e6fe1ab03000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000", "signature": "0x", "factoryDeps": [], "paymasterInput": "0x", "reservedDynamic": "0x" } -} \ No newline at end of file +} diff --git a/etc/upgrades/1693905748-virtual-block-timestamp-fixed/testnet2/transactions.json b/etc/upgrades/1693905748-virtual-block-timestamp-fixed/testnet2/transactions.json index 447be459dc4..b8148735aab 100644 --- a/etc/upgrades/1693905748-virtual-block-timestamp-fixed/testnet2/transactions.json +++ b/etc/upgrades/1693905748-virtual-block-timestamp-fixed/testnet2/transactions.json @@ -11,12 +11,7 @@ "paymaster": 0, "nonce": "14", "value": 0, - "reserved": [ - 0, - 0, - 0, - 0 - ], + "reserved": [0, 0, 0, 0], "data": "0xe9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200100021f60c503126f404845b8cd748b0fa2e71cd99e14462008009e6fe1ab03000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000", "signature": "0x", "factoryDeps": [], @@ -56,4 +51,4 @@ "initCalldata": "0x1ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000005e00100089b8a2f2e6a20ba28f02c9e0ed0c13d702932364561a0ea61621f65f0a800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006200000000000000000000000000000000000000000000000000000000064f70a30000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fe0000000000000000000000000000000000000000000000000000000000008007000000000000000000000000000000000000000000000000000000000000800600000000000000000000000000000000000000000000000000000000044aa2000000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000026000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000003e0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004200000000000000000000000000000000000000000000000000000000000000124e9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200100021f60c503126f404845b8cd748b0fa2e71cd99e14462008009e6fe1ab03000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, "executeUpgradeCalldata": "0x36d4eb8400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000070eedd750ce140c6320a721d3e6ff62c80e29db80000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006641ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000005e00100089b8a2f2e6a20ba28f02c9e0ed0c13d702932364561a0ea61621f65f0a800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006200000000000000000000000000000000000000000000000000000000064f70a30000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fe0000000000000000000000000000000000000000000000000000000000008007000000000000000000000000000000000000000000000000000000000000800600000000000000000000000000000000000000000000000000000000044aa2000000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000026000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000003e0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004200000000000000000000000000000000000000000000000000000000000000124e9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200100021f60c503126f404845b8cd748b0fa2e71cd99e14462008009e6fe1ab03000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" -} \ No newline at end of file +} diff --git a/etc/upgrades/1695203585-missing-constraint-in-circuit/common.json b/etc/upgrades/1695203585-missing-constraint-in-circuit/common.json index 06930d72b32..9f1965ef427 100644 --- a/etc/upgrades/1695203585-missing-constraint-in-circuit/common.json +++ b/etc/upgrades/1695203585-missing-constraint-in-circuit/common.json @@ -2,4 +2,4 @@ "name": "missing-constraint-in-circuit", "creationTimestamp": 1695203585, "protocolVersion": "15" -} \ No newline at end of file +} diff --git a/etc/upgrades/1695203585-missing-constraint-in-circuit/mainnet2/crypto.json b/etc/upgrades/1695203585-missing-constraint-in-circuit/mainnet2/crypto.json index c53a681f186..65d3931fabf 100644 --- a/etc/upgrades/1695203585-missing-constraint-in-circuit/mainnet2/crypto.json +++ b/etc/upgrades/1695203585-missing-constraint-in-circuit/mainnet2/crypto.json @@ -4,4 +4,4 @@ "recursionLeafLevelVkHash": "0x101e08b00193e529145ee09823378ef51a3bc8966504064f1f6ba3f1ba863210", "recursionCircuitsSetVksHash": "0x236c97bfbe75ff507e03909fae32a78be3a70d1b468b183f430010810284ed45" } -} \ No newline at end of file +} diff --git a/etc/upgrades/1695203585-missing-constraint-in-circuit/mainnet2/transactions.json b/etc/upgrades/1695203585-missing-constraint-in-circuit/mainnet2/transactions.json index e80cd6f34cf..1edd1c95879 100644 --- a/etc/upgrades/1695203585-missing-constraint-in-circuit/mainnet2/transactions.json +++ b/etc/upgrades/1695203585-missing-constraint-in-circuit/mainnet2/transactions.json @@ -11,12 +11,7 @@ "paymaster": 0, "nonce": 0, "value": 0, - "reserved": [ - 0, - 0, - 0, - 0 - ], + "reserved": [0, 0, 0, 0], "data": "0x", "signature": "0x", "factoryDeps": [], @@ -56,4 +51,4 @@ "initCalldata": "0x1ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000004a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001186ec268d49f1905f8d9c1e9d39fc33e98c74f91d91a21b8f7ef78bd09a8db8101e08b00193e529145ee09823378ef51a3bc8966504064f1f6ba3f1ba863210236c97bfbe75ff507e03909fae32a78be3a70d1b468b183f430010810284ed4500000000000000000000000000000000000000000000000000000000000004c000000000000000000000000000000000000000000000000000000000000004e000000000000000000000000000000000000000000000000000000000650d73b0000000000000000000000000000000000000000000000000000000000000000f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, "executeUpgradeCalldata": "0x36d4eb8400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000091ca046dad8c3db41f296267e1720d9c940f613d0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005241ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000004a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001186ec268d49f1905f8d9c1e9d39fc33e98c74f91d91a21b8f7ef78bd09a8db8101e08b00193e529145ee09823378ef51a3bc8966504064f1f6ba3f1ba863210236c97bfbe75ff507e03909fae32a78be3a70d1b468b183f430010810284ed4500000000000000000000000000000000000000000000000000000000000004c000000000000000000000000000000000000000000000000000000000000004e000000000000000000000000000000000000000000000000000000000650d73b0000000000000000000000000000000000000000000000000000000000000000f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" -} \ No newline at end of file +} diff --git a/etc/upgrades/1695203585-missing-constraint-in-circuit/stage2/crypto.json b/etc/upgrades/1695203585-missing-constraint-in-circuit/stage2/crypto.json index c53a681f186..65d3931fabf 100644 --- a/etc/upgrades/1695203585-missing-constraint-in-circuit/stage2/crypto.json +++ b/etc/upgrades/1695203585-missing-constraint-in-circuit/stage2/crypto.json @@ -4,4 +4,4 @@ "recursionLeafLevelVkHash": "0x101e08b00193e529145ee09823378ef51a3bc8966504064f1f6ba3f1ba863210", "recursionCircuitsSetVksHash": "0x236c97bfbe75ff507e03909fae32a78be3a70d1b468b183f430010810284ed45" } -} \ No newline at end of file +} diff --git a/etc/upgrades/1695203585-missing-constraint-in-circuit/stage2/transactions.json b/etc/upgrades/1695203585-missing-constraint-in-circuit/stage2/transactions.json index 71d506231b7..99813371577 100644 --- a/etc/upgrades/1695203585-missing-constraint-in-circuit/stage2/transactions.json +++ b/etc/upgrades/1695203585-missing-constraint-in-circuit/stage2/transactions.json @@ -11,12 +11,7 @@ "paymaster": 0, "nonce": 0, "value": 0, - "reserved": [ - 0, - 0, - 0, - 0 - ], + "reserved": [0, 0, 0, 0], "data": "0x", "signature": "0x", "factoryDeps": [], @@ -56,4 +51,4 @@ "initCalldata": "0x1ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000004a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001186ec268d49f1905f8d9c1e9d39fc33e98c74f91d91a21b8f7ef78bd09a8db8101e08b00193e529145ee09823378ef51a3bc8966504064f1f6ba3f1ba863210236c97bfbe75ff507e03909fae32a78be3a70d1b468b183f430010810284ed4500000000000000000000000000000000000000000000000000000000000004c000000000000000000000000000000000000000000000000000000000000004e000000000000000000000000000000000000000000000000000000000650ad0b0000000000000000000000000000000000000000000000000000000000000000f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, "executeUpgradeCalldata": "0x36d4eb84000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000db876240f01a6dd38f5efc4ecefe52e5c13db3c70000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005241ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000004a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001186ec268d49f1905f8d9c1e9d39fc33e98c74f91d91a21b8f7ef78bd09a8db8101e08b00193e529145ee09823378ef51a3bc8966504064f1f6ba3f1ba863210236c97bfbe75ff507e03909fae32a78be3a70d1b468b183f430010810284ed4500000000000000000000000000000000000000000000000000000000000004c000000000000000000000000000000000000000000000000000000000000004e000000000000000000000000000000000000000000000000000000000650ad0b0000000000000000000000000000000000000000000000000000000000000000f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" -} \ No newline at end of file +} diff --git a/etc/upgrades/1695203585-missing-constraint-in-circuit/testnet2/crypto.json b/etc/upgrades/1695203585-missing-constraint-in-circuit/testnet2/crypto.json index c53a681f186..65d3931fabf 100644 --- a/etc/upgrades/1695203585-missing-constraint-in-circuit/testnet2/crypto.json +++ b/etc/upgrades/1695203585-missing-constraint-in-circuit/testnet2/crypto.json @@ -4,4 +4,4 @@ "recursionLeafLevelVkHash": "0x101e08b00193e529145ee09823378ef51a3bc8966504064f1f6ba3f1ba863210", "recursionCircuitsSetVksHash": "0x236c97bfbe75ff507e03909fae32a78be3a70d1b468b183f430010810284ed45" } -} \ No newline at end of file +} diff --git a/etc/upgrades/1695203585-missing-constraint-in-circuit/testnet2/transactions.json b/etc/upgrades/1695203585-missing-constraint-in-circuit/testnet2/transactions.json index 50b4705cdee..1609a80410c 100644 --- a/etc/upgrades/1695203585-missing-constraint-in-circuit/testnet2/transactions.json +++ b/etc/upgrades/1695203585-missing-constraint-in-circuit/testnet2/transactions.json @@ -11,12 +11,7 @@ "paymaster": 0, "nonce": 0, "value": 0, - "reserved": [ - 0, - 0, - 0, - 0 - ], + "reserved": [0, 0, 0, 0], "data": "0x", "signature": "0x", "factoryDeps": [], @@ -56,4 +51,4 @@ "initCalldata": "0x1ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000004a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001186ec268d49f1905f8d9c1e9d39fc33e98c74f91d91a21b8f7ef78bd09a8db8101e08b00193e529145ee09823378ef51a3bc8966504064f1f6ba3f1ba863210236c97bfbe75ff507e03909fae32a78be3a70d1b468b183f430010810284ed4500000000000000000000000000000000000000000000000000000000000004c000000000000000000000000000000000000000000000000000000000000004e00000000000000000000000000000000000000000000000000000000065116f38000000000000000000000000000000000000000000000000000000000000000f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, "executeUpgradeCalldata": "0x36d4eb8400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000070eedd750ce140c6320a721d3e6ff62c80e29db80000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005241ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000004a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001186ec268d49f1905f8d9c1e9d39fc33e98c74f91d91a21b8f7ef78bd09a8db8101e08b00193e529145ee09823378ef51a3bc8966504064f1f6ba3f1ba863210236c97bfbe75ff507e03909fae32a78be3a70d1b468b183f430010810284ed4500000000000000000000000000000000000000000000000000000000000004c000000000000000000000000000000000000000000000000000000000000004e00000000000000000000000000000000000000000000000000000000065116f38000000000000000000000000000000000000000000000000000000000000000f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" -} \ No newline at end of file +} diff --git a/etc/upgrades/1696936385-refunds-enhancement/mainnet2/transactions.json b/etc/upgrades/1696936385-refunds-enhancement/mainnet2/transactions.json index 78314cf95f4..dc132d9bdc5 100644 --- a/etc/upgrades/1696936385-refunds-enhancement/mainnet2/transactions.json +++ b/etc/upgrades/1696936385-refunds-enhancement/mainnet2/transactions.json @@ -11,12 +11,7 @@ "paymaster": 0, "nonce": 0, "value": 0, - "reserved": [ - 0, - 0, - 0, - 0 - ], + "reserved": [0, 0, 0, 0], "data": "0x", "signature": "0x", "factoryDeps": [], @@ -56,4 +51,4 @@ "initCalldata": "0x1ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000004a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004c000000000000000000000000000000000000000000000000000000000000004e0000000000000000000000000000000000000000000000000000000006530f01000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, "executeUpgradeCalldata": "0x36d4eb8400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000091ca046dad8c3db41f296267e1720d9c940f613d0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005241ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000004a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004c000000000000000000000000000000000000000000000000000000000000004e0000000000000000000000000000000000000000000000000000000006530f01000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" -} \ No newline at end of file +} diff --git a/etc/upgrades/1696936385-refunds-enhancement/stage2/transactions.json b/etc/upgrades/1696936385-refunds-enhancement/stage2/transactions.json index 4f982017d53..110e4f3e593 100644 --- a/etc/upgrades/1696936385-refunds-enhancement/stage2/transactions.json +++ b/etc/upgrades/1696936385-refunds-enhancement/stage2/transactions.json @@ -11,12 +11,7 @@ "paymaster": 0, "nonce": 0, "value": 0, - "reserved": [ - 0, - 0, - 0, - 0 - ], + "reserved": [0, 0, 0, 0], "data": "0x", "signature": "0x", "factoryDeps": [], @@ -56,4 +51,4 @@ "initCalldata": "0x1ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000004a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004c000000000000000000000000000000000000000000000000000000000000004e00000000000000000000000000000000000000000000000000000000065251ac400000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, "executeUpgradeCalldata": "0x36d4eb84000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000db876240f01a6dd38f5efc4ecefe52e5c13db3c70000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005241ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000004a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004c000000000000000000000000000000000000000000000000000000000000004e00000000000000000000000000000000000000000000000000000000065251ac400000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" -} \ No newline at end of file +} diff --git a/etc/upgrades/1696936385-refunds-enhancement/testnet2/transactions.json b/etc/upgrades/1696936385-refunds-enhancement/testnet2/transactions.json index f0ee7406059..5b88b1937ee 100644 --- a/etc/upgrades/1696936385-refunds-enhancement/testnet2/transactions.json +++ b/etc/upgrades/1696936385-refunds-enhancement/testnet2/transactions.json @@ -11,12 +11,7 @@ "paymaster": 0, "nonce": 0, "value": 0, - "reserved": [ - 0, - 0, - 0, - 0 - ], + "reserved": [0, 0, 0, 0], "data": "0x", "signature": "0x", "factoryDeps": [], @@ -56,4 +51,4 @@ "initCalldata": "0x1ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000004a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004c000000000000000000000000000000000000000000000000000000000000004e000000000000000000000000000000000000000000000000000000000652d2cc800000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, "executeUpgradeCalldata": "0x36d4eb8400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000070eedd750ce140c6320a721d3e6ff62c80e29db80000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005241ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000004a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004c000000000000000000000000000000000000000000000000000000000000004e000000000000000000000000000000000000000000000000000000000652d2cc800000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" -} \ No newline at end of file +} diff --git a/infrastructure/local-setup-preparation/tsconfig.json b/infrastructure/local-setup-preparation/tsconfig.json index 25645d23a73..f0466cc62ba 100644 --- a/infrastructure/local-setup-preparation/tsconfig.json +++ b/infrastructure/local-setup-preparation/tsconfig.json @@ -10,7 +10,5 @@ "preserveSymlinks": true, "preserveWatchOutput": true }, - "files": [ - "src/index.ts" - ] + "files": ["src/index.ts"] } diff --git a/infrastructure/protocol-upgrade/tsconfig.json b/infrastructure/protocol-upgrade/tsconfig.json index 613eda0f6e1..fe1ce1b5a6e 100644 --- a/infrastructure/protocol-upgrade/tsconfig.json +++ b/infrastructure/protocol-upgrade/tsconfig.json @@ -9,5 +9,5 @@ "preserveSymlinks": true, "preserveWatchOutput": true - }, + } } diff --git a/infrastructure/zk/package.json b/infrastructure/zk/package.json index e5111dbfc40..4f094e8bfeb 100644 --- a/infrastructure/zk/package.json +++ b/infrastructure/zk/package.json @@ -1,33 +1,33 @@ { - "name": "zk", - "version": "0.1.0", - "main": "build/index.js", - "license": "MIT", - "bin": "build/index.js", - "scripts": { - "build": "tsc", - "watch": "tsc --watch", - "start": "node build/index.js" - }, - "dependencies": { - "@iarna/toml": "^2.2.5", - "chalk": "^4.0.0", - "commander": "^6.0.0", - "deep-extend": "^0.6.0", - "dotenv": "^8.2.0", - "ethers": "~5.5.0", - "handlebars": "^4.7.8", - "node-fetch": "^2.6.1", - "tabtab": "^3.0.2", - "zksync-web3": "link:../../sdk/zksync-web3.js" - }, - "devDependencies": { - "@matterlabs/hardhat-zksync-solc": "^0.3.15", - "@types/deep-extend": "^0.4.31", - "@types/node": "^14.6.1", - "@types/node-fetch": "^2.5.7", - "@types/tabtab": "^3.0.1", - "hardhat": "=2.12.4", - "typescript": "^4.3.5" - } + "name": "zk", + "version": "0.1.0", + "main": "build/index.js", + "license": "MIT", + "bin": "build/index.js", + "scripts": { + "build": "tsc", + "watch": "tsc --watch", + "start": "node build/index.js" + }, + "dependencies": { + "@iarna/toml": "^2.2.5", + "chalk": "^4.0.0", + "commander": "^6.0.0", + "deep-extend": "^0.6.0", + "dotenv": "^8.2.0", + "ethers": "~5.5.0", + "handlebars": "^4.7.8", + "node-fetch": "^2.6.1", + "tabtab": "^3.0.2", + "zksync-web3": "link:../../sdk/zksync-web3.js" + }, + "devDependencies": { + "@matterlabs/hardhat-zksync-solc": "^0.3.15", + "@types/deep-extend": "^0.4.31", + "@types/node": "^14.6.1", + "@types/node-fetch": "^2.5.7", + "@types/tabtab": "^3.0.1", + "hardhat": "=2.12.4", + "typescript": "^4.3.5" + } } diff --git a/infrastructure/zk/tsconfig.json b/infrastructure/zk/tsconfig.json index f96df8d60ed..75662cbd56a 100644 --- a/infrastructure/zk/tsconfig.json +++ b/infrastructure/zk/tsconfig.json @@ -1,15 +1,13 @@ { - "compilerOptions": { - "target": "es2019", - "module": "commonjs", - "outDir": "build", - "strict": true, - "esModuleInterop": true, - "noEmitOnError": true, - "skipLibCheck": true, - "declaration": true - }, - "files": [ - "src/index.ts" - ] + "compilerOptions": { + "target": "es2019", + "module": "commonjs", + "outDir": "build", + "strict": true, + "esModuleInterop": true, + "noEmitOnError": true, + "skipLibCheck": true, + "declaration": true + }, + "files": ["src/index.ts"] } diff --git a/prover/vk_setup_data_generator_server_fri/data/snark_verification_scheduler_key.json b/prover/vk_setup_data_generator_server_fri/data/snark_verification_scheduler_key.json index d792b273153..b295acad281 100644 --- a/prover/vk_setup_data_generator_server_fri/data/snark_verification_scheduler_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/snark_verification_scheduler_key.json @@ -5,395 +5,140 @@ "num_witness_polys": 0, "gate_setup_commitments": [ { - "x": [ - 3134321788309977316, - 10573132553967014755, - 3001703164893106466, - 381414913732862840 - ], - "y": [ - 10023015411950883744, - 6896159948336889230, - 6414240783194755732, - 872372229201319096 - ], + "x": [3134321788309977316, 10573132553967014755, 3001703164893106466, 381414913732862840], + "y": [10023015411950883744, 6896159948336889230, 6414240783194755732, 872372229201319096], "infinity": false }, { - "x": [ - 13120971644342103937, - 11793287663204294817, - 3883340854702399708, - 1610760885102732376 - ], - "y": [ - 2272149790438908451, - 16362277919451948034, - 11222024348659324185, - 769204936692720831 - ], + "x": [13120971644342103937, 11793287663204294817, 3883340854702399708, 1610760885102732376], + "y": [2272149790438908451, 16362277919451948034, 11222024348659324185, 769204936692720831], "infinity": false }, { - "x": [ - 17731804648385463364, - 6957978511947926439, - 554530057858945391, - 1554116369209063151 - ], - "y": [ - 11068663668443960791, - 4165938511251890045, - 9157185920319394352, - 1356194940161196789 - ], + "x": [17731804648385463364, 6957978511947926439, 554530057858945391, 1554116369209063151], + "y": [11068663668443960791, 4165938511251890045, 9157185920319394352, 1356194940161196789], "infinity": false }, { - "x": [ - 8019563329680255469, - 10443600923825661309, - 10066002756835006084, - 2404912031772130651 - ], - "y": [ - 11909280006603456147, - 5818438825251413345, - 15870199885834935123, - 2757108579883054631 - ], + "x": [8019563329680255469, 10443600923825661309, 10066002756835006084, 2404912031772130651], + "y": [11909280006603456147, 5818438825251413345, 15870199885834935123, 2757108579883054631], "infinity": false }, { - "x": [ - 9723414060399071945, - 10180812700717519482, - 7936340440930941206, - 516257686460616129 - ], - "y": [ - 567977185774136652, - 4306281713268395827, - 18140207600873092049, - 3061955278209883828 - ], + "x": [9723414060399071945, 10180812700717519482, 7936340440930941206, 516257686460616129], + "y": [567977185774136652, 4306281713268395827, 18140207600873092049, 3061955278209883828], "infinity": false }, { - "x": [ - 18120818717781619238, - 16711368075993785449, - 16673817803744408050, - 700058928459046347 - ], - "y": [ - 7622480271915550714, - 13902980411406060504, - 6164172017934139902, - 1836938876363296665 - ], + "x": [18120818717781619238, 16711368075993785449, 16673817803744408050, 700058928459046347], + "y": [7622480271915550714, 13902980411406060504, 6164172017934139902, 1836938876363296665], "infinity": false }, { - "x": [ - 15818628187542915298, - 15402701417353228903, - 4645743436884029384, - 2409582523262225752 - ], - "y": [ - 10225110015471016873, - 3480449575574012457, - 13646267911522236018, - 3070086728021966273 - ], + "x": [15818628187542915298, 15402701417353228903, 4645743436884029384, 2409582523262225752], + "y": [10225110015471016873, 3480449575574012457, 13646267911522236018, 3070086728021966273], "infinity": false }, { - "x": [ - 15593293662666768812, - 17768691370516984644, - 17174288836059912543, - 2950415245130983093 - ], - "y": [ - 10405941745355450827, - 3865610534756768698, - 563805946543955734, - 1806918679491891699 - ], + "x": [15593293662666768812, 17768691370516984644, 17174288836059912543, 2950415245130983093], + "y": [10405941745355450827, 3865610534756768698, 563805946543955734, 1806918679491891699], "infinity": false } ], "gate_selectors_commitments": [ { - "x": [ - 5354921692103962663, - 10597914855112022168, - 8283977291194706970, - 1254033438787241395 - ], - "y": [ - 17990692095059328463, - 7491895001046969405, - 17510882385599010078, - 1762527058736778745 - ], + "x": [5354921692103962663, 10597914855112022168, 8283977291194706970, 1254033438787241395], + "y": [17990692095059328463, 7491895001046969405, 17510882385599010078, 1762527058736778745], "infinity": false }, { - "x": [ - 12328426125821267783, - 14677689403443047323, - 2357692814373165823, - 3268494923353713205 - ], - "y": [ - 9394214569640955242, - 450630302635608118, - 1477019964334489453, - 1150908451828220680 - ], + "x": [12328426125821267783, 14677689403443047323, 2357692814373165823, 3268494923353713205], + "y": [9394214569640955242, 450630302635608118, 1477019964334489453, 1150908451828220680], "infinity": false } ], "permutation_commitments": [ { - "x": [ - 11073033365046587506, - 17543366073703943346, - 2925375977998636107, - 411355966917613086 - ], - "y": [ - 4634938960149933815, - 10038620738808728516, - 5260176309304737799, - 14410327903164543 - ], + "x": [11073033365046587506, 17543366073703943346, 2925375977998636107, 411355966917613086], + "y": [4634938960149933815, 10038620738808728516, 5260176309304737799, 14410327903164543], "infinity": false }, { - "x": [ - 4505573069708166334, - 3514663015240928368, - 13885581324134225254, - 2759554901468343883 - ], - "y": [ - 14766134794032708062, - 3419963379718679828, - 14090109324006346322, - 2080971354192483161 - ], + "x": [4505573069708166334, 3514663015240928368, 13885581324134225254, 2759554901468343883], + "y": [14766134794032708062, 3419963379718679828, 14090109324006346322, 2080971354192483161], "infinity": false }, { - "x": [ - 10034756028637387237, - 13956897381252459181, - 17676764419229650887, - 1786540180828440303 - ], - "y": [ - 16234833038341145650, - 1114974762353197748, - 16711158590984748387, - 961724704749485864 - ], + "x": [10034756028637387237, 13956897381252459181, 17676764419229650887, 1786540180828440303], + "y": [16234833038341145650, 1114974762353197748, 16711158590984748387, 961724704749485864], "infinity": false }, { - "x": [ - 13207237492056542947, - 9498840683026707597, - 13316073393799666368, - 2265958217127439582 - ], - "y": [ - 9080715171198565366, - 9520983963961194766, - 7885036753736171049, - 3318336507646038340 - ], + "x": [13207237492056542947, 9498840683026707597, 13316073393799666368, 2265958217127439582], + "y": [9080715171198565366, 9520983963961194766, 7885036753736171049, 3318336507646038340], "infinity": false } ], "total_lookup_entries_length": 1786644, "lookup_selector_commitment": { - "x": [ - 9218954341000481996, - 1038591043397823945, - 2355917848722531772, - 1603833229224637991 - ], - "y": [ - 9294257929334679357, - 9665091690516467420, - 7057032139323633744, - 2846067557162208306 - ], + "x": [9218954341000481996, 1038591043397823945, 2355917848722531772, 1603833229224637991], + "y": [9294257929334679357, 9665091690516467420, 7057032139323633744, 2846067557162208306], "infinity": false }, "lookup_tables_commitments": [ { - "x": [ - 10873859091125335643, - 3906092213625635374, - 17046157606087980048, - 3193402705223440293 - ], - "y": [ - 10158946293873382504, - 2171386304067884865, - 6918663094168980658, - 350601565475975409 - ], + "x": [10873859091125335643, 3906092213625635374, 17046157606087980048, 3193402705223440293], + "y": [10158946293873382504, 2171386304067884865, 6918663094168980658, 350601565475975409], "infinity": false }, { - "x": [ - 12822112641313049260, - 3646552465186399021, - 10324071010773924047, - 2209084192380614662 - ], - "y": [ - 11045141628975531869, - 12589678537679955590, - 3065046617868727674, - 2099447669854151830 - ], + "x": [12822112641313049260, 3646552465186399021, 10324071010773924047, 2209084192380614662], + "y": [11045141628975531869, 12589678537679955590, 3065046617868727674, 2099447669854151830], "infinity": false }, { - "x": [ - 11395032673621937545, - 3000063650268118516, - 7857619430005721792, - 805706808484810738 - ], - "y": [ - 6817063666434679427, - 1646386051225388537, - 4677946977082722827, - 1369650305976868514 - ], + "x": [11395032673621937545, 3000063650268118516, 7857619430005721792, 805706808484810738], + "y": [6817063666434679427, 1646386051225388537, 4677946977082722827, 1369650305976868514], "infinity": false }, { - "x": [ - 2885179371868476351, - 159944842081142878, - 6092294387055034894, - 213843603626505240 - ], - "y": [ - 11868113133779277990, - 8509646480531194854, - 14088068011597639414, - 707070630614027545 - ], + "x": [2885179371868476351, 159944842081142878, 6092294387055034894, 213843603626505240], + "y": [11868113133779277990, 8509646480531194854, 14088068011597639414, 707070630614027545], "infinity": false } ], "lookup_table_type_commitment": { - "x": [ - 2681380516794566972, - 967983640969946255, - 2727464508424142824, - 1972327038478390223 - ], - "y": [ - 7977458078956869600, - 12274734452276806231, - 29244742286950686, - 667948288229117220 - ], + "x": [2681380516794566972, 967983640969946255, 2727464508424142824, 1972327038478390223], + "y": [7977458078956869600, 12274734452276806231, 29244742286950686, 667948288229117220], "infinity": false }, "non_residues": [ - [ - 5, - 0, - 0, - 0 - ], - [ - 7, - 0, - 0, - 0 - ], - [ - 10, - 0, - 0, - 0 - ] + [5, 0, 0, 0], + [7, 0, 0, 0], + [10, 0, 0, 0] ], "g2_elements": [ { "x": { - "c0": [ - 5106727233969649389, - 7440829307424791261, - 4785637993704342649, - 1729627375292849782 - ], - "c1": [ - 10945020018377822914, - 17413811393473931026, - 8241798111626485029, - 1841571559660931130 - ] + "c0": [5106727233969649389, 7440829307424791261, 4785637993704342649, 1729627375292849782], + "c1": [10945020018377822914, 17413811393473931026, 8241798111626485029, 1841571559660931130] }, "y": { - "c0": [ - 5541340697920699818, - 16416156555105522555, - 5380518976772849807, - 1353435754470862315 - ], - "c1": [ - 6173549831154472795, - 13567992399387660019, - 17050234209342075797, - 650358724130500725 - ] + "c0": [5541340697920699818, 16416156555105522555, 5380518976772849807, 1353435754470862315], + "c1": [6173549831154472795, 13567992399387660019, 17050234209342075797, 650358724130500725] }, "infinity": false }, { "x": { - "c0": [ - 9089143573911733168, - 11482283522806384523, - 13585589533905622862, - 79029415676722370 - ], - "c1": [ - 5692040832573735873, - 16884514497384809355, - 16717166481813659368, - 2742131088506155463 - ] + "c0": [9089143573911733168, 11482283522806384523, 13585589533905622862, 79029415676722370], + "c1": [5692040832573735873, 16884514497384809355, 16717166481813659368, 2742131088506155463] }, "y": { - "c0": [ - 9604638503594647125, - 1289961608472612514, - 6217038149984805214, - 2521661352385209130 - ], - "c1": [ - 17168069778630926308, - 11309277837895768996, - 15154989611154567813, - 359271377050603491 - ] + "c0": [9604638503594647125, 1289961608472612514, 6217038149984805214, 2521661352385209130], + "c1": [17168069778630926308, 11309277837895768996, 15154989611154567813, 359271377050603491] }, "infinity": false } ] -} \ No newline at end of file +} diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_basic_10_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_basic_10_key.json index 8b980dde093..341d50aebd7 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_basic_10_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_basic_10_key.json @@ -17,27 +17,13 @@ "domain_size": 1048576, "total_tables_len": 132352, "public_inputs_locations": [ - [ - 0, - 1027358 - ], - [ - 1, - 1027358 - ], - [ - 2, - 1027358 - ], - [ - 3, - 1027358 - ] + [0, 1027358], + [1, 1027358], + [2, 1027358], + [3, 1027358] ], "extra_constant_polys_for_selectors": 2, - "table_ids_column_idxes": [ - 6 - ], + "table_ids_column_idxes": [6], "quotient_degree": 8, "selectors_placement": { "Fork": { @@ -156,102 +142,22 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [ - 14828808970297586390, - 10812916566872682190, - 4814232139347019203, - 9176100102005882856 - ], - [ - 3967670424646093724, - 15187149346332822036, - 12510674113975494748, - 4510474866283045065 - ], - [ - 3090046568261325916, - 2517005306301042120, - 15367389528664824672, - 4112249640174889690 - ], - [ - 18105273888459951541, - 5232822348364097609, - 16713617721022374900, - 190722882016699057 - ], - [ - 3680596367242563456, - 8277283738818682164, - 770687293026604966, - 964680746586707996 - ], - [ - 14252438150460413337, - 10138568641496080571, - 10299531489109681582, - 1029545029340913858 - ], - [ - 15064118887360123896, - 5094380307043679103, - 14910118547805564561, - 10715877189078928458 - ], - [ - 15803708295742972434, - 11361281300374199895, - 17281542834964672336, - 4609037794875108477 - ], - [ - 17069406781160283989, - 1486103635977441667, - 5599688364977636665, - 2606216552412168601 - ], - [ - 11440625988157319556, - 14165489000241104461, - 12815938030387403166, - 18358353209834817866 - ], - [ - 17484081080457701823, - 8488503007959107424, - 15436257938093142847, - 4434713360392963026 - ], - [ - 11228941610173378380, - 15586341149405816978, - 6641174723323244420, - 6502235669428985157 - ], - [ - 1780813236656786088, - 13705357356856822817, - 13823081051755218384, - 2628439960173921306 - ], - [ - 5781733601274220376, - 4396700195519547383, - 4802209023715066280, - 7053779784999063193 - ], - [ - 11266624277386388719, - 8947017045799184361, - 15630186476936326904, - 4970655490195943663 - ], - [ - 13604491581251560181, - 754251763827647964, - 85019175871498033, - 16264768579713941582 - ] + [14828808970297586390, 10812916566872682190, 4814232139347019203, 9176100102005882856], + [3967670424646093724, 15187149346332822036, 12510674113975494748, 4510474866283045065], + [3090046568261325916, 2517005306301042120, 15367389528664824672, 4112249640174889690], + [18105273888459951541, 5232822348364097609, 16713617721022374900, 190722882016699057], + [3680596367242563456, 8277283738818682164, 770687293026604966, 964680746586707996], + [14252438150460413337, 10138568641496080571, 10299531489109681582, 1029545029340913858], + [15064118887360123896, 5094380307043679103, 14910118547805564561, 10715877189078928458], + [15803708295742972434, 11361281300374199895, 17281542834964672336, 4609037794875108477], + [17069406781160283989, 1486103635977441667, 5599688364977636665, 2606216552412168601], + [11440625988157319556, 14165489000241104461, 12815938030387403166, 18358353209834817866], + [17484081080457701823, 8488503007959107424, 15436257938093142847, 4434713360392963026], + [11228941610173378380, 15586341149405816978, 6641174723323244420, 6502235669428985157], + [1780813236656786088, 13705357356856822817, 13823081051755218384, 2628439960173921306], + [5781733601274220376, 4396700195519547383, 4802209023715066280, 7053779784999063193], + [11266624277386388719, 8947017045799184361, 15630186476936326904, 4970655490195943663], + [13604491581251560181, 754251763827647964, 85019175871498033, 16264768579713941582] ] } -} \ No newline at end of file +} diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_basic_11_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_basic_11_key.json index bd030f4a394..3f39e88aad8 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_basic_11_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_basic_11_key.json @@ -17,27 +17,13 @@ "domain_size": 1048576, "total_tables_len": 256, "public_inputs_locations": [ - [ - 0, - 531517 - ], - [ - 1, - 531517 - ], - [ - 2, - 531517 - ], - [ - 3, - 531517 - ] + [0, 531517], + [1, 531517], + [2, 531517], + [3, 531517] ], "extra_constant_polys_for_selectors": 3, - "table_ids_column_idxes": [ - 7 - ], + "table_ids_column_idxes": [7], "quotient_degree": 8, "selectors_placement": { "Fork": { @@ -156,102 +142,22 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [ - 769023300008107994, - 15035929950782434877, - 4767632476551610273, - 6003255068455690448 - ], - [ - 9026207300516234226, - 12638320530307573615, - 9548682324993884667, - 1669798832247316225 - ], - [ - 15771054686436993477, - 14867268062778845716, - 2755571000455103667, - 17012958053718147653 - ], - [ - 4796035851498319953, - 15578398003463831188, - 16487202842559859878, - 12241980977059723891 - ], - [ - 4905638728558119005, - 7863530509045382726, - 17089556944619165055, - 6881822366736890373 - ], - [ - 5605698221760842562, - 15309408538060590842, - 7774687445824112675, - 1029523717262265273 - ], - [ - 4602145677202369894, - 10437641120626639391, - 16191157018649573359, - 2145181286557866215 - ], - [ - 8347044010387916224, - 7660057627892565262, - 4087655568250966187, - 4920987872151258558 - ], - [ - 4652946618899021165, - 10106017231231912813, - 3800120974014235756, - 6675575778477161887 - ], - [ - 4980892440155162443, - 6801648544364465294, - 2944365492323162449, - 6942743875951446975 - ], - [ - 17666291786065358473, - 11132525791177279380, - 1090211641846788491, - 18206157565187626653 - ], - [ - 11955322036584323772, - 9745237745974724322, - 7620783083675382303, - 6501674220304463161 - ], - [ - 14154028621322325960, - 12267966522963634693, - 16381614744195346959, - 10938579521199157178 - ], - [ - 5661196656360295299, - 16217006627182303897, - 15559803411312667053, - 14580126280029049348 - ], - [ - 9186970898669061808, - 692683705561232556, - 14664202853793025315, - 7113265307923171991 - ], - [ - 256017097329808658, - 1298676672131862834, - 9342013003187223457, - 172944159302847111 - ] + [769023300008107994, 15035929950782434877, 4767632476551610273, 6003255068455690448], + [9026207300516234226, 12638320530307573615, 9548682324993884667, 1669798832247316225], + [15771054686436993477, 14867268062778845716, 2755571000455103667, 17012958053718147653], + [4796035851498319953, 15578398003463831188, 16487202842559859878, 12241980977059723891], + [4905638728558119005, 7863530509045382726, 17089556944619165055, 6881822366736890373], + [5605698221760842562, 15309408538060590842, 7774687445824112675, 1029523717262265273], + [4602145677202369894, 10437641120626639391, 16191157018649573359, 2145181286557866215], + [8347044010387916224, 7660057627892565262, 4087655568250966187, 4920987872151258558], + [4652946618899021165, 10106017231231912813, 3800120974014235756, 6675575778477161887], + [4980892440155162443, 6801648544364465294, 2944365492323162449, 6942743875951446975], + [17666291786065358473, 11132525791177279380, 1090211641846788491, 18206157565187626653], + [11955322036584323772, 9745237745974724322, 7620783083675382303, 6501674220304463161], + [14154028621322325960, 12267966522963634693, 16381614744195346959, 10938579521199157178], + [5661196656360295299, 16217006627182303897, 15559803411312667053, 14580126280029049348], + [9186970898669061808, 692683705561232556, 14664202853793025315, 7113265307923171991], + [256017097329808658, 1298676672131862834, 9342013003187223457, 172944159302847111] ] } -} \ No newline at end of file +} diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_basic_12_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_basic_12_key.json index 15680c68c30..af81601a174 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_basic_12_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_basic_12_key.json @@ -17,27 +17,13 @@ "domain_size": 1048576, "total_tables_len": 256, "public_inputs_locations": [ - [ - 0, - 531517 - ], - [ - 1, - 531517 - ], - [ - 2, - 531517 - ], - [ - 3, - 531517 - ] + [0, 531517], + [1, 531517], + [2, 531517], + [3, 531517] ], "extra_constant_polys_for_selectors": 3, - "table_ids_column_idxes": [ - 7 - ], + "table_ids_column_idxes": [7], "quotient_degree": 8, "selectors_placement": { "Fork": { @@ -156,102 +142,22 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [ - 769023300008107994, - 15035929950782434877, - 4767632476551610273, - 6003255068455690448 - ], - [ - 9026207300516234226, - 12638320530307573615, - 9548682324993884667, - 1669798832247316225 - ], - [ - 15771054686436993477, - 14867268062778845716, - 2755571000455103667, - 17012958053718147653 - ], - [ - 4796035851498319953, - 15578398003463831188, - 16487202842559859878, - 12241980977059723891 - ], - [ - 4905638728558119005, - 7863530509045382726, - 17089556944619165055, - 6881822366736890373 - ], - [ - 5605698221760842562, - 15309408538060590842, - 7774687445824112675, - 1029523717262265273 - ], - [ - 4602145677202369894, - 10437641120626639391, - 16191157018649573359, - 2145181286557866215 - ], - [ - 8347044010387916224, - 7660057627892565262, - 4087655568250966187, - 4920987872151258558 - ], - [ - 4652946618899021165, - 10106017231231912813, - 3800120974014235756, - 6675575778477161887 - ], - [ - 4980892440155162443, - 6801648544364465294, - 2944365492323162449, - 6942743875951446975 - ], - [ - 17666291786065358473, - 11132525791177279380, - 1090211641846788491, - 18206157565187626653 - ], - [ - 11955322036584323772, - 9745237745974724322, - 7620783083675382303, - 6501674220304463161 - ], - [ - 14154028621322325960, - 12267966522963634693, - 16381614744195346959, - 10938579521199157178 - ], - [ - 5661196656360295299, - 16217006627182303897, - 15559803411312667053, - 14580126280029049348 - ], - [ - 9186970898669061808, - 692683705561232556, - 14664202853793025315, - 7113265307923171991 - ], - [ - 256017097329808658, - 1298676672131862834, - 9342013003187223457, - 172944159302847111 - ] + [769023300008107994, 15035929950782434877, 4767632476551610273, 6003255068455690448], + [9026207300516234226, 12638320530307573615, 9548682324993884667, 1669798832247316225], + [15771054686436993477, 14867268062778845716, 2755571000455103667, 17012958053718147653], + [4796035851498319953, 15578398003463831188, 16487202842559859878, 12241980977059723891], + [4905638728558119005, 7863530509045382726, 17089556944619165055, 6881822366736890373], + [5605698221760842562, 15309408538060590842, 7774687445824112675, 1029523717262265273], + [4602145677202369894, 10437641120626639391, 16191157018649573359, 2145181286557866215], + [8347044010387916224, 7660057627892565262, 4087655568250966187, 4920987872151258558], + [4652946618899021165, 10106017231231912813, 3800120974014235756, 6675575778477161887], + [4980892440155162443, 6801648544364465294, 2944365492323162449, 6942743875951446975], + [17666291786065358473, 11132525791177279380, 1090211641846788491, 18206157565187626653], + [11955322036584323772, 9745237745974724322, 7620783083675382303, 6501674220304463161], + [14154028621322325960, 12267966522963634693, 16381614744195346959, 10938579521199157178], + [5661196656360295299, 16217006627182303897, 15559803411312667053, 14580126280029049348], + [9186970898669061808, 692683705561232556, 14664202853793025315, 7113265307923171991], + [256017097329808658, 1298676672131862834, 9342013003187223457, 172944159302847111] ] } -} \ No newline at end of file +} diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_basic_13_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_basic_13_key.json index fe32152c311..11c49d43e5c 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_basic_13_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_basic_13_key.json @@ -17,27 +17,13 @@ "domain_size": 1048576, "total_tables_len": 132096, "public_inputs_locations": [ - [ - 0, - 1038149 - ], - [ - 1, - 1038149 - ], - [ - 2, - 1038149 - ], - [ - 3, - 1038149 - ] + [0, 1038149], + [1, 1038149], + [2, 1038149], + [3, 1038149] ], "extra_constant_polys_for_selectors": 2, - "table_ids_column_idxes": [ - 6 - ], + "table_ids_column_idxes": [6], "quotient_degree": 8, "selectors_placement": { "Fork": { @@ -143,102 +129,22 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [ - 14777139935278588112, - 4852642306346514505, - 528870644537653013, - 12766220607019407671 - ], - [ - 4257836937173457180, - 18105850810127810627, - 12045855835945477909, - 1337145016913030516 - ], - [ - 13540294178921617935, - 5675450379425866696, - 8080330723590348862, - 12416515377803888920 - ], - [ - 3171578350856517770, - 6539655571602714350, - 17682924767985674977, - 8074611540701237863 - ], - [ - 14866967567212658098, - 14985810164396930899, - 14103564390721978582, - 2713291878303732148 - ], - [ - 7209698436584637628, - 72403128177350562, - 13748975409439240331, - 17101408191037730854 - ], - [ - 7094792714865445950, - 14145350607330203478, - 3322372571606796615, - 7791275147072878055 - ], - [ - 10260092656566629894, - 6872708783997532427, - 5457407604248314227, - 366003053747525096 - ], - [ - 6163187172733089710, - 15116272236856095840, - 8980783297696807334, - 4318634308458673791 - ], - [ - 22911656643808543, - 4389862417760095893, - 8180530007173246228, - 15363392102238906744 - ], - [ - 16724058906600359122, - 9749245991791698283, - 3733079220084897482, - 35144727903715636 - ], - [ - 1733024683910700810, - 16815568708094698990, - 9597261785243145371, - 14191876845225710581 - ], - [ - 3368783094877746336, - 10313180424218970297, - 7411576603144233838, - 18155104604678927944 - ], - [ - 15539244454544408034, - 14071575935246766022, - 3167686754143854069, - 2580957889210849319 - ], - [ - 11188593692389277627, - 3317111011441128346, - 18315606312625447776, - 14080235054242793975 - ], - [ - 11188480902959932408, - 16241470651544083095, - 17491552077640160913, - 1747401256351375709 - ] + [14777139935278588112, 4852642306346514505, 528870644537653013, 12766220607019407671], + [4257836937173457180, 18105850810127810627, 12045855835945477909, 1337145016913030516], + [13540294178921617935, 5675450379425866696, 8080330723590348862, 12416515377803888920], + [3171578350856517770, 6539655571602714350, 17682924767985674977, 8074611540701237863], + [14866967567212658098, 14985810164396930899, 14103564390721978582, 2713291878303732148], + [7209698436584637628, 72403128177350562, 13748975409439240331, 17101408191037730854], + [7094792714865445950, 14145350607330203478, 3322372571606796615, 7791275147072878055], + [10260092656566629894, 6872708783997532427, 5457407604248314227, 366003053747525096], + [6163187172733089710, 15116272236856095840, 8980783297696807334, 4318634308458673791], + [22911656643808543, 4389862417760095893, 8180530007173246228, 15363392102238906744], + [16724058906600359122, 9749245991791698283, 3733079220084897482, 35144727903715636], + [1733024683910700810, 16815568708094698990, 9597261785243145371, 14191876845225710581], + [3368783094877746336, 10313180424218970297, 7411576603144233838, 18155104604678927944], + [15539244454544408034, 14071575935246766022, 3167686754143854069, 2580957889210849319], + [11188593692389277627, 3317111011441128346, 18315606312625447776, 14080235054242793975], + [11188480902959932408, 16241470651544083095, 17491552077640160913, 1747401256351375709] ] } -} \ No newline at end of file +} diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_basic_1_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_basic_1_key.json index 54cda61bfca..7c616f28d89 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_basic_1_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_basic_1_key.json @@ -17,27 +17,13 @@ "domain_size": 1048576, "total_tables_len": 68756, "public_inputs_locations": [ - [ - 0, - 1041180 - ], - [ - 1, - 1041180 - ], - [ - 2, - 1041180 - ], - [ - 3, - 1041180 - ] + [0, 1041180], + [1, 1041180], + [2, 1041180], + [3, 1041180] ], "extra_constant_polys_for_selectors": 3, - "table_ids_column_idxes": [ - 7 - ], + "table_ids_column_idxes": [7], "quotient_degree": 8, "selectors_placement": { "Fork": { @@ -182,102 +168,22 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [ - 11230239963091452912, - 13026461504664266360, - 16713169701215574185, - 12615976815403328075 - ], - [ - 3804170955286114995, - 17070428581913287652, - 16444458341617335831, - 12310477573463289452 - ], - [ - 15717060580753384291, - 5009332941172699339, - 5141249138356870627, - 14525082357218066066 - ], - [ - 5451473672302709994, - 14405751484257675144, - 6034423888032264287, - 14528639950002943854 - ], - [ - 11233253504932768792, - 9984746197426258635, - 4438596486612781127, - 17198259095221505968 - ], - [ - 5681291117413714556, - 18436270377115663121, - 11989211218541826903, - 2671135999160204746 - ], - [ - 963730224051018518, - 1293300388921029500, - 7261069736084660486, - 12414181044622900231 - ], - [ - 17155210460432560694, - 920670927493907875, - 6658462737460123613, - 8253351903179999964 - ], - [ - 3039615529982926935, - 12254392109531368227, - 12274357209453453775, - 16608606384477787215 - ], - [ - 11218496188813210888, - 16107046895420213310, - 16285761395335573298, - 8624190103510841482 - ], - [ - 14835727297511074005, - 1164596723783439781, - 11276497358832644724, - 9219531475080512501 - ], - [ - 3715985935119482043, - 12185867206854340138, - 7900628271499451412, - 8891356055003024224 - ], - [ - 17763963322580587554, - 218146194744968367, - 16033549148238902530, - 1522529898878047239 - ], - [ - 8120794419871565322, - 18267867130143702317, - 17178857528695612575, - 14839022417830798252 - ], - [ - 16480189677896973754, - 18441483621256548692, - 3982214183107947832, - 5099760740801601882 - ], - [ - 10335714458962187072, - 8498294096277334786, - 8574103413352512596, - 9714850528124914412 - ] + [11230239963091452912, 13026461504664266360, 16713169701215574185, 12615976815403328075], + [3804170955286114995, 17070428581913287652, 16444458341617335831, 12310477573463289452], + [15717060580753384291, 5009332941172699339, 5141249138356870627, 14525082357218066066], + [5451473672302709994, 14405751484257675144, 6034423888032264287, 14528639950002943854], + [11233253504932768792, 9984746197426258635, 4438596486612781127, 17198259095221505968], + [5681291117413714556, 18436270377115663121, 11989211218541826903, 2671135999160204746], + [963730224051018518, 1293300388921029500, 7261069736084660486, 12414181044622900231], + [17155210460432560694, 920670927493907875, 6658462737460123613, 8253351903179999964], + [3039615529982926935, 12254392109531368227, 12274357209453453775, 16608606384477787215], + [11218496188813210888, 16107046895420213310, 16285761395335573298, 8624190103510841482], + [14835727297511074005, 1164596723783439781, 11276497358832644724, 9219531475080512501], + [3715985935119482043, 12185867206854340138, 7900628271499451412, 8891356055003024224], + [17763963322580587554, 218146194744968367, 16033549148238902530, 1522529898878047239], + [8120794419871565322, 18267867130143702317, 17178857528695612575, 14839022417830798252], + [16480189677896973754, 18441483621256548692, 3982214183107947832, 5099760740801601882], + [10335714458962187072, 8498294096277334786, 8574103413352512596, 9714850528124914412] ] } -} \ No newline at end of file +} diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_basic_2_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_basic_2_key.json index afbdd17f87d..938ab4d6243 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_basic_2_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_basic_2_key.json @@ -17,27 +17,13 @@ "domain_size": 1048576, "total_tables_len": 256, "public_inputs_locations": [ - [ - 0, - 1021854 - ], - [ - 1, - 1021854 - ], - [ - 2, - 1021854 - ], - [ - 3, - 1021854 - ] + [0, 1021854], + [1, 1021854], + [2, 1021854], + [3, 1021854] ], "extra_constant_polys_for_selectors": 3, - "table_ids_column_idxes": [ - 7 - ], + "table_ids_column_idxes": [7], "quotient_degree": 8, "selectors_placement": { "Fork": { @@ -156,102 +142,22 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [ - 2638073007663622156, - 8095790926675075575, - 16070536450025430297, - 11107879245782883310 - ], - [ - 14146741033954484667, - 6190536674348638720, - 16225788979445059477, - 14054620090462985529 - ], - [ - 11640224008014629596, - 641539748496027160, - 13808722951176221096, - 16170765986761751839 - ], - [ - 3935980412801468150, - 1369763633048581729, - 15164038222707237449, - 13549026317001505493 - ], - [ - 7347140194150198874, - 3761583621533582182, - 1201042008705759557, - 4518814071203771589 - ], - [ - 800427219378311884, - 9408589372717347086, - 4254572946942417329, - 5142794058426597251 - ], - [ - 9025763675471789857, - 9658241200006349915, - 10843576536878471228, - 4504613934156851017 - ], - [ - 924391528635837029, - 17275471398483292983, - 7119295641875104852, - 3574531397848859770 - ], - [ - 9377840526717456169, - 10735342053764638034, - 2342156236435128394, - 14166002014472046096 - ], - [ - 2892383637971079443, - 13418647945623595756, - 10019182992393923816, - 9844763621346094605 - ], - [ - 10882982703274329811, - 1514425380968646350, - 13439208364741860903, - 13990068349260696136 - ], - [ - 15895812818511549818, - 15738749976988188006, - 13440084002922282596, - 14578356625798184093 - ], - [ - 3859406845557969736, - 17314298659359090415, - 16770924942850282883, - 486597592063200525 - ], - [ - 11378407834848513159, - 4967859104549187166, - 13937264085276400573, - 7478354099484226349 - ], - [ - 1449906124962973794, - 5408228139111124399, - 1658036384062801904, - 7066463570538863033 - ], - [ - 15186027246389802614, - 9949859568958827686, - 11971923963356626879, - 15735564656222075589 - ] + [2638073007663622156, 8095790926675075575, 16070536450025430297, 11107879245782883310], + [14146741033954484667, 6190536674348638720, 16225788979445059477, 14054620090462985529], + [11640224008014629596, 641539748496027160, 13808722951176221096, 16170765986761751839], + [3935980412801468150, 1369763633048581729, 15164038222707237449, 13549026317001505493], + [7347140194150198874, 3761583621533582182, 1201042008705759557, 4518814071203771589], + [800427219378311884, 9408589372717347086, 4254572946942417329, 5142794058426597251], + [9025763675471789857, 9658241200006349915, 10843576536878471228, 4504613934156851017], + [924391528635837029, 17275471398483292983, 7119295641875104852, 3574531397848859770], + [9377840526717456169, 10735342053764638034, 2342156236435128394, 14166002014472046096], + [2892383637971079443, 13418647945623595756, 10019182992393923816, 9844763621346094605], + [10882982703274329811, 1514425380968646350, 13439208364741860903, 13990068349260696136], + [15895812818511549818, 15738749976988188006, 13440084002922282596, 14578356625798184093], + [3859406845557969736, 17314298659359090415, 16770924942850282883, 486597592063200525], + [11378407834848513159, 4967859104549187166, 13937264085276400573, 7478354099484226349], + [1449906124962973794, 5408228139111124399, 1658036384062801904, 7066463570538863033], + [15186027246389802614, 9949859568958827686, 11971923963356626879, 15735564656222075589] ] } -} \ No newline at end of file +} diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_basic_3_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_basic_3_key.json index 0cfb70f8292..1291f810ba0 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_basic_3_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_basic_3_key.json @@ -17,27 +17,13 @@ "domain_size": 1048576, "total_tables_len": 12320, "public_inputs_locations": [ - [ - 0, - 1045893 - ], - [ - 1, - 1045893 - ], - [ - 2, - 1045893 - ], - [ - 3, - 1045893 - ] + [0, 1045893], + [1, 1045893], + [2, 1045893], + [3, 1045893] ], "extra_constant_polys_for_selectors": 2, - "table_ids_column_idxes": [ - 6 - ], + "table_ids_column_idxes": [6], "quotient_degree": 8, "selectors_placement": { "Fork": { @@ -143,102 +129,22 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [ - 14477188964753033185, - 8969677320239131616, - 1511337688601558079, - 6903237435877294238 - ], - [ - 6879979662383013500, - 9972710512945599417, - 1141938191658961290, - 7985281381511529082 - ], - [ - 17209416762295781376, - 598939655522077579, - 6689912638469680235, - 4921519662278829132 - ], - [ - 2218810108211543567, - 17367409571577782381, - 4068453030111399481, - 2894111853945751344 - ], - [ - 9999042349572898395, - 7429179575907305306, - 10123408942776369379, - 3022715221462077728 - ], - [ - 10045842633239015513, - 4244812848324665170, - 12301343603596417356, - 11332920712778059030 - ], - [ - 15900139291770141663, - 8192446346506891091, - 10086891539583546802, - 7343942987745068197 - ], - [ - 6124221718954912549, - 13486682166896696529, - 15097291952143481844, - 16653894364467704495 - ], - [ - 12766623698334678967, - 1729058559883227397, - 1411108054906351423, - 13278453333171202065 - ], - [ - 12233418151438626108, - 14016138745865492456, - 13255147568691004416, - 14998854132551828470 - ], - [ - 10323923076292169703, - 8158278707949376146, - 12845614783152862914, - 5914093648720582597 - ], - [ - 13520835009196520971, - 14417779140547238889, - 6862603050786324034, - 10245030009169430808 - ], - [ - 1835499986105723876, - 9973301486190772269, - 3431085138170097359, - 16617926458565371046 - ], - [ - 6995430833584764582, - 10186803315798237521, - 13404931797112939412, - 17530795913574984460 - ], - [ - 10883424944588923206, - 13314595728239865895, - 3282096066350298749, - 3956046981299225896 - ], - [ - 12087054656445457911, - 7314398367646261307, - 7998118142061675046, - 11673364943123337175 - ] + [14477188964753033185, 8969677320239131616, 1511337688601558079, 6903237435877294238], + [6879979662383013500, 9972710512945599417, 1141938191658961290, 7985281381511529082], + [17209416762295781376, 598939655522077579, 6689912638469680235, 4921519662278829132], + [2218810108211543567, 17367409571577782381, 4068453030111399481, 2894111853945751344], + [9999042349572898395, 7429179575907305306, 10123408942776369379, 3022715221462077728], + [10045842633239015513, 4244812848324665170, 12301343603596417356, 11332920712778059030], + [15900139291770141663, 8192446346506891091, 10086891539583546802, 7343942987745068197], + [6124221718954912549, 13486682166896696529, 15097291952143481844, 16653894364467704495], + [12766623698334678967, 1729058559883227397, 1411108054906351423, 13278453333171202065], + [12233418151438626108, 14016138745865492456, 13255147568691004416, 14998854132551828470], + [10323923076292169703, 8158278707949376146, 12845614783152862914, 5914093648720582597], + [13520835009196520971, 14417779140547238889, 6862603050786324034, 10245030009169430808], + [1835499986105723876, 9973301486190772269, 3431085138170097359, 16617926458565371046], + [6995430833584764582, 10186803315798237521, 13404931797112939412, 17530795913574984460], + [10883424944588923206, 13314595728239865895, 3282096066350298749, 3956046981299225896], + [12087054656445457911, 7314398367646261307, 7998118142061675046, 11673364943123337175] ] } -} \ No newline at end of file +} diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_basic_4_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_basic_4_key.json index a4a410d90a2..abb66a43923 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_basic_4_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_basic_4_key.json @@ -17,27 +17,13 @@ "domain_size": 1048576, "total_tables_len": 256, "public_inputs_locations": [ - [ - 0, - 770856 - ], - [ - 1, - 770856 - ], - [ - 2, - 770856 - ], - [ - 3, - 770856 - ] + [0, 770856], + [1, 770856], + [2, 770856], + [3, 770856] ], "extra_constant_polys_for_selectors": 3, - "table_ids_column_idxes": [ - 7 - ], + "table_ids_column_idxes": [7], "quotient_degree": 8, "selectors_placement": { "Fork": { @@ -156,102 +142,22 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [ - 13241330279191725103, - 13753032629530173038, - 2076223530664948596, - 3297807117114706044 - ], - [ - 11713836288112670191, - 1177996762465404370, - 7559895083149599749, - 3210974432904624409 - ], - [ - 12556775438783409088, - 12836668195118427958, - 10659579382288992879, - 14824820023358081641 - ], - [ - 12129434367710731467, - 13223863980858698592, - 15076313205959171338, - 8812832758598326992 - ], - [ - 5619695298194316584, - 1702543119292958822, - 10286311332797928654, - 5029271658667181176 - ], - [ - 7415141098448981547, - 15663039494509354932, - 13208197120197557194, - 11245742858683836013 - ], - [ - 3002540241136310707, - 11547797899694244403, - 7124622061839424949, - 10949013563713078494 - ], - [ - 17142575575809782204, - 13800993532867337554, - 4423537342426483807, - 12089179399318945120 - ], - [ - 5543363940431137493, - 14528536317911082899, - 3928220692870214567, - 7185369207264833028 - ], - [ - 2815159846192152478, - 16507211682718130921, - 1793329775903937916, - 6473686931817864950 - ], - [ - 17815165628195346102, - 9542948826192641186, - 14973284068738873799, - 13577641628730921985 - ], - [ - 17938393397553240876, - 15660715751237780491, - 12630446844016399148, - 11862059154139259048 - ], - [ - 11953996319846633859, - 12131238563851642562, - 5803319004748576191, - 10988868046472383675 - ], - [ - 3859400868090135128, - 15214844687221204138, - 13973059553580269639, - 7853383910131759805 - ], - [ - 11592486898864810791, - 4871056958970591747, - 137946356858301988, - 14529417267976359973 - ], - [ - 11093343120608557204, - 14684319039324015274, - 5221221840195929029, - 17478918223903237221 - ] + [13241330279191725103, 13753032629530173038, 2076223530664948596, 3297807117114706044], + [11713836288112670191, 1177996762465404370, 7559895083149599749, 3210974432904624409], + [12556775438783409088, 12836668195118427958, 10659579382288992879, 14824820023358081641], + [12129434367710731467, 13223863980858698592, 15076313205959171338, 8812832758598326992], + [5619695298194316584, 1702543119292958822, 10286311332797928654, 5029271658667181176], + [7415141098448981547, 15663039494509354932, 13208197120197557194, 11245742858683836013], + [3002540241136310707, 11547797899694244403, 7124622061839424949, 10949013563713078494], + [17142575575809782204, 13800993532867337554, 4423537342426483807, 12089179399318945120], + [5543363940431137493, 14528536317911082899, 3928220692870214567, 7185369207264833028], + [2815159846192152478, 16507211682718130921, 1793329775903937916, 6473686931817864950], + [17815165628195346102, 9542948826192641186, 14973284068738873799, 13577641628730921985], + [17938393397553240876, 15660715751237780491, 12630446844016399148, 11862059154139259048], + [11953996319846633859, 12131238563851642562, 5803319004748576191, 10988868046472383675], + [3859400868090135128, 15214844687221204138, 13973059553580269639, 7853383910131759805], + [11592486898864810791, 4871056958970591747, 137946356858301988, 14529417267976359973], + [11093343120608557204, 14684319039324015274, 5221221840195929029, 17478918223903237221] ] } -} \ No newline at end of file +} diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_basic_5_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_basic_5_key.json index 4537187b9b3..b3e63bb053d 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_basic_5_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_basic_5_key.json @@ -17,27 +17,13 @@ "domain_size": 1048576, "total_tables_len": 132096, "public_inputs_locations": [ - [ - 0, - 1047292 - ], - [ - 1, - 1047292 - ], - [ - 2, - 1047292 - ], - [ - 3, - 1047292 - ] + [0, 1047292], + [1, 1047292], + [2, 1047292], + [3, 1047292] ], "extra_constant_polys_for_selectors": 2, - "table_ids_column_idxes": [ - 6 - ], + "table_ids_column_idxes": [6], "quotient_degree": 8, "selectors_placement": { "Fork": { @@ -143,102 +129,22 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [ - 5926546619152935907, - 11291861669768573654, - 11100100891141895430, - 1040099038134319144 - ], - [ - 9405378490457870663, - 11971348617109093172, - 7779954465112100917, - 8521139113892942903 - ], - [ - 1041442145290466080, - 2626937507866398782, - 4297959424787982903, - 7963254695121664304 - ], - [ - 8679424872010178168, - 928230210029079843, - 17862919271344969949, - 9085342720844642067 - ], - [ - 2346566700143956389, - 751827788815495159, - 18018129704559687246, - 6344673729449349673 - ], - [ - 12798999539756004171, - 2962217720855368908, - 17815764746262544024, - 6141433679632029898 - ], - [ - 10612436896218340091, - 5382517797965219051, - 1440771605952502920, - 6120504474919675320 - ], - [ - 5639210895028949894, - 17579589483393163114, - 8531068549022389838, - 9055992165271810945 - ], - [ - 15625252378325581383, - 11791782086341113568, - 1976318982912441593, - 16561636205817299485 - ], - [ - 9291503982934971506, - 5967409911022700010, - 9096839168538146295, - 3004596177933970509 - ], - [ - 9243725287341188464, - 6878316427230924845, - 7270708110528992687, - 15417458474646493002 - ], - [ - 15577762808206668193, - 10775213926343901301, - 4900917235853777300, - 8940673145641313937 - ], - [ - 18157038451252266825, - 13776543473230491269, - 17449669960102455201, - 1902286122568749061 - ], - [ - 10247491007925641249, - 5411016508841956578, - 11766519965796614613, - 1073824923129670847 - ], - [ - 10691592838471536401, - 16863854034452440410, - 16989985027265774429, - 10784858673090746367 - ], - [ - 5688638173552292266, - 2543022480770607266, - 1257951713416281965, - 6435312724052439304 - ] + [5926546619152935907, 11291861669768573654, 11100100891141895430, 1040099038134319144], + [9405378490457870663, 11971348617109093172, 7779954465112100917, 8521139113892942903], + [1041442145290466080, 2626937507866398782, 4297959424787982903, 7963254695121664304], + [8679424872010178168, 928230210029079843, 17862919271344969949, 9085342720844642067], + [2346566700143956389, 751827788815495159, 18018129704559687246, 6344673729449349673], + [12798999539756004171, 2962217720855368908, 17815764746262544024, 6141433679632029898], + [10612436896218340091, 5382517797965219051, 1440771605952502920, 6120504474919675320], + [5639210895028949894, 17579589483393163114, 8531068549022389838, 9055992165271810945], + [15625252378325581383, 11791782086341113568, 1976318982912441593, 16561636205817299485], + [9291503982934971506, 5967409911022700010, 9096839168538146295, 3004596177933970509], + [9243725287341188464, 6878316427230924845, 7270708110528992687, 15417458474646493002], + [15577762808206668193, 10775213926343901301, 4900917235853777300, 8940673145641313937], + [18157038451252266825, 13776543473230491269, 17449669960102455201, 1902286122568749061], + [10247491007925641249, 5411016508841956578, 11766519965796614613, 1073824923129670847], + [10691592838471536401, 16863854034452440410, 16989985027265774429, 10784858673090746367], + [5688638173552292266, 2543022480770607266, 1257951713416281965, 6435312724052439304] ] } -} \ No newline at end of file +} diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_basic_6_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_basic_6_key.json index 48533211ab0..d72d240e25b 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_basic_6_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_basic_6_key.json @@ -17,27 +17,13 @@ "domain_size": 1048576, "total_tables_len": 12320, "public_inputs_locations": [ - [ - 0, - 1039793 - ], - [ - 1, - 1039793 - ], - [ - 2, - 1039793 - ], - [ - 3, - 1039793 - ] + [0, 1039793], + [1, 1039793], + [2, 1039793], + [3, 1039793] ], "extra_constant_polys_for_selectors": 2, - "table_ids_column_idxes": [ - 6 - ], + "table_ids_column_idxes": [6], "quotient_degree": 8, "selectors_placement": { "Fork": { @@ -143,102 +129,22 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [ - 7131095197302553268, - 8153577698865827964, - 4503618255465567901, - 14277683095622422701 - ], - [ - 17227565432950328258, - 3812763700819798255, - 11013754802988076876, - 6868705666417715458 - ], - [ - 6323710131523972374, - 2634684603167736396, - 18066615186100844391, - 12905391948029250777 - ], - [ - 3492005229273374536, - 6055742838160324534, - 1795486371688618704, - 13052026771106363342 - ], - [ - 10281812076992462791, - 7165153365649379245, - 13022274058059396511, - 13989909544832134378 - ], - [ - 12027415465257630320, - 3276226892300848010, - 8686471638009106913, - 14892455799109213586 - ], - [ - 2589896055307349461, - 2860115159278340436, - 16194627146103061118, - 7076143423549975584 - ], - [ - 13667404340259521763, - 6297649363425018745, - 16167424072873520384, - 3830963799067739016 - ], - [ - 16665883187665722508, - 314738727176100190, - 4253386482569091860, - 1926299543937236525 - ], - [ - 7820355437968047327, - 6794680285466534678, - 2978730525228113593, - 3621380956903574094 - ], - [ - 4838056840641790939, - 16842388520310131551, - 11612178730147038952, - 2346195292789238934 - ], - [ - 17810776396991797874, - 12063662987004325494, - 17932676844730723250, - 14283996529720835225 - ], - [ - 4982429352434514173, - 14856186579270143608, - 4051922516960412257, - 8367898317160268319 - ], - [ - 14584337208407353036, - 15866593405986269360, - 11704298830630250400, - 14576621862375131798 - ], - [ - 3101118738129024336, - 4028118980088627608, - 9223187088487468736, - 3845581921289713376 - ], - [ - 1013819453591993424, - 13784105701097110976, - 9114286772222497781, - 10710488663310041007 - ] + [7131095197302553268, 8153577698865827964, 4503618255465567901, 14277683095622422701], + [17227565432950328258, 3812763700819798255, 11013754802988076876, 6868705666417715458], + [6323710131523972374, 2634684603167736396, 18066615186100844391, 12905391948029250777], + [3492005229273374536, 6055742838160324534, 1795486371688618704, 13052026771106363342], + [10281812076992462791, 7165153365649379245, 13022274058059396511, 13989909544832134378], + [12027415465257630320, 3276226892300848010, 8686471638009106913, 14892455799109213586], + [2589896055307349461, 2860115159278340436, 16194627146103061118, 7076143423549975584], + [13667404340259521763, 6297649363425018745, 16167424072873520384, 3830963799067739016], + [16665883187665722508, 314738727176100190, 4253386482569091860, 1926299543937236525], + [7820355437968047327, 6794680285466534678, 2978730525228113593, 3621380956903574094], + [4838056840641790939, 16842388520310131551, 11612178730147038952, 2346195292789238934], + [17810776396991797874, 12063662987004325494, 17932676844730723250, 14283996529720835225], + [4982429352434514173, 14856186579270143608, 4051922516960412257, 8367898317160268319], + [14584337208407353036, 15866593405986269360, 11704298830630250400, 14576621862375131798], + [3101118738129024336, 4028118980088627608, 9223187088487468736, 3845581921289713376], + [1013819453591993424, 13784105701097110976, 9114286772222497781, 10710488663310041007] ] } -} \ No newline at end of file +} diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_basic_7_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_basic_7_key.json index b905a476ea4..ffaae70e1fc 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_basic_7_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_basic_7_key.json @@ -17,27 +17,13 @@ "domain_size": 1048576, "total_tables_len": 132096, "public_inputs_locations": [ - [ - 0, - 872841 - ], - [ - 1, - 872841 - ], - [ - 2, - 872841 - ], - [ - 3, - 872841 - ] + [0, 872841], + [1, 872841], + [2, 872841], + [3, 872841] ], "extra_constant_polys_for_selectors": 2, - "table_ids_column_idxes": [ - 6 - ], + "table_ids_column_idxes": [6], "quotient_degree": 8, "selectors_placement": { "Fork": { @@ -156,102 +142,22 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [ - 13818450912197620420, - 5079205692118648775, - 14615787041360044769, - 2941606671776647183 - ], - [ - 6715253104770723417, - 3160280029457127352, - 11108406980823166906, - 15487865556610611893 - ], - [ - 14039903923831613967, - 15298198763143829103, - 17031409250405123985, - 10266023324667771113 - ], - [ - 17366151300788544369, - 13314676565834570017, - 17521241757753748935, - 13066688955830816807 - ], - [ - 14445090483790969730, - 15708367780098206326, - 2336844413511710318, - 3268235585540529265 - ], - [ - 2882405134850480170, - 14247534382965114291, - 17531255653612736614, - 11676635700695125188 - ], - [ - 11530141675448575062, - 8910365257612403024, - 300072654586353643, - 8472188536913229506 - ], - [ - 1426612518547638168, - 17806679375517512145, - 14835333334022265221, - 2007845272495904476 - ], - [ - 6034343869761808836, - 13937750910508416181, - 16942548919853718543, - 16086518391257789831 - ], - [ - 15933462173546075175, - 8612525819877657624, - 4132383244121115701, - 9288543398092863864 - ], - [ - 8157130847726661070, - 4231891352218163681, - 14620351586778336684, - 4186724240746204294 - ], - [ - 7440132245224537493, - 6666895991749911132, - 8404993517441732468, - 6556569653095950475 - ], - [ - 1982595939619922877, - 17561202624392859313, - 14381497498171193805, - 17908865555917026633 - ], - [ - 7384278864004035589, - 10191778068274570585, - 6103937442735162958, - 5142419559331404710 - ], - [ - 3651117166359200686, - 3827322296271305097, - 14799462710376656576, - 13600220646083181205 - ], - [ - 1989104086172888026, - 7796359126421144184, - 16967575681666150511, - 5993683835612332048 - ] + [13818450912197620420, 5079205692118648775, 14615787041360044769, 2941606671776647183], + [6715253104770723417, 3160280029457127352, 11108406980823166906, 15487865556610611893], + [14039903923831613967, 15298198763143829103, 17031409250405123985, 10266023324667771113], + [17366151300788544369, 13314676565834570017, 17521241757753748935, 13066688955830816807], + [14445090483790969730, 15708367780098206326, 2336844413511710318, 3268235585540529265], + [2882405134850480170, 14247534382965114291, 17531255653612736614, 11676635700695125188], + [11530141675448575062, 8910365257612403024, 300072654586353643, 8472188536913229506], + [1426612518547638168, 17806679375517512145, 14835333334022265221, 2007845272495904476], + [6034343869761808836, 13937750910508416181, 16942548919853718543, 16086518391257789831], + [15933462173546075175, 8612525819877657624, 4132383244121115701, 9288543398092863864], + [8157130847726661070, 4231891352218163681, 14620351586778336684, 4186724240746204294], + [7440132245224537493, 6666895991749911132, 8404993517441732468, 6556569653095950475], + [1982595939619922877, 17561202624392859313, 14381497498171193805, 17908865555917026633], + [7384278864004035589, 10191778068274570585, 6103937442735162958, 5142419559331404710], + [3651117166359200686, 3827322296271305097, 14799462710376656576, 13600220646083181205], + [1989104086172888026, 7796359126421144184, 16967575681666150511, 5993683835612332048] ] } -} \ No newline at end of file +} diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_basic_8_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_basic_8_key.json index 01b957e7a61..088a58c12d0 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_basic_8_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_basic_8_key.json @@ -17,27 +17,13 @@ "domain_size": 1048576, "total_tables_len": 256, "public_inputs_locations": [ - [ - 0, - 1044095 - ], - [ - 1, - 1044095 - ], - [ - 2, - 1044095 - ], - [ - 3, - 1044095 - ] + [0, 1044095], + [1, 1044095], + [2, 1044095], + [3, 1044095] ], "extra_constant_polys_for_selectors": 3, - "table_ids_column_idxes": [ - 7 - ], + "table_ids_column_idxes": [7], "quotient_degree": 8, "selectors_placement": { "Fork": { @@ -156,102 +142,22 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [ - 7748855058771730961, - 18077946489631649497, - 1126488644057748066, - 14688059039599644438 - ], - [ - 4480629341804348299, - 10505662440791981234, - 4568412032951786787, - 12296506456394181969 - ], - [ - 16177866372671364827, - 6970256790084749443, - 10619139891136255069, - 1607793233799494191 - ], - [ - 16984252104671889635, - 13549428959009290270, - 18134611582044419523, - 13805480879905126881 - ], - [ - 17770436976754840017, - 7234588192906938750, - 1676460085700470353, - 17733573771328390126 - ], - [ - 1322939182961086562, - 5294941824911180446, - 10983825026212251207, - 4904636572110590284 - ], - [ - 12784739321844360991, - 12439305138735676805, - 14983461304040938818, - 17269069332772868104 - ], - [ - 14780190734158735021, - 13940544738219743565, - 6645149114623433718, - 13466406487834863255 - ], - [ - 13329778603033226548, - 10757456562158453823, - 16599667503315631352, - 7621238797658185159 - ], - [ - 14547407989101566794, - 13324264894451648565, - 16566710504362716031, - 4779331080355111127 - ], - [ - 6132579229855214454, - 17610416320024829323, - 12304246579944377351, - 9688211256511656964 - ], - [ - 8981542755583161308, - 5091565442848149167, - 13934425064181076259, - 9294930870454289441 - ], - [ - 7427098481125065729, - 13578369070049130481, - 11513105383705002933, - 9750527547580548099 - ], - [ - 5745702296484372803, - 17242736621178757499, - 11421559995636138498, - 12684122852092168791 - ], - [ - 1002992144601037215, - 16187923653560782188, - 5293022176068028122, - 9959247706453715838 - ], - [ - 4182061746333368731, - 5244109339200264013, - 10015150430260308263, - 11549298210681275420 - ] + [7748855058771730961, 18077946489631649497, 1126488644057748066, 14688059039599644438], + [4480629341804348299, 10505662440791981234, 4568412032951786787, 12296506456394181969], + [16177866372671364827, 6970256790084749443, 10619139891136255069, 1607793233799494191], + [16984252104671889635, 13549428959009290270, 18134611582044419523, 13805480879905126881], + [17770436976754840017, 7234588192906938750, 1676460085700470353, 17733573771328390126], + [1322939182961086562, 5294941824911180446, 10983825026212251207, 4904636572110590284], + [12784739321844360991, 12439305138735676805, 14983461304040938818, 17269069332772868104], + [14780190734158735021, 13940544738219743565, 6645149114623433718, 13466406487834863255], + [13329778603033226548, 10757456562158453823, 16599667503315631352, 7621238797658185159], + [14547407989101566794, 13324264894451648565, 16566710504362716031, 4779331080355111127], + [6132579229855214454, 17610416320024829323, 12304246579944377351, 9688211256511656964], + [8981542755583161308, 5091565442848149167, 13934425064181076259, 9294930870454289441], + [7427098481125065729, 13578369070049130481, 11513105383705002933, 9750527547580548099], + [5745702296484372803, 17242736621178757499, 11421559995636138498, 12684122852092168791], + [1002992144601037215, 16187923653560782188, 5293022176068028122, 9959247706453715838], + [4182061746333368731, 5244109339200264013, 10015150430260308263, 11549298210681275420] ] } -} \ No newline at end of file +} diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_basic_9_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_basic_9_key.json index 2823ffec627..950f3066741 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_basic_9_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_basic_9_key.json @@ -17,27 +17,13 @@ "domain_size": 1048576, "total_tables_len": 256, "public_inputs_locations": [ - [ - 0, - 1044628 - ], - [ - 1, - 1044628 - ], - [ - 2, - 1044628 - ], - [ - 3, - 1044628 - ] + [0, 1044628], + [1, 1044628], + [2, 1044628], + [3, 1044628] ], "extra_constant_polys_for_selectors": 3, - "table_ids_column_idxes": [ - 7 - ], + "table_ids_column_idxes": [7], "quotient_degree": 8, "selectors_placement": { "Fork": { @@ -156,102 +142,22 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [ - 15152415627491818135, - 7374237605577523933, - 4465184016028924212, - 2035234088595773309 - ], - [ - 5061557444963845839, - 12386849184623218277, - 13052284409578998174, - 2142376146067763313 - ], - [ - 14276061640225729061, - 3667833983304997823, - 15567500985315483409, - 10110252348727918570 - ], - [ - 12534291856385391774, - 4931691717277748218, - 10385184271370113628, - 10333556044049798387 - ], - [ - 3902530530481162544, - 11439177580828992768, - 2956353447880097447, - 2078779115341733037 - ], - [ - 14361126694241130224, - 4508476390465174580, - 14814630315120762635, - 17198376643024594512 - ], - [ - 15399867818681370342, - 17613339377988571860, - 17463021656624906492, - 18043402438787219822 - ], - [ - 4721341021989730415, - 941889554702533152, - 4492052956383425703, - 11785343591616806540 - ], - [ - 14835583452718692456, - 9747287794601877160, - 13285319018669943605, - 15566660322778346733 - ], - [ - 634069327924902339, - 7509671875950276664, - 17149763085975395897, - 17558106862399785122 - ], - [ - 6504570481933973182, - 9863954755773054818, - 4192802816900646319, - 11708054020605968244 - ], - [ - 5368022000476684675, - 11854447477637281190, - 773008757856055958, - 7428874382179860306 - ], - [ - 820566450151427404, - 14487105988932071384, - 5168970873173217247, - 16840718205559266321 - ], - [ - 15018168499898445860, - 15893129254829262789, - 1267456796490088156, - 14049704864991807107 - ], - [ - 3678472314386256573, - 4482269767107891177, - 2891258367538769098, - 10249141358181035242 - ], - [ - 1175499750244297798, - 7441679809319866074, - 15706614384330332074, - 12399917843582101807 - ] + [15152415627491818135, 7374237605577523933, 4465184016028924212, 2035234088595773309], + [5061557444963845839, 12386849184623218277, 13052284409578998174, 2142376146067763313], + [14276061640225729061, 3667833983304997823, 15567500985315483409, 10110252348727918570], + [12534291856385391774, 4931691717277748218, 10385184271370113628, 10333556044049798387], + [3902530530481162544, 11439177580828992768, 2956353447880097447, 2078779115341733037], + [14361126694241130224, 4508476390465174580, 14814630315120762635, 17198376643024594512], + [15399867818681370342, 17613339377988571860, 17463021656624906492, 18043402438787219822], + [4721341021989730415, 941889554702533152, 4492052956383425703, 11785343591616806540], + [14835583452718692456, 9747287794601877160, 13285319018669943605, 15566660322778346733], + [634069327924902339, 7509671875950276664, 17149763085975395897, 17558106862399785122], + [6504570481933973182, 9863954755773054818, 4192802816900646319, 11708054020605968244], + [5368022000476684675, 11854447477637281190, 773008757856055958, 7428874382179860306], + [820566450151427404, 14487105988932071384, 5168970873173217247, 16840718205559266321], + [15018168499898445860, 15893129254829262789, 1267456796490088156, 14049704864991807107], + [3678472314386256573, 4482269767107891177, 2891258367538769098, 10249141358181035242], + [1175499750244297798, 7441679809319866074, 15706614384330332074, 12399917843582101807] ] } -} \ No newline at end of file +} diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_10_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_10_key.json index 82e2d2f2fb5..1cf6e373b7e 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_10_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_10_key.json @@ -11,22 +11,10 @@ "domain_size": 1048576, "total_tables_len": 0, "public_inputs_locations": [ - [ - 0, - 0 - ], - [ - 1, - 0 - ], - [ - 2, - 0 - ], - [ - 3, - 0 - ] + [0, 0], + [1, 0], + [2, 0], + [3, 0] ], "extra_constant_polys_for_selectors": 4, "table_ids_column_idxes": [], @@ -161,102 +149,22 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [ - 1125289536020813216, - 13893991227523403350, - 18221032481002623145, - 6999555513372134161 - ], - [ - 14558032258404044879, - 15896302942503207712, - 4320679543001532335, - 16312301655514654219 - ], - [ - 7101986692613628904, - 7577883870349313041, - 7352728228661094923, - 18332380179278822986 - ], - [ - 4857477437658850102, - 2600358150758031758, - 11245333823831173537, - 8338725066623873242 - ], - [ - 7533080307752291488, - 7286216489335488511, - 18156637335160778785, - 7462498443331890731 - ], - [ - 606568432443359176, - 8912183283992686330, - 17421481837200753913, - 17592999343458504164 - ], - [ - 13072668834394870334, - 11175441683787645540, - 3718467031089360132, - 6303569707785751909 - ], - [ - 15139014418351999292, - 13433960894156419831, - 1081036147938149073, - 5537900067858640688 - ], - [ - 16144198516884069513, - 11760722486204114604, - 9080477633162807038, - 14878319203527003921 - ], - [ - 9887232148319546846, - 11280977977331453386, - 1634486104168251049, - 1013174085024142997 - ], - [ - 8774759106642276381, - 17014116512461272516, - 5017632137039687644, - 2879573590247199312 - ], - [ - 8532316813139433929, - 10192336124962558528, - 10208988044571331050, - 7412443809890180963 - ], - [ - 1940771445624788955, - 15990599983917575017, - 12383682653785412359, - 7243892390926482974 - ], - [ - 15783323653576062669, - 7433660384180142428, - 11341821314666985051, - 13908042579613943595 - ], - [ - 6784650697753378650, - 2429262522610065724, - 3770879433095160288, - 6633370836632857456 - ], - [ - 18435367235881428398, - 13152985860267484403, - 17561012172979073263, - 15335033836397886699 - ] + [1125289536020813216, 13893991227523403350, 18221032481002623145, 6999555513372134161], + [14558032258404044879, 15896302942503207712, 4320679543001532335, 16312301655514654219], + [7101986692613628904, 7577883870349313041, 7352728228661094923, 18332380179278822986], + [4857477437658850102, 2600358150758031758, 11245333823831173537, 8338725066623873242], + [7533080307752291488, 7286216489335488511, 18156637335160778785, 7462498443331890731], + [606568432443359176, 8912183283992686330, 17421481837200753913, 17592999343458504164], + [13072668834394870334, 11175441683787645540, 3718467031089360132, 6303569707785751909], + [15139014418351999292, 13433960894156419831, 1081036147938149073, 5537900067858640688], + [16144198516884069513, 11760722486204114604, 9080477633162807038, 14878319203527003921], + [9887232148319546846, 11280977977331453386, 1634486104168251049, 1013174085024142997], + [8774759106642276381, 17014116512461272516, 5017632137039687644, 2879573590247199312], + [8532316813139433929, 10192336124962558528, 10208988044571331050, 7412443809890180963], + [1940771445624788955, 15990599983917575017, 12383682653785412359, 7243892390926482974], + [15783323653576062669, 7433660384180142428, 11341821314666985051, 13908042579613943595], + [6784650697753378650, 2429262522610065724, 3770879433095160288, 6633370836632857456], + [18435367235881428398, 13152985860267484403, 17561012172979073263, 15335033836397886699] ] } -} \ No newline at end of file +} diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_11_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_11_key.json index 14b20e4f718..865a75e0b74 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_11_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_11_key.json @@ -11,22 +11,10 @@ "domain_size": 1048576, "total_tables_len": 0, "public_inputs_locations": [ - [ - 0, - 0 - ], - [ - 1, - 0 - ], - [ - 2, - 0 - ], - [ - 3, - 0 - ] + [0, 0], + [1, 0], + [2, 0], + [3, 0] ], "extra_constant_polys_for_selectors": 4, "table_ids_column_idxes": [], @@ -161,102 +149,22 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [ - 14038008090973880203, - 7437991399998284269, - 12502661164686015780, - 6154468052477899229 - ], - [ - 4890279821462461425, - 12267605659025997985, - 16220814561210675069, - 14958418982789304352 - ], - [ - 16239014851914932689, - 11626285279514581577, - 7827403995053907198, - 3320808129263057989 - ], - [ - 9987109148114223767, - 16027730699082584407, - 16226544327370131567, - 10505655809748447851 - ], - [ - 2426355028560688438, - 13015409833156179441, - 3357212938175132730, - 9924499217906835800 - ], - [ - 7264556678081366657, - 11014021481903289086, - 1185381295776166890, - 11220095453847753366 - ], - [ - 10738220050569983945, - 2071033793611953608, - 2836853848682426199, - 18280211532291996343 - ], - [ - 4622574899935206725, - 10283505057353003539, - 10924169390994336784, - 9267200805799259741 - ], - [ - 4991426063445236730, - 292198960832094512, - 6370230421874009175, - 2987533577516974457 - ], - [ - 15100014620403370288, - 17064710328307274600, - 13596338039199898149, - 7844302147920229272 - ], - [ - 6997319402399846472, - 5312486909661565204, - 8133503726683094273, - 14376435888676319871 - ], - [ - 16536431163453527335, - 8329243612205528007, - 10332326446350256878, - 6187024786825219302 - ], - [ - 15819705933365601754, - 17218893784817004570, - 7197154299986843671, - 11662127518680895562 - ], - [ - 12757050724806983838, - 14916998582501427105, - 2903621530266216761, - 12948020673936426635 - ], - [ - 14563493065638885359, - 6770003101729110728, - 11839394563403429402, - 1065983546047670743 - ], - [ - 2845847955135199124, - 16066115065717446946, - 4482870472147946913, - 8664518745998140088 - ] + [14038008090973880203, 7437991399998284269, 12502661164686015780, 6154468052477899229], + [4890279821462461425, 12267605659025997985, 16220814561210675069, 14958418982789304352], + [16239014851914932689, 11626285279514581577, 7827403995053907198, 3320808129263057989], + [9987109148114223767, 16027730699082584407, 16226544327370131567, 10505655809748447851], + [2426355028560688438, 13015409833156179441, 3357212938175132730, 9924499217906835800], + [7264556678081366657, 11014021481903289086, 1185381295776166890, 11220095453847753366], + [10738220050569983945, 2071033793611953608, 2836853848682426199, 18280211532291996343], + [4622574899935206725, 10283505057353003539, 10924169390994336784, 9267200805799259741], + [4991426063445236730, 292198960832094512, 6370230421874009175, 2987533577516974457], + [15100014620403370288, 17064710328307274600, 13596338039199898149, 7844302147920229272], + [6997319402399846472, 5312486909661565204, 8133503726683094273, 14376435888676319871], + [16536431163453527335, 8329243612205528007, 10332326446350256878, 6187024786825219302], + [15819705933365601754, 17218893784817004570, 7197154299986843671, 11662127518680895562], + [12757050724806983838, 14916998582501427105, 2903621530266216761, 12948020673936426635], + [14563493065638885359, 6770003101729110728, 11839394563403429402, 1065983546047670743], + [2845847955135199124, 16066115065717446946, 4482870472147946913, 8664518745998140088] ] } -} \ No newline at end of file +} diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_12_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_12_key.json index 047a7943389..ad9636492af 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_12_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_12_key.json @@ -11,22 +11,10 @@ "domain_size": 1048576, "total_tables_len": 0, "public_inputs_locations": [ - [ - 0, - 0 - ], - [ - 1, - 0 - ], - [ - 2, - 0 - ], - [ - 3, - 0 - ] + [0, 0], + [1, 0], + [2, 0], + [3, 0] ], "extra_constant_polys_for_selectors": 4, "table_ids_column_idxes": [], @@ -161,102 +149,22 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [ - 17762498852322133081, - 12402705633936516386, - 2303979245623416237, - 15492962941180331409 - ], - [ - 1368919680062481249, - 8419725427681044227, - 12407005054982229959, - 9729546646519366060 - ], - [ - 3694696222464991628, - 10691747603876514511, - 5648287760852638838, - 15128008410193030270 - ], - [ - 5647849659158863308, - 16391316755630265342, - 17483459471194878342, - 2382689231083026500 - ], - [ - 414523452897415096, - 14712743039552404085, - 14274376366377496980, - 1540457029378813951 - ], - [ - 6437956396547385520, - 10457280544359552653, - 210288303177892964, - 7009065088863365256 - ], - [ - 6189643588169700860, - 2874522095144611328, - 3459596951253545261, - 14912093041250189548 - ], - [ - 2954035721997683722, - 2628438295425873126, - 9361498414301919378, - 7780135632218518403 - ], - [ - 13376229283479650476, - 13646160168852625209, - 12342809006526169374, - 16140909717103038788 - ], - [ - 14544916717622160085, - 2335857756498039096, - 12834512355397127233, - 8257858357688008275 - ], - [ - 13637749549385428585, - 1568326361689976373, - 14573670474737748882, - 8002611813857126901 - ], - [ - 4981475697544147574, - 7477162419770815721, - 13420952345288491036, - 6849943909220872064 - ], - [ - 5645683284474222575, - 10480504810673180938, - 7038844793157124351, - 10701205261596194736 - ], - [ - 2992787956816905753, - 10666728141278334493, - 4748213040479579674, - 13258093297981567423 - ], - [ - 11477426903799919629, - 24925561182649344, - 11412223773538266154, - 2852175545463505023 - ], - [ - 1060175052523024730, - 6610510112497451814, - 15229121744185849414, - 12773820515972201248 - ] + [17762498852322133081, 12402705633936516386, 2303979245623416237, 15492962941180331409], + [1368919680062481249, 8419725427681044227, 12407005054982229959, 9729546646519366060], + [3694696222464991628, 10691747603876514511, 5648287760852638838, 15128008410193030270], + [5647849659158863308, 16391316755630265342, 17483459471194878342, 2382689231083026500], + [414523452897415096, 14712743039552404085, 14274376366377496980, 1540457029378813951], + [6437956396547385520, 10457280544359552653, 210288303177892964, 7009065088863365256], + [6189643588169700860, 2874522095144611328, 3459596951253545261, 14912093041250189548], + [2954035721997683722, 2628438295425873126, 9361498414301919378, 7780135632218518403], + [13376229283479650476, 13646160168852625209, 12342809006526169374, 16140909717103038788], + [14544916717622160085, 2335857756498039096, 12834512355397127233, 8257858357688008275], + [13637749549385428585, 1568326361689976373, 14573670474737748882, 8002611813857126901], + [4981475697544147574, 7477162419770815721, 13420952345288491036, 6849943909220872064], + [5645683284474222575, 10480504810673180938, 7038844793157124351, 10701205261596194736], + [2992787956816905753, 10666728141278334493, 4748213040479579674, 13258093297981567423], + [11477426903799919629, 24925561182649344, 11412223773538266154, 2852175545463505023], + [1060175052523024730, 6610510112497451814, 15229121744185849414, 12773820515972201248] ] } -} \ No newline at end of file +} diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_13_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_13_key.json index 9b8c7bca329..8584987e43f 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_13_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_13_key.json @@ -11,22 +11,10 @@ "domain_size": 1048576, "total_tables_len": 0, "public_inputs_locations": [ - [ - 0, - 0 - ], - [ - 1, - 0 - ], - [ - 2, - 0 - ], - [ - 3, - 0 - ] + [0, 0], + [1, 0], + [2, 0], + [3, 0] ], "extra_constant_polys_for_selectors": 4, "table_ids_column_idxes": [], @@ -161,102 +149,22 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [ - 1107277819469948429, - 7779138633457495557, - 9933991506239962590, - 13247997120867942045 - ], - [ - 10020877950065961527, - 6525352303263078852, - 10601857031603992424, - 6699333963081308583 - ], - [ - 8019436446207312706, - 17880026081547931046, - 14023459613581442883, - 12177363081042438182 - ], - [ - 17643512238638359026, - 2759065364120570462, - 1113452962298378930, - 9944550331137276877 - ], - [ - 6208699382898547395, - 9442366708032685349, - 9362620233586526034, - 6406469355002722194 - ], - [ - 17265154700194893264, - 11486849446382907011, - 1331827641678752332, - 13890193454573854721 - ], - [ - 7338198937132638061, - 9619578268260381257, - 16966504852427653624, - 5042032213830518832 - ], - [ - 9998014800451912206, - 2764915420573986646, - 12638108373731502079, - 13849566240043998295 - ], - [ - 18402224478111895268, - 10245397321907314013, - 15810832121998678624, - 16050833323870358750 - ], - [ - 5754119484130347551, - 1334330314055286585, - 1196783225751134982, - 13693638204576454858 - ], - [ - 7476283313073466871, - 3327838189135133206, - 7576584001149251522, - 4746763672176501097 - ], - [ - 8341294580974175099, - 6996214973372400649, - 2825261487886819108, - 17611476352036968111 - ], - [ - 6481216673139681707, - 12834349834818063790, - 14423475559705119809, - 15943814042360079510 - ], - [ - 7771500178827314392, - 5968639878444939173, - 18006309838458312166, - 368714734303788414 - ], - [ - 2137428658614683231, - 4604901863694850124, - 3581156028309568037, - 7485386108131533730 - ], - [ - 1078544443818230878, - 14117476483719501663, - 17985826373971579789, - 10600652728062682193 - ] + [1107277819469948429, 7779138633457495557, 9933991506239962590, 13247997120867942045], + [10020877950065961527, 6525352303263078852, 10601857031603992424, 6699333963081308583], + [8019436446207312706, 17880026081547931046, 14023459613581442883, 12177363081042438182], + [17643512238638359026, 2759065364120570462, 1113452962298378930, 9944550331137276877], + [6208699382898547395, 9442366708032685349, 9362620233586526034, 6406469355002722194], + [17265154700194893264, 11486849446382907011, 1331827641678752332, 13890193454573854721], + [7338198937132638061, 9619578268260381257, 16966504852427653624, 5042032213830518832], + [9998014800451912206, 2764915420573986646, 12638108373731502079, 13849566240043998295], + [18402224478111895268, 10245397321907314013, 15810832121998678624, 16050833323870358750], + [5754119484130347551, 1334330314055286585, 1196783225751134982, 13693638204576454858], + [7476283313073466871, 3327838189135133206, 7576584001149251522, 4746763672176501097], + [8341294580974175099, 6996214973372400649, 2825261487886819108, 17611476352036968111], + [6481216673139681707, 12834349834818063790, 14423475559705119809, 15943814042360079510], + [7771500178827314392, 5968639878444939173, 18006309838458312166, 368714734303788414], + [2137428658614683231, 4604901863694850124, 3581156028309568037, 7485386108131533730], + [1078544443818230878, 14117476483719501663, 17985826373971579789, 10600652728062682193] ] } -} \ No newline at end of file +} diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_14_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_14_key.json index e32be9870e7..9bde1915c20 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_14_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_14_key.json @@ -11,22 +11,10 @@ "domain_size": 1048576, "total_tables_len": 0, "public_inputs_locations": [ - [ - 0, - 0 - ], - [ - 1, - 0 - ], - [ - 2, - 0 - ], - [ - 3, - 0 - ] + [0, 0], + [1, 0], + [2, 0], + [3, 0] ], "extra_constant_polys_for_selectors": 4, "table_ids_column_idxes": [], @@ -161,102 +149,22 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [ - 1107277819469948429, - 7779138633457495557, - 9933991506239962590, - 13247997120867942045 - ], - [ - 10020877950065961527, - 6525352303263078852, - 10601857031603992424, - 6699333963081308583 - ], - [ - 8019436446207312706, - 17880026081547931046, - 14023459613581442883, - 12177363081042438182 - ], - [ - 17643512238638359026, - 2759065364120570462, - 1113452962298378930, - 9944550331137276877 - ], - [ - 6208699382898547395, - 9442366708032685349, - 9362620233586526034, - 6406469355002722194 - ], - [ - 17265154700194893264, - 11486849446382907011, - 1331827641678752332, - 13890193454573854721 - ], - [ - 7338198937132638061, - 9619578268260381257, - 16966504852427653624, - 5042032213830518832 - ], - [ - 9998014800451912206, - 2764915420573986646, - 12638108373731502079, - 13849566240043998295 - ], - [ - 18402224478111895268, - 10245397321907314013, - 15810832121998678624, - 16050833323870358750 - ], - [ - 5754119484130347551, - 1334330314055286585, - 1196783225751134982, - 13693638204576454858 - ], - [ - 7476283313073466871, - 3327838189135133206, - 7576584001149251522, - 4746763672176501097 - ], - [ - 8341294580974175099, - 6996214973372400649, - 2825261487886819108, - 17611476352036968111 - ], - [ - 6481216673139681707, - 12834349834818063790, - 14423475559705119809, - 15943814042360079510 - ], - [ - 7771500178827314392, - 5968639878444939173, - 18006309838458312166, - 368714734303788414 - ], - [ - 2137428658614683231, - 4604901863694850124, - 3581156028309568037, - 7485386108131533730 - ], - [ - 1078544443818230878, - 14117476483719501663, - 17985826373971579789, - 10600652728062682193 - ] + [1107277819469948429, 7779138633457495557, 9933991506239962590, 13247997120867942045], + [10020877950065961527, 6525352303263078852, 10601857031603992424, 6699333963081308583], + [8019436446207312706, 17880026081547931046, 14023459613581442883, 12177363081042438182], + [17643512238638359026, 2759065364120570462, 1113452962298378930, 9944550331137276877], + [6208699382898547395, 9442366708032685349, 9362620233586526034, 6406469355002722194], + [17265154700194893264, 11486849446382907011, 1331827641678752332, 13890193454573854721], + [7338198937132638061, 9619578268260381257, 16966504852427653624, 5042032213830518832], + [9998014800451912206, 2764915420573986646, 12638108373731502079, 13849566240043998295], + [18402224478111895268, 10245397321907314013, 15810832121998678624, 16050833323870358750], + [5754119484130347551, 1334330314055286585, 1196783225751134982, 13693638204576454858], + [7476283313073466871, 3327838189135133206, 7576584001149251522, 4746763672176501097], + [8341294580974175099, 6996214973372400649, 2825261487886819108, 17611476352036968111], + [6481216673139681707, 12834349834818063790, 14423475559705119809, 15943814042360079510], + [7771500178827314392, 5968639878444939173, 18006309838458312166, 368714734303788414], + [2137428658614683231, 4604901863694850124, 3581156028309568037, 7485386108131533730], + [1078544443818230878, 14117476483719501663, 17985826373971579789, 10600652728062682193] ] } -} \ No newline at end of file +} diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_15_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_15_key.json index 9457eb00fb9..31ac2757183 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_15_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_15_key.json @@ -11,22 +11,10 @@ "domain_size": 1048576, "total_tables_len": 0, "public_inputs_locations": [ - [ - 0, - 0 - ], - [ - 1, - 0 - ], - [ - 2, - 0 - ], - [ - 3, - 0 - ] + [0, 0], + [1, 0], + [2, 0], + [3, 0] ], "extra_constant_polys_for_selectors": 4, "table_ids_column_idxes": [], @@ -161,102 +149,22 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [ - 18238935086181014750, - 12673103801320172126, - 1807450351340584945, - 4080587540382410469 - ], - [ - 3576906271507691924, - 15842010882262104289, - 1545568012269070598, - 15019610257262428212 - ], - [ - 16552529329663272195, - 70143638148036568, - 9441616425189858949, - 12576239326961652577 - ], - [ - 13378751877668829423, - 8821335076667849619, - 8787507195664458069, - 8033428383364368883 - ], - [ - 14859204728026468678, - 67528639960702832, - 12174200483518178527, - 14324674266854914755 - ], - [ - 9830165552717527013, - 2321461270838214863, - 9268724714979319202, - 9904762657753448069 - ], - [ - 14141058045407997705, - 17031147612244105327, - 12751542125666982456, - 17817764425153554681 - ], - [ - 14795807291665277125, - 12320949525745092193, - 5617160704961099, - 16219204181913320518 - ], - [ - 7773282231989156729, - 13990108174498859083, - 6307778800331536092, - 5637115465294994933 - ], - [ - 3720582507396745477, - 12235229471532413465, - 2832424082557414313, - 1295093033129086530 - ], - [ - 5238251184464937674, - 2468597264523797445, - 7200015202778095391, - 6285172799678453354 - ], - [ - 14592230848145258634, - 14635944054407782259, - 16328656124118469880, - 5673837317773168465 - ], - [ - 10220932976054066577, - 587071736468910470, - 18317195354162201630, - 4442910666147223606 - ], - [ - 6686416988414600368, - 14769819815353713716, - 7130058524252605584, - 9117426323287817862 - ], - [ - 9696785136959918927, - 10735699192129851744, - 4483660550392452518, - 16920055661791281465 - ], - [ - 6465118959707729559, - 15053655525644243783, - 11077790678846863387, - 377514359817848250 - ] + [18238935086181014750, 12673103801320172126, 1807450351340584945, 4080587540382410469], + [3576906271507691924, 15842010882262104289, 1545568012269070598, 15019610257262428212], + [16552529329663272195, 70143638148036568, 9441616425189858949, 12576239326961652577], + [13378751877668829423, 8821335076667849619, 8787507195664458069, 8033428383364368883], + [14859204728026468678, 67528639960702832, 12174200483518178527, 14324674266854914755], + [9830165552717527013, 2321461270838214863, 9268724714979319202, 9904762657753448069], + [14141058045407997705, 17031147612244105327, 12751542125666982456, 17817764425153554681], + [14795807291665277125, 12320949525745092193, 5617160704961099, 16219204181913320518], + [7773282231989156729, 13990108174498859083, 6307778800331536092, 5637115465294994933], + [3720582507396745477, 12235229471532413465, 2832424082557414313, 1295093033129086530], + [5238251184464937674, 2468597264523797445, 7200015202778095391, 6285172799678453354], + [14592230848145258634, 14635944054407782259, 16328656124118469880, 5673837317773168465], + [10220932976054066577, 587071736468910470, 18317195354162201630, 4442910666147223606], + [6686416988414600368, 14769819815353713716, 7130058524252605584, 9117426323287817862], + [9696785136959918927, 10735699192129851744, 4483660550392452518, 16920055661791281465], + [6465118959707729559, 15053655525644243783, 11077790678846863387, 377514359817848250] ] } -} \ No newline at end of file +} diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_1_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_1_key.json index 228a0e9fe92..60aaf6b4cb5 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_1_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_1_key.json @@ -17,27 +17,13 @@ "domain_size": 1048576, "total_tables_len": 132096, "public_inputs_locations": [ - [ - 0, - 993345 - ], - [ - 1, - 993345 - ], - [ - 2, - 993345 - ], - [ - 3, - 993345 - ] + [0, 993345], + [1, 993345], + [2, 993345], + [3, 993345] ], "extra_constant_polys_for_selectors": 4, - "table_ids_column_idxes": [ - 8 - ], + "table_ids_column_idxes": [8], "quotient_degree": 8, "selectors_placement": { "Fork": { @@ -169,102 +155,22 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [ - 5188923951567823784, - 1839604164061896861, - 3760614143058722712, - 17614504340708244503 - ], - [ - 7889899638667026800, - 14244435798393850379, - 15230145556400915502, - 12762495992738055897 - ], - [ - 1590798346328722678, - 14143092007536417439, - 10480901561038728792, - 3201431705395147463 - ], - [ - 2780378477031897976, - 11901528146276690135, - 1343277030558816196, - 6658753207411088573 - ], - [ - 11039463659901501365, - 8235548863391687887, - 1033553352576624721, - 12882010447949399432 - ], - [ - 18078277235848158043, - 14794319235551634496, - 13982848369540832169, - 11146980369941489422 - ], - [ - 5423143341883663864, - 15258729611778297770, - 7733187200367671156, - 11434904591161598775 - ], - [ - 10914070908442174902, - 8055525792807466851, - 14391942428843610452, - 11749906933466154458 - ], - [ - 14580351359387308464, - 13254290427053014332, - 7257863927775762043, - 11078203905320069045 - ], - [ - 6123238811378029441, - 11756658038961859601, - 760000874907607862, - 678236515728235822 - ], - [ - 15657816790157674514, - 4104741954972330508, - 4150394799973679527, - 15124992265078810298 - ], - [ - 13825567788010925982, - 636544017935987097, - 2260460249587621344, - 10354042489703999934 - ], - [ - 12710868603685796297, - 91862114057079406, - 5614554900380483346, - 131393259919990755 - ], - [ - 13185811107579017595, - 1006028503100864020, - 2087984259170414019, - 6445764843889735797 - ], - [ - 10414938568348349467, - 15415934042755645234, - 11692038010863343064, - 2402843492027871760 - ], - [ - 17752536940710015241, - 14329244239886245722, - 16349180633511906354, - 2663305413222761702 - ] + [5188923951567823784, 1839604164061896861, 3760614143058722712, 17614504340708244503], + [7889899638667026800, 14244435798393850379, 15230145556400915502, 12762495992738055897], + [1590798346328722678, 14143092007536417439, 10480901561038728792, 3201431705395147463], + [2780378477031897976, 11901528146276690135, 1343277030558816196, 6658753207411088573], + [11039463659901501365, 8235548863391687887, 1033553352576624721, 12882010447949399432], + [18078277235848158043, 14794319235551634496, 13982848369540832169, 11146980369941489422], + [5423143341883663864, 15258729611778297770, 7733187200367671156, 11434904591161598775], + [10914070908442174902, 8055525792807466851, 14391942428843610452, 11749906933466154458], + [14580351359387308464, 13254290427053014332, 7257863927775762043, 11078203905320069045], + [6123238811378029441, 11756658038961859601, 760000874907607862, 678236515728235822], + [15657816790157674514, 4104741954972330508, 4150394799973679527, 15124992265078810298], + [13825567788010925982, 636544017935987097, 2260460249587621344, 10354042489703999934], + [12710868603685796297, 91862114057079406, 5614554900380483346, 131393259919990755], + [13185811107579017595, 1006028503100864020, 2087984259170414019, 6445764843889735797], + [10414938568348349467, 15415934042755645234, 11692038010863343064, 2402843492027871760], + [17752536940710015241, 14329244239886245722, 16349180633511906354, 2663305413222761702] ] } -} \ No newline at end of file +} diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_2_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_2_key.json index 7865e106454..898044175ed 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_2_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_2_key.json @@ -11,22 +11,10 @@ "domain_size": 1048576, "total_tables_len": 0, "public_inputs_locations": [ - [ - 0, - 0 - ], - [ - 1, - 0 - ], - [ - 2, - 0 - ], - [ - 3, - 0 - ] + [0, 0], + [1, 0], + [2, 0], + [3, 0] ], "extra_constant_polys_for_selectors": 4, "table_ids_column_idxes": [], @@ -161,102 +149,22 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [ - 16110944391299715992, - 6257581196984129533, - 3238325178821009741, - 2344850491864189019 - ], - [ - 9070724167014080545, - 4270936005334206500, - 14011092173278602876, - 17233390044312666340 - ], - [ - 15882294806312417165, - 4574813182503183418, - 15374759504522847393, - 12609068726586761599 - ], - [ - 5081359810005150600, - 3073725930902770385, - 12151383627606620216, - 1678712612408922293 - ], - [ - 13389075440637154488, - 1394733244174774927, - 15897027408886080730, - 8756205416909346149 - ], - [ - 9635595243774498130, - 12944626865667316474, - 11443383015868895087, - 11271399114434241688 - ], - [ - 15730316965377191644, - 9302195093067483199, - 13013113029527355010, - 16107136888029757437 - ], - [ - 4376996761649023946, - 5151155327098069058, - 5052643273518683586, - 4214154406154441301 - ], - [ - 14323780220991293990, - 8193587898306996901, - 5671887774622993207, - 9546628649033002185 - ], - [ - 16523271232278987128, - 994857983084927437, - 14501829109938165419, - 9015660151307809950 - ], - [ - 1530238726285436995, - 6261885523422263637, - 11940153058268689285, - 15737357444014615384 - ], - [ - 2670341602838046451, - 10669331667080282584, - 16656965855764533819, - 13339778044433609883 - ], - [ - 17128805815986618686, - 18194734266790270296, - 5735422502154213482, - 10164141197176685232 - ], - [ - 2629176720116777217, - 6966722226648521547, - 2937669813272776408, - 2812827195714811672 - ], - [ - 6178870790111010071, - 10834984121929556338, - 2836091052290008872, - 1311164878771236983 - ], - [ - 7411275786539821863, - 3702190765468277039, - 18130480549896087952, - 5277641488054089382 - ] + [16110944391299715992, 6257581196984129533, 3238325178821009741, 2344850491864189019], + [9070724167014080545, 4270936005334206500, 14011092173278602876, 17233390044312666340], + [15882294806312417165, 4574813182503183418, 15374759504522847393, 12609068726586761599], + [5081359810005150600, 3073725930902770385, 12151383627606620216, 1678712612408922293], + [13389075440637154488, 1394733244174774927, 15897027408886080730, 8756205416909346149], + [9635595243774498130, 12944626865667316474, 11443383015868895087, 11271399114434241688], + [15730316965377191644, 9302195093067483199, 13013113029527355010, 16107136888029757437], + [4376996761649023946, 5151155327098069058, 5052643273518683586, 4214154406154441301], + [14323780220991293990, 8193587898306996901, 5671887774622993207, 9546628649033002185], + [16523271232278987128, 994857983084927437, 14501829109938165419, 9015660151307809950], + [1530238726285436995, 6261885523422263637, 11940153058268689285, 15737357444014615384], + [2670341602838046451, 10669331667080282584, 16656965855764533819, 13339778044433609883], + [17128805815986618686, 18194734266790270296, 5735422502154213482, 10164141197176685232], + [2629176720116777217, 6966722226648521547, 2937669813272776408, 2812827195714811672], + [6178870790111010071, 10834984121929556338, 2836091052290008872, 1311164878771236983], + [7411275786539821863, 3702190765468277039, 18130480549896087952, 5277641488054089382] ] } -} \ No newline at end of file +} diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_3_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_3_key.json index d117b3b0ade..9952afac334 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_3_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_3_key.json @@ -11,22 +11,10 @@ "domain_size": 1048576, "total_tables_len": 0, "public_inputs_locations": [ - [ - 0, - 0 - ], - [ - 1, - 0 - ], - [ - 2, - 0 - ], - [ - 3, - 0 - ] + [0, 0], + [1, 0], + [2, 0], + [3, 0] ], "extra_constant_polys_for_selectors": 4, "table_ids_column_idxes": [], @@ -161,102 +149,22 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [ - 2692117301910616223, - 11862373594405581684, - 12092750955553531256, - 5108545912057877223 - ], - [ - 13191057082261271313, - 13461898869001565340, - 3144977546711926190, - 12887787173850649640 - ], - [ - 8723842528870621436, - 9645915571392535116, - 6025366220407814286, - 4747467989456698429 - ], - [ - 7405718287975487752, - 15471426320802247554, - 8018397484818843188, - 1076292840128333912 - ], - [ - 15567092204640112640, - 13512378722158897717, - 16839350703341635379, - 6580006701757635256 - ], - [ - 478392572686859273, - 1879898158113218624, - 7956515309033309445, - 15667184770862761054 - ], - [ - 4738701842169478640, - 14432395387726327998, - 14827473518830139511, - 7026071202596813302 - ], - [ - 1832914181581899534, - 12309614119776336180, - 1786307750405330285, - 9394109377731731297 - ], - [ - 11330017822804908986, - 17965075245400465236, - 178921019209832245, - 9010774195056378656 - ], - [ - 10066603459136751242, - 16922354046552351580, - 1488715132336554574, - 2488902959064634539 - ], - [ - 12764025501053651238, - 10583029583148326399, - 10919956138611547307, - 193732647159610859 - ], - [ - 10812330075474661907, - 11023893070918609227, - 14153054852108697346, - 3310659191720741717 - ], - [ - 12566885554555589997, - 5264949142237538963, - 10357889278039077105, - 1693879812388879198 - ], - [ - 5143074524340781416, - 1340176837904332618, - 12593249647365922721, - 16619880365401544994 - ], - [ - 8116207797925146203, - 2436416957055038167, - 1598938366845903588, - 7153648406343743028 - ], - [ - 14400322751382246405, - 4576201222988375875, - 10482138496908129257, - 1696076921104575474 - ] + [2692117301910616223, 11862373594405581684, 12092750955553531256, 5108545912057877223], + [13191057082261271313, 13461898869001565340, 3144977546711926190, 12887787173850649640], + [8723842528870621436, 9645915571392535116, 6025366220407814286, 4747467989456698429], + [7405718287975487752, 15471426320802247554, 8018397484818843188, 1076292840128333912], + [15567092204640112640, 13512378722158897717, 16839350703341635379, 6580006701757635256], + [478392572686859273, 1879898158113218624, 7956515309033309445, 15667184770862761054], + [4738701842169478640, 14432395387726327998, 14827473518830139511, 7026071202596813302], + [1832914181581899534, 12309614119776336180, 1786307750405330285, 9394109377731731297], + [11330017822804908986, 17965075245400465236, 178921019209832245, 9010774195056378656], + [10066603459136751242, 16922354046552351580, 1488715132336554574, 2488902959064634539], + [12764025501053651238, 10583029583148326399, 10919956138611547307, 193732647159610859], + [10812330075474661907, 11023893070918609227, 14153054852108697346, 3310659191720741717], + [12566885554555589997, 5264949142237538963, 10357889278039077105, 1693879812388879198], + [5143074524340781416, 1340176837904332618, 12593249647365922721, 16619880365401544994], + [8116207797925146203, 2436416957055038167, 1598938366845903588, 7153648406343743028], + [14400322751382246405, 4576201222988375875, 10482138496908129257, 1696076921104575474] ] } -} \ No newline at end of file +} diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_4_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_4_key.json index e8b25fd5f24..acdefe7d1ae 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_4_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_4_key.json @@ -11,22 +11,10 @@ "domain_size": 1048576, "total_tables_len": 0, "public_inputs_locations": [ - [ - 0, - 0 - ], - [ - 1, - 0 - ], - [ - 2, - 0 - ], - [ - 3, - 0 - ] + [0, 0], + [1, 0], + [2, 0], + [3, 0] ], "extra_constant_polys_for_selectors": 4, "table_ids_column_idxes": [], @@ -161,102 +149,22 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [ - 1866437491015022712, - 11793636374252065717, - 2771461065434523690, - 14888818750197177871 - ], - [ - 13530099303626962147, - 15053516955824087922, - 12339234049539021204, - 9708862473063699060 - ], - [ - 11432132052297230557, - 6677170992284491097, - 6366885341898621463, - 8111143143511568092 - ], - [ - 9907106152447520228, - 6682147062594018467, - 10264912494418416112, - 15503628246857005809 - ], - [ - 17195185271365515391, - 13597952072744597251, - 17744684609835730837, - 2231158103010709548 - ], - [ - 14293262369681823328, - 13130511952565359928, - 10899311746723421149, - 13247944667340766269 - ], - [ - 13892335977334728116, - 8911034200951442707, - 9940381085909975496, - 2442123831058139778 - ], - [ - 6225220793196790211, - 4712637343981148404, - 17195066106455293379, - 8613492331172308471 - ], - [ - 6909799331954538355, - 10338179227896084459, - 12127192147500716446, - 17400998769923799388 - ], - [ - 16539422822493187900, - 14101588151214983695, - 13891327598256492007, - 6120137922715167439 - ], - [ - 14993757510795074537, - 2243361897978774751, - 3014175478852553185, - 1107614745766341650 - ], - [ - 13868198230244075748, - 14568344587632252919, - 18167720887640456957, - 892660889500481924 - ], - [ - 17208474456800792292, - 12638116024924785718, - 17972572249167165358, - 14432332670537563027 - ], - [ - 16794312278798106244, - 18025850455584262724, - 9034611355178459632, - 4812066730993316535 - ], - [ - 9019282623207016172, - 8465996543066345624, - 11891692540217379621, - 1309821012694343566 - ], - [ - 1009066940610956673, - 6090643896458703235, - 16512441752812232072, - 14910610346758346291 - ] + [1866437491015022712, 11793636374252065717, 2771461065434523690, 14888818750197177871], + [13530099303626962147, 15053516955824087922, 12339234049539021204, 9708862473063699060], + [11432132052297230557, 6677170992284491097, 6366885341898621463, 8111143143511568092], + [9907106152447520228, 6682147062594018467, 10264912494418416112, 15503628246857005809], + [17195185271365515391, 13597952072744597251, 17744684609835730837, 2231158103010709548], + [14293262369681823328, 13130511952565359928, 10899311746723421149, 13247944667340766269], + [13892335977334728116, 8911034200951442707, 9940381085909975496, 2442123831058139778], + [6225220793196790211, 4712637343981148404, 17195066106455293379, 8613492331172308471], + [6909799331954538355, 10338179227896084459, 12127192147500716446, 17400998769923799388], + [16539422822493187900, 14101588151214983695, 13891327598256492007, 6120137922715167439], + [14993757510795074537, 2243361897978774751, 3014175478852553185, 1107614745766341650], + [13868198230244075748, 14568344587632252919, 18167720887640456957, 892660889500481924], + [17208474456800792292, 12638116024924785718, 17972572249167165358, 14432332670537563027], + [16794312278798106244, 18025850455584262724, 9034611355178459632, 4812066730993316535], + [9019282623207016172, 8465996543066345624, 11891692540217379621, 1309821012694343566], + [1009066940610956673, 6090643896458703235, 16512441752812232072, 14910610346758346291] ] } -} \ No newline at end of file +} diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_5_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_5_key.json index eb327eed3dd..a99ed59cff3 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_5_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_5_key.json @@ -11,22 +11,10 @@ "domain_size": 1048576, "total_tables_len": 0, "public_inputs_locations": [ - [ - 0, - 0 - ], - [ - 1, - 0 - ], - [ - 2, - 0 - ], - [ - 3, - 0 - ] + [0, 0], + [1, 0], + [2, 0], + [3, 0] ], "extra_constant_polys_for_selectors": 4, "table_ids_column_idxes": [], @@ -161,102 +149,22 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [ - 232279302667736671, - 6726532338542220941, - 13706010138770265797, - 519282525097925002 - ], - [ - 1103871324670382881, - 2908131767596043522, - 1184743003960864148, - 15387210180491180588 - ], - [ - 1835139914361735684, - 16415559350382398669, - 5395927063819619365, - 11718217787759145490 - ], - [ - 16896753956696589678, - 18311507677904418762, - 3337753834358040142, - 15261701009883534681 - ], - [ - 5146023192165443108, - 6435094416669057886, - 12102399260358768173, - 11345203084302025912 - ], - [ - 12317726061088124860, - 16542505080079874955, - 14545249352878185130, - 6198318878248226108 - ], - [ - 11741052063217712776, - 6746988457930817443, - 17049940702304400525, - 664483646520961959 - ], - [ - 16848268934698055336, - 15351522766275089309, - 3303427044017225869, - 8449387423137144953 - ], - [ - 3539943683510232958, - 9977830546935578537, - 14361154867928067261, - 18078907485257653963 - ], - [ - 9615907517852235498, - 4547984845394069068, - 1881087510325623488, - 8387507487023822878 - ], - [ - 4914791735672339571, - 2927646189877435594, - 8101987065768319522, - 11220909861720631116 - ], - [ - 12470368453784044761, - 11566657313839792570, - 8916441472890022081, - 2460153038592468216 - ], - [ - 11111897832305454757, - 16681613892385931738, - 11167212997482997212, - 12907774125001975406 - ], - [ - 12356110082580425887, - 2082693370541797346, - 6346996203748293162, - 13460912313801928 - ], - [ - 17583700199336254135, - 3213348565987316027, - 6373106379194368913, - 3269747122288195701 - ], - [ - 6235590918094214281, - 6461943464583505547, - 16473683422501694355, - 5297565830886346313 - ] + [232279302667736671, 6726532338542220941, 13706010138770265797, 519282525097925002], + [1103871324670382881, 2908131767596043522, 1184743003960864148, 15387210180491180588], + [1835139914361735684, 16415559350382398669, 5395927063819619365, 11718217787759145490], + [16896753956696589678, 18311507677904418762, 3337753834358040142, 15261701009883534681], + [5146023192165443108, 6435094416669057886, 12102399260358768173, 11345203084302025912], + [12317726061088124860, 16542505080079874955, 14545249352878185130, 6198318878248226108], + [11741052063217712776, 6746988457930817443, 17049940702304400525, 664483646520961959], + [16848268934698055336, 15351522766275089309, 3303427044017225869, 8449387423137144953], + [3539943683510232958, 9977830546935578537, 14361154867928067261, 18078907485257653963], + [9615907517852235498, 4547984845394069068, 1881087510325623488, 8387507487023822878], + [4914791735672339571, 2927646189877435594, 8101987065768319522, 11220909861720631116], + [12470368453784044761, 11566657313839792570, 8916441472890022081, 2460153038592468216], + [11111897832305454757, 16681613892385931738, 11167212997482997212, 12907774125001975406], + [12356110082580425887, 2082693370541797346, 6346996203748293162, 13460912313801928], + [17583700199336254135, 3213348565987316027, 6373106379194368913, 3269747122288195701], + [6235590918094214281, 6461943464583505547, 16473683422501694355, 5297565830886346313] ] } -} \ No newline at end of file +} diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_6_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_6_key.json index fcfc585f123..ef04a6dabff 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_6_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_6_key.json @@ -11,22 +11,10 @@ "domain_size": 1048576, "total_tables_len": 0, "public_inputs_locations": [ - [ - 0, - 0 - ], - [ - 1, - 0 - ], - [ - 2, - 0 - ], - [ - 3, - 0 - ] + [0, 0], + [1, 0], + [2, 0], + [3, 0] ], "extra_constant_polys_for_selectors": 4, "table_ids_column_idxes": [], @@ -161,102 +149,22 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [ - 1255474782692205032, - 16087518293005221749, - 16120433120690725791, - 13557959444835590881 - ], - [ - 16027822192018731390, - 8319846902607826113, - 11762447400221114192, - 8443748859905122045 - ], - [ - 14217444156040642299, - 11667925428120549150, - 8770581120601633705, - 13711220870168951809 - ], - [ - 7514565357525361228, - 17561543150251615679, - 3154909983341532730, - 12214081580202496570 - ], - [ - 12103863316007597160, - 3323941154151772169, - 3020605753288032659, - 13719536383629040140 - ], - [ - 5692457694309768505, - 2819674835255412986, - 762859630950656893, - 8641902833919071345 - ], - [ - 17873529730032253633, - 7201386304292118615, - 11501182428688354869, - 484571398574807569 - ], - [ - 14885817894337856307, - 6275077850611154396, - 11258872656630844770, - 3539429443980133849 - ], - [ - 15063387858351738900, - 4885324227361507661, - 11843813664335157415, - 12108718617943024927 - ], - [ - 5899829642851923448, - 12815217964596374101, - 5258792099613493578, - 3492836714462054208 - ], - [ - 9767772893712446038, - 9516937526725710003, - 533138889369363889, - 1960629141548643757 - ], - [ - 5192250756718034923, - 6205844331296290914, - 16547640844499692480, - 13348222714661177711 - ], - [ - 6744522815256114347, - 9303892902465539007, - 14440545534790765924, - 7421221195917428336 - ], - [ - 354635080958416363, - 15720855927808633651, - 885375182959288083, - 10459197185009191208 - ], - [ - 3742508711441291317, - 7193882150736289342, - 17760334643806787982, - 8575009527221694930 - ], - [ - 18274184058397159114, - 5200115837479315537, - 2808181877606937346, - 17946239285125192080 - ] + [1255474782692205032, 16087518293005221749, 16120433120690725791, 13557959444835590881], + [16027822192018731390, 8319846902607826113, 11762447400221114192, 8443748859905122045], + [14217444156040642299, 11667925428120549150, 8770581120601633705, 13711220870168951809], + [7514565357525361228, 17561543150251615679, 3154909983341532730, 12214081580202496570], + [12103863316007597160, 3323941154151772169, 3020605753288032659, 13719536383629040140], + [5692457694309768505, 2819674835255412986, 762859630950656893, 8641902833919071345], + [17873529730032253633, 7201386304292118615, 11501182428688354869, 484571398574807569], + [14885817894337856307, 6275077850611154396, 11258872656630844770, 3539429443980133849], + [15063387858351738900, 4885324227361507661, 11843813664335157415, 12108718617943024927], + [5899829642851923448, 12815217964596374101, 5258792099613493578, 3492836714462054208], + [9767772893712446038, 9516937526725710003, 533138889369363889, 1960629141548643757], + [5192250756718034923, 6205844331296290914, 16547640844499692480, 13348222714661177711], + [6744522815256114347, 9303892902465539007, 14440545534790765924, 7421221195917428336], + [354635080958416363, 15720855927808633651, 885375182959288083, 10459197185009191208], + [3742508711441291317, 7193882150736289342, 17760334643806787982, 8575009527221694930], + [18274184058397159114, 5200115837479315537, 2808181877606937346, 17946239285125192080] ] } -} \ No newline at end of file +} diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_7_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_7_key.json index 1ab34e32a4f..5998d88228b 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_7_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_7_key.json @@ -11,22 +11,10 @@ "domain_size": 1048576, "total_tables_len": 0, "public_inputs_locations": [ - [ - 0, - 0 - ], - [ - 1, - 0 - ], - [ - 2, - 0 - ], - [ - 3, - 0 - ] + [0, 0], + [1, 0], + [2, 0], + [3, 0] ], "extra_constant_polys_for_selectors": 4, "table_ids_column_idxes": [], @@ -161,102 +149,22 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [ - 15278222994235313807, - 4647505541828109982, - 11601404244072907522, - 7495301362149670205 - ], - [ - 2294446454282967643, - 10852196555067806436, - 4676542110718751671, - 3650676510146080911 - ], - [ - 10036426682390389619, - 15410534417517518379, - 411748073143090898, - 1725429274294449186 - ], - [ - 10773139363930294963, - 14784009814759595952, - 4523828744129500622, - 14635565308295099932 - ], - [ - 11532260655451503527, - 2889442075290561580, - 7947536971337998641, - 9006850837384135593 - ], - [ - 18268520902352688907, - 17460815273130161567, - 5448683527846534560, - 16860223759333541117 - ], - [ - 8586752129609394016, - 17056726335999361043, - 13247832408825538184, - 10865075704067323346 - ], - [ - 4810539255563012829, - 3494541358111189199, - 7443746985302784339, - 1488118652209005646 - ], - [ - 13632843557374648899, - 11530787504038845899, - 8016420701220086345, - 2100494706314940875 - ], - [ - 12565007434827640436, - 2122488373912552994, - 7924677296826511433, - 4337201927455963919 - ], - [ - 9121346173552113908, - 8257616625819727572, - 1352571964050839537, - 1245015447612032209 - ], - [ - 5550331618999138407, - 15197131088442812142, - 17401528975137618793, - 7876503578710888777 - ], - [ - 10581471072917622415, - 11057977535360446233, - 4745650017347491925, - 16374614618217057484 - ], - [ - 15877663159259953297, - 13196700387970223678, - 987069829507588466, - 1239752961099076877 - ], - [ - 1564056242532596441, - 8225585740585112689, - 8013357208824893542, - 8291061420556283364 - ], - [ - 10408011788640723232, - 11035192730597666502, - 7808927156371652130, - 8373070655798680509 - ] + [15278222994235313807, 4647505541828109982, 11601404244072907522, 7495301362149670205], + [2294446454282967643, 10852196555067806436, 4676542110718751671, 3650676510146080911], + [10036426682390389619, 15410534417517518379, 411748073143090898, 1725429274294449186], + [10773139363930294963, 14784009814759595952, 4523828744129500622, 14635565308295099932], + [11532260655451503527, 2889442075290561580, 7947536971337998641, 9006850837384135593], + [18268520902352688907, 17460815273130161567, 5448683527846534560, 16860223759333541117], + [8586752129609394016, 17056726335999361043, 13247832408825538184, 10865075704067323346], + [4810539255563012829, 3494541358111189199, 7443746985302784339, 1488118652209005646], + [13632843557374648899, 11530787504038845899, 8016420701220086345, 2100494706314940875], + [12565007434827640436, 2122488373912552994, 7924677296826511433, 4337201927455963919], + [9121346173552113908, 8257616625819727572, 1352571964050839537, 1245015447612032209], + [5550331618999138407, 15197131088442812142, 17401528975137618793, 7876503578710888777], + [10581471072917622415, 11057977535360446233, 4745650017347491925, 16374614618217057484], + [15877663159259953297, 13196700387970223678, 987069829507588466, 1239752961099076877], + [1564056242532596441, 8225585740585112689, 8013357208824893542, 8291061420556283364], + [10408011788640723232, 11035192730597666502, 7808927156371652130, 8373070655798680509] ] } -} \ No newline at end of file +} diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_8_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_8_key.json index 53184d3b764..51ed882ef0e 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_8_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_8_key.json @@ -11,22 +11,10 @@ "domain_size": 1048576, "total_tables_len": 0, "public_inputs_locations": [ - [ - 0, - 0 - ], - [ - 1, - 0 - ], - [ - 2, - 0 - ], - [ - 3, - 0 - ] + [0, 0], + [1, 0], + [2, 0], + [3, 0] ], "extra_constant_polys_for_selectors": 4, "table_ids_column_idxes": [], @@ -161,102 +149,22 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [ - 6606882135817124908, - 870347107746733688, - 12589677233751162485, - 589161009871845644 - ], - [ - 2653237880188520795, - 5593713591941028430, - 14924807074602279493, - 7403178895756596709 - ], - [ - 4770385125899202728, - 16848765286027915692, - 7130735721393145418, - 13542558858028383026 - ], - [ - 10198382868561538358, - 11182212222601267089, - 2158487448188796066, - 7515784380092212678 - ], - [ - 18043800703311929788, - 12605295159363639520, - 16963777812872271598, - 13934310487890398001 - ], - [ - 17306728193061605292, - 6162556196186301425, - 15123250614620584121, - 7156136428077702076 - ], - [ - 3239169487219227705, - 4415189033224694015, - 10092040104298268727, - 3953865385297495928 - ], - [ - 13842490303827572248, - 8581552410557417158, - 6306820342544224802, - 1525290694317383658 - ], - [ - 16571790197298227277, - 273370441868121439, - 7446891486292543124, - 5407600836394474442 - ], - [ - 11518012136298307119, - 15035338047379067034, - 11014561672957925556, - 9225054298465248935 - ], - [ - 11950255612043468638, - 10166628395020495040, - 5673010277307553197, - 3641423295115612757 - ], - [ - 1072894636907573868, - 10523520096472094653, - 4897453347544558657, - 3772162500249343132 - ], - [ - 17527297802619704973, - 16260964196666506939, - 7653109999731571152, - 15253570761269944834 - ], - [ - 16258769312952303884, - 7720171109291562352, - 11124452352545828178, - 16830247676911180779 - ], - [ - 5288712429506529884, - 13145012711898589816, - 11490757447230521395, - 5486824582454772190 - ], - [ - 16641639521175638360, - 5677946044429642761, - 12635856058275795326, - 12340020456497165526 - ] + [6606882135817124908, 870347107746733688, 12589677233751162485, 589161009871845644], + [2653237880188520795, 5593713591941028430, 14924807074602279493, 7403178895756596709], + [4770385125899202728, 16848765286027915692, 7130735721393145418, 13542558858028383026], + [10198382868561538358, 11182212222601267089, 2158487448188796066, 7515784380092212678], + [18043800703311929788, 12605295159363639520, 16963777812872271598, 13934310487890398001], + [17306728193061605292, 6162556196186301425, 15123250614620584121, 7156136428077702076], + [3239169487219227705, 4415189033224694015, 10092040104298268727, 3953865385297495928], + [13842490303827572248, 8581552410557417158, 6306820342544224802, 1525290694317383658], + [16571790197298227277, 273370441868121439, 7446891486292543124, 5407600836394474442], + [11518012136298307119, 15035338047379067034, 11014561672957925556, 9225054298465248935], + [11950255612043468638, 10166628395020495040, 5673010277307553197, 3641423295115612757], + [1072894636907573868, 10523520096472094653, 4897453347544558657, 3772162500249343132], + [17527297802619704973, 16260964196666506939, 7653109999731571152, 15253570761269944834], + [16258769312952303884, 7720171109291562352, 11124452352545828178, 16830247676911180779], + [5288712429506529884, 13145012711898589816, 11490757447230521395, 5486824582454772190], + [16641639521175638360, 5677946044429642761, 12635856058275795326, 12340020456497165526] ] } -} \ No newline at end of file +} diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_9_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_9_key.json index 88a48a0bf91..6e25abdddcb 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_9_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_9_key.json @@ -11,22 +11,10 @@ "domain_size": 1048576, "total_tables_len": 0, "public_inputs_locations": [ - [ - 0, - 0 - ], - [ - 1, - 0 - ], - [ - 2, - 0 - ], - [ - 3, - 0 - ] + [0, 0], + [1, 0], + [2, 0], + [3, 0] ], "extra_constant_polys_for_selectors": 4, "table_ids_column_idxes": [], @@ -161,102 +149,22 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [ - 1966688024276265163, - 1600999376577297955, - 9979283765343242481, - 10853158383047279373 - ], - [ - 9617115799973676416, - 1436692352837490106, - 16621229234254045212, - 17649471158808930813 - ], - [ - 10598997254576197179, - 6191890180530301291, - 485325547092687385, - 17866822217569560015 - ], - [ - 17529069959174406385, - 1822730242748867421, - 10607268541276403219, - 10369730414641253572 - ], - [ - 9559948904275293033, - 271393452476373483, - 10294727560225979037, - 13356808215545342022 - ], - [ - 3330505141292591439, - 14604912162246460234, - 13747490798131143365, - 9686392462153294316 - ], - [ - 1308334442155460802, - 8411248012498029090, - 1727122243552046217, - 1891983150748887801 - ], - [ - 13628794098518472387, - 9775581327398472118, - 10952798350389999267, - 3791915693702783252 - ], - [ - 5150729729317744106, - 15268081752408833175, - 11313693800895322733, - 7645258866415024451 - ], - [ - 4492405884498997751, - 1462600329700613046, - 4494587633368393420, - 13835293745083269390 - ], - [ - 16786735218378765255, - 13489016634632055711, - 780880140016370703, - 1632417931049291348 - ], - [ - 15419598237747857050, - 17379853454459968259, - 1377883698753277247, - 17090368996477921986 - ], - [ - 5453156352466670830, - 7921752778252981104, - 15901693682958424795, - 7759079127470880643 - ], - [ - 13945928657949258565, - 10630556046992331796, - 5947903586431352857, - 13970701039664769056 - ], - [ - 11402992940883704805, - 14254801701412570920, - 16823021910688666954, - 16435058721419375579 - ], - [ - 1434897606543124534, - 7242596307416400095, - 1722748060955112357, - 1262887759339605102 - ] + [1966688024276265163, 1600999376577297955, 9979283765343242481, 10853158383047279373], + [9617115799973676416, 1436692352837490106, 16621229234254045212, 17649471158808930813], + [10598997254576197179, 6191890180530301291, 485325547092687385, 17866822217569560015], + [17529069959174406385, 1822730242748867421, 10607268541276403219, 10369730414641253572], + [9559948904275293033, 271393452476373483, 10294727560225979037, 13356808215545342022], + [3330505141292591439, 14604912162246460234, 13747490798131143365, 9686392462153294316], + [1308334442155460802, 8411248012498029090, 1727122243552046217, 1891983150748887801], + [13628794098518472387, 9775581327398472118, 10952798350389999267, 3791915693702783252], + [5150729729317744106, 15268081752408833175, 11313693800895322733, 7645258866415024451], + [4492405884498997751, 1462600329700613046, 4494587633368393420, 13835293745083269390], + [16786735218378765255, 13489016634632055711, 780880140016370703, 1632417931049291348], + [15419598237747857050, 17379853454459968259, 1377883698753277247, 17090368996477921986], + [5453156352466670830, 7921752778252981104, 15901693682958424795, 7759079127470880643], + [13945928657949258565, 10630556046992331796, 5947903586431352857, 13970701039664769056], + [11402992940883704805, 14254801701412570920, 16823021910688666954, 16435058721419375579], + [1434897606543124534, 7242596307416400095, 1722748060955112357, 1262887759339605102] ] } -} \ No newline at end of file +} diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_node_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_node_key.json index 7865e106454..898044175ed 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_node_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_node_key.json @@ -11,22 +11,10 @@ "domain_size": 1048576, "total_tables_len": 0, "public_inputs_locations": [ - [ - 0, - 0 - ], - [ - 1, - 0 - ], - [ - 2, - 0 - ], - [ - 3, - 0 - ] + [0, 0], + [1, 0], + [2, 0], + [3, 0] ], "extra_constant_polys_for_selectors": 4, "table_ids_column_idxes": [], @@ -161,102 +149,22 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [ - 16110944391299715992, - 6257581196984129533, - 3238325178821009741, - 2344850491864189019 - ], - [ - 9070724167014080545, - 4270936005334206500, - 14011092173278602876, - 17233390044312666340 - ], - [ - 15882294806312417165, - 4574813182503183418, - 15374759504522847393, - 12609068726586761599 - ], - [ - 5081359810005150600, - 3073725930902770385, - 12151383627606620216, - 1678712612408922293 - ], - [ - 13389075440637154488, - 1394733244174774927, - 15897027408886080730, - 8756205416909346149 - ], - [ - 9635595243774498130, - 12944626865667316474, - 11443383015868895087, - 11271399114434241688 - ], - [ - 15730316965377191644, - 9302195093067483199, - 13013113029527355010, - 16107136888029757437 - ], - [ - 4376996761649023946, - 5151155327098069058, - 5052643273518683586, - 4214154406154441301 - ], - [ - 14323780220991293990, - 8193587898306996901, - 5671887774622993207, - 9546628649033002185 - ], - [ - 16523271232278987128, - 994857983084927437, - 14501829109938165419, - 9015660151307809950 - ], - [ - 1530238726285436995, - 6261885523422263637, - 11940153058268689285, - 15737357444014615384 - ], - [ - 2670341602838046451, - 10669331667080282584, - 16656965855764533819, - 13339778044433609883 - ], - [ - 17128805815986618686, - 18194734266790270296, - 5735422502154213482, - 10164141197176685232 - ], - [ - 2629176720116777217, - 6966722226648521547, - 2937669813272776408, - 2812827195714811672 - ], - [ - 6178870790111010071, - 10834984121929556338, - 2836091052290008872, - 1311164878771236983 - ], - [ - 7411275786539821863, - 3702190765468277039, - 18130480549896087952, - 5277641488054089382 - ] + [16110944391299715992, 6257581196984129533, 3238325178821009741, 2344850491864189019], + [9070724167014080545, 4270936005334206500, 14011092173278602876, 17233390044312666340], + [15882294806312417165, 4574813182503183418, 15374759504522847393, 12609068726586761599], + [5081359810005150600, 3073725930902770385, 12151383627606620216, 1678712612408922293], + [13389075440637154488, 1394733244174774927, 15897027408886080730, 8756205416909346149], + [9635595243774498130, 12944626865667316474, 11443383015868895087, 11271399114434241688], + [15730316965377191644, 9302195093067483199, 13013113029527355010, 16107136888029757437], + [4376996761649023946, 5151155327098069058, 5052643273518683586, 4214154406154441301], + [14323780220991293990, 8193587898306996901, 5671887774622993207, 9546628649033002185], + [16523271232278987128, 994857983084927437, 14501829109938165419, 9015660151307809950], + [1530238726285436995, 6261885523422263637, 11940153058268689285, 15737357444014615384], + [2670341602838046451, 10669331667080282584, 16656965855764533819, 13339778044433609883], + [17128805815986618686, 18194734266790270296, 5735422502154213482, 10164141197176685232], + [2629176720116777217, 6966722226648521547, 2937669813272776408, 2812827195714811672], + [6178870790111010071, 10834984121929556338, 2836091052290008872, 1311164878771236983], + [7411275786539821863, 3702190765468277039, 18130480549896087952, 5277641488054089382] ] } -} \ No newline at end of file +} diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_scheduler_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_scheduler_key.json index f73530a2ca1..47aeb8dbf4f 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_scheduler_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_scheduler_key.json @@ -17,27 +17,13 @@ "domain_size": 1048576, "total_tables_len": 132096, "public_inputs_locations": [ - [ - 0, - 993345 - ], - [ - 1, - 993345 - ], - [ - 2, - 993345 - ], - [ - 3, - 993345 - ] + [0, 993345], + [1, 993345], + [2, 993345], + [3, 993345] ], "extra_constant_polys_for_selectors": 4, - "table_ids_column_idxes": [ - 8 - ], + "table_ids_column_idxes": [8], "quotient_degree": 8, "selectors_placement": { "Fork": { @@ -169,102 +155,22 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [ - 15230555879575926816, - 8670948681878777794, - 767116401361787080, - 13808751382541908272 - ], - [ - 1220486015450063297, - 9567900108378427313, - 18210974256257044632, - 18338726330920132716 - ], - [ - 7568154221767192295, - 11691578057855133612, - 9987210827513697170, - 17019942866370544662 - ], - [ - 14102673551475852761, - 3839757807646647049, - 8317169401280108378, - 14477318175428765566 - ], - [ - 10669246787368115713, - 11986124114638697341, - 373240888095551057, - 10600874540100090281 - ], - [ - 1967433817606548880, - 1252531621216687635, - 14092128528722989126, - 15316007954882781751 - ], - [ - 5731133612849813361, - 9439573956187051534, - 15220234372923263193, - 9871593147214385018 - ], - [ - 5432497552013782457, - 6217935098775351854, - 10788625265296640732, - 7626134139872594266 - ], - [ - 16209439837876908945, - 16958705495955599782, - 2620710932184338631, - 13207816187542048405 - ], - [ - 11540918781414391435, - 13215620469361541671, - 7261198944216226328, - 14101141177393020403 - ], - [ - 10951103916546600353, - 16291916249083597787, - 8020395928888095904, - 14831509381332343931 - ], - [ - 14614496581821229034, - 570029684825245175, - 11368483572681932607, - 17857699424461379920 - ], - [ - 10549396205597068517, - 16251363364669954894, - 5619914240250798106, - 15384760685177493623 - ], - [ - 6443594760777705854, - 4350415958090847717, - 7924647710631862693, - 1595589969968983394 - ], - [ - 1575322136978699734, - 1714883637605030004, - 1403876268493429570, - 5816075577953274504 - ], - [ - 1910730620955478970, - 10199274156501303143, - 8240588740333284151, - 7977626984796160665 - ] + [15230555879575926816, 8670948681878777794, 767116401361787080, 13808751382541908272], + [1220486015450063297, 9567900108378427313, 18210974256257044632, 18338726330920132716], + [7568154221767192295, 11691578057855133612, 9987210827513697170, 17019942866370544662], + [14102673551475852761, 3839757807646647049, 8317169401280108378, 14477318175428765566], + [10669246787368115713, 11986124114638697341, 373240888095551057, 10600874540100090281], + [1967433817606548880, 1252531621216687635, 14092128528722989126, 15316007954882781751], + [5731133612849813361, 9439573956187051534, 15220234372923263193, 9871593147214385018], + [5432497552013782457, 6217935098775351854, 10788625265296640732, 7626134139872594266], + [16209439837876908945, 16958705495955599782, 2620710932184338631, 13207816187542048405], + [11540918781414391435, 13215620469361541671, 7261198944216226328, 14101141177393020403], + [10951103916546600353, 16291916249083597787, 8020395928888095904, 14831509381332343931], + [14614496581821229034, 570029684825245175, 11368483572681932607, 17857699424461379920], + [10549396205597068517, 16251363364669954894, 5619914240250798106, 15384760685177493623], + [6443594760777705854, 4350415958090847717, 7924647710631862693, 1595589969968983394], + [1575322136978699734, 1714883637605030004, 1403876268493429570, 5816075577953274504], + [1910730620955478970, 10199274156501303143, 8240588740333284151, 7977626984796160665] ] } -} \ No newline at end of file +} diff --git a/renovate.json b/renovate.json index 055bc342580..d98e5239274 100644 --- a/renovate.json +++ b/renovate.json @@ -1,11 +1,6 @@ { "enabled": false, - "extends": [ - "config:base", - "helpers:pinGitHubActionDigests" - ], - "enabledManagers": [ - "github-actions" - ], + "extends": ["config:base", "helpers:pinGitHubActionDigests"], + "enabledManagers": ["github-actions"], "prCreation": "immediate" } diff --git a/sdk/zksync-rs/src/ethereum/DepositERC20GasLimit.json b/sdk/zksync-rs/src/ethereum/DepositERC20GasLimit.json index 57864f93317..8116e4410a5 100644 --- a/sdk/zksync-rs/src/ethereum/DepositERC20GasLimit.json +++ b/sdk/zksync-rs/src/ethereum/DepositERC20GasLimit.json @@ -1,42 +1,42 @@ { - "0x0000000000095413afc295d19edeb1ad7b71c952": 140000, - "0xeb4c2781e4eba804ce9a9803c67d0893436bb27d": 160000, - "0xbbbbca6a901c926f240b89eacb641d8aec7aeafd": 140000, - "0xb64ef51c888972c908cfacf59b47c1afbc0ab8ac": 140000, - "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984": 150000, - "0x9ba00d6856a4edf4665bca2c2309936572473b7e": 270000, - "0x8daebade922df735c38c80c7ebd708af50815faa": 140000, - "0x0d8775f648430679a709e98d2b0cb6250d2887ef": 140000, - "0xdac17f958d2ee523a2206206994597c13d831ec7": 140000, - "0x6de037ef9ad2725eb40118bb1702ebb27e4aeb24": 150000, - "0x056fd409e1d7a124bd7017459dfea2f387b6d5cd": 180000, - "0x0f5d2fb29fb7d3cfee444a200298f468908cc942": 140000, - "0x514910771af9ca656af840dff83e8264ecf986ca": 140000, - "0x1985365e9f78359a9b6ad760e32412f4a445e862": 180000, - "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599": 140000, - "0xe41d2489571d322189246dafa5ebde1f4699f498": 140000, - "0x6b175474e89094c44da98b954eedeac495271d0f": 140000, - "0xaaaebe6fe48e54f431b0c390cfaf0b017d09d42d": 150000, - "0x2b591e99afe9f32eaa6214f7b7629768c40eeb39": 140000, - "0x65ece136b89ebaa72a7f7aa815674946e44ca3f9": 140000, - "0x0000000000085d4780b73119b644ae5ecd22b376": 150000, - "0xdb25f211ab05b1c97d595516f45794528a807ad8": 180000, - "0x408e41876cccdc0f92210600ef50372656052a38": 140000, - "0x15a2b3cfafd696e1c783fe99eed168b78a3a371e": 160000, - "0x38e4adb44ef08f22f5b5b76a8f0c2d0dcbe7dca1": 160000, - "0x3108ccfd96816f9e663baa0e8c5951d229e8c6da": 140000, - "0x56d811088235f11c8920698a204a5010a788f4b3": 240000, - "0x57ab1ec28d129707052df4df418d58a2d46d5f51": 220000, - "0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2": 140000, - "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48": 150000, - "0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f": 200000, - "0x744d70fdbe2ba4cf95131626614a1763df805b9e": 230000, - "0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e": 140000, - "0x4c7065bca76fe44afb0d16c2441b1e6e163354e2": 250000, - "0xdd974d5c2e2928dea5f71b9825b8b646686bd200": 140000, - "0x80fb784b7ed66730e8b1dbd9820afd29931aab03": 140000, - "0xd56dac73a4d6766464b38ec6d91eb45ce7457c44": 140000, - "0x4fabb145d64652a948d72533023f6e7a623c7c53": 150000, - "0x38a2fdc11f526ddd5a607c1f251c065f40fbf2f7": 140000, - "0x7dd9c5cba05e151c895fde1cf355c9a1d5da6429": 140000 + "0x0000000000095413afc295d19edeb1ad7b71c952": 140000, + "0xeb4c2781e4eba804ce9a9803c67d0893436bb27d": 160000, + "0xbbbbca6a901c926f240b89eacb641d8aec7aeafd": 140000, + "0xb64ef51c888972c908cfacf59b47c1afbc0ab8ac": 140000, + "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984": 150000, + "0x9ba00d6856a4edf4665bca2c2309936572473b7e": 270000, + "0x8daebade922df735c38c80c7ebd708af50815faa": 140000, + "0x0d8775f648430679a709e98d2b0cb6250d2887ef": 140000, + "0xdac17f958d2ee523a2206206994597c13d831ec7": 140000, + "0x6de037ef9ad2725eb40118bb1702ebb27e4aeb24": 150000, + "0x056fd409e1d7a124bd7017459dfea2f387b6d5cd": 180000, + "0x0f5d2fb29fb7d3cfee444a200298f468908cc942": 140000, + "0x514910771af9ca656af840dff83e8264ecf986ca": 140000, + "0x1985365e9f78359a9b6ad760e32412f4a445e862": 180000, + "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599": 140000, + "0xe41d2489571d322189246dafa5ebde1f4699f498": 140000, + "0x6b175474e89094c44da98b954eedeac495271d0f": 140000, + "0xaaaebe6fe48e54f431b0c390cfaf0b017d09d42d": 150000, + "0x2b591e99afe9f32eaa6214f7b7629768c40eeb39": 140000, + "0x65ece136b89ebaa72a7f7aa815674946e44ca3f9": 140000, + "0x0000000000085d4780b73119b644ae5ecd22b376": 150000, + "0xdb25f211ab05b1c97d595516f45794528a807ad8": 180000, + "0x408e41876cccdc0f92210600ef50372656052a38": 140000, + "0x15a2b3cfafd696e1c783fe99eed168b78a3a371e": 160000, + "0x38e4adb44ef08f22f5b5b76a8f0c2d0dcbe7dca1": 160000, + "0x3108ccfd96816f9e663baa0e8c5951d229e8c6da": 140000, + "0x56d811088235f11c8920698a204a5010a788f4b3": 240000, + "0x57ab1ec28d129707052df4df418d58a2d46d5f51": 220000, + "0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2": 140000, + "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48": 150000, + "0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f": 200000, + "0x744d70fdbe2ba4cf95131626614a1763df805b9e": 230000, + "0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e": 140000, + "0x4c7065bca76fe44afb0d16c2441b1e6e163354e2": 250000, + "0xdd974d5c2e2928dea5f71b9825b8b646686bd200": 140000, + "0x80fb784b7ed66730e8b1dbd9820afd29931aab03": 140000, + "0xd56dac73a4d6766464b38ec6d91eb45ce7457c44": 140000, + "0x4fabb145d64652a948d72533023f6e7a623c7c53": 150000, + "0x38a2fdc11f526ddd5a607c1f251c065f40fbf2f7": 140000, + "0x7dd9c5cba05e151c895fde1cf355c9a1d5da6429": 140000 } diff --git a/sdk/zksync-web3.js/abi/IERC1271.json b/sdk/zksync-web3.js/abi/IERC1271.json index 5e153118a2a..c7b4b514a4a 100644 --- a/sdk/zksync-web3.js/abi/IERC1271.json +++ b/sdk/zksync-web3.js/abi/IERC1271.json @@ -1,28 +1,28 @@ { - "abi": [ + "abi": [ + { + "inputs": [ { - "inputs": [ - { - "internalType": "bytes32", - "name": "hash", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "signature", - "type": "bytes" - } - ], - "name": "isValidSignature", - "outputs": [ - { - "internalType": "bytes4", - "name": "magicValue", - "type": "bytes4" - } - ], - "stateMutability": "view", - "type": "function" + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "isValidSignature", + "outputs": [ + { + "internalType": "bytes4", + "name": "magicValue", + "type": "bytes4" } - ] -} \ No newline at end of file + ], + "stateMutability": "view", + "type": "function" + } + ] +} diff --git a/sdk/zksync-web3.js/tsconfig.json b/sdk/zksync-web3.js/tsconfig.json index 322b2cd47e0..e319b616776 100644 --- a/sdk/zksync-web3.js/tsconfig.json +++ b/sdk/zksync-web3.js/tsconfig.json @@ -12,7 +12,5 @@ "noImplicitOverride": true }, - "files": [ - "./src/index.ts" - ] + "files": ["./src/index.ts"] } From db4ff0fb6659c4f16c29416168b75be448a616dd Mon Sep 17 00:00:00 2001 From: Bence Haromi Date: Wed, 25 Oct 2023 11:30:05 +0100 Subject: [PATCH 044/108] lint: sol lint rule update + submodule ignore --- .solhintignore | 3 +++ etc/lint-config/sol.js | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 .solhintignore diff --git a/.solhintignore b/.solhintignore new file mode 100644 index 00000000000..24b618546bb --- /dev/null +++ b/.solhintignore @@ -0,0 +1,3 @@ +# Ignore contract submodules +contracts +etc/system-contracts \ No newline at end of file diff --git a/etc/lint-config/sol.js b/etc/lint-config/sol.js index 2d29c78f947..57da967ea4a 100644 --- a/etc/lint-config/sol.js +++ b/etc/lint-config/sol.js @@ -8,6 +8,7 @@ module.exports = { // // TODO (ZKS-329): Turn on the majority of the rules and make the solhint comply with them. "state-visibility": "off", + "func-visibility": ["warn", { "ignoreConstructors": true }], "var-name-mixedcase": "off", "avoid-call-value": "off", "no-empty-blocks": "off", @@ -20,6 +21,6 @@ module.exports = { "func-name-mixedcase": "off", "no-unused-vars": "off", "max-states-count": "off", - "compiler-version": ["warn", "^0.7.0"] + "compiler-version": ["warn", "^0.8.0"] } }; From 13a15ca79bbdfec1c0680a515e436bbbd9fd7ba4 Mon Sep 17 00:00:00 2001 From: Bence Haromi Date: Wed, 25 Oct 2023 13:36:08 +0100 Subject: [PATCH 045/108] Revert "fmt: json and yaml files formatted" This reverts commit 0967ba05469827a371c69d158dfc9517707d8a2a. --- .github/release-please/config.json | 32 +- .github/workflows/cargo-license.yaml | 4 +- .../data/verification_0_key.json | 359 ++- .../data/verification_10_key.json | 359 ++- .../data/verification_11_key.json | 359 ++- .../data/verification_12_key.json | 359 ++- .../data/verification_13_key.json | 359 ++- .../data/verification_14_key.json | 359 ++- .../data/verification_15_key.json | 359 ++- .../data/verification_16_key.json | 359 ++- .../data/verification_17_key.json | 359 ++- .../data/verification_18_key.json | 359 ++- .../data/verification_1_key.json | 359 ++- .../data/verification_2_key.json | 359 ++- .../data/verification_3_key.json | 359 ++- .../data/verification_4_key.json | 359 ++- .../data/verification_5_key.json | 359 ++- .../data/verification_6_key.json | 359 ++- .../data/verification_7_key.json | 359 ++- .../data/verification_8_key.json | 359 ++- .../data/verification_9_key.json | 359 ++- core/lib/dal/sqlx-data.json | 2446 ++++++++++++++--- core/tests/revert-test/tsconfig.json | 14 +- core/tests/ts-integration/jest.config.json | 31 +- core/tests/ts-integration/package.json | 62 +- core/tests/ts-integration/tsconfig.json | 24 +- core/tests/upgrade-test/tsconfig.json | 14 +- .../zksync_testharness_test.json | 1 + etc/test_config/constant/api.json | 2 +- etc/test_config/constant/eth.json | 6 +- .../1692195639-upgrade-system/common.json | 2 +- .../mainnet2/facetCuts.json | 42 +- .../mainnet2/facets.json | 2 +- .../mainnet2/l2Upgrade.json | 65 +- .../mainnet2/transactions.json | 49 +- .../stage2/facetCuts.json | 42 +- .../stage2/facets.json | 2 +- .../stage2/l2Upgrade.json | 65 +- .../stage2/transactions.json | 49 +- .../testnet2/facetCuts.json | 42 +- .../testnet2/facets.json | 2 +- .../testnet2/l2Upgrade.json | 65 +- .../testnet2/transactions.json | 49 +- .../common.json | 2 +- .../stage2/facetCuts.json | 50 +- .../stage2/facets.json | 2 +- .../stage2/l2Upgrade.json | 65 +- .../stage2/transactions.json | 57 +- .../testnet2/facetCuts.json | 50 +- .../testnet2/facets.json | 2 +- .../testnet2/l2Upgrade.json | 65 +- .../testnet2/transactions.json | 57 +- .../common.json | 2 +- .../mainnet2/facetCuts.json | 50 +- .../mainnet2/facets.json | 2 +- .../mainnet2/l2Upgrade.json | 65 +- .../mainnet2/transactions.json | 57 +- .../stage2/l2Upgrade.json | 17 +- .../stage2/transactions.json | 9 +- .../testnet2/l2Upgrade.json | 17 +- .../testnet2/transactions.json | 9 +- .../common.json | 2 +- .../mainnet2/crypto.json | 2 +- .../mainnet2/transactions.json | 9 +- .../stage2/crypto.json | 2 +- .../stage2/transactions.json | 9 +- .../testnet2/crypto.json | 2 +- .../testnet2/transactions.json | 9 +- .../mainnet2/transactions.json | 9 +- .../stage2/transactions.json | 9 +- .../testnet2/transactions.json | 9 +- .../local-setup-preparation/tsconfig.json | 4 +- infrastructure/protocol-upgrade/tsconfig.json | 2 +- infrastructure/zk/package.json | 62 +- infrastructure/zk/tsconfig.json | 24 +- .../snark_verification_scheduler_key.json | 359 ++- .../data/verification_basic_10_key.json | 138 +- .../data/verification_basic_11_key.json | 138 +- .../data/verification_basic_12_key.json | 138 +- .../data/verification_basic_13_key.json | 138 +- .../data/verification_basic_1_key.json | 138 +- .../data/verification_basic_2_key.json | 138 +- .../data/verification_basic_3_key.json | 138 +- .../data/verification_basic_4_key.json | 138 +- .../data/verification_basic_5_key.json | 138 +- .../data/verification_basic_6_key.json | 138 +- .../data/verification_basic_7_key.json | 138 +- .../data/verification_basic_8_key.json | 138 +- .../data/verification_basic_9_key.json | 138 +- .../data/verification_leaf_10_key.json | 134 +- .../data/verification_leaf_11_key.json | 134 +- .../data/verification_leaf_12_key.json | 134 +- .../data/verification_leaf_13_key.json | 134 +- .../data/verification_leaf_14_key.json | 134 +- .../data/verification_leaf_15_key.json | 134 +- .../data/verification_leaf_1_key.json | 138 +- .../data/verification_leaf_2_key.json | 134 +- .../data/verification_leaf_3_key.json | 134 +- .../data/verification_leaf_4_key.json | 134 +- .../data/verification_leaf_5_key.json | 134 +- .../data/verification_leaf_6_key.json | 134 +- .../data/verification_leaf_7_key.json | 134 +- .../data/verification_leaf_8_key.json | 134 +- .../data/verification_leaf_9_key.json | 134 +- .../data/verification_node_key.json | 134 +- .../data/verification_scheduler_key.json | 138 +- renovate.json | 9 +- .../src/ethereum/DepositERC20GasLimit.json | 80 +- sdk/zksync-web3.js/abi/IERC1271.json | 50 +- sdk/zksync-web3.js/tsconfig.json | 4 +- 110 files changed, 12717 insertions(+), 2530 deletions(-) diff --git a/.github/release-please/config.json b/.github/release-please/config.json index 88d3f9b04f9..59e8b66dcc3 100644 --- a/.github/release-please/config.json +++ b/.github/release-please/config.json @@ -5,21 +5,21 @@ "bump-minor-pre-major": true, "bump-patch-for-minor-pre-major": true, "packages": { - "core": { - "release-type": "simple", - "component": "core" - }, - "sdk/zksync-web3.js": { - "release-type": "node", - "component": "web3js" - }, - "sdk/zksync-rs": { - "release-type": "rust", - "component": "zksync-rs" - }, - "prover": { - "release-type": "simple", - "component": "prover" - } + "core": { + "release-type": "simple", + "component": "core" + }, + "sdk/zksync-web3.js": { + "release-type": "node", + "component": "web3js" + }, + "sdk/zksync-rs": { + "release-type": "rust", + "component": "zksync-rs" + }, + "prover": { + "release-type": "simple", + "component": "prover" + } } } diff --git a/.github/workflows/cargo-license.yaml b/.github/workflows/cargo-license.yaml index e326f296694..189b47163e5 100644 --- a/.github/workflows/cargo-license.yaml +++ b/.github/workflows/cargo-license.yaml @@ -4,5 +4,5 @@ jobs: cargo-deny: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: EmbarkStudios/cargo-deny-action@v1 + - uses: actions/checkout@v3 + - uses: EmbarkStudios/cargo-deny-action@v1 diff --git a/core/bin/verification_key_generator_and_server/data/verification_0_key.json b/core/bin/verification_key_generator_and_server/data/verification_0_key.json index 83ff113bc9c..c3262193a4f 100644 --- a/core/bin/verification_key_generator_and_server/data/verification_0_key.json +++ b/core/bin/verification_key_generator_and_server/data/verification_0_key.json @@ -5,140 +5,395 @@ "num_witness_polys": 0, "gate_setup_commitments": [ { - "x": [14745348174000482855, 2839037062185937123, 3369862715588854899, 1495909583940713128], - "y": [6859454683840363585, 11340551061368171664, 9528805406487149561, 3414144677220223705], + "x": [ + 14745348174000482855, + 2839037062185937123, + 3369862715588854899, + 1495909583940713128 + ], + "y": [ + 6859454683840363585, + 11340551061368171664, + 9528805406487149561, + 3414144677220223705 + ], "infinity": false }, { - "x": [9215749870136224396, 18418669114332753377, 13140219601461030180, 2381098845928447331], - "y": [8834765081837029169, 4424842234296363904, 13294547557836067005, 414624398145171890], + "x": [ + 9215749870136224396, + 18418669114332753377, + 13140219601461030180, + 2381098845928447331 + ], + "y": [ + 8834765081837029169, + 4424842234296363904, + 13294547557836067005, + 414624398145171890 + ], "infinity": false }, { - "x": [2148575411987453084, 16730180692461995258, 12423475767707134837, 3014264170083149730], - "y": [10870860158804422503, 14060279526953529989, 2266257082861680293, 22356173050560284], + "x": [ + 2148575411987453084, + 16730180692461995258, + 12423475767707134837, + 3014264170083149730 + ], + "y": [ + 10870860158804422503, + 14060279526953529989, + 2266257082861680293, + 22356173050560284 + ], "infinity": false }, { - "x": [17803008042411335770, 5713064950476621403, 17979342410816871746, 491265656076548841], - "y": [9823492080506672630, 3637386621225409615, 8776978043600973097, 2514196809208915768], + "x": [ + 17803008042411335770, + 5713064950476621403, + 17979342410816871746, + 491265656076548841 + ], + "y": [ + 9823492080506672630, + 3637386621225409615, + 8776978043600973097, + 2514196809208915768 + ], "infinity": false }, { - "x": [3768479078383323179, 16153057542709544671, 10578964798085613273, 2831188075764800753], - "y": [2387514805820590694, 15085489652142686165, 8141513931186597223, 1582376980242699819], + "x": [ + 3768479078383323179, + 16153057542709544671, + 10578964798085613273, + 2831188075764800753 + ], + "y": [ + 2387514805820590694, + 15085489652142686165, + 8141513931186597223, + 1582376980242699819 + ], "infinity": false }, { - "x": [5395455814671474247, 5013790368139874617, 8671649443504728767, 839142828943885970], - "y": [11231626069154926735, 5078347962234771017, 17373886182204596447, 513647957075879347], + "x": [ + 5395455814671474247, + 5013790368139874617, + 8671649443504728767, + 839142828943885970 + ], + "y": [ + 11231626069154926735, + 5078347962234771017, + 17373886182204596447, + 513647957075879347 + ], "infinity": false }, { - "x": [8940485327950054531, 9156997542069636576, 14316753178152000598, 3357551869664255582], - "y": [14102490706504125272, 4494991810930729808, 15532318871086968466, 1537365238286274178], + "x": [ + 8940485327950054531, + 9156997542069636576, + 14316753178152000598, + 3357551869664255582 + ], + "y": [ + 14102490706504125272, + 4494991810930729808, + 15532318871086968466, + 1537365238286274178 + ], "infinity": false }, { - "x": [13914906478277300859, 6213896071228541481, 4364409818367302306, 659097390118096039], - "y": [7328372274594390887, 2650332638498669615, 15455628473476960005, 3119379427019958230], + "x": [ + 13914906478277300859, + 6213896071228541481, + 4364409818367302306, + 659097390118096039 + ], + "y": [ + 7328372274594390887, + 2650332638498669615, + 15455628473476960005, + 3119379427019958230 + ], "infinity": false } ], "gate_selectors_commitments": [ { - "x": [9438200511694036157, 11094162170960057340, 9123678872696723713, 2950597355117190054], - "y": [6153972960518016517, 8045683598100955864, 13410633858416643489, 988361678931464913], + "x": [ + 9438200511694036157, + 11094162170960057340, + 9123678872696723713, + 2950597355117190054 + ], + "y": [ + 6153972960518016517, + 8045683598100955864, + 13410633858416643489, + 988361678931464913 + ], "infinity": false }, { - "x": [805964423710846142, 13603470797942296854, 11292123377140077447, 1455913517812009773], - "y": [4541622738043214385, 8186357170000535775, 4765839113294831637, 3026863977499737494], + "x": [ + 805964423710846142, + 13603470797942296854, + 11292123377140077447, + 1455913517812009773 + ], + "y": [ + 4541622738043214385, + 8186357170000535775, + 4765839113294831637, + 3026863977499737494 + ], "infinity": false } ], "permutation_commitments": [ { - "x": [1851039213129741497, 11907960788190413713, 2882727828085561070, 1451278944954982956], - "y": [15245785050592773860, 1774295027236395480, 3373069120056880915, 1080245109458702174], + "x": [ + 1851039213129741497, + 11907960788190413713, + 2882727828085561070, + 1451278944954982956 + ], + "y": [ + 15245785050592773860, + 1774295027236395480, + 3373069120056880915, + 1080245109458702174 + ], "infinity": false }, { - "x": [9366052859968548005, 12275028918364559591, 2472023927159177225, 1052535074027277666], - "y": [2428574557555628629, 15067392861858369528, 16949255188095910778, 2297925771936569168], + "x": [ + 9366052859968548005, + 12275028918364559591, + 2472023927159177225, + 1052535074027277666 + ], + "y": [ + 2428574557555628629, + 15067392861858369528, + 16949255188095910778, + 2297925771936569168 + ], "infinity": false }, { - "x": [17016009610362956206, 4047659663396753591, 1832464593155416403, 2725142957049914767], - "y": [12447928856414787240, 3072280375285720285, 12294239288643819494, 613511140380288958], + "x": [ + 17016009610362956206, + 4047659663396753591, + 1832464593155416403, + 2725142957049914767 + ], + "y": [ + 12447928856414787240, + 3072280375285720285, + 12294239288643819494, + 613511140380288958 + ], "infinity": false }, { - "x": [6312774245791141720, 496150993329472460, 12773767122915456934, 3404402910494500531], - "y": [13852578578747731084, 9030931732410275304, 17159996848865265705, 1696956882146098553], + "x": [ + 6312774245791141720, + 496150993329472460, + 12773767122915456934, + 3404402910494500531 + ], + "y": [ + 13852578578747731084, + 9030931732410275304, + 17159996848865265705, + 1696956882146098553 + ], "infinity": false } ], "total_lookup_entries_length": 1073530, "lookup_selector_commitment": { - "x": [4441974708940861232, 11325614820129407652, 7273013871150456559, 2270181644629652201], - "y": [3070631142979677922, 15247189094202672776, 12651459662740804392, 1832216259472686694], + "x": [ + 4441974708940861232, + 11325614820129407652, + 7273013871150456559, + 2270181644629652201 + ], + "y": [ + 3070631142979677922, + 15247189094202672776, + 12651459662740804392, + 1832216259472686694 + ], "infinity": false }, "lookup_tables_commitments": [ { - "x": [631990924006796604, 16139625628991115157, 13331739325995827711, 1062301837743594995], - "y": [15303054606290800139, 15906872095881647437, 7093896572295020249, 1342952934989901142], + "x": [ + 631990924006796604, + 16139625628991115157, + 13331739325995827711, + 1062301837743594995 + ], + "y": [ + 15303054606290800139, + 15906872095881647437, + 7093896572295020249, + 1342952934989901142 + ], "infinity": false }, { - "x": [7983921919542246393, 13296544189644416678, 17081022784392007697, 1980832835348244027], - "y": [10874958134865200330, 7702740658637630534, 14052057929798961943, 3193353539419869016], + "x": [ + 7983921919542246393, + 13296544189644416678, + 17081022784392007697, + 1980832835348244027 + ], + "y": [ + 10874958134865200330, + 7702740658637630534, + 14052057929798961943, + 3193353539419869016 + ], "infinity": false }, { - "x": [1114587284824996932, 4636906500482867924, 15328247172597030456, 87946895873973686], - "y": [15573033830207915877, 5194694185599035278, 2562407345425607214, 2782078999306862675], + "x": [ + 1114587284824996932, + 4636906500482867924, + 15328247172597030456, + 87946895873973686 + ], + "y": [ + 15573033830207915877, + 5194694185599035278, + 2562407345425607214, + 2782078999306862675 + ], "infinity": false }, { - "x": [18225112781127431982, 18048613958187123807, 7325490730844456621, 1953409020724855888], - "y": [7577000130125917198, 6193701449695751861, 4102082927677054717, 395350071385269650], + "x": [ + 18225112781127431982, + 18048613958187123807, + 7325490730844456621, + 1953409020724855888 + ], + "y": [ + 7577000130125917198, + 6193701449695751861, + 4102082927677054717, + 395350071385269650 + ], "infinity": false } ], "lookup_table_type_commitment": { - "x": [7312875299592476003, 313526216906044060, 13914875394436353152, 3424388477700656316], - "y": [2572062173996296044, 5984767625164919974, 12005537293370417131, 616463121946800406], + "x": [ + 7312875299592476003, + 313526216906044060, + 13914875394436353152, + 3424388477700656316 + ], + "y": [ + 2572062173996296044, + 5984767625164919974, + 12005537293370417131, + 616463121946800406 + ], "infinity": false }, "non_residues": [ - [5, 0, 0, 0], - [7, 0, 0, 0], - [10, 0, 0, 0] + [ + 5, + 0, + 0, + 0 + ], + [ + 7, + 0, + 0, + 0 + ], + [ + 10, + 0, + 0, + 0 + ] ], "g2_elements": [ { "x": { - "c0": [5106727233969649389, 7440829307424791261, 4785637993704342649, 1729627375292849782], - "c1": [10945020018377822914, 17413811393473931026, 8241798111626485029, 1841571559660931130] + "c0": [ + 5106727233969649389, + 7440829307424791261, + 4785637993704342649, + 1729627375292849782 + ], + "c1": [ + 10945020018377822914, + 17413811393473931026, + 8241798111626485029, + 1841571559660931130 + ] }, "y": { - "c0": [5541340697920699818, 16416156555105522555, 5380518976772849807, 1353435754470862315], - "c1": [6173549831154472795, 13567992399387660019, 17050234209342075797, 650358724130500725] + "c0": [ + 5541340697920699818, + 16416156555105522555, + 5380518976772849807, + 1353435754470862315 + ], + "c1": [ + 6173549831154472795, + 13567992399387660019, + 17050234209342075797, + 650358724130500725 + ] }, "infinity": false }, { "x": { - "c0": [9089143573911733168, 11482283522806384523, 13585589533905622862, 79029415676722370], - "c1": [5692040832573735873, 16884514497384809355, 16717166481813659368, 2742131088506155463] + "c0": [ + 9089143573911733168, + 11482283522806384523, + 13585589533905622862, + 79029415676722370 + ], + "c1": [ + 5692040832573735873, + 16884514497384809355, + 16717166481813659368, + 2742131088506155463 + ] }, "y": { - "c0": [9604638503594647125, 1289961608472612514, 6217038149984805214, 2521661352385209130], - "c1": [17168069778630926308, 11309277837895768996, 15154989611154567813, 359271377050603491] + "c0": [ + 9604638503594647125, + 1289961608472612514, + 6217038149984805214, + 2521661352385209130 + ], + "c1": [ + 17168069778630926308, + 11309277837895768996, + 15154989611154567813, + 359271377050603491 + ] }, "infinity": false } ] -} +} \ No newline at end of file diff --git a/core/bin/verification_key_generator_and_server/data/verification_10_key.json b/core/bin/verification_key_generator_and_server/data/verification_10_key.json index 3431c4879d9..ec9d3727bff 100644 --- a/core/bin/verification_key_generator_and_server/data/verification_10_key.json +++ b/core/bin/verification_key_generator_and_server/data/verification_10_key.json @@ -5,140 +5,395 @@ "num_witness_polys": 0, "gate_setup_commitments": [ { - "x": [4364720487844379181, 17010766725144227333, 1022678199111276314, 1146578362772127376], - "y": [10340654727439455072, 12691578856596245032, 837883495763401146, 2135776887902289239], + "x": [ + 4364720487844379181, + 17010766725144227333, + 1022678199111276314, + 1146578362772127376 + ], + "y": [ + 10340654727439455072, + 12691578856596245032, + 837883495763401146, + 2135776887902289239 + ], "infinity": false }, { - "x": [14564870240038241482, 16001391704613609683, 16397364612792898214, 1316914335235774452], - "y": [2386942353392090183, 4642131766714508143, 16789479723446408276, 2261353401184907401], + "x": [ + 14564870240038241482, + 16001391704613609683, + 16397364612792898214, + 1316914335235774452 + ], + "y": [ + 2386942353392090183, + 4642131766714508143, + 16789479723446408276, + 2261353401184907401 + ], "infinity": false }, { - "x": [6081056006818109026, 14051483412950926523, 8605392534710099348, 1527183574619010123], - "y": [3896696527234063839, 12862398541231039501, 1005646628007936886, 3479645512156004366], + "x": [ + 6081056006818109026, + 14051483412950926523, + 8605392534710099348, + 1527183574619010123 + ], + "y": [ + 3896696527234063839, + 12862398541231039501, + 1005646628007936886, + 3479645512156004366 + ], "infinity": false }, { - "x": [11266242489999219523, 8100856016495224488, 6788749864393617587, 482299081118345826], - "y": [225211373180020785, 6498635074385582091, 4274055525472487569, 2578651815252093838], + "x": [ + 11266242489999219523, + 8100856016495224488, + 6788749864393617587, + 482299081118345826 + ], + "y": [ + 225211373180020785, + 6498635074385582091, + 4274055525472487569, + 2578651815252093838 + ], "infinity": false }, { - "x": [10378455392293934375, 13391940670290769236, 10463014668466536299, 472544008986099462], - "y": [1502016714118108544, 14252801754530793876, 2203844491975584716, 1116114255465135672], + "x": [ + 10378455392293934375, + 13391940670290769236, + 10463014668466536299, + 472544008986099462 + ], + "y": [ + 1502016714118108544, + 14252801754530793876, + 2203844491975584716, + 1116114255465135672 + ], "infinity": false }, { - "x": [9703616742074407567, 9691703077434834222, 7366620887865105973, 36165572355418066], - "y": [7430304832706471782, 5173267152399523091, 14416699599905226230, 2681204653630184824], + "x": [ + 9703616742074407567, + 9691703077434834222, + 7366620887865105973, + 36165572355418066 + ], + "y": [ + 7430304832706471782, + 5173267152399523091, + 14416699599905226230, + 2681204653630184824 + ], "infinity": false }, { - "x": [9347312215430913530, 13606433894103359668, 14013475178334262360, 2947181048682744075], - "y": [4001199390012145932, 4622813642635649819, 16433672063298879053, 1247842462976799965], + "x": [ + 9347312215430913530, + 13606433894103359668, + 14013475178334262360, + 2947181048682744075 + ], + "y": [ + 4001199390012145932, + 4622813642635649819, + 16433672063298879053, + 1247842462976799965 + ], "infinity": false }, { - "x": [1639425503718708209, 8242804754724970899, 11043260258533730377, 2245145560504199089], - "y": [14202551139064230506, 4307109380979442947, 13141687433511141087, 1913204959448290015], + "x": [ + 1639425503718708209, + 8242804754724970899, + 11043260258533730377, + 2245145560504199089 + ], + "y": [ + 14202551139064230506, + 4307109380979442947, + 13141687433511141087, + 1913204959448290015 + ], "infinity": false } ], "gate_selectors_commitments": [ { - "x": [17540836040216578409, 14577118461028955096, 2300935836423716880, 427649651480863044], - "y": [13066723755606073272, 17324941433857131282, 1679499122173566851, 3298750515604566671], + "x": [ + 17540836040216578409, + 14577118461028955096, + 2300935836423716880, + 427649651480863044 + ], + "y": [ + 13066723755606073272, + 17324941433857131282, + 1679499122173566851, + 3298750515604566671 + ], "infinity": false }, { - "x": [14709152157752642079, 13510549649315108277, 3019440420162710858, 627188607991231846], - "y": [16615706301470133997, 915024441316023047, 13798541787831785917, 3340602253234308653], + "x": [ + 14709152157752642079, + 13510549649315108277, + 3019440420162710858, + 627188607991231846 + ], + "y": [ + 16615706301470133997, + 915024441316023047, + 13798541787831785917, + 3340602253234308653 + ], "infinity": false } ], "permutation_commitments": [ { - "x": [12626704863583094704, 3308474372162220296, 16088806788444947642, 636430705662147361], - "y": [17052785040105865748, 11203395113497209978, 2939609765212411460, 3167290643533167611], + "x": [ + 12626704863583094704, + 3308474372162220296, + 16088806788444947642, + 636430705662147361 + ], + "y": [ + 17052785040105865748, + 11203395113497209978, + 2939609765212411460, + 3167290643533167611 + ], "infinity": false }, { - "x": [3075146465184418179, 11559452521956513155, 1656597085428845901, 1618447062156730856], - "y": [2010693621773175313, 2977509893150409878, 9431891659616951962, 1776222288355278384], + "x": [ + 3075146465184418179, + 11559452521956513155, + 1656597085428845901, + 1618447062156730856 + ], + "y": [ + 2010693621773175313, + 2977509893150409878, + 9431891659616951962, + 1776222288355278384 + ], "infinity": false }, { - "x": [6408318860212838666, 9847136022608767026, 18080834927350013528, 3306285138140631107], - "y": [16064928058583899597, 461689523483649779, 13572099112445223829, 1563453638232968523], + "x": [ + 6408318860212838666, + 9847136022608767026, + 18080834927350013528, + 3306285138140631107 + ], + "y": [ + 16064928058583899597, + 461689523483649779, + 13572099112445223829, + 1563453638232968523 + ], "infinity": false }, { - "x": [327171445663828020, 12706053900720413614, 9237483585964880752, 1960293149538216528], - "y": [11030775691809003651, 11089052388657955457, 3209890793790993499, 1198867574642866523], + "x": [ + 327171445663828020, + 12706053900720413614, + 9237483585964880752, + 1960293149538216528 + ], + "y": [ + 11030775691809003651, + 11089052388657955457, + 3209890793790993499, + 1198867574642866523 + ], "infinity": false } ], "total_lookup_entries_length": 5202052, "lookup_selector_commitment": { - "x": [781239045644769777, 14316527640474633593, 2443643435827373112, 3049372365263474427], - "y": [4073012743593667819, 16009537994875540924, 11173412503242869179, 1513208421597995174], + "x": [ + 781239045644769777, + 14316527640474633593, + 2443643435827373112, + 3049372365263474427 + ], + "y": [ + 4073012743593667819, + 16009537994875540924, + 11173412503242869179, + 1513208421597995174 + ], "infinity": false }, "lookup_tables_commitments": [ { - "x": [697552212563769686, 7709943502535418760, 15019345407325619175, 3433081085078580257], - "y": [8668947019840357731, 14698901351824712883, 15088598879190660424, 2873081208166433946], + "x": [ + 697552212563769686, + 7709943502535418760, + 15019345407325619175, + 3433081085078580257 + ], + "y": [ + 8668947019840357731, + 14698901351824712883, + 15088598879190660424, + 2873081208166433946 + ], "infinity": false }, { - "x": [7893133928909060673, 7064922516930129957, 3592836702741304814, 2239702595710114437], - "y": [7691360541875191519, 11379321785127235277, 6653616064071569031, 2555434628517540774], + "x": [ + 7893133928909060673, + 7064922516930129957, + 3592836702741304814, + 2239702595710114437 + ], + "y": [ + 7691360541875191519, + 11379321785127235277, + 6653616064071569031, + 2555434628517540774 + ], "infinity": false }, { - "x": [6243944238013052821, 7908243182210136125, 17178099109525791299, 2553622184721264566], - "y": [736121280088239428, 6158073429758170526, 11217302997977204117, 2594798912020899417], + "x": [ + 6243944238013052821, + 7908243182210136125, + 17178099109525791299, + 2553622184721264566 + ], + "y": [ + 736121280088239428, + 6158073429758170526, + 11217302997977204117, + 2594798912020899417 + ], "infinity": false }, { - "x": [2064240298596094591, 16917726764104887991, 11042784977532408536, 3377647228930170830], - "y": [10635525052494768819, 387400048616497096, 9379200582543310995, 1571766153703296253], + "x": [ + 2064240298596094591, + 16917726764104887991, + 11042784977532408536, + 3377647228930170830 + ], + "y": [ + 10635525052494768819, + 387400048616497096, + 9379200582543310995, + 1571766153703296253 + ], "infinity": false } ], "lookup_table_type_commitment": { - "x": [7603211811706190713, 2486982239745271096, 11528266448545919500, 3080741880407152411], - "y": [7967754771633653173, 6016822892450616749, 9688696792558711613, 2682562048141398047], + "x": [ + 7603211811706190713, + 2486982239745271096, + 11528266448545919500, + 3080741880407152411 + ], + "y": [ + 7967754771633653173, + 6016822892450616749, + 9688696792558711613, + 2682562048141398047 + ], "infinity": false }, "non_residues": [ - [5, 0, 0, 0], - [7, 0, 0, 0], - [10, 0, 0, 0] + [ + 5, + 0, + 0, + 0 + ], + [ + 7, + 0, + 0, + 0 + ], + [ + 10, + 0, + 0, + 0 + ] ], "g2_elements": [ { "x": { - "c0": [5106727233969649389, 7440829307424791261, 4785637993704342649, 1729627375292849782], - "c1": [10945020018377822914, 17413811393473931026, 8241798111626485029, 1841571559660931130] + "c0": [ + 5106727233969649389, + 7440829307424791261, + 4785637993704342649, + 1729627375292849782 + ], + "c1": [ + 10945020018377822914, + 17413811393473931026, + 8241798111626485029, + 1841571559660931130 + ] }, "y": { - "c0": [5541340697920699818, 16416156555105522555, 5380518976772849807, 1353435754470862315], - "c1": [6173549831154472795, 13567992399387660019, 17050234209342075797, 650358724130500725] + "c0": [ + 5541340697920699818, + 16416156555105522555, + 5380518976772849807, + 1353435754470862315 + ], + "c1": [ + 6173549831154472795, + 13567992399387660019, + 17050234209342075797, + 650358724130500725 + ] }, "infinity": false }, { "x": { - "c0": [9089143573911733168, 11482283522806384523, 13585589533905622862, 79029415676722370], - "c1": [5692040832573735873, 16884514497384809355, 16717166481813659368, 2742131088506155463] + "c0": [ + 9089143573911733168, + 11482283522806384523, + 13585589533905622862, + 79029415676722370 + ], + "c1": [ + 5692040832573735873, + 16884514497384809355, + 16717166481813659368, + 2742131088506155463 + ] }, "y": { - "c0": [9604638503594647125, 1289961608472612514, 6217038149984805214, 2521661352385209130], - "c1": [17168069778630926308, 11309277837895768996, 15154989611154567813, 359271377050603491] + "c0": [ + 9604638503594647125, + 1289961608472612514, + 6217038149984805214, + 2521661352385209130 + ], + "c1": [ + 17168069778630926308, + 11309277837895768996, + 15154989611154567813, + 359271377050603491 + ] }, "infinity": false } ] -} +} \ No newline at end of file diff --git a/core/bin/verification_key_generator_and_server/data/verification_11_key.json b/core/bin/verification_key_generator_and_server/data/verification_11_key.json index eadd4f9433b..ec60b1b5c70 100644 --- a/core/bin/verification_key_generator_and_server/data/verification_11_key.json +++ b/core/bin/verification_key_generator_and_server/data/verification_11_key.json @@ -5,140 +5,395 @@ "num_witness_polys": 0, "gate_setup_commitments": [ { - "x": [6404793958941109752, 600086648940026770, 17621036346050218167, 648286585825030202], - "y": [15536368541166505022, 13874331483468128999, 15299774519724050181, 694528839710637549], + "x": [ + 6404793958941109752, + 600086648940026770, + 17621036346050218167, + 648286585825030202 + ], + "y": [ + 15536368541166505022, + 13874331483468128999, + 15299774519724050181, + 694528839710637549 + ], "infinity": false }, { - "x": [8437895530551083583, 9515418928119648176, 13043255827139294721, 2995712510038409810], - "y": [2599666661350767554, 5213004864468121936, 3448071048439343925, 3372727479169634860], + "x": [ + 8437895530551083583, + 9515418928119648176, + 13043255827139294721, + 2995712510038409810 + ], + "y": [ + 2599666661350767554, + 5213004864468121936, + 3448071048439343925, + 3372727479169634860 + ], "infinity": false }, { - "x": [4949545806128010634, 7991544258837652527, 13984289231122041826, 435264553263929947], - "y": [5315155210033461895, 5269954775753247626, 8365554241810378947, 3038338810517586456], + "x": [ + 4949545806128010634, + 7991544258837652527, + 13984289231122041826, + 435264553263929947 + ], + "y": [ + 5315155210033461895, + 5269954775753247626, + 8365554241810378947, + 3038338810517586456 + ], "infinity": false }, { - "x": [10765735847634894938, 996016141851615448, 17905928073714218280, 1382306444325686451], - "y": [2138154197587423296, 10332772886666867909, 18365120064743353477, 3036329558617382049], + "x": [ + 10765735847634894938, + 996016141851615448, + 17905928073714218280, + 1382306444325686451 + ], + "y": [ + 2138154197587423296, + 10332772886666867909, + 18365120064743353477, + 3036329558617382049 + ], "infinity": false }, { - "x": [10826908009799408310, 17008417534705779156, 6763973494549063072, 2085829964414931488], - "y": [8778528796073273991, 3575354418973385595, 7700555759899743641, 2991788183234680231], + "x": [ + 10826908009799408310, + 17008417534705779156, + 6763973494549063072, + 2085829964414931488 + ], + "y": [ + 8778528796073273991, + 3575354418973385595, + 7700555759899743641, + 2991788183234680231 + ], "infinity": false }, { - "x": [4838537981048085423, 17733460364049897496, 2406410363431464143, 317979983533551325], - "y": [1063783130085451648, 17468950496650586998, 1638492556781126884, 2655791721465286744], + "x": [ + 4838537981048085423, + 17733460364049897496, + 2406410363431464143, + 317979983533551325 + ], + "y": [ + 1063783130085451648, + 17468950496650586998, + 1638492556781126884, + 2655791721465286744 + ], "infinity": false }, { - "x": [9900079822056413611, 2971494295919434281, 3851188096409515874, 1674965457600938162], - "y": [278026997091552202, 4169606578927284200, 4285297176993939496, 1835673146863992148], + "x": [ + 9900079822056413611, + 2971494295919434281, + 3851188096409515874, + 1674965457600938162 + ], + "y": [ + 278026997091552202, + 4169606578927284200, + 4285297176993939496, + 1835673146863992148 + ], "infinity": false }, { - "x": [14972922803706426724, 1950002897609593521, 14885502244328862256, 2711533695106895845], - "y": [6445273103061253271, 13093783937225622775, 16913300898726970338, 3338984185497324237], + "x": [ + 14972922803706426724, + 1950002897609593521, + 14885502244328862256, + 2711533695106895845 + ], + "y": [ + 6445273103061253271, + 13093783937225622775, + 16913300898726970338, + 3338984185497324237 + ], "infinity": false } ], "gate_selectors_commitments": [ { - "x": [7023363902839996761, 10470701207992157969, 15655647820064667897, 1574806151825297776], - "y": [5374465760860613169, 17808737811039085287, 9497881147171478776, 2496973717640690197], + "x": [ + 7023363902839996761, + 10470701207992157969, + 15655647820064667897, + 1574806151825297776 + ], + "y": [ + 5374465760860613169, + 17808737811039085287, + 9497881147171478776, + 2496973717640690197 + ], "infinity": false }, { - "x": [11667333913021610767, 981513539224109240, 906325130343873228, 2938085706999497365], - "y": [12114685726509803851, 8176447551157079615, 4677211732718215770, 612959750791398009], + "x": [ + 11667333913021610767, + 981513539224109240, + 906325130343873228, + 2938085706999497365 + ], + "y": [ + 12114685726509803851, + 8176447551157079615, + 4677211732718215770, + 612959750791398009 + ], "infinity": false } ], "permutation_commitments": [ { - "x": [5178916486603003859, 12440762249350081718, 17531240512375127539, 562979322442547791], - "y": [13269831614205338393, 14075713698585784838, 5009519510530479124, 346033861980045408], + "x": [ + 5178916486603003859, + 12440762249350081718, + 17531240512375127539, + 562979322442547791 + ], + "y": [ + 13269831614205338393, + 14075713698585784838, + 5009519510530479124, + 346033861980045408 + ], "infinity": false }, { - "x": [9815443577325313677, 10727907015331332054, 7582395371050260833, 1746872659838481572], - "y": [3973552805135639320, 14426732004648741961, 8133164322153358522, 2668541869556858228], + "x": [ + 9815443577325313677, + 10727907015331332054, + 7582395371050260833, + 1746872659838481572 + ], + "y": [ + 3973552805135639320, + 14426732004648741961, + 8133164322153358522, + 2668541869556858228 + ], "infinity": false }, { - "x": [4868257934818957423, 11529848268525929099, 7089666284160764141, 796901367628793969], - "y": [991195814042705325, 1559922382138761102, 15616159453482282503, 1031107741111093289], + "x": [ + 4868257934818957423, + 11529848268525929099, + 7089666284160764141, + 796901367628793969 + ], + "y": [ + 991195814042705325, + 1559922382138761102, + 15616159453482282503, + 1031107741111093289 + ], "infinity": false }, { - "x": [17936772813090339705, 10208762457499980701, 14796710996322725970, 638550977107438851], - "y": [5073905611192321777, 2956648407808816974, 7778989780119416172, 2955106321082932072], + "x": [ + 17936772813090339705, + 10208762457499980701, + 14796710996322725970, + 638550977107438851 + ], + "y": [ + 5073905611192321777, + 2956648407808816974, + 7778989780119416172, + 2955106321082932072 + ], "infinity": false } ], "total_lookup_entries_length": 7960377, "lookup_selector_commitment": { - "x": [1083743271968869166, 3134203175755215736, 5835502497758804469, 3010956977291777466], - "y": [3645612220088813035, 32844736552579976, 5426466326302260857, 1489565191618899261], + "x": [ + 1083743271968869166, + 3134203175755215736, + 5835502497758804469, + 3010956977291777466 + ], + "y": [ + 3645612220088813035, + 32844736552579976, + 5426466326302260857, + 1489565191618899261 + ], "infinity": false }, "lookup_tables_commitments": [ { - "x": [5825422128268478267, 9219263846299851036, 3879231702557190566, 1702488722758880769], - "y": [18311881100262470992, 5742998199368802392, 18106865487471159417, 502191980176920012], + "x": [ + 5825422128268478267, + 9219263846299851036, + 3879231702557190566, + 1702488722758880769 + ], + "y": [ + 18311881100262470992, + 5742998199368802392, + 18106865487471159417, + 502191980176920012 + ], "infinity": false }, { - "x": [17195892082859417081, 7890531942603584793, 2381805632820057528, 3173232410464566465], - "y": [16359614627947132075, 3459600273035137079, 4550762061432972122, 3394559699318358224], + "x": [ + 17195892082859417081, + 7890531942603584793, + 2381805632820057528, + 3173232410464566465 + ], + "y": [ + 16359614627947132075, + 3459600273035137079, + 4550762061432972122, + 3394559699318358224 + ], "infinity": false }, { - "x": [1716103379277390185, 18097936269579187542, 16357329729761063450, 1508640059338197502], - "y": [11014806739603983364, 4396503314588777389, 9397245609635151055, 1703957955248411380], + "x": [ + 1716103379277390185, + 18097936269579187542, + 16357329729761063450, + 1508640059338197502 + ], + "y": [ + 11014806739603983364, + 4396503314588777389, + 9397245609635151055, + 1703957955248411380 + ], "infinity": false }, { - "x": [4770171350693477354, 17110558673192292253, 9799800677557311408, 761984875463445481], - "y": [1560561403388310063, 31331275310848146, 287152055803835484, 457826332542037277], + "x": [ + 4770171350693477354, + 17110558673192292253, + 9799800677557311408, + 761984875463445481 + ], + "y": [ + 1560561403388310063, + 31331275310848146, + 287152055803835484, + 457826332542037277 + ], "infinity": false } ], "lookup_table_type_commitment": { - "x": [11327495732840772606, 7407664417001729515, 9486600059857658309, 3060296564241189838], - "y": [7624492872489320847, 18248981556039704277, 3877205757853252152, 939885486002612376], + "x": [ + 11327495732840772606, + 7407664417001729515, + 9486600059857658309, + 3060296564241189838 + ], + "y": [ + 7624492872489320847, + 18248981556039704277, + 3877205757853252152, + 939885486002612376 + ], "infinity": false }, "non_residues": [ - [5, 0, 0, 0], - [7, 0, 0, 0], - [10, 0, 0, 0] + [ + 5, + 0, + 0, + 0 + ], + [ + 7, + 0, + 0, + 0 + ], + [ + 10, + 0, + 0, + 0 + ] ], "g2_elements": [ { "x": { - "c0": [5106727233969649389, 7440829307424791261, 4785637993704342649, 1729627375292849782], - "c1": [10945020018377822914, 17413811393473931026, 8241798111626485029, 1841571559660931130] + "c0": [ + 5106727233969649389, + 7440829307424791261, + 4785637993704342649, + 1729627375292849782 + ], + "c1": [ + 10945020018377822914, + 17413811393473931026, + 8241798111626485029, + 1841571559660931130 + ] }, "y": { - "c0": [5541340697920699818, 16416156555105522555, 5380518976772849807, 1353435754470862315], - "c1": [6173549831154472795, 13567992399387660019, 17050234209342075797, 650358724130500725] + "c0": [ + 5541340697920699818, + 16416156555105522555, + 5380518976772849807, + 1353435754470862315 + ], + "c1": [ + 6173549831154472795, + 13567992399387660019, + 17050234209342075797, + 650358724130500725 + ] }, "infinity": false }, { "x": { - "c0": [9089143573911733168, 11482283522806384523, 13585589533905622862, 79029415676722370], - "c1": [5692040832573735873, 16884514497384809355, 16717166481813659368, 2742131088506155463] + "c0": [ + 9089143573911733168, + 11482283522806384523, + 13585589533905622862, + 79029415676722370 + ], + "c1": [ + 5692040832573735873, + 16884514497384809355, + 16717166481813659368, + 2742131088506155463 + ] }, "y": { - "c0": [9604638503594647125, 1289961608472612514, 6217038149984805214, 2521661352385209130], - "c1": [17168069778630926308, 11309277837895768996, 15154989611154567813, 359271377050603491] + "c0": [ + 9604638503594647125, + 1289961608472612514, + 6217038149984805214, + 2521661352385209130 + ], + "c1": [ + 17168069778630926308, + 11309277837895768996, + 15154989611154567813, + 359271377050603491 + ] }, "infinity": false } ] -} +} \ No newline at end of file diff --git a/core/bin/verification_key_generator_and_server/data/verification_12_key.json b/core/bin/verification_key_generator_and_server/data/verification_12_key.json index 58fbb0a9602..fec076f39ed 100644 --- a/core/bin/verification_key_generator_and_server/data/verification_12_key.json +++ b/core/bin/verification_key_generator_and_server/data/verification_12_key.json @@ -5,140 +5,395 @@ "num_witness_polys": 0, "gate_setup_commitments": [ { - "x": [456514006020943025, 9595480195714948127, 12254096252487404245, 1742692690750856358], - "y": [16294223586064957217, 3958270970168887906, 11264067544872898258, 1692817687935973108], + "x": [ + 456514006020943025, + 9595480195714948127, + 12254096252487404245, + 1742692690750856358 + ], + "y": [ + 16294223586064957217, + 3958270970168887906, + 11264067544872898258, + 1692817687935973108 + ], "infinity": false }, { - "x": [1359655052308122459, 13840124148496555776, 1774237333490664500, 2964872651584750318], - "y": [11907598503482948769, 8700506041798646988, 15081040576888859990, 3096802642049924528], + "x": [ + 1359655052308122459, + 13840124148496555776, + 1774237333490664500, + 2964872651584750318 + ], + "y": [ + 11907598503482948769, + 8700506041798646988, + 15081040576888859990, + 3096802642049924528 + ], "infinity": false }, { - "x": [2884314851670818573, 13442465544210396156, 5937955495868181363, 2486997439179977778], - "y": [9309776793338098458, 14492906371677122697, 8837309186596588911, 1081143755093508499], + "x": [ + 2884314851670818573, + 13442465544210396156, + 5937955495868181363, + 2486997439179977778 + ], + "y": [ + 9309776793338098458, + 14492906371677122697, + 8837309186596588911, + 1081143755093508499 + ], "infinity": false }, { - "x": [2655654413304275855, 4244723109566147837, 12150359360501203194, 3338981627918702615], - "y": [2522870072161287404, 17341373219317210182, 13058930363994599297, 210373422168410518], + "x": [ + 2655654413304275855, + 4244723109566147837, + 12150359360501203194, + 3338981627918702615 + ], + "y": [ + 2522870072161287404, + 17341373219317210182, + 13058930363994599297, + 210373422168410518 + ], "infinity": false }, { - "x": [16728834675380740056, 2139390496020366235, 9480389182940223467, 2279560291896695719], - "y": [12461418813218976432, 357566005384566098, 5295578385080568808, 1801243085576438875], + "x": [ + 16728834675380740056, + 2139390496020366235, + 9480389182940223467, + 2279560291896695719 + ], + "y": [ + 12461418813218976432, + 357566005384566098, + 5295578385080568808, + 1801243085576438875 + ], "infinity": false }, { - "x": [8716201428771436123, 3392394702404760386, 9990956922582058945, 1388317411153212399], - "y": [11666415392681680155, 10553517485129490455, 16061047708722635939, 2386622646140901822], + "x": [ + 8716201428771436123, + 3392394702404760386, + 9990956922582058945, + 1388317411153212399 + ], + "y": [ + 11666415392681680155, + 10553517485129490455, + 16061047708722635939, + 2386622646140901822 + ], "infinity": false }, { - "x": [16162432560623854812, 15537581062716888632, 12927223782958923606, 2800634589869451227], - "y": [5345141365329635916, 2224393250977631865, 396527108738048188, 2298318725146167177], + "x": [ + 16162432560623854812, + 15537581062716888632, + 12927223782958923606, + 2800634589869451227 + ], + "y": [ + 5345141365329635916, + 2224393250977631865, + 396527108738048188, + 2298318725146167177 + ], "infinity": false }, { - "x": [18372685954785469756, 10436523365152935441, 15509622927999798123, 2050428620045833325], - "y": [4996265985148335658, 6073112270434155721, 4873288683270752338, 503179567393027927], + "x": [ + 18372685954785469756, + 10436523365152935441, + 15509622927999798123, + 2050428620045833325 + ], + "y": [ + 4996265985148335658, + 6073112270434155721, + 4873288683270752338, + 503179567393027927 + ], "infinity": false } ], "gate_selectors_commitments": [ { - "x": [4986139828502830074, 8644425445976253042, 4851433922656693398, 1419574698085640872], - "y": [16192186537521161947, 16183885683582261905, 1655718756619164666, 3420236094426390604], + "x": [ + 4986139828502830074, + 8644425445976253042, + 4851433922656693398, + 1419574698085640872 + ], + "y": [ + 16192186537521161947, + 16183885683582261905, + 1655718756619164666, + 3420236094426390604 + ], "infinity": false }, { - "x": [10727231722644915889, 13777116005624794169, 1422623412369619026, 1701279717637612575], - "y": [6503647097427010249, 6381043883853023011, 15391366286376907281, 1261207976874708261], + "x": [ + 10727231722644915889, + 13777116005624794169, + 1422623412369619026, + 1701279717637612575 + ], + "y": [ + 6503647097427010249, + 6381043883853023011, + 15391366286376907281, + 1261207976874708261 + ], "infinity": false } ], "permutation_commitments": [ { - "x": [11852073725466955067, 179170887563176222, 17529899074897279348, 2496783194148289461], - "y": [15490041181991978284, 6745436372504113852, 7017978386715410058, 3482556315200370895], + "x": [ + 11852073725466955067, + 179170887563176222, + 17529899074897279348, + 2496783194148289461 + ], + "y": [ + 15490041181991978284, + 6745436372504113852, + 7017978386715410058, + 3482556315200370895 + ], "infinity": false }, { - "x": [1330152738947291505, 1668990644246591877, 6805443255260621096, 1309987766073890626], - "y": [18322300356676620444, 8225233874302527542, 5744327785164342590, 410571567010522636], + "x": [ + 1330152738947291505, + 1668990644246591877, + 6805443255260621096, + 1309987766073890626 + ], + "y": [ + 18322300356676620444, + 8225233874302527542, + 5744327785164342590, + 410571567010522636 + ], "infinity": false }, { - "x": [13968210937929584911, 17067601391996082961, 4861463652254416951, 2147834012714370408], - "y": [9012483356698219484, 8660929519763525826, 17744882010750642463, 331423342438323189], + "x": [ + 13968210937929584911, + 17067601391996082961, + 4861463652254416951, + 2147834012714370408 + ], + "y": [ + 9012483356698219484, + 8660929519763525826, + 17744882010750642463, + 331423342438323189 + ], "infinity": false }, { - "x": [1352282553299127274, 8587971715415488300, 2471024479841756772, 1239586065229072559], - "y": [1597792022909153930, 5020991346876715357, 5622801511814109910, 1916460940163680567], + "x": [ + 1352282553299127274, + 8587971715415488300, + 2471024479841756772, + 1239586065229072559 + ], + "y": [ + 1597792022909153930, + 5020991346876715357, + 5622801511814109910, + 1916460940163680567 + ], "infinity": false } ], "total_lookup_entries_length": 46287674, "lookup_selector_commitment": { - "x": [11573469000684493293, 15304040816406013002, 9206902553183544808, 2597693769113957036], - "y": [10538181061926273477, 5239567589495426242, 3627181047901924882, 302644994241575377], + "x": [ + 11573469000684493293, + 15304040816406013002, + 9206902553183544808, + 2597693769113957036 + ], + "y": [ + 10538181061926273477, + 5239567589495426242, + 3627181047901924882, + 302644994241575377 + ], "infinity": false }, "lookup_tables_commitments": [ { - "x": [5134795695995115566, 12287750992060803275, 3112021177339560487, 2737779104829043419], - "y": [12960786984497012138, 17246059378047870426, 11486754204718893642, 46104506716724806], + "x": [ + 5134795695995115566, + 12287750992060803275, + 3112021177339560487, + 2737779104829043419 + ], + "y": [ + 12960786984497012138, + 17246059378047870426, + 11486754204718893642, + 46104506716724806 + ], "infinity": false }, { - "x": [148472607159578301, 1393814398025790148, 13651878286378332448, 3460878321325997474], - "y": [10791022888598424744, 1931353219232076143, 12342018346439101174, 23632989633122111], + "x": [ + 148472607159578301, + 1393814398025790148, + 13651878286378332448, + 3460878321325997474 + ], + "y": [ + 10791022888598424744, + 1931353219232076143, + 12342018346439101174, + 23632989633122111 + ], "infinity": false }, { - "x": [1355031833403957875, 10754997913401276231, 8672292473740482178, 3014145653612856517], - "y": [3728402825933673134, 16492594359417243041, 14619929139939206930, 2894280666048705144], + "x": [ + 1355031833403957875, + 10754997913401276231, + 8672292473740482178, + 3014145653612856517 + ], + "y": [ + 3728402825933673134, + 16492594359417243041, + 14619929139939206930, + 2894280666048705144 + ], "infinity": false }, { - "x": [11362104917939269301, 3050269804312222606, 17884269955997757593, 2804911625130359365], - "y": [9563576475625880180, 9736108320914226650, 11545696954602328389, 1108440262014676246], + "x": [ + 11362104917939269301, + 3050269804312222606, + 17884269955997757593, + 2804911625130359365 + ], + "y": [ + 9563576475625880180, + 9736108320914226650, + 11545696954602328389, + 1108440262014676246 + ], "infinity": false } ], "lookup_table_type_commitment": { - "x": [5367643753678334453, 18149093736372716410, 1335188566370936146, 668596617655217713], - "y": [9984652217894703540, 16253861114794085212, 2139268495406835151, 710303505771002735], + "x": [ + 5367643753678334453, + 18149093736372716410, + 1335188566370936146, + 668596617655217713 + ], + "y": [ + 9984652217894703540, + 16253861114794085212, + 2139268495406835151, + 710303505771002735 + ], "infinity": false }, "non_residues": [ - [5, 0, 0, 0], - [7, 0, 0, 0], - [10, 0, 0, 0] + [ + 5, + 0, + 0, + 0 + ], + [ + 7, + 0, + 0, + 0 + ], + [ + 10, + 0, + 0, + 0 + ] ], "g2_elements": [ { "x": { - "c0": [5106727233969649389, 7440829307424791261, 4785637993704342649, 1729627375292849782], - "c1": [10945020018377822914, 17413811393473931026, 8241798111626485029, 1841571559660931130] + "c0": [ + 5106727233969649389, + 7440829307424791261, + 4785637993704342649, + 1729627375292849782 + ], + "c1": [ + 10945020018377822914, + 17413811393473931026, + 8241798111626485029, + 1841571559660931130 + ] }, "y": { - "c0": [5541340697920699818, 16416156555105522555, 5380518976772849807, 1353435754470862315], - "c1": [6173549831154472795, 13567992399387660019, 17050234209342075797, 650358724130500725] + "c0": [ + 5541340697920699818, + 16416156555105522555, + 5380518976772849807, + 1353435754470862315 + ], + "c1": [ + 6173549831154472795, + 13567992399387660019, + 17050234209342075797, + 650358724130500725 + ] }, "infinity": false }, { "x": { - "c0": [9089143573911733168, 11482283522806384523, 13585589533905622862, 79029415676722370], - "c1": [5692040832573735873, 16884514497384809355, 16717166481813659368, 2742131088506155463] + "c0": [ + 9089143573911733168, + 11482283522806384523, + 13585589533905622862, + 79029415676722370 + ], + "c1": [ + 5692040832573735873, + 16884514497384809355, + 16717166481813659368, + 2742131088506155463 + ] }, "y": { - "c0": [9604638503594647125, 1289961608472612514, 6217038149984805214, 2521661352385209130], - "c1": [17168069778630926308, 11309277837895768996, 15154989611154567813, 359271377050603491] + "c0": [ + 9604638503594647125, + 1289961608472612514, + 6217038149984805214, + 2521661352385209130 + ], + "c1": [ + 17168069778630926308, + 11309277837895768996, + 15154989611154567813, + 359271377050603491 + ] }, "infinity": false } ] -} +} \ No newline at end of file diff --git a/core/bin/verification_key_generator_and_server/data/verification_13_key.json b/core/bin/verification_key_generator_and_server/data/verification_13_key.json index bfa771167dd..73ffbd21200 100644 --- a/core/bin/verification_key_generator_and_server/data/verification_13_key.json +++ b/core/bin/verification_key_generator_and_server/data/verification_13_key.json @@ -5,140 +5,395 @@ "num_witness_polys": 0, "gate_setup_commitments": [ { - "x": [17551054392858982554, 6093238351564742844, 9461983640740135929, 665917981733823732], - "y": [5039211542045701927, 14102316155129161178, 7599318237652648682, 1484263542771007309], + "x": [ + 17551054392858982554, + 6093238351564742844, + 9461983640740135929, + 665917981733823732 + ], + "y": [ + 5039211542045701927, + 14102316155129161178, + 7599318237652648682, + 1484263542771007309 + ], "infinity": false }, { - "x": [14015566113565304739, 12895182424777444911, 5150482782915031712, 3280776276671330755], - "y": [5503211683737487414, 5857977821275887356, 1294122171191120577, 2917900236095606783], + "x": [ + 14015566113565304739, + 12895182424777444911, + 5150482782915031712, + 3280776276671330755 + ], + "y": [ + 5503211683737487414, + 5857977821275887356, + 1294122171191120577, + 2917900236095606783 + ], "infinity": false }, { - "x": [11180353512945796758, 5467792637578213396, 14862660111090994534, 1678570344676416345], - "y": [16496106534540891926, 4355829424666415263, 8379906815867503783, 2141225531456729878], + "x": [ + 11180353512945796758, + 5467792637578213396, + 14862660111090994534, + 1678570344676416345 + ], + "y": [ + 16496106534540891926, + 4355829424666415263, + 8379906815867503783, + 2141225531456729878 + ], "infinity": false }, { - "x": [10512618919562577175, 8909238001556772501, 8669074760108324520, 3259590816167766101], - "y": [15477336671232249792, 10209451912771766896, 13672268903388741173, 682487251336397201], + "x": [ + 10512618919562577175, + 8909238001556772501, + 8669074760108324520, + 3259590816167766101 + ], + "y": [ + 15477336671232249792, + 10209451912771766896, + 13672268903388741173, + 682487251336397201 + ], "infinity": false }, { - "x": [14233534177298597555, 14428793231398751908, 18070433438826750034, 1176819688107481869], - "y": [9251234182098356520, 17131606126090989402, 17185633762130361526, 70013401388751862], + "x": [ + 14233534177298597555, + 14428793231398751908, + 18070433438826750034, + 1176819688107481869 + ], + "y": [ + 9251234182098356520, + 17131606126090989402, + 17185633762130361526, + 70013401388751862 + ], "infinity": false }, { - "x": [14148566925658671094, 812517577375883951, 5030512299767107864, 44275794325016754], - "y": [3275438385460491589, 12366768737850140720, 10754478223029148744, 64366431004577735], + "x": [ + 14148566925658671094, + 812517577375883951, + 5030512299767107864, + 44275794325016754 + ], + "y": [ + 3275438385460491589, + 12366768737850140720, + 10754478223029148744, + 64366431004577735 + ], "infinity": false }, { - "x": [5646513434714516506, 12578668031398681290, 6956692825033783810, 536471110695536326], - "y": [876079378616587621, 9787032999740439668, 14965634813605966164, 367083452910738472], + "x": [ + 5646513434714516506, + 12578668031398681290, + 6956692825033783810, + 536471110695536326 + ], + "y": [ + 876079378616587621, + 9787032999740439668, + 14965634813605966164, + 367083452910738472 + ], "infinity": false }, { - "x": [10902302115259229513, 14044271471332330954, 14571826360674828773, 733766328575554031], - "y": [8186695183963076514, 621472878958955881, 14756382569165412398, 3165780226323675661], + "x": [ + 10902302115259229513, + 14044271471332330954, + 14571826360674828773, + 733766328575554031 + ], + "y": [ + 8186695183963076514, + 621472878958955881, + 14756382569165412398, + 3165780226323675661 + ], "infinity": false } ], "gate_selectors_commitments": [ { - "x": [17780673306296332984, 10355922416617009060, 5077451999006954761, 2644291606399153501], - "y": [884498752701137122, 731399349168706916, 4286165746592754883, 3279732117855760703], + "x": [ + 17780673306296332984, + 10355922416617009060, + 5077451999006954761, + 2644291606399153501 + ], + "y": [ + 884498752701137122, + 731399349168706916, + 4286165746592754883, + 3279732117855760703 + ], "infinity": false }, { - "x": [11012802284910829398, 7859388231941271159, 17586341808458361180, 1386364899721133297], - "y": [15634369655108108777, 3858480397682251762, 17706291110507066608, 1663421415693803071], + "x": [ + 11012802284910829398, + 7859388231941271159, + 17586341808458361180, + 1386364899721133297 + ], + "y": [ + 15634369655108108777, + 3858480397682251762, + 17706291110507066608, + 1663421415693803071 + ], "infinity": false } ], "permutation_commitments": [ { - "x": [18134041530736321349, 4345724579806003155, 2324407857452293002, 2319164124977213120], - "y": [14302129084811449335, 8588677756442252515, 3323846949783670865, 2109729211841784387], + "x": [ + 18134041530736321349, + 4345724579806003155, + 2324407857452293002, + 2319164124977213120 + ], + "y": [ + 14302129084811449335, + 8588677756442252515, + 3323846949783670865, + 2109729211841784387 + ], "infinity": false }, { - "x": [14486843004985564085, 10799247040254992370, 7658639806933647132, 2215292564171027727], - "y": [14258341133968554193, 11685656973533320944, 14111972937744219524, 1172604679688980794], + "x": [ + 14486843004985564085, + 10799247040254992370, + 7658639806933647132, + 2215292564171027727 + ], + "y": [ + 14258341133968554193, + 11685656973533320944, + 14111972937744219524, + 1172604679688980794 + ], "infinity": false }, { - "x": [12872375111956991701, 14049784009914403066, 15325016171856456312, 2811875539960405333], - "y": [5711194902040443430, 13827091592207472460, 17950028361571343192, 1672758585097311581], + "x": [ + 12872375111956991701, + 14049784009914403066, + 15325016171856456312, + 2811875539960405333 + ], + "y": [ + 5711194902040443430, + 13827091592207472460, + 17950028361571343192, + 1672758585097311581 + ], "infinity": false }, { - "x": [11717525586585736911, 730672019767199816, 3010255132348992613, 2780587454575324896], - "y": [1473124157542628664, 1573646910034288561, 10026766074599473146, 563223750818543582], + "x": [ + 11717525586585736911, + 730672019767199816, + 3010255132348992613, + 2780587454575324896 + ], + "y": [ + 1473124157542628664, + 1573646910034288561, + 10026766074599473146, + 563223750818543582 + ], "infinity": false } ], "total_lookup_entries_length": 42547753, "lookup_selector_commitment": { - "x": [4539928924349895484, 2792770915461027618, 11611697420465472575, 1384307956752801018], - "y": [8840366360901511807, 8892919985613263102, 11941090149541110830, 1930352681887390920], + "x": [ + 4539928924349895484, + 2792770915461027618, + 11611697420465472575, + 1384307956752801018 + ], + "y": [ + 8840366360901511807, + 8892919985613263102, + 11941090149541110830, + 1930352681887390920 + ], "infinity": false }, "lookup_tables_commitments": [ { - "x": [631990924006796604, 16139625628991115157, 13331739325995827711, 1062301837743594995], - "y": [15303054606290800139, 15906872095881647437, 7093896572295020249, 1342952934989901142], + "x": [ + 631990924006796604, + 16139625628991115157, + 13331739325995827711, + 1062301837743594995 + ], + "y": [ + 15303054606290800139, + 15906872095881647437, + 7093896572295020249, + 1342952934989901142 + ], "infinity": false }, { - "x": [7983921919542246393, 13296544189644416678, 17081022784392007697, 1980832835348244027], - "y": [10874958134865200330, 7702740658637630534, 14052057929798961943, 3193353539419869016], + "x": [ + 7983921919542246393, + 13296544189644416678, + 17081022784392007697, + 1980832835348244027 + ], + "y": [ + 10874958134865200330, + 7702740658637630534, + 14052057929798961943, + 3193353539419869016 + ], "infinity": false }, { - "x": [1114587284824996932, 4636906500482867924, 15328247172597030456, 87946895873973686], - "y": [15573033830207915877, 5194694185599035278, 2562407345425607214, 2782078999306862675], + "x": [ + 1114587284824996932, + 4636906500482867924, + 15328247172597030456, + 87946895873973686 + ], + "y": [ + 15573033830207915877, + 5194694185599035278, + 2562407345425607214, + 2782078999306862675 + ], "infinity": false }, { - "x": [18225112781127431982, 18048613958187123807, 7325490730844456621, 1953409020724855888], - "y": [7577000130125917198, 6193701449695751861, 4102082927677054717, 395350071385269650], + "x": [ + 18225112781127431982, + 18048613958187123807, + 7325490730844456621, + 1953409020724855888 + ], + "y": [ + 7577000130125917198, + 6193701449695751861, + 4102082927677054717, + 395350071385269650 + ], "infinity": false } ], "lookup_table_type_commitment": { - "x": [4121704254446914578, 13863658665929861884, 15362282368839162345, 2762703036966024619], - "y": [102846692212239082, 14904466746900448136, 16872429770359000841, 1687152581020907098], + "x": [ + 4121704254446914578, + 13863658665929861884, + 15362282368839162345, + 2762703036966024619 + ], + "y": [ + 102846692212239082, + 14904466746900448136, + 16872429770359000841, + 1687152581020907098 + ], "infinity": false }, "non_residues": [ - [5, 0, 0, 0], - [7, 0, 0, 0], - [10, 0, 0, 0] + [ + 5, + 0, + 0, + 0 + ], + [ + 7, + 0, + 0, + 0 + ], + [ + 10, + 0, + 0, + 0 + ] ], "g2_elements": [ { "x": { - "c0": [5106727233969649389, 7440829307424791261, 4785637993704342649, 1729627375292849782], - "c1": [10945020018377822914, 17413811393473931026, 8241798111626485029, 1841571559660931130] + "c0": [ + 5106727233969649389, + 7440829307424791261, + 4785637993704342649, + 1729627375292849782 + ], + "c1": [ + 10945020018377822914, + 17413811393473931026, + 8241798111626485029, + 1841571559660931130 + ] }, "y": { - "c0": [5541340697920699818, 16416156555105522555, 5380518976772849807, 1353435754470862315], - "c1": [6173549831154472795, 13567992399387660019, 17050234209342075797, 650358724130500725] + "c0": [ + 5541340697920699818, + 16416156555105522555, + 5380518976772849807, + 1353435754470862315 + ], + "c1": [ + 6173549831154472795, + 13567992399387660019, + 17050234209342075797, + 650358724130500725 + ] }, "infinity": false }, { "x": { - "c0": [9089143573911733168, 11482283522806384523, 13585589533905622862, 79029415676722370], - "c1": [5692040832573735873, 16884514497384809355, 16717166481813659368, 2742131088506155463] + "c0": [ + 9089143573911733168, + 11482283522806384523, + 13585589533905622862, + 79029415676722370 + ], + "c1": [ + 5692040832573735873, + 16884514497384809355, + 16717166481813659368, + 2742131088506155463 + ] }, "y": { - "c0": [9604638503594647125, 1289961608472612514, 6217038149984805214, 2521661352385209130], - "c1": [17168069778630926308, 11309277837895768996, 15154989611154567813, 359271377050603491] + "c0": [ + 9604638503594647125, + 1289961608472612514, + 6217038149984805214, + 2521661352385209130 + ], + "c1": [ + 17168069778630926308, + 11309277837895768996, + 15154989611154567813, + 359271377050603491 + ] }, "infinity": false } ] -} +} \ No newline at end of file diff --git a/core/bin/verification_key_generator_and_server/data/verification_14_key.json b/core/bin/verification_key_generator_and_server/data/verification_14_key.json index 48c1ee6a6a7..e8c42d407e3 100644 --- a/core/bin/verification_key_generator_and_server/data/verification_14_key.json +++ b/core/bin/verification_key_generator_and_server/data/verification_14_key.json @@ -5,140 +5,395 @@ "num_witness_polys": 0, "gate_setup_commitments": [ { - "x": [6916434521451934576, 614815553772638285, 3742595993843812033, 2823214088432624432], - "y": [11642815096362884283, 18063950820723921281, 6353943092001719992, 3201898419478369298], + "x": [ + 6916434521451934576, + 614815553772638285, + 3742595993843812033, + 2823214088432624432 + ], + "y": [ + 11642815096362884283, + 18063950820723921281, + 6353943092001719992, + 3201898419478369298 + ], "infinity": false }, { - "x": [10647237757917239762, 1269177049592707998, 2650053775033150725, 582198744757304104], - "y": [9804667267596536998, 493663115027956828, 13953159385227792767, 1568248765042207679], + "x": [ + 10647237757917239762, + 1269177049592707998, + 2650053775033150725, + 582198744757304104 + ], + "y": [ + 9804667267596536998, + 493663115027956828, + 13953159385227792767, + 1568248765042207679 + ], "infinity": false }, { - "x": [7910659438561833906, 12456422925439856914, 10869604528749370003, 1213616301038416610], - "y": [2606202790862698157, 6809934263763206210, 17472080335242458272, 2884639755368519501], + "x": [ + 7910659438561833906, + 12456422925439856914, + 10869604528749370003, + 1213616301038416610 + ], + "y": [ + 2606202790862698157, + 6809934263763206210, + 17472080335242458272, + 2884639755368519501 + ], "infinity": false }, { - "x": [14211325859682683183, 11018598407116786751, 10064425366978091674, 2748595948091261209], - "y": [13960202853590116423, 1211975538022172568, 16303435518817750320, 1634234707214097860], + "x": [ + 14211325859682683183, + 11018598407116786751, + 10064425366978091674, + 2748595948091261209 + ], + "y": [ + 13960202853590116423, + 1211975538022172568, + 16303435518817750320, + 1634234707214097860 + ], "infinity": false }, { - "x": [4528591178982443847, 16310104707629911601, 5532120103079323919, 1347877820087040669], - "y": [17983603511717948746, 9529659424488112452, 7820918413906679254, 1819855238351369466], + "x": [ + 4528591178982443847, + 16310104707629911601, + 5532120103079323919, + 1347877820087040669 + ], + "y": [ + 17983603511717948746, + 9529659424488112452, + 7820918413906679254, + 1819855238351369466 + ], "infinity": false }, { - "x": [14415562798118912210, 6550719056383417327, 424281724891761932, 1264340531903932141], - "y": [7768057951329404686, 15024442753889769568, 9676935351692818899, 1492251668690310932], + "x": [ + 14415562798118912210, + 6550719056383417327, + 424281724891761932, + 1264340531903932141 + ], + "y": [ + 7768057951329404686, + 15024442753889769568, + 9676935351692818899, + 1492251668690310932 + ], "infinity": false }, { - "x": [2619366878850208112, 12150914745315976156, 8375197026043390274, 1935272977563031501], - "y": [5381369692389055354, 17978011500330472972, 17420193441326928998, 479187691463910357], + "x": [ + 2619366878850208112, + 12150914745315976156, + 8375197026043390274, + 1935272977563031501 + ], + "y": [ + 5381369692389055354, + 17978011500330472972, + 17420193441326928998, + 479187691463910357 + ], "infinity": false }, { - "x": [8720830951139717797, 15985700059986022675, 11876530273787337931, 421322430672290976], - "y": [9700690437922183179, 1976785701667862157, 16634886936358874061, 3002178567925406588], + "x": [ + 8720830951139717797, + 15985700059986022675, + 11876530273787337931, + 421322430672290976 + ], + "y": [ + 9700690437922183179, + 1976785701667862157, + 16634886936358874061, + 3002178567925406588 + ], "infinity": false } ], "gate_selectors_commitments": [ { - "x": [8284083154661042764, 11776500066398184343, 868620904897679124, 2988582549909766892], - "y": [10794129605563176627, 15487634480061313925, 17194646451372113884, 2087686927573540537], + "x": [ + 8284083154661042764, + 11776500066398184343, + 868620904897679124, + 2988582549909766892 + ], + "y": [ + 10794129605563176627, + 15487634480061313925, + 17194646451372113884, + 2087686927573540537 + ], "infinity": false }, { - "x": [7916190330285050096, 11731220788334102406, 6221883233572429550, 2552280229203107267], - "y": [10510502959728300366, 14682539966609739595, 8275243146917870162, 164811532254637923], + "x": [ + 7916190330285050096, + 11731220788334102406, + 6221883233572429550, + 2552280229203107267 + ], + "y": [ + 10510502959728300366, + 14682539966609739595, + 8275243146917870162, + 164811532254637923 + ], "infinity": false } ], "permutation_commitments": [ { - "x": [195850038587200624, 10136289160450054078, 4386512701252721226, 219366815902177323], - "y": [12042545079209848932, 599057886584676736, 14545610403811537682, 498958995843318019], + "x": [ + 195850038587200624, + 10136289160450054078, + 4386512701252721226, + 219366815902177323 + ], + "y": [ + 12042545079209848932, + 599057886584676736, + 14545610403811537682, + 498958995843318019 + ], "infinity": false }, { - "x": [4721932753701441297, 1676671918244393403, 6943597542294442696, 50994782040503038], - "y": [8321420884695240511, 10606883887907326697, 11471075822795411018, 1311422627151559437], + "x": [ + 4721932753701441297, + 1676671918244393403, + 6943597542294442696, + 50994782040503038 + ], + "y": [ + 8321420884695240511, + 10606883887907326697, + 11471075822795411018, + 1311422627151559437 + ], "infinity": false }, { - "x": [85448132386017640, 13016912343020112485, 11647418800345296605, 1741562939125330787], - "y": [10753835454658443286, 8646325836340244979, 7348777908140142985, 2196062626460604424], + "x": [ + 85448132386017640, + 13016912343020112485, + 11647418800345296605, + 1741562939125330787 + ], + "y": [ + 10753835454658443286, + 8646325836340244979, + 7348777908140142985, + 2196062626460604424 + ], "infinity": false }, { - "x": [2125624295892265840, 12754141819506101591, 8789168208880604752, 947087620272222934], - "y": [12566258871261234263, 12307504590191426495, 6700589767183706452, 1828704371386663334], + "x": [ + 2125624295892265840, + 12754141819506101591, + 8789168208880604752, + 947087620272222934 + ], + "y": [ + 12566258871261234263, + 12307504590191426495, + 6700589767183706452, + 1828704371386663334 + ], "infinity": false } ], "total_lookup_entries_length": 42212029, "lookup_selector_commitment": { - "x": [7709849601046260359, 6836713108454667472, 17360769186231334246, 2348971634881039863], - "y": [13380830060569421804, 15446653016734774164, 17884501636917484387, 1386904567459265970], + "x": [ + 7709849601046260359, + 6836713108454667472, + 17360769186231334246, + 2348971634881039863 + ], + "y": [ + 13380830060569421804, + 15446653016734774164, + 17884501636917484387, + 1386904567459265970 + ], "infinity": false }, "lookup_tables_commitments": [ { - "x": [631990924006796604, 16139625628991115157, 13331739325995827711, 1062301837743594995], - "y": [15303054606290800139, 15906872095881647437, 7093896572295020249, 1342952934989901142], + "x": [ + 631990924006796604, + 16139625628991115157, + 13331739325995827711, + 1062301837743594995 + ], + "y": [ + 15303054606290800139, + 15906872095881647437, + 7093896572295020249, + 1342952934989901142 + ], "infinity": false }, { - "x": [7983921919542246393, 13296544189644416678, 17081022784392007697, 1980832835348244027], - "y": [10874958134865200330, 7702740658637630534, 14052057929798961943, 3193353539419869016], + "x": [ + 7983921919542246393, + 13296544189644416678, + 17081022784392007697, + 1980832835348244027 + ], + "y": [ + 10874958134865200330, + 7702740658637630534, + 14052057929798961943, + 3193353539419869016 + ], "infinity": false }, { - "x": [1114587284824996932, 4636906500482867924, 15328247172597030456, 87946895873973686], - "y": [15573033830207915877, 5194694185599035278, 2562407345425607214, 2782078999306862675], + "x": [ + 1114587284824996932, + 4636906500482867924, + 15328247172597030456, + 87946895873973686 + ], + "y": [ + 15573033830207915877, + 5194694185599035278, + 2562407345425607214, + 2782078999306862675 + ], "infinity": false }, { - "x": [18225112781127431982, 18048613958187123807, 7325490730844456621, 1953409020724855888], - "y": [7577000130125917198, 6193701449695751861, 4102082927677054717, 395350071385269650], + "x": [ + 18225112781127431982, + 18048613958187123807, + 7325490730844456621, + 1953409020724855888 + ], + "y": [ + 7577000130125917198, + 6193701449695751861, + 4102082927677054717, + 395350071385269650 + ], "infinity": false } ], "lookup_table_type_commitment": { - "x": [6960699536013090594, 2075384204892265266, 12053931571725248687, 1371193846897305849], - "y": [8904850119058507432, 10465598889525773001, 16159541505228012497, 1982452464017823539], + "x": [ + 6960699536013090594, + 2075384204892265266, + 12053931571725248687, + 1371193846897305849 + ], + "y": [ + 8904850119058507432, + 10465598889525773001, + 16159541505228012497, + 1982452464017823539 + ], "infinity": false }, "non_residues": [ - [5, 0, 0, 0], - [7, 0, 0, 0], - [10, 0, 0, 0] + [ + 5, + 0, + 0, + 0 + ], + [ + 7, + 0, + 0, + 0 + ], + [ + 10, + 0, + 0, + 0 + ] ], "g2_elements": [ { "x": { - "c0": [5106727233969649389, 7440829307424791261, 4785637993704342649, 1729627375292849782], - "c1": [10945020018377822914, 17413811393473931026, 8241798111626485029, 1841571559660931130] + "c0": [ + 5106727233969649389, + 7440829307424791261, + 4785637993704342649, + 1729627375292849782 + ], + "c1": [ + 10945020018377822914, + 17413811393473931026, + 8241798111626485029, + 1841571559660931130 + ] }, "y": { - "c0": [5541340697920699818, 16416156555105522555, 5380518976772849807, 1353435754470862315], - "c1": [6173549831154472795, 13567992399387660019, 17050234209342075797, 650358724130500725] + "c0": [ + 5541340697920699818, + 16416156555105522555, + 5380518976772849807, + 1353435754470862315 + ], + "c1": [ + 6173549831154472795, + 13567992399387660019, + 17050234209342075797, + 650358724130500725 + ] }, "infinity": false }, { "x": { - "c0": [9089143573911733168, 11482283522806384523, 13585589533905622862, 79029415676722370], - "c1": [5692040832573735873, 16884514497384809355, 16717166481813659368, 2742131088506155463] + "c0": [ + 9089143573911733168, + 11482283522806384523, + 13585589533905622862, + 79029415676722370 + ], + "c1": [ + 5692040832573735873, + 16884514497384809355, + 16717166481813659368, + 2742131088506155463 + ] }, "y": { - "c0": [9604638503594647125, 1289961608472612514, 6217038149984805214, 2521661352385209130], - "c1": [17168069778630926308, 11309277837895768996, 15154989611154567813, 359271377050603491] + "c0": [ + 9604638503594647125, + 1289961608472612514, + 6217038149984805214, + 2521661352385209130 + ], + "c1": [ + 17168069778630926308, + 11309277837895768996, + 15154989611154567813, + 359271377050603491 + ] }, "infinity": false } ] -} +} \ No newline at end of file diff --git a/core/bin/verification_key_generator_and_server/data/verification_15_key.json b/core/bin/verification_key_generator_and_server/data/verification_15_key.json index 674c931f1bd..356dbb3c531 100644 --- a/core/bin/verification_key_generator_and_server/data/verification_15_key.json +++ b/core/bin/verification_key_generator_and_server/data/verification_15_key.json @@ -5,140 +5,395 @@ "num_witness_polys": 0, "gate_setup_commitments": [ { - "x": [3227382513538635502, 10189582412003011525, 1928710987967879299, 1641062823248805930], - "y": [3271795224553087841, 14036363906521936156, 10253705337161624780, 3091191233208402889], + "x": [ + 3227382513538635502, + 10189582412003011525, + 1928710987967879299, + 1641062823248805930 + ], + "y": [ + 3271795224553087841, + 14036363906521936156, + 10253705337161624780, + 3091191233208402889 + ], "infinity": false }, { - "x": [3541471743181642086, 8117051273006688414, 685909872467163024, 2614724468827209722], - "y": [1096952120887201428, 8197980407203032569, 3949713006885563085, 2838982585728277197], + "x": [ + 3541471743181642086, + 8117051273006688414, + 685909872467163024, + 2614724468827209722 + ], + "y": [ + 1096952120887201428, + 8197980407203032569, + 3949713006885563085, + 2838982585728277197 + ], "infinity": false }, { - "x": [12432945880074879560, 13444859845042471186, 16599097070979057001, 3064039790213026567], - "y": [3745088406100356357, 11715355314289478148, 2282946417129489745, 1619614407449915711], + "x": [ + 12432945880074879560, + 13444859845042471186, + 16599097070979057001, + 3064039790213026567 + ], + "y": [ + 3745088406100356357, + 11715355314289478148, + 2282946417129489745, + 1619614407449915711 + ], "infinity": false }, { - "x": [6864310053920223866, 11095455024311706186, 12229748247000682102, 2475016349586561501], - "y": [2946781066962542712, 14275500021265062654, 7624481756022778467, 1439658776940615826], + "x": [ + 6864310053920223866, + 11095455024311706186, + 12229748247000682102, + 2475016349586561501 + ], + "y": [ + 2946781066962542712, + 14275500021265062654, + 7624481756022778467, + 1439658776940615826 + ], "infinity": false }, { - "x": [13589273139905087785, 10411035015021574213, 7322465558208873130, 1805943743448229826], - "y": [13035238946064559886, 8309482746549063820, 14229757515324464781, 1676135665275665956], + "x": [ + 13589273139905087785, + 10411035015021574213, + 7322465558208873130, + 1805943743448229826 + ], + "y": [ + 13035238946064559886, + 8309482746549063820, + 14229757515324464781, + 1676135665275665956 + ], "infinity": false }, { - "x": [84006308859404982, 13783127238980064918, 14101945786439708601, 3343881426944938693], - "y": [11959320721291234482, 7288504259378326725, 9638777183731403514, 1648453409181088010], + "x": [ + 84006308859404982, + 13783127238980064918, + 14101945786439708601, + 3343881426944938693 + ], + "y": [ + 11959320721291234482, + 7288504259378326725, + 9638777183731403514, + 1648453409181088010 + ], "infinity": false }, { - "x": [10987163680360734145, 3374907765066907489, 14421201974855570464, 3148542489906320493], - "y": [17180031485000081847, 1609372527008367113, 6050341427989573858, 477684541505306009], + "x": [ + 10987163680360734145, + 3374907765066907489, + 14421201974855570464, + 3148542489906320493 + ], + "y": [ + 17180031485000081847, + 1609372527008367113, + 6050341427989573858, + 477684541505306009 + ], "infinity": false }, { - "x": [2257028353691713628, 6330174784373016532, 1686021628649718039, 2159927805963705967], - "y": [10814125155819336479, 9673780307204445954, 7995606758095566598, 2252251279727988680], + "x": [ + 2257028353691713628, + 6330174784373016532, + 1686021628649718039, + 2159927805963705967 + ], + "y": [ + 10814125155819336479, + 9673780307204445954, + 7995606758095566598, + 2252251279727988680 + ], "infinity": false } ], "gate_selectors_commitments": [ { - "x": [12209724104183572477, 11631007075974892904, 18407423517909669447, 1123848354500646471], - "y": [4749227851055533192, 16918951234067984229, 5345146076707243019, 2836719468222132526], + "x": [ + 12209724104183572477, + 11631007075974892904, + 18407423517909669447, + 1123848354500646471 + ], + "y": [ + 4749227851055533192, + 16918951234067984229, + 5345146076707243019, + 2836719468222132526 + ], "infinity": false }, { - "x": [7250866110466496804, 16022969863388101391, 16334300930347324147, 2232272485807431638], - "y": [257675104580526310, 8044331403028603186, 2070174268860891010, 412313474208091695], + "x": [ + 7250866110466496804, + 16022969863388101391, + 16334300930347324147, + 2232272485807431638 + ], + "y": [ + 257675104580526310, + 8044331403028603186, + 2070174268860891010, + 412313474208091695 + ], "infinity": false } ], "permutation_commitments": [ { - "x": [6736882681315025594, 13400430183084617843, 17182588928882896917, 413858188107207402], - "y": [11944170108613027081, 10598841640624895850, 9086311820289524704, 994240611047161478], + "x": [ + 6736882681315025594, + 13400430183084617843, + 17182588928882896917, + 413858188107207402 + ], + "y": [ + 11944170108613027081, + 10598841640624895850, + 9086311820289524704, + 994240611047161478 + ], "infinity": false }, { - "x": [9500318283622871785, 5480449932874899465, 13224510306395939252, 1891329668301281157], - "y": [7314078756040350933, 1023294602177498218, 16475078688698425911, 1793945182112302214], + "x": [ + 9500318283622871785, + 5480449932874899465, + 13224510306395939252, + 1891329668301281157 + ], + "y": [ + 7314078756040350933, + 1023294602177498218, + 16475078688698425911, + 1793945182112302214 + ], "infinity": false }, { - "x": [17207548058425781429, 2519222249126358251, 16087595361924038018, 3470846273906312296], - "y": [7578361094884620755, 7082109151721400218, 13675372677342046523, 3204472226310685459], + "x": [ + 17207548058425781429, + 2519222249126358251, + 16087595361924038018, + 3470846273906312296 + ], + "y": [ + 7578361094884620755, + 7082109151721400218, + 13675372677342046523, + 3204472226310685459 + ], "infinity": false }, { - "x": [7036282717341939568, 3035419720331773758, 6765191455902729185, 1301973211946290083], - "y": [697377419426635450, 14612037890797520515, 11746079616766057625, 1031190413179598818], + "x": [ + 7036282717341939568, + 3035419720331773758, + 6765191455902729185, + 1301973211946290083 + ], + "y": [ + 697377419426635450, + 14612037890797520515, + 11746079616766057625, + 1031190413179598818 + ], "infinity": false } ], "total_lookup_entries_length": 6391155, "lookup_selector_commitment": { - "x": [17111915492430945419, 17971275185478677346, 14211391044159602918, 2381455978713737016], - "y": [13971515893527127207, 7078722574057096191, 6337080743811431820, 757015217034494132], + "x": [ + 17111915492430945419, + 17971275185478677346, + 14211391044159602918, + 2381455978713737016 + ], + "y": [ + 13971515893527127207, + 7078722574057096191, + 6337080743811431820, + 757015217034494132 + ], "infinity": false }, "lookup_tables_commitments": [ { - "x": [5825422128268478267, 9219263846299851036, 3879231702557190566, 1702488722758880769], - "y": [18311881100262470992, 5742998199368802392, 18106865487471159417, 502191980176920012], + "x": [ + 5825422128268478267, + 9219263846299851036, + 3879231702557190566, + 1702488722758880769 + ], + "y": [ + 18311881100262470992, + 5742998199368802392, + 18106865487471159417, + 502191980176920012 + ], "infinity": false }, { - "x": [17195892082859417081, 7890531942603584793, 2381805632820057528, 3173232410464566465], - "y": [16359614627947132075, 3459600273035137079, 4550762061432972122, 3394559699318358224], + "x": [ + 17195892082859417081, + 7890531942603584793, + 2381805632820057528, + 3173232410464566465 + ], + "y": [ + 16359614627947132075, + 3459600273035137079, + 4550762061432972122, + 3394559699318358224 + ], "infinity": false }, { - "x": [1716103379277390185, 18097936269579187542, 16357329729761063450, 1508640059338197502], - "y": [11014806739603983364, 4396503314588777389, 9397245609635151055, 1703957955248411380], + "x": [ + 1716103379277390185, + 18097936269579187542, + 16357329729761063450, + 1508640059338197502 + ], + "y": [ + 11014806739603983364, + 4396503314588777389, + 9397245609635151055, + 1703957955248411380 + ], "infinity": false }, { - "x": [4770171350693477354, 17110558673192292253, 9799800677557311408, 761984875463445481], - "y": [1560561403388310063, 31331275310848146, 287152055803835484, 457826332542037277], + "x": [ + 4770171350693477354, + 17110558673192292253, + 9799800677557311408, + 761984875463445481 + ], + "y": [ + 1560561403388310063, + 31331275310848146, + 287152055803835484, + 457826332542037277 + ], "infinity": false } ], "lookup_table_type_commitment": { - "x": [12452920133699897102, 6896642231513345496, 4655495116895575043, 1453525729114564853], - "y": [3574087764464303986, 10141819911397868785, 2342639320036978232, 556196027732983028], + "x": [ + 12452920133699897102, + 6896642231513345496, + 4655495116895575043, + 1453525729114564853 + ], + "y": [ + 3574087764464303986, + 10141819911397868785, + 2342639320036978232, + 556196027732983028 + ], "infinity": false }, "non_residues": [ - [5, 0, 0, 0], - [7, 0, 0, 0], - [10, 0, 0, 0] + [ + 5, + 0, + 0, + 0 + ], + [ + 7, + 0, + 0, + 0 + ], + [ + 10, + 0, + 0, + 0 + ] ], "g2_elements": [ { "x": { - "c0": [5106727233969649389, 7440829307424791261, 4785637993704342649, 1729627375292849782], - "c1": [10945020018377822914, 17413811393473931026, 8241798111626485029, 1841571559660931130] + "c0": [ + 5106727233969649389, + 7440829307424791261, + 4785637993704342649, + 1729627375292849782 + ], + "c1": [ + 10945020018377822914, + 17413811393473931026, + 8241798111626485029, + 1841571559660931130 + ] }, "y": { - "c0": [5541340697920699818, 16416156555105522555, 5380518976772849807, 1353435754470862315], - "c1": [6173549831154472795, 13567992399387660019, 17050234209342075797, 650358724130500725] + "c0": [ + 5541340697920699818, + 16416156555105522555, + 5380518976772849807, + 1353435754470862315 + ], + "c1": [ + 6173549831154472795, + 13567992399387660019, + 17050234209342075797, + 650358724130500725 + ] }, "infinity": false }, { "x": { - "c0": [9089143573911733168, 11482283522806384523, 13585589533905622862, 79029415676722370], - "c1": [5692040832573735873, 16884514497384809355, 16717166481813659368, 2742131088506155463] + "c0": [ + 9089143573911733168, + 11482283522806384523, + 13585589533905622862, + 79029415676722370 + ], + "c1": [ + 5692040832573735873, + 16884514497384809355, + 16717166481813659368, + 2742131088506155463 + ] }, "y": { - "c0": [9604638503594647125, 1289961608472612514, 6217038149984805214, 2521661352385209130], - "c1": [17168069778630926308, 11309277837895768996, 15154989611154567813, 359271377050603491] + "c0": [ + 9604638503594647125, + 1289961608472612514, + 6217038149984805214, + 2521661352385209130 + ], + "c1": [ + 17168069778630926308, + 11309277837895768996, + 15154989611154567813, + 359271377050603491 + ] }, "infinity": false } ] -} +} \ No newline at end of file diff --git a/core/bin/verification_key_generator_and_server/data/verification_16_key.json b/core/bin/verification_key_generator_and_server/data/verification_16_key.json index 674c931f1bd..356dbb3c531 100644 --- a/core/bin/verification_key_generator_and_server/data/verification_16_key.json +++ b/core/bin/verification_key_generator_and_server/data/verification_16_key.json @@ -5,140 +5,395 @@ "num_witness_polys": 0, "gate_setup_commitments": [ { - "x": [3227382513538635502, 10189582412003011525, 1928710987967879299, 1641062823248805930], - "y": [3271795224553087841, 14036363906521936156, 10253705337161624780, 3091191233208402889], + "x": [ + 3227382513538635502, + 10189582412003011525, + 1928710987967879299, + 1641062823248805930 + ], + "y": [ + 3271795224553087841, + 14036363906521936156, + 10253705337161624780, + 3091191233208402889 + ], "infinity": false }, { - "x": [3541471743181642086, 8117051273006688414, 685909872467163024, 2614724468827209722], - "y": [1096952120887201428, 8197980407203032569, 3949713006885563085, 2838982585728277197], + "x": [ + 3541471743181642086, + 8117051273006688414, + 685909872467163024, + 2614724468827209722 + ], + "y": [ + 1096952120887201428, + 8197980407203032569, + 3949713006885563085, + 2838982585728277197 + ], "infinity": false }, { - "x": [12432945880074879560, 13444859845042471186, 16599097070979057001, 3064039790213026567], - "y": [3745088406100356357, 11715355314289478148, 2282946417129489745, 1619614407449915711], + "x": [ + 12432945880074879560, + 13444859845042471186, + 16599097070979057001, + 3064039790213026567 + ], + "y": [ + 3745088406100356357, + 11715355314289478148, + 2282946417129489745, + 1619614407449915711 + ], "infinity": false }, { - "x": [6864310053920223866, 11095455024311706186, 12229748247000682102, 2475016349586561501], - "y": [2946781066962542712, 14275500021265062654, 7624481756022778467, 1439658776940615826], + "x": [ + 6864310053920223866, + 11095455024311706186, + 12229748247000682102, + 2475016349586561501 + ], + "y": [ + 2946781066962542712, + 14275500021265062654, + 7624481756022778467, + 1439658776940615826 + ], "infinity": false }, { - "x": [13589273139905087785, 10411035015021574213, 7322465558208873130, 1805943743448229826], - "y": [13035238946064559886, 8309482746549063820, 14229757515324464781, 1676135665275665956], + "x": [ + 13589273139905087785, + 10411035015021574213, + 7322465558208873130, + 1805943743448229826 + ], + "y": [ + 13035238946064559886, + 8309482746549063820, + 14229757515324464781, + 1676135665275665956 + ], "infinity": false }, { - "x": [84006308859404982, 13783127238980064918, 14101945786439708601, 3343881426944938693], - "y": [11959320721291234482, 7288504259378326725, 9638777183731403514, 1648453409181088010], + "x": [ + 84006308859404982, + 13783127238980064918, + 14101945786439708601, + 3343881426944938693 + ], + "y": [ + 11959320721291234482, + 7288504259378326725, + 9638777183731403514, + 1648453409181088010 + ], "infinity": false }, { - "x": [10987163680360734145, 3374907765066907489, 14421201974855570464, 3148542489906320493], - "y": [17180031485000081847, 1609372527008367113, 6050341427989573858, 477684541505306009], + "x": [ + 10987163680360734145, + 3374907765066907489, + 14421201974855570464, + 3148542489906320493 + ], + "y": [ + 17180031485000081847, + 1609372527008367113, + 6050341427989573858, + 477684541505306009 + ], "infinity": false }, { - "x": [2257028353691713628, 6330174784373016532, 1686021628649718039, 2159927805963705967], - "y": [10814125155819336479, 9673780307204445954, 7995606758095566598, 2252251279727988680], + "x": [ + 2257028353691713628, + 6330174784373016532, + 1686021628649718039, + 2159927805963705967 + ], + "y": [ + 10814125155819336479, + 9673780307204445954, + 7995606758095566598, + 2252251279727988680 + ], "infinity": false } ], "gate_selectors_commitments": [ { - "x": [12209724104183572477, 11631007075974892904, 18407423517909669447, 1123848354500646471], - "y": [4749227851055533192, 16918951234067984229, 5345146076707243019, 2836719468222132526], + "x": [ + 12209724104183572477, + 11631007075974892904, + 18407423517909669447, + 1123848354500646471 + ], + "y": [ + 4749227851055533192, + 16918951234067984229, + 5345146076707243019, + 2836719468222132526 + ], "infinity": false }, { - "x": [7250866110466496804, 16022969863388101391, 16334300930347324147, 2232272485807431638], - "y": [257675104580526310, 8044331403028603186, 2070174268860891010, 412313474208091695], + "x": [ + 7250866110466496804, + 16022969863388101391, + 16334300930347324147, + 2232272485807431638 + ], + "y": [ + 257675104580526310, + 8044331403028603186, + 2070174268860891010, + 412313474208091695 + ], "infinity": false } ], "permutation_commitments": [ { - "x": [6736882681315025594, 13400430183084617843, 17182588928882896917, 413858188107207402], - "y": [11944170108613027081, 10598841640624895850, 9086311820289524704, 994240611047161478], + "x": [ + 6736882681315025594, + 13400430183084617843, + 17182588928882896917, + 413858188107207402 + ], + "y": [ + 11944170108613027081, + 10598841640624895850, + 9086311820289524704, + 994240611047161478 + ], "infinity": false }, { - "x": [9500318283622871785, 5480449932874899465, 13224510306395939252, 1891329668301281157], - "y": [7314078756040350933, 1023294602177498218, 16475078688698425911, 1793945182112302214], + "x": [ + 9500318283622871785, + 5480449932874899465, + 13224510306395939252, + 1891329668301281157 + ], + "y": [ + 7314078756040350933, + 1023294602177498218, + 16475078688698425911, + 1793945182112302214 + ], "infinity": false }, { - "x": [17207548058425781429, 2519222249126358251, 16087595361924038018, 3470846273906312296], - "y": [7578361094884620755, 7082109151721400218, 13675372677342046523, 3204472226310685459], + "x": [ + 17207548058425781429, + 2519222249126358251, + 16087595361924038018, + 3470846273906312296 + ], + "y": [ + 7578361094884620755, + 7082109151721400218, + 13675372677342046523, + 3204472226310685459 + ], "infinity": false }, { - "x": [7036282717341939568, 3035419720331773758, 6765191455902729185, 1301973211946290083], - "y": [697377419426635450, 14612037890797520515, 11746079616766057625, 1031190413179598818], + "x": [ + 7036282717341939568, + 3035419720331773758, + 6765191455902729185, + 1301973211946290083 + ], + "y": [ + 697377419426635450, + 14612037890797520515, + 11746079616766057625, + 1031190413179598818 + ], "infinity": false } ], "total_lookup_entries_length": 6391155, "lookup_selector_commitment": { - "x": [17111915492430945419, 17971275185478677346, 14211391044159602918, 2381455978713737016], - "y": [13971515893527127207, 7078722574057096191, 6337080743811431820, 757015217034494132], + "x": [ + 17111915492430945419, + 17971275185478677346, + 14211391044159602918, + 2381455978713737016 + ], + "y": [ + 13971515893527127207, + 7078722574057096191, + 6337080743811431820, + 757015217034494132 + ], "infinity": false }, "lookup_tables_commitments": [ { - "x": [5825422128268478267, 9219263846299851036, 3879231702557190566, 1702488722758880769], - "y": [18311881100262470992, 5742998199368802392, 18106865487471159417, 502191980176920012], + "x": [ + 5825422128268478267, + 9219263846299851036, + 3879231702557190566, + 1702488722758880769 + ], + "y": [ + 18311881100262470992, + 5742998199368802392, + 18106865487471159417, + 502191980176920012 + ], "infinity": false }, { - "x": [17195892082859417081, 7890531942603584793, 2381805632820057528, 3173232410464566465], - "y": [16359614627947132075, 3459600273035137079, 4550762061432972122, 3394559699318358224], + "x": [ + 17195892082859417081, + 7890531942603584793, + 2381805632820057528, + 3173232410464566465 + ], + "y": [ + 16359614627947132075, + 3459600273035137079, + 4550762061432972122, + 3394559699318358224 + ], "infinity": false }, { - "x": [1716103379277390185, 18097936269579187542, 16357329729761063450, 1508640059338197502], - "y": [11014806739603983364, 4396503314588777389, 9397245609635151055, 1703957955248411380], + "x": [ + 1716103379277390185, + 18097936269579187542, + 16357329729761063450, + 1508640059338197502 + ], + "y": [ + 11014806739603983364, + 4396503314588777389, + 9397245609635151055, + 1703957955248411380 + ], "infinity": false }, { - "x": [4770171350693477354, 17110558673192292253, 9799800677557311408, 761984875463445481], - "y": [1560561403388310063, 31331275310848146, 287152055803835484, 457826332542037277], + "x": [ + 4770171350693477354, + 17110558673192292253, + 9799800677557311408, + 761984875463445481 + ], + "y": [ + 1560561403388310063, + 31331275310848146, + 287152055803835484, + 457826332542037277 + ], "infinity": false } ], "lookup_table_type_commitment": { - "x": [12452920133699897102, 6896642231513345496, 4655495116895575043, 1453525729114564853], - "y": [3574087764464303986, 10141819911397868785, 2342639320036978232, 556196027732983028], + "x": [ + 12452920133699897102, + 6896642231513345496, + 4655495116895575043, + 1453525729114564853 + ], + "y": [ + 3574087764464303986, + 10141819911397868785, + 2342639320036978232, + 556196027732983028 + ], "infinity": false }, "non_residues": [ - [5, 0, 0, 0], - [7, 0, 0, 0], - [10, 0, 0, 0] + [ + 5, + 0, + 0, + 0 + ], + [ + 7, + 0, + 0, + 0 + ], + [ + 10, + 0, + 0, + 0 + ] ], "g2_elements": [ { "x": { - "c0": [5106727233969649389, 7440829307424791261, 4785637993704342649, 1729627375292849782], - "c1": [10945020018377822914, 17413811393473931026, 8241798111626485029, 1841571559660931130] + "c0": [ + 5106727233969649389, + 7440829307424791261, + 4785637993704342649, + 1729627375292849782 + ], + "c1": [ + 10945020018377822914, + 17413811393473931026, + 8241798111626485029, + 1841571559660931130 + ] }, "y": { - "c0": [5541340697920699818, 16416156555105522555, 5380518976772849807, 1353435754470862315], - "c1": [6173549831154472795, 13567992399387660019, 17050234209342075797, 650358724130500725] + "c0": [ + 5541340697920699818, + 16416156555105522555, + 5380518976772849807, + 1353435754470862315 + ], + "c1": [ + 6173549831154472795, + 13567992399387660019, + 17050234209342075797, + 650358724130500725 + ] }, "infinity": false }, { "x": { - "c0": [9089143573911733168, 11482283522806384523, 13585589533905622862, 79029415676722370], - "c1": [5692040832573735873, 16884514497384809355, 16717166481813659368, 2742131088506155463] + "c0": [ + 9089143573911733168, + 11482283522806384523, + 13585589533905622862, + 79029415676722370 + ], + "c1": [ + 5692040832573735873, + 16884514497384809355, + 16717166481813659368, + 2742131088506155463 + ] }, "y": { - "c0": [9604638503594647125, 1289961608472612514, 6217038149984805214, 2521661352385209130], - "c1": [17168069778630926308, 11309277837895768996, 15154989611154567813, 359271377050603491] + "c0": [ + 9604638503594647125, + 1289961608472612514, + 6217038149984805214, + 2521661352385209130 + ], + "c1": [ + 17168069778630926308, + 11309277837895768996, + 15154989611154567813, + 359271377050603491 + ] }, "infinity": false } ] -} +} \ No newline at end of file diff --git a/core/bin/verification_key_generator_and_server/data/verification_17_key.json b/core/bin/verification_key_generator_and_server/data/verification_17_key.json index 274d4625f42..4886f501712 100644 --- a/core/bin/verification_key_generator_and_server/data/verification_17_key.json +++ b/core/bin/verification_key_generator_and_server/data/verification_17_key.json @@ -5,140 +5,395 @@ "num_witness_polys": 0, "gate_setup_commitments": [ { - "x": [17914331890341023175, 5200903915088916638, 7417971632353510341, 989671567770015891], - "y": [2927207345798721401, 12686845373576710402, 977520799157489114, 1882223742569339495], + "x": [ + 17914331890341023175, + 5200903915088916638, + 7417971632353510341, + 989671567770015891 + ], + "y": [ + 2927207345798721401, + 12686845373576710402, + 977520799157489114, + 1882223742569339495 + ], "infinity": false }, { - "x": [17162848902278956536, 16169550484471334725, 10830640611178609260, 1347016616567630867], - "y": [6224316231648682710, 10518372790293065661, 4887066336660303630, 703109868065750569], + "x": [ + 17162848902278956536, + 16169550484471334725, + 10830640611178609260, + 1347016616567630867 + ], + "y": [ + 6224316231648682710, + 10518372790293065661, + 4887066336660303630, + 703109868065750569 + ], "infinity": false }, { - "x": [15783141083967762454, 16153855592853073081, 5667838393811413602, 1552498518850981979], - "y": [4220445586486275972, 13196202402039716924, 17506868028821343237, 2718319833724164541], + "x": [ + 15783141083967762454, + 16153855592853073081, + 5667838393811413602, + 1552498518850981979 + ], + "y": [ + 4220445586486275972, + 13196202402039716924, + 17506868028821343237, + 2718319833724164541 + ], "infinity": false }, { - "x": [4896615254637588846, 5804270398165250639, 10274952983674590649, 1937027782721476561], - "y": [14180244016629518742, 1376497406583367686, 11268467489552574214, 2331396669725958189], + "x": [ + 4896615254637588846, + 5804270398165250639, + 10274952983674590649, + 1937027782721476561 + ], + "y": [ + 14180244016629518742, + 1376497406583367686, + 11268467489552574214, + 2331396669725958189 + ], "infinity": false }, { - "x": [191294939748295885, 2804205121966814820, 3897841028303648224, 3406986167359695085], - "y": [6000542982074572633, 1697448874567677325, 10313504031977824294, 320347014349001728], + "x": [ + 191294939748295885, + 2804205121966814820, + 3897841028303648224, + 3406986167359695085 + ], + "y": [ + 6000542982074572633, + 1697448874567677325, + 10313504031977824294, + 320347014349001728 + ], "infinity": false }, { - "x": [6817435454105168413, 15823888625999007373, 9766931118761036330, 3392959293697897728], - "y": [3549039265311512008, 4758653036115592629, 219467419355603781, 83059544477934848], + "x": [ + 6817435454105168413, + 15823888625999007373, + 9766931118761036330, + 3392959293697897728 + ], + "y": [ + 3549039265311512008, + 4758653036115592629, + 219467419355603781, + 83059544477934848 + ], "infinity": false }, { - "x": [5038171725639341807, 6859992384823395611, 15284967171349293554, 16807092603996758], - "y": [16504201956683368367, 12931995037356002803, 16812826192957092842, 3169839139097845275], + "x": [ + 5038171725639341807, + 6859992384823395611, + 15284967171349293554, + 16807092603996758 + ], + "y": [ + 16504201956683368367, + 12931995037356002803, + 16812826192957092842, + 3169839139097845275 + ], "infinity": false }, { - "x": [7140480682142203727, 9518528852331365100, 6189914959408603471, 535939568308325781], - "y": [5944679084532939174, 17280810090456322382, 3743919877743496107, 1235924204609568068], + "x": [ + 7140480682142203727, + 9518528852331365100, + 6189914959408603471, + 535939568308325781 + ], + "y": [ + 5944679084532939174, + 17280810090456322382, + 3743919877743496107, + 1235924204609568068 + ], "infinity": false } ], "gate_selectors_commitments": [ { - "x": [1929812895882850703, 10386198218814398503, 17007521659662498274, 1093092717342753672], - "y": [14834187133095267171, 15506032964234961178, 7626816120460943443, 871778379365004315], + "x": [ + 1929812895882850703, + 10386198218814398503, + 17007521659662498274, + 1093092717342753672 + ], + "y": [ + 14834187133095267171, + 15506032964234961178, + 7626816120460943443, + 871778379365004315 + ], "infinity": false }, { - "x": [15660406110329165813, 8146521122567923995, 2421739551937359002, 3037598346026174089], - "y": [526124545966722472, 1168331442853419483, 4128095883471549051, 2951909971734725955], + "x": [ + 15660406110329165813, + 8146521122567923995, + 2421739551937359002, + 3037598346026174089 + ], + "y": [ + 526124545966722472, + 1168331442853419483, + 4128095883471549051, + 2951909971734725955 + ], "infinity": false } ], "permutation_commitments": [ { - "x": [6206240620508019400, 3690935139087147193, 15230272164329216928, 2140680869789406894], - "y": [14967331981004447304, 1624146052760537503, 8986435052862626311, 334011853307313390], + "x": [ + 6206240620508019400, + 3690935139087147193, + 15230272164329216928, + 2140680869789406894 + ], + "y": [ + 14967331981004447304, + 1624146052760537503, + 8986435052862626311, + 334011853307313390 + ], "infinity": false }, { - "x": [4342223064246074020, 2037946044543710684, 9057698479075332373, 1955362957846693345], - "y": [13253375713250043938, 6754658208742468331, 9339617748652368850, 3066524060291544175], + "x": [ + 4342223064246074020, + 2037946044543710684, + 9057698479075332373, + 1955362957846693345 + ], + "y": [ + 13253375713250043938, + 6754658208742468331, + 9339617748652368850, + 3066524060291544175 + ], "infinity": false }, { - "x": [17765629723696241082, 14243015821582305127, 922013493526048847, 186830516636733479], - "y": [14465184942185208224, 11235596895177038197, 5490682932088517686, 1253279069662324930], + "x": [ + 17765629723696241082, + 14243015821582305127, + 922013493526048847, + 186830516636733479 + ], + "y": [ + 14465184942185208224, + 11235596895177038197, + 5490682932088517686, + 1253279069662324930 + ], "infinity": false }, { - "x": [9369367805867402420, 12663806522952881709, 10184609326459106945, 1664572000409921348], - "y": [4383960972942823390, 6526609131568596717, 1343118583674917141, 113408414321095416], + "x": [ + 9369367805867402420, + 12663806522952881709, + 10184609326459106945, + 1664572000409921348 + ], + "y": [ + 4383960972942823390, + 6526609131568596717, + 1343118583674917141, + 113408414321095416 + ], "infinity": false } ], "total_lookup_entries_length": 6306340, "lookup_selector_commitment": { - "x": [8662938005624859815, 9126108646717466191, 14321121874090966307, 2777446762308933634], - "y": [12555265159079607081, 9054928862248682392, 2784170007581120117, 1769718192676345815], + "x": [ + 8662938005624859815, + 9126108646717466191, + 14321121874090966307, + 2777446762308933634 + ], + "y": [ + 12555265159079607081, + 9054928862248682392, + 2784170007581120117, + 1769718192676345815 + ], "infinity": false }, "lookup_tables_commitments": [ { - "x": [631990924006796604, 16139625628991115157, 13331739325995827711, 1062301837743594995], - "y": [15303054606290800139, 15906872095881647437, 7093896572295020249, 1342952934989901142], + "x": [ + 631990924006796604, + 16139625628991115157, + 13331739325995827711, + 1062301837743594995 + ], + "y": [ + 15303054606290800139, + 15906872095881647437, + 7093896572295020249, + 1342952934989901142 + ], "infinity": false }, { - "x": [7983921919542246393, 13296544189644416678, 17081022784392007697, 1980832835348244027], - "y": [10874958134865200330, 7702740658637630534, 14052057929798961943, 3193353539419869016], + "x": [ + 7983921919542246393, + 13296544189644416678, + 17081022784392007697, + 1980832835348244027 + ], + "y": [ + 10874958134865200330, + 7702740658637630534, + 14052057929798961943, + 3193353539419869016 + ], "infinity": false }, { - "x": [1114587284824996932, 4636906500482867924, 15328247172597030456, 87946895873973686], - "y": [15573033830207915877, 5194694185599035278, 2562407345425607214, 2782078999306862675], + "x": [ + 1114587284824996932, + 4636906500482867924, + 15328247172597030456, + 87946895873973686 + ], + "y": [ + 15573033830207915877, + 5194694185599035278, + 2562407345425607214, + 2782078999306862675 + ], "infinity": false }, { - "x": [18225112781127431982, 18048613958187123807, 7325490730844456621, 1953409020724855888], - "y": [7577000130125917198, 6193701449695751861, 4102082927677054717, 395350071385269650], + "x": [ + 18225112781127431982, + 18048613958187123807, + 7325490730844456621, + 1953409020724855888 + ], + "y": [ + 7577000130125917198, + 6193701449695751861, + 4102082927677054717, + 395350071385269650 + ], "infinity": false } ], "lookup_table_type_commitment": { - "x": [12644448349947379666, 16345179309557779118, 10854030671875297787, 1358228639202695992], - "y": [2673142241557152443, 11674634738064487673, 12992693662201776412, 1888958170754620568], + "x": [ + 12644448349947379666, + 16345179309557779118, + 10854030671875297787, + 1358228639202695992 + ], + "y": [ + 2673142241557152443, + 11674634738064487673, + 12992693662201776412, + 1888958170754620568 + ], "infinity": false }, "non_residues": [ - [5, 0, 0, 0], - [7, 0, 0, 0], - [10, 0, 0, 0] + [ + 5, + 0, + 0, + 0 + ], + [ + 7, + 0, + 0, + 0 + ], + [ + 10, + 0, + 0, + 0 + ] ], "g2_elements": [ { "x": { - "c0": [5106727233969649389, 7440829307424791261, 4785637993704342649, 1729627375292849782], - "c1": [10945020018377822914, 17413811393473931026, 8241798111626485029, 1841571559660931130] + "c0": [ + 5106727233969649389, + 7440829307424791261, + 4785637993704342649, + 1729627375292849782 + ], + "c1": [ + 10945020018377822914, + 17413811393473931026, + 8241798111626485029, + 1841571559660931130 + ] }, "y": { - "c0": [5541340697920699818, 16416156555105522555, 5380518976772849807, 1353435754470862315], - "c1": [6173549831154472795, 13567992399387660019, 17050234209342075797, 650358724130500725] + "c0": [ + 5541340697920699818, + 16416156555105522555, + 5380518976772849807, + 1353435754470862315 + ], + "c1": [ + 6173549831154472795, + 13567992399387660019, + 17050234209342075797, + 650358724130500725 + ] }, "infinity": false }, { "x": { - "c0": [9089143573911733168, 11482283522806384523, 13585589533905622862, 79029415676722370], - "c1": [5692040832573735873, 16884514497384809355, 16717166481813659368, 2742131088506155463] + "c0": [ + 9089143573911733168, + 11482283522806384523, + 13585589533905622862, + 79029415676722370 + ], + "c1": [ + 5692040832573735873, + 16884514497384809355, + 16717166481813659368, + 2742131088506155463 + ] }, "y": { - "c0": [9604638503594647125, 1289961608472612514, 6217038149984805214, 2521661352385209130], - "c1": [17168069778630926308, 11309277837895768996, 15154989611154567813, 359271377050603491] + "c0": [ + 9604638503594647125, + 1289961608472612514, + 6217038149984805214, + 2521661352385209130 + ], + "c1": [ + 17168069778630926308, + 11309277837895768996, + 15154989611154567813, + 359271377050603491 + ] }, "infinity": false } ] -} +} \ No newline at end of file diff --git a/core/bin/verification_key_generator_and_server/data/verification_18_key.json b/core/bin/verification_key_generator_and_server/data/verification_18_key.json index 68457e3688f..0987039dd1f 100644 --- a/core/bin/verification_key_generator_and_server/data/verification_18_key.json +++ b/core/bin/verification_key_generator_and_server/data/verification_18_key.json @@ -5,140 +5,395 @@ "num_witness_polys": 0, "gate_setup_commitments": [ { - "x": [8828437332483635107, 13777915698231175292, 11504510351588004199, 2516385517175522236], - "y": [1530453459325046685, 2126477283125660971, 6874073688275717548, 2971751478402184988], + "x": [ + 8828437332483635107, + 13777915698231175292, + 11504510351588004199, + 2516385517175522236 + ], + "y": [ + 1530453459325046685, + 2126477283125660971, + 6874073688275717548, + 2971751478402184988 + ], "infinity": false }, { - "x": [3490885152333630169, 4123320877294819459, 5138828731030738163, 3039569146695764058], - "y": [10725322881860790776, 1512262420257872325, 10563843054743673205, 447776577449487981], + "x": [ + 3490885152333630169, + 4123320877294819459, + 5138828731030738163, + 3039569146695764058 + ], + "y": [ + 10725322881860790776, + 1512262420257872325, + 10563843054743673205, + 447776577449487981 + ], "infinity": false }, { - "x": [14957646468235752771, 6216555943494703122, 7827110015048654177, 2702223139144227095], - "y": [505353369980003046, 9687811614109626117, 5346740791392836415, 1340467989233731971], + "x": [ + 14957646468235752771, + 6216555943494703122, + 7827110015048654177, + 2702223139144227095 + ], + "y": [ + 505353369980003046, + 9687811614109626117, + 5346740791392836415, + 1340467989233731971 + ], "infinity": false }, { - "x": [3201028595190213325, 9659059230246338206, 901122635500995415, 765851963674764103], - "y": [10609226610841230792, 8145519080052709505, 17851750066177581293, 362176586681460505], + "x": [ + 3201028595190213325, + 9659059230246338206, + 901122635500995415, + 765851963674764103 + ], + "y": [ + 10609226610841230792, + 8145519080052709505, + 17851750066177581293, + 362176586681460505 + ], "infinity": false }, { - "x": [13374935211181268625, 1347742735582506393, 4588995338963087243, 94453217016201562], - "y": [4077548225372117006, 11859845367084549583, 2736752177668563039, 1134818940315684409], + "x": [ + 13374935211181268625, + 1347742735582506393, + 4588995338963087243, + 94453217016201562 + ], + "y": [ + 4077548225372117006, + 11859845367084549583, + 2736752177668563039, + 1134818940315684409 + ], "infinity": false }, { - "x": [9467178015658262369, 10545965721679492606, 5726831550010619228, 2051827871593168334], - "y": [6169140154733194545, 5574043976386236933, 12140759986363309479, 1521273866181786590], + "x": [ + 9467178015658262369, + 10545965721679492606, + 5726831550010619228, + 2051827871593168334 + ], + "y": [ + 6169140154733194545, + 5574043976386236933, + 12140759986363309479, + 1521273866181786590 + ], "infinity": false }, { - "x": [9642818207174528085, 15617465062711953088, 11263174413902929450, 639683138088730423], - "y": [15150652293369779803, 11338278639695990684, 12204993260723588081, 2039902155290309382], + "x": [ + 9642818207174528085, + 15617465062711953088, + 11263174413902929450, + 639683138088730423 + ], + "y": [ + 15150652293369779803, + 11338278639695990684, + 12204993260723588081, + 2039902155290309382 + ], "infinity": false }, { - "x": [7292405600450693833, 573142590034645775, 1583019100043676600, 1978695840953226358], - "y": [5154489367309996043, 8763740977657654022, 9821219773990064941, 2636875463267519559], + "x": [ + 7292405600450693833, + 573142590034645775, + 1583019100043676600, + 1978695840953226358 + ], + "y": [ + 5154489367309996043, + 8763740977657654022, + 9821219773990064941, + 2636875463267519559 + ], "infinity": false } ], "gate_selectors_commitments": [ { - "x": [2075450237700219880, 2920304484074114568, 8294843245052708759, 555293007149161182], - "y": [6360019558055677441, 7673047654179899818, 10263007591992092214, 2148859098846651643], + "x": [ + 2075450237700219880, + 2920304484074114568, + 8294843245052708759, + 555293007149161182 + ], + "y": [ + 6360019558055677441, + 7673047654179899818, + 10263007591992092214, + 2148859098846651643 + ], "infinity": false }, { - "x": [3970783323754285443, 13019363829879217592, 18197490676081603277, 630296172623407012], - "y": [7987745494904024640, 9631048689610078757, 1592818072678520163, 2678374240960081558], + "x": [ + 3970783323754285443, + 13019363829879217592, + 18197490676081603277, + 630296172623407012 + ], + "y": [ + 7987745494904024640, + 9631048689610078757, + 1592818072678520163, + 2678374240960081558 + ], "infinity": false } ], "permutation_commitments": [ { - "x": [3055966415338102721, 18231075292903695376, 9187400351012014001, 2311743062653684305], - "y": [2553578246375478674, 930511927228692161, 2271826946385879571, 3124263363559878329], + "x": [ + 3055966415338102721, + 18231075292903695376, + 9187400351012014001, + 2311743062653684305 + ], + "y": [ + 2553578246375478674, + 930511927228692161, + 2271826946385879571, + 3124263363559878329 + ], "infinity": false }, { - "x": [6936812562216228782, 15195638439305648290, 17827467578192758430, 2674740411261002393], - "y": [9738743088557108685, 17225541903460577384, 16627013813461429872, 494410407050490065], + "x": [ + 6936812562216228782, + 15195638439305648290, + 17827467578192758430, + 2674740411261002393 + ], + "y": [ + 9738743088557108685, + 17225541903460577384, + 16627013813461429872, + 494410407050490065 + ], "infinity": false }, { - "x": [10570962909758341245, 18167360144953681397, 2744925075742623060, 736412139310579435], - "y": [13849279071386536985, 10093748777935480433, 904764951143479286, 138814932031469939], + "x": [ + 10570962909758341245, + 18167360144953681397, + 2744925075742623060, + 736412139310579435 + ], + "y": [ + 13849279071386536985, + 10093748777935480433, + 904764951143479286, + 138814932031469939 + ], "infinity": false }, { - "x": [4533871929444677010, 10106157783629999301, 4178648893377901718, 3164693318611048089], - "y": [12699039702383686311, 4388078229442418460, 8961813905523894854, 570254591975307765], + "x": [ + 4533871929444677010, + 10106157783629999301, + 4178648893377901718, + 3164693318611048089 + ], + "y": [ + 12699039702383686311, + 4388078229442418460, + 8961813905523894854, + 570254591975307765 + ], "infinity": false } ], "total_lookup_entries_length": 18884644, "lookup_selector_commitment": { - "x": [15022814412717317376, 17444332185630324119, 14685665421775887958, 906494215348891007], - "y": [9833778905776399360, 1648124311168457783, 3500435402371619753, 2370413643071351216], + "x": [ + 15022814412717317376, + 17444332185630324119, + 14685665421775887958, + 906494215348891007 + ], + "y": [ + 9833778905776399360, + 1648124311168457783, + 3500435402371619753, + 2370413643071351216 + ], "infinity": false }, "lookup_tables_commitments": [ { - "x": [631990924006796604, 16139625628991115157, 13331739325995827711, 1062301837743594995], - "y": [15303054606290800139, 15906872095881647437, 7093896572295020249, 1342952934989901142], + "x": [ + 631990924006796604, + 16139625628991115157, + 13331739325995827711, + 1062301837743594995 + ], + "y": [ + 15303054606290800139, + 15906872095881647437, + 7093896572295020249, + 1342952934989901142 + ], "infinity": false }, { - "x": [7983921919542246393, 13296544189644416678, 17081022784392007697, 1980832835348244027], - "y": [10874958134865200330, 7702740658637630534, 14052057929798961943, 3193353539419869016], + "x": [ + 7983921919542246393, + 13296544189644416678, + 17081022784392007697, + 1980832835348244027 + ], + "y": [ + 10874958134865200330, + 7702740658637630534, + 14052057929798961943, + 3193353539419869016 + ], "infinity": false }, { - "x": [1114587284824996932, 4636906500482867924, 15328247172597030456, 87946895873973686], - "y": [15573033830207915877, 5194694185599035278, 2562407345425607214, 2782078999306862675], + "x": [ + 1114587284824996932, + 4636906500482867924, + 15328247172597030456, + 87946895873973686 + ], + "y": [ + 15573033830207915877, + 5194694185599035278, + 2562407345425607214, + 2782078999306862675 + ], "infinity": false }, { - "x": [18225112781127431982, 18048613958187123807, 7325490730844456621, 1953409020724855888], - "y": [7577000130125917198, 6193701449695751861, 4102082927677054717, 395350071385269650], + "x": [ + 18225112781127431982, + 18048613958187123807, + 7325490730844456621, + 1953409020724855888 + ], + "y": [ + 7577000130125917198, + 6193701449695751861, + 4102082927677054717, + 395350071385269650 + ], "infinity": false } ], "lookup_table_type_commitment": { - "x": [8321950609730151216, 18010887235457883784, 17038267498493175776, 1380842840607309871], - "y": [3264160671000273944, 16611917363401804468, 8505391859632632917, 2149881676646664319], + "x": [ + 8321950609730151216, + 18010887235457883784, + 17038267498493175776, + 1380842840607309871 + ], + "y": [ + 3264160671000273944, + 16611917363401804468, + 8505391859632632917, + 2149881676646664319 + ], "infinity": false }, "non_residues": [ - [5, 0, 0, 0], - [7, 0, 0, 0], - [10, 0, 0, 0] + [ + 5, + 0, + 0, + 0 + ], + [ + 7, + 0, + 0, + 0 + ], + [ + 10, + 0, + 0, + 0 + ] ], "g2_elements": [ { "x": { - "c0": [5106727233969649389, 7440829307424791261, 4785637993704342649, 1729627375292849782], - "c1": [10945020018377822914, 17413811393473931026, 8241798111626485029, 1841571559660931130] + "c0": [ + 5106727233969649389, + 7440829307424791261, + 4785637993704342649, + 1729627375292849782 + ], + "c1": [ + 10945020018377822914, + 17413811393473931026, + 8241798111626485029, + 1841571559660931130 + ] }, "y": { - "c0": [5541340697920699818, 16416156555105522555, 5380518976772849807, 1353435754470862315], - "c1": [6173549831154472795, 13567992399387660019, 17050234209342075797, 650358724130500725] + "c0": [ + 5541340697920699818, + 16416156555105522555, + 5380518976772849807, + 1353435754470862315 + ], + "c1": [ + 6173549831154472795, + 13567992399387660019, + 17050234209342075797, + 650358724130500725 + ] }, "infinity": false }, { "x": { - "c0": [9089143573911733168, 11482283522806384523, 13585589533905622862, 79029415676722370], - "c1": [5692040832573735873, 16884514497384809355, 16717166481813659368, 2742131088506155463] + "c0": [ + 9089143573911733168, + 11482283522806384523, + 13585589533905622862, + 79029415676722370 + ], + "c1": [ + 5692040832573735873, + 16884514497384809355, + 16717166481813659368, + 2742131088506155463 + ] }, "y": { - "c0": [9604638503594647125, 1289961608472612514, 6217038149984805214, 2521661352385209130], - "c1": [17168069778630926308, 11309277837895768996, 15154989611154567813, 359271377050603491] + "c0": [ + 9604638503594647125, + 1289961608472612514, + 6217038149984805214, + 2521661352385209130 + ], + "c1": [ + 17168069778630926308, + 11309277837895768996, + 15154989611154567813, + 359271377050603491 + ] }, "infinity": false } ] -} +} \ No newline at end of file diff --git a/core/bin/verification_key_generator_and_server/data/verification_1_key.json b/core/bin/verification_key_generator_and_server/data/verification_1_key.json index 03b5467f097..0310303d2a5 100644 --- a/core/bin/verification_key_generator_and_server/data/verification_1_key.json +++ b/core/bin/verification_key_generator_and_server/data/verification_1_key.json @@ -5,140 +5,395 @@ "num_witness_polys": 0, "gate_setup_commitments": [ { - "x": [7601801432079276288, 15201863322122857773, 8806193975262404580, 2590787273683229105], - "y": [16702527967956763728, 6181870639994435984, 1867123357108619315, 2767403024411663364], + "x": [ + 7601801432079276288, + 15201863322122857773, + 8806193975262404580, + 2590787273683229105 + ], + "y": [ + 16702527967956763728, + 6181870639994435984, + 1867123357108619315, + 2767403024411663364 + ], "infinity": false }, { - "x": [2455316591212726341, 2027771240685247927, 10685588854446154162, 3030775657966372875], - "y": [18300009037843703356, 1612973442135305251, 10693350009422283513, 1442590213691840716], + "x": [ + 2455316591212726341, + 2027771240685247927, + 10685588854446154162, + 3030775657966372875 + ], + "y": [ + 18300009037843703356, + 1612973442135305251, + 10693350009422283513, + 1442590213691840716 + ], "infinity": false }, { - "x": [12311884457715965312, 10390638194798557018, 11306832124741148566, 300716765354847473], - "y": [9707964220031061231, 14753080439380196493, 5717535245627190368, 702219636062983319], + "x": [ + 12311884457715965312, + 10390638194798557018, + 11306832124741148566, + 300716765354847473 + ], + "y": [ + 9707964220031061231, + 14753080439380196493, + 5717535245627190368, + 702219636062983319 + ], "infinity": false }, { - "x": [7758453297146426337, 1673770484163252092, 14607544807007157753, 857313958429629763], - "y": [14921629410308576937, 15298335487420996140, 2704982045392946878, 2611590721009022852], + "x": [ + 7758453297146426337, + 1673770484163252092, + 14607544807007157753, + 857313958429629763 + ], + "y": [ + 14921629410308576937, + 15298335487420996140, + 2704982045392946878, + 2611590721009022852 + ], "infinity": false }, { - "x": [14311011031579784592, 15625526098906078640, 1319146597092063841, 774276845418764858], - "y": [3893523842912943845, 18146056093503974553, 11030513442747849089, 389965813625175232], + "x": [ + 14311011031579784592, + 15625526098906078640, + 1319146597092063841, + 774276845418764858 + ], + "y": [ + 3893523842912943845, + 18146056093503974553, + 11030513442747849089, + 389965813625175232 + ], "infinity": false }, { - "x": [7007915445081129178, 2401922490835966325, 418720827124106725, 2770268368066902308], - "y": [12116308634970006696, 14528630571959109449, 9950799281726780069, 724152027617190422], + "x": [ + 7007915445081129178, + 2401922490835966325, + 418720827124106725, + 2770268368066902308 + ], + "y": [ + 12116308634970006696, + 14528630571959109449, + 9950799281726780069, + 724152027617190422 + ], "infinity": false }, { - "x": [2442021019274420960, 16295185893380203674, 2439146651414642189, 2243335375830582173], - "y": [3782090054162740071, 4704457281172608987, 4410900061257118309, 764611777065564766], + "x": [ + 2442021019274420960, + 16295185893380203674, + 2439146651414642189, + 2243335375830582173 + ], + "y": [ + 3782090054162740071, + 4704457281172608987, + 4410900061257118309, + 764611777065564766 + ], "infinity": false }, { - "x": [17964884224938230037, 7876675311267561320, 16762398450655445790, 1210707988542142007], - "y": [10470358785861361347, 9485656365593190672, 6046378362748740079, 2457285875935475197], + "x": [ + 17964884224938230037, + 7876675311267561320, + 16762398450655445790, + 1210707988542142007 + ], + "y": [ + 10470358785861361347, + 9485656365593190672, + 6046378362748740079, + 2457285875935475197 + ], "infinity": false } ], "gate_selectors_commitments": [ { - "x": [17157526827088368172, 11284084393440625999, 9351565798611728109, 3234841809825307363], - "y": [8319704714678793930, 4159327153032521498, 15356346081767327573, 3239913585027348493], + "x": [ + 17157526827088368172, + 11284084393440625999, + 9351565798611728109, + 3234841809825307363 + ], + "y": [ + 8319704714678793930, + 4159327153032521498, + 15356346081767327573, + 3239913585027348493 + ], "infinity": false }, { - "x": [15456321646261647359, 15891438700803416959, 3317730603133051465, 2641175705943818316], - "y": [1411951218052246200, 1661720531643832913, 13537400120511760371, 2292851110898807736], + "x": [ + 15456321646261647359, + 15891438700803416959, + 3317730603133051465, + 2641175705943818316 + ], + "y": [ + 1411951218052246200, + 1661720531643832913, + 13537400120511760371, + 2292851110898807736 + ], "infinity": false } ], "permutation_commitments": [ { - "x": [10328956753700766823, 2827084848292920926, 6753362467616392790, 3266354497443915853], - "y": [4786671171082888838, 11071539213550223285, 3886224490311829958, 1435384580945051012], + "x": [ + 10328956753700766823, + 2827084848292920926, + 6753362467616392790, + 3266354497443915853 + ], + "y": [ + 4786671171082888838, + 11071539213550223285, + 3886224490311829958, + 1435384580945051012 + ], "infinity": false }, { - "x": [6970901872301032061, 11845499850875638451, 12523013241874863158, 564589203700245768], - "y": [9149991346853645253, 10833082414663634622, 10032445307744641248, 3184550747076826571], + "x": [ + 6970901872301032061, + 11845499850875638451, + 12523013241874863158, + 564589203700245768 + ], + "y": [ + 9149991346853645253, + 10833082414663634622, + 10032445307744641248, + 3184550747076826571 + ], "infinity": false }, { - "x": [2899501934612768796, 7289832407727333580, 15398305180487198919, 2955735241334744486], - "y": [4963499698281910643, 5723522390488208800, 3637467607919864741, 339118267031086794], + "x": [ + 2899501934612768796, + 7289832407727333580, + 15398305180487198919, + 2955735241334744486 + ], + "y": [ + 4963499698281910643, + 5723522390488208800, + 3637467607919864741, + 339118267031086794 + ], "infinity": false }, { - "x": [16561673014946600686, 6893642268089467710, 11554023210615815565, 122477375056362239], - "y": [15978560303000591303, 6087766803442805629, 6114779478264008006, 2753348573959524636], + "x": [ + 16561673014946600686, + 6893642268089467710, + 11554023210615815565, + 122477375056362239 + ], + "y": [ + 15978560303000591303, + 6087766803442805629, + 6114779478264008006, + 2753348573959524636 + ], "infinity": false } ], "total_lookup_entries_length": 30899639, "lookup_selector_commitment": { - "x": [4819118611809066421, 16205075690681881406, 8088108199972047891, 2462381205202312681], - "y": [9403235417076804812, 11746452954984920263, 5479393366572364588, 2168476120537571525], + "x": [ + 4819118611809066421, + 16205075690681881406, + 8088108199972047891, + 2462381205202312681 + ], + "y": [ + 9403235417076804812, + 11746452954984920263, + 5479393366572364588, + 2168476120537571525 + ], "infinity": false }, "lookup_tables_commitments": [ { - "x": [1589280911861251894, 2000192568988587993, 18399902493387281635, 1843483375839232315], - "y": [14712825033319581746, 11500494123399487569, 4370642671010258701, 567620704393396341], + "x": [ + 1589280911861251894, + 2000192568988587993, + 18399902493387281635, + 1843483375839232315 + ], + "y": [ + 14712825033319581746, + 11500494123399487569, + 4370642671010258701, + 567620704393396341 + ], "infinity": false }, { - "x": [0, 0, 0, 0], - "y": [1, 0, 0, 0], + "x": [ + 0, + 0, + 0, + 0 + ], + "y": [ + 1, + 0, + 0, + 0 + ], "infinity": true }, { - "x": [0, 0, 0, 0], - "y": [1, 0, 0, 0], + "x": [ + 0, + 0, + 0, + 0 + ], + "y": [ + 1, + 0, + 0, + 0 + ], "infinity": true }, { - "x": [5989740765536181742, 7510673671757970234, 7988398980529338112, 2047433943537325290], - "y": [14952889876146512965, 17141012675484923048, 328206788961236528, 866564802795139], + "x": [ + 5989740765536181742, + 7510673671757970234, + 7988398980529338112, + 2047433943537325290 + ], + "y": [ + 14952889876146512965, + 17141012675484923048, + 328206788961236528, + 866564802795139 + ], "infinity": false } ], "lookup_table_type_commitment": { - "x": [4824978155651454377, 12191454623887257586, 12973919510878979890, 52932438992466171], - "y": [17857145998747603901, 2092039184434926372, 11018504664231591204, 1321736242331612854], + "x": [ + 4824978155651454377, + 12191454623887257586, + 12973919510878979890, + 52932438992466171 + ], + "y": [ + 17857145998747603901, + 2092039184434926372, + 11018504664231591204, + 1321736242331612854 + ], "infinity": false }, "non_residues": [ - [5, 0, 0, 0], - [7, 0, 0, 0], - [10, 0, 0, 0] + [ + 5, + 0, + 0, + 0 + ], + [ + 7, + 0, + 0, + 0 + ], + [ + 10, + 0, + 0, + 0 + ] ], "g2_elements": [ { "x": { - "c0": [5106727233969649389, 7440829307424791261, 4785637993704342649, 1729627375292849782], - "c1": [10945020018377822914, 17413811393473931026, 8241798111626485029, 1841571559660931130] + "c0": [ + 5106727233969649389, + 7440829307424791261, + 4785637993704342649, + 1729627375292849782 + ], + "c1": [ + 10945020018377822914, + 17413811393473931026, + 8241798111626485029, + 1841571559660931130 + ] }, "y": { - "c0": [5541340697920699818, 16416156555105522555, 5380518976772849807, 1353435754470862315], - "c1": [6173549831154472795, 13567992399387660019, 17050234209342075797, 650358724130500725] + "c0": [ + 5541340697920699818, + 16416156555105522555, + 5380518976772849807, + 1353435754470862315 + ], + "c1": [ + 6173549831154472795, + 13567992399387660019, + 17050234209342075797, + 650358724130500725 + ] }, "infinity": false }, { "x": { - "c0": [9089143573911733168, 11482283522806384523, 13585589533905622862, 79029415676722370], - "c1": [5692040832573735873, 16884514497384809355, 16717166481813659368, 2742131088506155463] + "c0": [ + 9089143573911733168, + 11482283522806384523, + 13585589533905622862, + 79029415676722370 + ], + "c1": [ + 5692040832573735873, + 16884514497384809355, + 16717166481813659368, + 2742131088506155463 + ] }, "y": { - "c0": [9604638503594647125, 1289961608472612514, 6217038149984805214, 2521661352385209130], - "c1": [17168069778630926308, 11309277837895768996, 15154989611154567813, 359271377050603491] + "c0": [ + 9604638503594647125, + 1289961608472612514, + 6217038149984805214, + 2521661352385209130 + ], + "c1": [ + 17168069778630926308, + 11309277837895768996, + 15154989611154567813, + 359271377050603491 + ] }, "infinity": false } ] -} +} \ No newline at end of file diff --git a/core/bin/verification_key_generator_and_server/data/verification_2_key.json b/core/bin/verification_key_generator_and_server/data/verification_2_key.json index 2937d676ad9..79b16257213 100644 --- a/core/bin/verification_key_generator_and_server/data/verification_2_key.json +++ b/core/bin/verification_key_generator_and_server/data/verification_2_key.json @@ -5,140 +5,395 @@ "num_witness_polys": 0, "gate_setup_commitments": [ { - "x": [5518783475412319303, 13900056820557691891, 3293972357974626054, 2215936931279678502], - "y": [7955917949806788616, 13341003959544330056, 2090626280536970058, 340565138339520735], + "x": [ + 5518783475412319303, + 13900056820557691891, + 3293972357974626054, + 2215936931279678502 + ], + "y": [ + 7955917949806788616, + 13341003959544330056, + 2090626280536970058, + 340565138339520735 + ], "infinity": false }, { - "x": [14185170917510557830, 8046892618400404954, 16599645397148333553, 2994187418830549588], - "y": [7234254448777026502, 8445782435526889669, 14116370103157060862, 2248206929083565209], + "x": [ + 14185170917510557830, + 8046892618400404954, + 16599645397148333553, + 2994187418830549588 + ], + "y": [ + 7234254448777026502, + 8445782435526889669, + 14116370103157060862, + 2248206929083565209 + ], "infinity": false }, { - "x": [11154659552703848544, 12941656139895069323, 17062140236305086427, 722110816848028084], - "y": [5009717036998782771, 827592822749515890, 15966856850732642654, 618036931564479654], + "x": [ + 11154659552703848544, + 12941656139895069323, + 17062140236305086427, + 722110816848028084 + ], + "y": [ + 5009717036998782771, + 827592822749515890, + 15966856850732642654, + 618036931564479654 + ], "infinity": false }, { - "x": [5157594213696692987, 15014090155482426422, 706425002062263449, 3203486979181293219], - "y": [14363949081622225749, 9001876918808042476, 1615414451418136701, 444697301726425121], + "x": [ + 5157594213696692987, + 15014090155482426422, + 706425002062263449, + 3203486979181293219 + ], + "y": [ + 14363949081622225749, + 9001876918808042476, + 1615414451418136701, + 444697301726425121 + ], "infinity": false }, { - "x": [9176460251336839321, 17295305184785757140, 7831134341003191604, 2666806971657364559], - "y": [2598277252699259004, 11916936738177575234, 2912317122505195338, 2404138220482962548], + "x": [ + 9176460251336839321, + 17295305184785757140, + 7831134341003191604, + 2666806971657364559 + ], + "y": [ + 2598277252699259004, + 11916936738177575234, + 2912317122505195338, + 2404138220482962548 + ], "infinity": false }, { - "x": [11575910134534349159, 14192914809594698195, 18267718409201448839, 142641722814285206], - "y": [5883506329268908990, 2832339585209792351, 14642260147093833347, 392817691249359885], + "x": [ + 11575910134534349159, + 14192914809594698195, + 18267718409201448839, + 142641722814285206 + ], + "y": [ + 5883506329268908990, + 2832339585209792351, + 14642260147093833347, + 392817691249359885 + ], "infinity": false }, { - "x": [12908012748245269010, 6525727331816152736, 16979431824428028279, 2845131870310951239], - "y": [1571963770034876851, 17602700402136611105, 13310928253737079884, 3347891464097055062], + "x": [ + 12908012748245269010, + 6525727331816152736, + 16979431824428028279, + 2845131870310951239 + ], + "y": [ + 1571963770034876851, + 17602700402136611105, + 13310928253737079884, + 3347891464097055062 + ], "infinity": false }, { - "x": [832167803175150309, 11457734167413059640, 13250442890410377059, 2814079984479722654], - "y": [1463471541691279258, 1744973157713476297, 1204969522442685286, 1269233371856967282], + "x": [ + 832167803175150309, + 11457734167413059640, + 13250442890410377059, + 2814079984479722654 + ], + "y": [ + 1463471541691279258, + 1744973157713476297, + 1204969522442685286, + 1269233371856967282 + ], "infinity": false } ], "gate_selectors_commitments": [ { - "x": [10352656458395970023, 3995520406692994966, 13084432248093257522, 2302839365715839904], - "y": [8225034751786073151, 16771047952615636124, 616708265068224682, 186403683175385821], + "x": [ + 10352656458395970023, + 3995520406692994966, + 13084432248093257522, + 2302839365715839904 + ], + "y": [ + 8225034751786073151, + 16771047952615636124, + 616708265068224682, + 186403683175385821 + ], "infinity": false }, { - "x": [4270731028924703792, 3128341040439802084, 15083522049785140229, 2261189689222904761], - "y": [8781157350107493893, 14766318733918494793, 9428422381369337621, 419743052593117743], + "x": [ + 4270731028924703792, + 3128341040439802084, + 15083522049785140229, + 2261189689222904761 + ], + "y": [ + 8781157350107493893, + 14766318733918494793, + 9428422381369337621, + 419743052593117743 + ], "infinity": false } ], "permutation_commitments": [ { - "x": [11112968480130414212, 11913364106966677596, 36671493864905181, 496058283903160224], - "y": [9691136012048916590, 12909186572206021308, 1700657689434945171, 3072265811815532764], + "x": [ + 11112968480130414212, + 11913364106966677596, + 36671493864905181, + 496058283903160224 + ], + "y": [ + 9691136012048916590, + 12909186572206021308, + 1700657689434945171, + 3072265811815532764 + ], "infinity": false }, { - "x": [11360744654540534278, 9830357778413675465, 5192069313646589173, 113131628631742646], - "y": [5515513518975242303, 323890392099446701, 2255482865429449468, 2322464724330067577], + "x": [ + 11360744654540534278, + 9830357778413675465, + 5192069313646589173, + 113131628631742646 + ], + "y": [ + 5515513518975242303, + 323890392099446701, + 2255482865429449468, + 2322464724330067577 + ], "infinity": false }, { - "x": [3414259545645111239, 5416149397109634837, 12993204506510556426, 2894091844446687144], - "y": [4731949297479191167, 1043460441127916951, 16890401788673829290, 1356564712828723527], + "x": [ + 3414259545645111239, + 5416149397109634837, + 12993204506510556426, + 2894091844446687144 + ], + "y": [ + 4731949297479191167, + 1043460441127916951, + 16890401788673829290, + 1356564712828723527 + ], "infinity": false }, { - "x": [8993182433738017869, 11441314659459910136, 8181494681500166120, 1591321336872387140], - "y": [5278254820002084488, 17932571960593236295, 7626453034762681225, 3463596506399756742], + "x": [ + 8993182433738017869, + 11441314659459910136, + 8181494681500166120, + 1591321336872387140 + ], + "y": [ + 5278254820002084488, + 17932571960593236295, + 7626453034762681225, + 3463596506399756742 + ], "infinity": false } ], "total_lookup_entries_length": 30783671, "lookup_selector_commitment": { - "x": [1336161834228740427, 15823221750660268452, 13689567356831376139, 1839611883700311389], - "y": [14875759795137726191, 20318096045504920, 8816565555629805366, 75556627728969178], + "x": [ + 1336161834228740427, + 15823221750660268452, + 13689567356831376139, + 1839611883700311389 + ], + "y": [ + 14875759795137726191, + 20318096045504920, + 8816565555629805366, + 75556627728969178 + ], "infinity": false }, "lookup_tables_commitments": [ { - "x": [1589280911861251894, 2000192568988587993, 18399902493387281635, 1843483375839232315], - "y": [14712825033319581746, 11500494123399487569, 4370642671010258701, 567620704393396341], + "x": [ + 1589280911861251894, + 2000192568988587993, + 18399902493387281635, + 1843483375839232315 + ], + "y": [ + 14712825033319581746, + 11500494123399487569, + 4370642671010258701, + 567620704393396341 + ], "infinity": false }, { - "x": [0, 0, 0, 0], - "y": [1, 0, 0, 0], + "x": [ + 0, + 0, + 0, + 0 + ], + "y": [ + 1, + 0, + 0, + 0 + ], "infinity": true }, { - "x": [0, 0, 0, 0], - "y": [1, 0, 0, 0], + "x": [ + 0, + 0, + 0, + 0 + ], + "y": [ + 1, + 0, + 0, + 0 + ], "infinity": true }, { - "x": [5989740765536181742, 7510673671757970234, 7988398980529338112, 2047433943537325290], - "y": [14952889876146512965, 17141012675484923048, 328206788961236528, 866564802795139], + "x": [ + 5989740765536181742, + 7510673671757970234, + 7988398980529338112, + 2047433943537325290 + ], + "y": [ + 14952889876146512965, + 17141012675484923048, + 328206788961236528, + 866564802795139 + ], "infinity": false } ], "lookup_table_type_commitment": { - "x": [3408213281770836085, 15382444791373914560, 16110552627056571461, 1161688479331593061], - "y": [13379188756114722390, 12926267823879081751, 14282599792449107495, 3244837013658545871], + "x": [ + 3408213281770836085, + 15382444791373914560, + 16110552627056571461, + 1161688479331593061 + ], + "y": [ + 13379188756114722390, + 12926267823879081751, + 14282599792449107495, + 3244837013658545871 + ], "infinity": false }, "non_residues": [ - [5, 0, 0, 0], - [7, 0, 0, 0], - [10, 0, 0, 0] + [ + 5, + 0, + 0, + 0 + ], + [ + 7, + 0, + 0, + 0 + ], + [ + 10, + 0, + 0, + 0 + ] ], "g2_elements": [ { "x": { - "c0": [5106727233969649389, 7440829307424791261, 4785637993704342649, 1729627375292849782], - "c1": [10945020018377822914, 17413811393473931026, 8241798111626485029, 1841571559660931130] + "c0": [ + 5106727233969649389, + 7440829307424791261, + 4785637993704342649, + 1729627375292849782 + ], + "c1": [ + 10945020018377822914, + 17413811393473931026, + 8241798111626485029, + 1841571559660931130 + ] }, "y": { - "c0": [5541340697920699818, 16416156555105522555, 5380518976772849807, 1353435754470862315], - "c1": [6173549831154472795, 13567992399387660019, 17050234209342075797, 650358724130500725] + "c0": [ + 5541340697920699818, + 16416156555105522555, + 5380518976772849807, + 1353435754470862315 + ], + "c1": [ + 6173549831154472795, + 13567992399387660019, + 17050234209342075797, + 650358724130500725 + ] }, "infinity": false }, { "x": { - "c0": [9089143573911733168, 11482283522806384523, 13585589533905622862, 79029415676722370], - "c1": [5692040832573735873, 16884514497384809355, 16717166481813659368, 2742131088506155463] + "c0": [ + 9089143573911733168, + 11482283522806384523, + 13585589533905622862, + 79029415676722370 + ], + "c1": [ + 5692040832573735873, + 16884514497384809355, + 16717166481813659368, + 2742131088506155463 + ] }, "y": { - "c0": [9604638503594647125, 1289961608472612514, 6217038149984805214, 2521661352385209130], - "c1": [17168069778630926308, 11309277837895768996, 15154989611154567813, 359271377050603491] + "c0": [ + 9604638503594647125, + 1289961608472612514, + 6217038149984805214, + 2521661352385209130 + ], + "c1": [ + 17168069778630926308, + 11309277837895768996, + 15154989611154567813, + 359271377050603491 + ] }, "infinity": false } ] -} +} \ No newline at end of file diff --git a/core/bin/verification_key_generator_and_server/data/verification_3_key.json b/core/bin/verification_key_generator_and_server/data/verification_3_key.json index 88657dcb5cb..efc3726eccd 100644 --- a/core/bin/verification_key_generator_and_server/data/verification_3_key.json +++ b/core/bin/verification_key_generator_and_server/data/verification_3_key.json @@ -5,140 +5,395 @@ "num_witness_polys": 0, "gate_setup_commitments": [ { - "x": [974750104498669965, 8834694375170731028, 17769568165179068263, 1849964290686413257], - "y": [2843958502709968021, 14935491193053445350, 17474331455917570677, 3480256926594645294], + "x": [ + 974750104498669965, + 8834694375170731028, + 17769568165179068263, + 1849964290686413257 + ], + "y": [ + 2843958502709968021, + 14935491193053445350, + 17474331455917570677, + 3480256926594645294 + ], "infinity": false }, { - "x": [12247266302470255326, 5464334033464606744, 14546720066962635103, 3390803970213094244], - "y": [1712883459777313087, 8894684513803091578, 7336029034040207862, 1084942733964754038], + "x": [ + 12247266302470255326, + 5464334033464606744, + 14546720066962635103, + 3390803970213094244 + ], + "y": [ + 1712883459777313087, + 8894684513803091578, + 7336029034040207862, + 1084942733964754038 + ], "infinity": false }, { - "x": [11977576082511042092, 13911318721427630536, 319094179978428102, 953394664847088490], - "y": [5661602966428088380, 18066888770140331931, 10148625466830766086, 532999801462127665], + "x": [ + 11977576082511042092, + 13911318721427630536, + 319094179978428102, + 953394664847088490 + ], + "y": [ + 5661602966428088380, + 18066888770140331931, + 10148625466830766086, + 532999801462127665 + ], "infinity": false }, { - "x": [10638316621700142822, 6209825954391834011, 6018402549491433521, 2545954919587131385], - "y": [3871396302214628234, 10421121582832311901, 3487262368594849688, 47097530491220969], + "x": [ + 10638316621700142822, + 6209825954391834011, + 6018402549491433521, + 2545954919587131385 + ], + "y": [ + 3871396302214628234, + 10421121582832311901, + 3487262368594849688, + 47097530491220969 + ], "infinity": false }, { - "x": [5177078736350587057, 913561536392131154, 5845225668116211782, 1148177573394811202], - "y": [8211065483139055749, 11150796128594731149, 12060516803886544192, 1369115203017663219], + "x": [ + 5177078736350587057, + 913561536392131154, + 5845225668116211782, + 1148177573394811202 + ], + "y": [ + 8211065483139055749, + 11150796128594731149, + 12060516803886544192, + 1369115203017663219 + ], "infinity": false }, { - "x": [13164869081104983842, 8055457852373227775, 14586708642322040767, 1635508642571745116], - "y": [13200963466266892674, 5743120645853669652, 13845956436885115425, 190245686570654182], + "x": [ + 13164869081104983842, + 8055457852373227775, + 14586708642322040767, + 1635508642571745116 + ], + "y": [ + 13200963466266892674, + 5743120645853669652, + 13845956436885115425, + 190245686570654182 + ], "infinity": false }, { - "x": [14509622964666644543, 14326815147327339718, 14403865749203816615, 3250250446651605086], - "y": [16982880826411734238, 7223038929743846372, 13243677057981888895, 3343376109946605946], + "x": [ + 14509622964666644543, + 14326815147327339718, + 14403865749203816615, + 3250250446651605086 + ], + "y": [ + 16982880826411734238, + 7223038929743846372, + 13243677057981888895, + 3343376109946605946 + ], "infinity": false }, { - "x": [2186705028467599783, 10754157155083578321, 9835223072941921904, 622934131449235283], - "y": [18146384691082289702, 3710418457832183420, 9065618198278602094, 1385809660894704773], + "x": [ + 2186705028467599783, + 10754157155083578321, + 9835223072941921904, + 622934131449235283 + ], + "y": [ + 18146384691082289702, + 3710418457832183420, + 9065618198278602094, + 1385809660894704773 + ], "infinity": false } ], "gate_selectors_commitments": [ { - "x": [17931943108498820694, 4676695383650659094, 9553383984112211657, 2582659305204352628], - "y": [12954711565738560879, 8077826911980788091, 11395265968148743331, 2855607571527172113], + "x": [ + 17931943108498820694, + 4676695383650659094, + 9553383984112211657, + 2582659305204352628 + ], + "y": [ + 12954711565738560879, + 8077826911980788091, + 11395265968148743331, + 2855607571527172113 + ], "infinity": false }, { - "x": [1579731699170899555, 2930979681521170129, 14423227389748779725, 3843483067412713], - "y": [12757858203360676100, 11658617912640524507, 18404463112235833117, 216398038700598122], + "x": [ + 1579731699170899555, + 2930979681521170129, + 14423227389748779725, + 3843483067412713 + ], + "y": [ + 12757858203360676100, + 11658617912640524507, + 18404463112235833117, + 216398038700598122 + ], "infinity": false } ], "permutation_commitments": [ { - "x": [17803109611249396349, 11283859494780689211, 13999735262776985506, 1616317395767274315], - "y": [4702080082438660327, 10318021266807502248, 1343468927015043909, 1458947702127238817], + "x": [ + 17803109611249396349, + 11283859494780689211, + 13999735262776985506, + 1616317395767274315 + ], + "y": [ + 4702080082438660327, + 10318021266807502248, + 1343468927015043909, + 1458947702127238817 + ], "infinity": false }, { - "x": [13991248091180946539, 9572452770464844385, 7281256466642465445, 1589821161594539260], - "y": [16330872592308522669, 11643961078499332590, 7621286777424912214, 1961788650881680195], + "x": [ + 13991248091180946539, + 9572452770464844385, + 7281256466642465445, + 1589821161594539260 + ], + "y": [ + 16330872592308522669, + 11643961078499332590, + 7621286777424912214, + 1961788650881680195 + ], "infinity": false }, { - "x": [14854997120241085994, 893859077870132655, 10853933192917459827, 2671373989840251193], - "y": [11492939649862087988, 1925620351626108277, 12007636802682139817, 1315346956977275889], + "x": [ + 14854997120241085994, + 893859077870132655, + 10853933192917459827, + 2671373989840251193 + ], + "y": [ + 11492939649862087988, + 1925620351626108277, + 12007636802682139817, + 1315346956977275889 + ], "infinity": false }, { - "x": [13343929807426311972, 3234215523073799496, 4658804614957804350, 123243726695066707], - "y": [14958243475655956241, 4034118281425140294, 1019154098165161379, 2657524750158613958], + "x": [ + 13343929807426311972, + 3234215523073799496, + 4658804614957804350, + 123243726695066707 + ], + "y": [ + 14958243475655956241, + 4034118281425140294, + 1019154098165161379, + 2657524750158613958 + ], "infinity": false } ], "total_lookup_entries_length": 15208907, "lookup_selector_commitment": { - "x": [3869759959209659371, 17545310949245876386, 6597968549104995840, 1547642766729861753], - "y": [5629222579571396955, 16315207580711001852, 15947168783307514478, 2534006098464270073], + "x": [ + 3869759959209659371, + 17545310949245876386, + 6597968549104995840, + 1547642766729861753 + ], + "y": [ + 5629222579571396955, + 16315207580711001852, + 15947168783307514478, + 2534006098464270073 + ], "infinity": false }, "lookup_tables_commitments": [ { - "x": [12925597216490182210, 13030942092034120135, 17733316148446765999, 112547709703624791], - "y": [13293415162200038331, 13010565234555563811, 15476251035925496743, 2588541998389664114], + "x": [ + 12925597216490182210, + 13030942092034120135, + 17733316148446765999, + 112547709703624791 + ], + "y": [ + 13293415162200038331, + 13010565234555563811, + 15476251035925496743, + 2588541998389664114 + ], "infinity": false }, { - "x": [11118240121224901946, 9394562257959111170, 9026436993514314918, 1751747619588842429], - "y": [6039590802345873394, 17531716309156986038, 1711770599161550805, 1941094644175870288], + "x": [ + 11118240121224901946, + 9394562257959111170, + 9026436993514314918, + 1751747619588842429 + ], + "y": [ + 6039590802345873394, + 17531716309156986038, + 1711770599161550805, + 1941094644175870288 + ], "infinity": false }, { - "x": [17999903301086933877, 10468070608989378923, 3479353092436121335, 607756992244480908], - "y": [10863079642303790364, 4737012301447477097, 4605789209164294308, 1430572887755557386], + "x": [ + 17999903301086933877, + 10468070608989378923, + 3479353092436121335, + 607756992244480908 + ], + "y": [ + 10863079642303790364, + 4737012301447477097, + 4605789209164294308, + 1430572887755557386 + ], "infinity": false }, { - "x": [4609762018249049814, 4113097757442144437, 4725434011535510809, 2977599521231955696], - "y": [14636094180551257630, 8819447661702130886, 1091706295519429215, 56675985696303183], + "x": [ + 4609762018249049814, + 4113097757442144437, + 4725434011535510809, + 2977599521231955696 + ], + "y": [ + 14636094180551257630, + 8819447661702130886, + 1091706295519429215, + 56675985696303183 + ], "infinity": false } ], "lookup_table_type_commitment": { - "x": [6380759427317126685, 6672737265924091686, 14552369645196037262, 1668823783737500912], - "y": [4951884449279236371, 16324193898368483526, 10792452284404778772, 929770155761471462], + "x": [ + 6380759427317126685, + 6672737265924091686, + 14552369645196037262, + 1668823783737500912 + ], + "y": [ + 4951884449279236371, + 16324193898368483526, + 10792452284404778772, + 929770155761471462 + ], "infinity": false }, "non_residues": [ - [5, 0, 0, 0], - [7, 0, 0, 0], - [10, 0, 0, 0] + [ + 5, + 0, + 0, + 0 + ], + [ + 7, + 0, + 0, + 0 + ], + [ + 10, + 0, + 0, + 0 + ] ], "g2_elements": [ { "x": { - "c0": [5106727233969649389, 7440829307424791261, 4785637993704342649, 1729627375292849782], - "c1": [10945020018377822914, 17413811393473931026, 8241798111626485029, 1841571559660931130] + "c0": [ + 5106727233969649389, + 7440829307424791261, + 4785637993704342649, + 1729627375292849782 + ], + "c1": [ + 10945020018377822914, + 17413811393473931026, + 8241798111626485029, + 1841571559660931130 + ] }, "y": { - "c0": [5541340697920699818, 16416156555105522555, 5380518976772849807, 1353435754470862315], - "c1": [6173549831154472795, 13567992399387660019, 17050234209342075797, 650358724130500725] + "c0": [ + 5541340697920699818, + 16416156555105522555, + 5380518976772849807, + 1353435754470862315 + ], + "c1": [ + 6173549831154472795, + 13567992399387660019, + 17050234209342075797, + 650358724130500725 + ] }, "infinity": false }, { "x": { - "c0": [9089143573911733168, 11482283522806384523, 13585589533905622862, 79029415676722370], - "c1": [5692040832573735873, 16884514497384809355, 16717166481813659368, 2742131088506155463] + "c0": [ + 9089143573911733168, + 11482283522806384523, + 13585589533905622862, + 79029415676722370 + ], + "c1": [ + 5692040832573735873, + 16884514497384809355, + 16717166481813659368, + 2742131088506155463 + ] }, "y": { - "c0": [9604638503594647125, 1289961608472612514, 6217038149984805214, 2521661352385209130], - "c1": [17168069778630926308, 11309277837895768996, 15154989611154567813, 359271377050603491] + "c0": [ + 9604638503594647125, + 1289961608472612514, + 6217038149984805214, + 2521661352385209130 + ], + "c1": [ + 17168069778630926308, + 11309277837895768996, + 15154989611154567813, + 359271377050603491 + ] }, "infinity": false } ] -} +} \ No newline at end of file diff --git a/core/bin/verification_key_generator_and_server/data/verification_4_key.json b/core/bin/verification_key_generator_and_server/data/verification_4_key.json index dc0c5da74a6..8d42dcd66a7 100644 --- a/core/bin/verification_key_generator_and_server/data/verification_4_key.json +++ b/core/bin/verification_key_generator_and_server/data/verification_4_key.json @@ -5,140 +5,395 @@ "num_witness_polys": 0, "gate_setup_commitments": [ { - "x": [15923176050075197, 8963905519117333456, 5333091548039957996, 1660697180439834807], - "y": [13105864494044341635, 10079874572012628853, 4164109084931753781, 1860950003357484648], + "x": [ + 15923176050075197, + 8963905519117333456, + 5333091548039957996, + 1660697180439834807 + ], + "y": [ + 13105864494044341635, + 10079874572012628853, + 4164109084931753781, + 1860950003357484648 + ], "infinity": false }, { - "x": [8216018177730810417, 13660800917029254431, 2933384097067755755, 2823425599268575868], - "y": [8768863192718196559, 10146282684570870426, 8275806247588563419, 605489936306033583], + "x": [ + 8216018177730810417, + 13660800917029254431, + 2933384097067755755, + 2823425599268575868 + ], + "y": [ + 8768863192718196559, + 10146282684570870426, + 8275806247588563419, + 605489936306033583 + ], "infinity": false }, { - "x": [4277344855257545209, 11172040917478096607, 4489086903928758598, 289283798032159440], - "y": [10444137083253378550, 12133212848977612596, 6748791972701343485, 286274227999569844], + "x": [ + 4277344855257545209, + 11172040917478096607, + 4489086903928758598, + 289283798032159440 + ], + "y": [ + 10444137083253378550, + 12133212848977612596, + 6748791972701343485, + 286274227999569844 + ], "infinity": false }, { - "x": [8861797510071553254, 12734094237204882518, 13692967202881086499, 641906135411222522], - "y": [6831762763487302461, 11965405347371646114, 6218256502970252800, 3201462388136754725], + "x": [ + 8861797510071553254, + 12734094237204882518, + 13692967202881086499, + 641906135411222522 + ], + "y": [ + 6831762763487302461, + 11965405347371646114, + 6218256502970252800, + 3201462388136754725 + ], "infinity": false }, { - "x": [12385743015818134054, 16282219738575446638, 3256359841301423419, 505673042938576760], - "y": [6744956686738207932, 8994291190634790001, 16789606231722015883, 2027930268272962928], + "x": [ + 12385743015818134054, + 16282219738575446638, + 3256359841301423419, + 505673042938576760 + ], + "y": [ + 6744956686738207932, + 8994291190634790001, + 16789606231722015883, + 2027930268272962928 + ], "infinity": false }, { - "x": [13671822069226357541, 818021157447551159, 10542481209144358852, 2459295197762128786], - "y": [1072649761929447549, 6089126583512618706, 1178131210084507361, 1066836948212725576], + "x": [ + 13671822069226357541, + 818021157447551159, + 10542481209144358852, + 2459295197762128786 + ], + "y": [ + 1072649761929447549, + 6089126583512618706, + 1178131210084507361, + 1066836948212725576 + ], "infinity": false }, { - "x": [16878956366815094090, 364977461173568122, 5439594588743996145, 1265442855735725449], - "y": [11461704536083653156, 660278441271820299, 4314245569905306892, 1438663846765259508], + "x": [ + 16878956366815094090, + 364977461173568122, + 5439594588743996145, + 1265442855735725449 + ], + "y": [ + 11461704536083653156, + 660278441271820299, + 4314245569905306892, + 1438663846765259508 + ], "infinity": false }, { - "x": [9038539654045396650, 539827912679485452, 15399544523862100757, 1256406598444490417], - "y": [5422113905848106255, 4943961807853536385, 10022409325033689104, 3200702511424842211], + "x": [ + 9038539654045396650, + 539827912679485452, + 15399544523862100757, + 1256406598444490417 + ], + "y": [ + 5422113905848106255, + 4943961807853536385, + 10022409325033689104, + 3200702511424842211 + ], "infinity": false } ], "gate_selectors_commitments": [ { - "x": [7750990741566547331, 12040155777441846781, 3000981333322867315, 2393292192734976436], - "y": [3394853839941291504, 944019051205640111, 1104911864338577098, 2127308956089601096], + "x": [ + 7750990741566547331, + 12040155777441846781, + 3000981333322867315, + 2393292192734976436 + ], + "y": [ + 3394853839941291504, + 944019051205640111, + 1104911864338577098, + 2127308956089601096 + ], "infinity": false }, { - "x": [4735140124663926465, 16935779121597983173, 17111626619540374574, 2327973550601526140], - "y": [8990848735371189388, 4589751206662798166, 7575424772436241307, 2798852347400154642], + "x": [ + 4735140124663926465, + 16935779121597983173, + 17111626619540374574, + 2327973550601526140 + ], + "y": [ + 8990848735371189388, + 4589751206662798166, + 7575424772436241307, + 2798852347400154642 + ], "infinity": false } ], "permutation_commitments": [ { - "x": [4765077060699177749, 15235935045874519477, 2022237788491579392, 354385727984957703], - "y": [11620113321350620961, 2521830680983779826, 14047226057605943635, 2718701882953208503], + "x": [ + 4765077060699177749, + 15235935045874519477, + 2022237788491579392, + 354385727984957703 + ], + "y": [ + 11620113321350620961, + 2521830680983779826, + 14047226057605943635, + 2718701882953208503 + ], "infinity": false }, { - "x": [12967015398643083015, 1100660813730542482, 7835181433213557652, 803165211156388599], - "y": [8557385569712401227, 535900682745452035, 16083571717847325979, 396765644246918860], + "x": [ + 12967015398643083015, + 1100660813730542482, + 7835181433213557652, + 803165211156388599 + ], + "y": [ + 8557385569712401227, + 535900682745452035, + 16083571717847325979, + 396765644246918860 + ], "infinity": false }, { - "x": [6868107733370365435, 17106601841261210672, 12219407605084986215, 2345246684976405066], - "y": [17532412968783851743, 9996315626158111485, 17970945522106166231, 1003764081419207606], + "x": [ + 6868107733370365435, + 17106601841261210672, + 12219407605084986215, + 2345246684976405066 + ], + "y": [ + 17532412968783851743, + 9996315626158111485, + 17970945522106166231, + 1003764081419207606 + ], "infinity": false }, { - "x": [7011201477832405407, 8818123127103997131, 2979445003396953339, 318603240233076406], - "y": [11712108043964996282, 3474989587891133574, 3983451673298542860, 1181581919257021598], + "x": [ + 7011201477832405407, + 8818123127103997131, + 2979445003396953339, + 318603240233076406 + ], + "y": [ + 11712108043964996282, + 3474989587891133574, + 3983451673298542860, + 1181581919257021598 + ], "infinity": false } ], "total_lookup_entries_length": 8484642, "lookup_selector_commitment": { - "x": [27459247093738343, 1785927757103538268, 14972116880195568621, 1034224917068963325], - "y": [17453858127001596558, 6200103235089742197, 16245568162666829501, 651193715230511441], + "x": [ + 27459247093738343, + 1785927757103538268, + 14972116880195568621, + 1034224917068963325 + ], + "y": [ + 17453858127001596558, + 6200103235089742197, + 16245568162666829501, + 651193715230511441 + ], "infinity": false }, "lookup_tables_commitments": [ { - "x": [697552212563769686, 7709943502535418760, 15019345407325619175, 3433081085078580257], - "y": [8668947019840357731, 14698901351824712883, 15088598879190660424, 2873081208166433946], + "x": [ + 697552212563769686, + 7709943502535418760, + 15019345407325619175, + 3433081085078580257 + ], + "y": [ + 8668947019840357731, + 14698901351824712883, + 15088598879190660424, + 2873081208166433946 + ], "infinity": false }, { - "x": [7893133928909060673, 7064922516930129957, 3592836702741304814, 2239702595710114437], - "y": [7691360541875191519, 11379321785127235277, 6653616064071569031, 2555434628517540774], + "x": [ + 7893133928909060673, + 7064922516930129957, + 3592836702741304814, + 2239702595710114437 + ], + "y": [ + 7691360541875191519, + 11379321785127235277, + 6653616064071569031, + 2555434628517540774 + ], "infinity": false }, { - "x": [6243944238013052821, 7908243182210136125, 17178099109525791299, 2553622184721264566], - "y": [736121280088239428, 6158073429758170526, 11217302997977204117, 2594798912020899417], + "x": [ + 6243944238013052821, + 7908243182210136125, + 17178099109525791299, + 2553622184721264566 + ], + "y": [ + 736121280088239428, + 6158073429758170526, + 11217302997977204117, + 2594798912020899417 + ], "infinity": false }, { - "x": [2064240298596094591, 16917726764104887991, 11042784977532408536, 3377647228930170830], - "y": [10635525052494768819, 387400048616497096, 9379200582543310995, 1571766153703296253], + "x": [ + 2064240298596094591, + 16917726764104887991, + 11042784977532408536, + 3377647228930170830 + ], + "y": [ + 10635525052494768819, + 387400048616497096, + 9379200582543310995, + 1571766153703296253 + ], "infinity": false } ], "lookup_table_type_commitment": { - "x": [14868101692362122308, 8135288013508071846, 9460482611527381887, 512823635961282598], - "y": [8358211286664762188, 3532634521932288534, 5862145521507736138, 1807935137626658536], + "x": [ + 14868101692362122308, + 8135288013508071846, + 9460482611527381887, + 512823635961282598 + ], + "y": [ + 8358211286664762188, + 3532634521932288534, + 5862145521507736138, + 1807935137626658536 + ], "infinity": false }, "non_residues": [ - [5, 0, 0, 0], - [7, 0, 0, 0], - [10, 0, 0, 0] + [ + 5, + 0, + 0, + 0 + ], + [ + 7, + 0, + 0, + 0 + ], + [ + 10, + 0, + 0, + 0 + ] ], "g2_elements": [ { "x": { - "c0": [5106727233969649389, 7440829307424791261, 4785637993704342649, 1729627375292849782], - "c1": [10945020018377822914, 17413811393473931026, 8241798111626485029, 1841571559660931130] + "c0": [ + 5106727233969649389, + 7440829307424791261, + 4785637993704342649, + 1729627375292849782 + ], + "c1": [ + 10945020018377822914, + 17413811393473931026, + 8241798111626485029, + 1841571559660931130 + ] }, "y": { - "c0": [5541340697920699818, 16416156555105522555, 5380518976772849807, 1353435754470862315], - "c1": [6173549831154472795, 13567992399387660019, 17050234209342075797, 650358724130500725] + "c0": [ + 5541340697920699818, + 16416156555105522555, + 5380518976772849807, + 1353435754470862315 + ], + "c1": [ + 6173549831154472795, + 13567992399387660019, + 17050234209342075797, + 650358724130500725 + ] }, "infinity": false }, { "x": { - "c0": [9089143573911733168, 11482283522806384523, 13585589533905622862, 79029415676722370], - "c1": [5692040832573735873, 16884514497384809355, 16717166481813659368, 2742131088506155463] + "c0": [ + 9089143573911733168, + 11482283522806384523, + 13585589533905622862, + 79029415676722370 + ], + "c1": [ + 5692040832573735873, + 16884514497384809355, + 16717166481813659368, + 2742131088506155463 + ] }, "y": { - "c0": [9604638503594647125, 1289961608472612514, 6217038149984805214, 2521661352385209130], - "c1": [17168069778630926308, 11309277837895768996, 15154989611154567813, 359271377050603491] + "c0": [ + 9604638503594647125, + 1289961608472612514, + 6217038149984805214, + 2521661352385209130 + ], + "c1": [ + 17168069778630926308, + 11309277837895768996, + 15154989611154567813, + 359271377050603491 + ] }, "infinity": false } ] -} +} \ No newline at end of file diff --git a/core/bin/verification_key_generator_and_server/data/verification_5_key.json b/core/bin/verification_key_generator_and_server/data/verification_5_key.json index a76fe1018e5..b9a31b919f1 100644 --- a/core/bin/verification_key_generator_and_server/data/verification_5_key.json +++ b/core/bin/verification_key_generator_and_server/data/verification_5_key.json @@ -5,140 +5,395 @@ "num_witness_polys": 0, "gate_setup_commitments": [ { - "x": [12322129650547620518, 4320033807979823995, 4503809593276792861, 630958448551597950], - "y": [4947307957322067889, 1897773243457379956, 1563584362302565484, 802109862761172056], + "x": [ + 12322129650547620518, + 4320033807979823995, + 4503809593276792861, + 630958448551597950 + ], + "y": [ + 4947307957322067889, + 1897773243457379956, + 1563584362302565484, + 802109862761172056 + ], "infinity": false }, { - "x": [5860641327684713918, 16885915425353665713, 7037370194263044401, 1837438863045303696], - "y": [13386292219804271609, 4960073609197619993, 7328379249582994262, 191728769121948464], + "x": [ + 5860641327684713918, + 16885915425353665713, + 7037370194263044401, + 1837438863045303696 + ], + "y": [ + 13386292219804271609, + 4960073609197619993, + 7328379249582994262, + 191728769121948464 + ], "infinity": false }, { - "x": [9390502900121613993, 17218409610830310329, 4830832371938391322, 1805131323553685028], - "y": [15707040961083920686, 16216062707384374953, 16957058843586642758, 1341814870249072628], + "x": [ + 9390502900121613993, + 17218409610830310329, + 4830832371938391322, + 1805131323553685028 + ], + "y": [ + 15707040961083920686, + 16216062707384374953, + 16957058843586642758, + 1341814870249072628 + ], "infinity": false }, { - "x": [969252611989285232, 181405773082212747, 11110666465356509832, 1888802363524687207], - "y": [5293477339288357424, 12076391347720360980, 11422893229655154394, 3165450734777404812], + "x": [ + 969252611989285232, + 181405773082212747, + 11110666465356509832, + 1888802363524687207 + ], + "y": [ + 5293477339288357424, + 12076391347720360980, + 11422893229655154394, + 3165450734777404812 + ], "infinity": false }, { - "x": [642192487369089358, 9585449571929647331, 3847960352134961209, 984199510163128792], - "y": [13950390676065893881, 975256099594703300, 253120832016214204, 1860679841584192219], + "x": [ + 642192487369089358, + 9585449571929647331, + 3847960352134961209, + 984199510163128792 + ], + "y": [ + 13950390676065893881, + 975256099594703300, + 253120832016214204, + 1860679841584192219 + ], "infinity": false }, { - "x": [3564548447861991296, 6278944799487206913, 1163701992635366786, 3214877162977671335], - "y": [13131873482361140204, 14012120801722220187, 13254371011592477950, 1082108070640175604], + "x": [ + 3564548447861991296, + 6278944799487206913, + 1163701992635366786, + 3214877162977671335 + ], + "y": [ + 13131873482361140204, + 14012120801722220187, + 13254371011592477950, + 1082108070640175604 + ], "infinity": false }, { - "x": [14190764189814537607, 18412181832598818289, 17213387738194113336, 1662783623959823461], - "y": [7987199081435644988, 17119136750046780209, 8770669323846078492, 3183489396270587333], + "x": [ + 14190764189814537607, + 18412181832598818289, + 17213387738194113336, + 1662783623959823461 + ], + "y": [ + 7987199081435644988, + 17119136750046780209, + 8770669323846078492, + 3183489396270587333 + ], "infinity": false }, { - "x": [14638218826597535389, 16409988612234258347, 5025411344133541245, 603088654230685360], - "y": [12538363432956258836, 6558875956959901550, 2415879426147965883, 750702584304895055], + "x": [ + 14638218826597535389, + 16409988612234258347, + 5025411344133541245, + 603088654230685360 + ], + "y": [ + 12538363432956258836, + 6558875956959901550, + 2415879426147965883, + 750702584304895055 + ], "infinity": false } ], "gate_selectors_commitments": [ { - "x": [2599908293582905760, 13534206398743622493, 15926090086034346074, 467418127379229858], - "y": [9529512934078774185, 1459270552041127965, 13418846370362665102, 2270996612016337371], + "x": [ + 2599908293582905760, + 13534206398743622493, + 15926090086034346074, + 467418127379229858 + ], + "y": [ + 9529512934078774185, + 1459270552041127965, + 13418846370362665102, + 2270996612016337371 + ], "infinity": false }, { - "x": [7264275706530137047, 5590205367072257545, 17891440127697345143, 360638857846382524], - "y": [17983779934218975397, 1625779403076670241, 1474025795387210129, 1716171421120825643], + "x": [ + 7264275706530137047, + 5590205367072257545, + 17891440127697345143, + 360638857846382524 + ], + "y": [ + 17983779934218975397, + 1625779403076670241, + 1474025795387210129, + 1716171421120825643 + ], "infinity": false } ], "permutation_commitments": [ { - "x": [9354841115000244260, 12887310615208346489, 1120617137774653400, 424227936372254439], - "y": [3626714025954019309, 4480975902927818206, 10093567956580931634, 2779897825000836477], + "x": [ + 9354841115000244260, + 12887310615208346489, + 1120617137774653400, + 424227936372254439 + ], + "y": [ + 3626714025954019309, + 4480975902927818206, + 10093567956580931634, + 2779897825000836477 + ], "infinity": false }, { - "x": [1864884782104066211, 1247154271168453374, 9982166936353409582, 1177339527115773898], - "y": [9932597332303163060, 1888682277213109000, 11684220277443154622, 3062389133489783806], + "x": [ + 1864884782104066211, + 1247154271168453374, + 9982166936353409582, + 1177339527115773898 + ], + "y": [ + 9932597332303163060, + 1888682277213109000, + 11684220277443154622, + 3062389133489783806 + ], "infinity": false }, { - "x": [9943021177878836437, 9004866876172522532, 14085451328492136137, 1567186274425392936], - "y": [7148906168793986389, 4780330524752436486, 10067456648871712650, 179752856567560382], + "x": [ + 9943021177878836437, + 9004866876172522532, + 14085451328492136137, + 1567186274425392936 + ], + "y": [ + 7148906168793986389, + 4780330524752436486, + 10067456648871712650, + 179752856567560382 + ], "infinity": false }, { - "x": [14745822832390509907, 13862030626549782961, 10000268356302875837, 705042314567833799], - "y": [11091254259539384938, 11733968109785394056, 11099103738494585500, 1527456782567955191], + "x": [ + 14745822832390509907, + 13862030626549782961, + 10000268356302875837, + 705042314567833799 + ], + "y": [ + 11091254259539384938, + 11733968109785394056, + 11099103738494585500, + 1527456782567955191 + ], "infinity": false } ], "total_lookup_entries_length": 35330543, "lookup_selector_commitment": { - "x": [12333191731462980214, 17841370099698959347, 12878670991018181621, 2894319630687016858], - "y": [76816727314643395, 3214684791046221459, 878301108738499830, 126016925902987736], + "x": [ + 12333191731462980214, + 17841370099698959347, + 12878670991018181621, + 2894319630687016858 + ], + "y": [ + 76816727314643395, + 3214684791046221459, + 878301108738499830, + 126016925902987736 + ], "infinity": false }, "lookup_tables_commitments": [ { - "x": [911668445361375614, 12752365066512000136, 11550232015863976467, 2053619216798992367], - "y": [4194339833917391280, 1643071887467668153, 3377480965202592691, 1664272901450533719], + "x": [ + 911668445361375614, + 12752365066512000136, + 11550232015863976467, + 2053619216798992367 + ], + "y": [ + 4194339833917391280, + 1643071887467668153, + 3377480965202592691, + 1664272901450533719 + ], "infinity": false }, { - "x": [2999316735203966181, 5189676006781764591, 14324679313847304783, 1264086978509739587], - "y": [8714172036038650967, 10907167170124829028, 8950970593162102458, 1596853051185997037], + "x": [ + 2999316735203966181, + 5189676006781764591, + 14324679313847304783, + 1264086978509739587 + ], + "y": [ + 8714172036038650967, + 10907167170124829028, + 8950970593162102458, + 1596853051185997037 + ], "infinity": false }, { - "x": [1146500486770850326, 13562754408872334896, 14063471769392190265, 3387351506820193517], - "y": [6677788829230735422, 15425668102208730571, 5341291772716012975, 539156410041791428], + "x": [ + 1146500486770850326, + 13562754408872334896, + 14063471769392190265, + 3387351506820193517 + ], + "y": [ + 6677788829230735422, + 15425668102208730571, + 5341291772716012975, + 539156410041791428 + ], "infinity": false }, { - "x": [18159886519320172405, 4286826840324377773, 16364826089434525345, 228697666397725767], - "y": [4850633487261444791, 6327421534074497160, 12883776034588695446, 1510314148471267214], + "x": [ + 18159886519320172405, + 4286826840324377773, + 16364826089434525345, + 228697666397725767 + ], + "y": [ + 4850633487261444791, + 6327421534074497160, + 12883776034588695446, + 1510314148471267214 + ], "infinity": false } ], "lookup_table_type_commitment": { - "x": [18245233954308230592, 8193493714287610439, 6521078295132558240, 861511081336275611], - "y": [4275834222266292944, 13179071278128968874, 5943013356852335765, 2456639561657053045], + "x": [ + 18245233954308230592, + 8193493714287610439, + 6521078295132558240, + 861511081336275611 + ], + "y": [ + 4275834222266292944, + 13179071278128968874, + 5943013356852335765, + 2456639561657053045 + ], "infinity": false }, "non_residues": [ - [5, 0, 0, 0], - [7, 0, 0, 0], - [10, 0, 0, 0] + [ + 5, + 0, + 0, + 0 + ], + [ + 7, + 0, + 0, + 0 + ], + [ + 10, + 0, + 0, + 0 + ] ], "g2_elements": [ { "x": { - "c0": [5106727233969649389, 7440829307424791261, 4785637993704342649, 1729627375292849782], - "c1": [10945020018377822914, 17413811393473931026, 8241798111626485029, 1841571559660931130] + "c0": [ + 5106727233969649389, + 7440829307424791261, + 4785637993704342649, + 1729627375292849782 + ], + "c1": [ + 10945020018377822914, + 17413811393473931026, + 8241798111626485029, + 1841571559660931130 + ] }, "y": { - "c0": [5541340697920699818, 16416156555105522555, 5380518976772849807, 1353435754470862315], - "c1": [6173549831154472795, 13567992399387660019, 17050234209342075797, 650358724130500725] + "c0": [ + 5541340697920699818, + 16416156555105522555, + 5380518976772849807, + 1353435754470862315 + ], + "c1": [ + 6173549831154472795, + 13567992399387660019, + 17050234209342075797, + 650358724130500725 + ] }, "infinity": false }, { "x": { - "c0": [9089143573911733168, 11482283522806384523, 13585589533905622862, 79029415676722370], - "c1": [5692040832573735873, 16884514497384809355, 16717166481813659368, 2742131088506155463] + "c0": [ + 9089143573911733168, + 11482283522806384523, + 13585589533905622862, + 79029415676722370 + ], + "c1": [ + 5692040832573735873, + 16884514497384809355, + 16717166481813659368, + 2742131088506155463 + ] }, "y": { - "c0": [9604638503594647125, 1289961608472612514, 6217038149984805214, 2521661352385209130], - "c1": [17168069778630926308, 11309277837895768996, 15154989611154567813, 359271377050603491] + "c0": [ + 9604638503594647125, + 1289961608472612514, + 6217038149984805214, + 2521661352385209130 + ], + "c1": [ + 17168069778630926308, + 11309277837895768996, + 15154989611154567813, + 359271377050603491 + ] }, "infinity": false } ] -} +} \ No newline at end of file diff --git a/core/bin/verification_key_generator_and_server/data/verification_6_key.json b/core/bin/verification_key_generator_and_server/data/verification_6_key.json index 7c8fbc650bb..34419df1770 100644 --- a/core/bin/verification_key_generator_and_server/data/verification_6_key.json +++ b/core/bin/verification_key_generator_and_server/data/verification_6_key.json @@ -5,140 +5,395 @@ "num_witness_polys": 0, "gate_setup_commitments": [ { - "x": [11033020679838791108, 14920056278440370765, 8156477685651219112, 2935096142913695825], - "y": [12780055516709256833, 966513406268819160, 9584266886886532866, 892347068344972829], + "x": [ + 11033020679838791108, + 14920056278440370765, + 8156477685651219112, + 2935096142913695825 + ], + "y": [ + 12780055516709256833, + 966513406268819160, + 9584266886886532866, + 892347068344972829 + ], "infinity": false }, { - "x": [4044870432040348042, 10630300946926732771, 3143480015080245177, 323917785885883620], - "y": [2297905282612888789, 8206728682979815807, 10628767928228215441, 3062326525278498604], + "x": [ + 4044870432040348042, + 10630300946926732771, + 3143480015080245177, + 323917785885883620 + ], + "y": [ + 2297905282612888789, + 8206728682979815807, + 10628767928228215441, + 3062326525278498604 + ], "infinity": false }, { - "x": [14760731158538087565, 9176522400170689419, 9855180338242634009, 2456568616568530201], - "y": [5168103953295979961, 397013651969935557, 13864468728668213717, 2925074735515169158], + "x": [ + 14760731158538087565, + 9176522400170689419, + 9855180338242634009, + 2456568616568530201 + ], + "y": [ + 5168103953295979961, + 397013651969935557, + 13864468728668213717, + 2925074735515169158 + ], "infinity": false }, { - "x": [13613691592548742743, 11339389230513898784, 4864282628000142183, 2568915564796772962], - "y": [13074021698952750513, 14891339562597317806, 6145754680491802845, 913243322463864468], + "x": [ + 13613691592548742743, + 11339389230513898784, + 4864282628000142183, + 2568915564796772962 + ], + "y": [ + 13074021698952750513, + 14891339562597317806, + 6145754680491802845, + 913243322463864468 + ], "infinity": false }, { - "x": [9607983563343027008, 1604609357347728263, 6735137627175405143, 91305611485454778], - "y": [2068449139446365265, 6171753015906067998, 16290186276604645197, 420889087081901603], + "x": [ + 9607983563343027008, + 1604609357347728263, + 6735137627175405143, + 91305611485454778 + ], + "y": [ + 2068449139446365265, + 6171753015906067998, + 16290186276604645197, + 420889087081901603 + ], "infinity": false }, { - "x": [15994614598808477960, 5137738490508028659, 6599503545391493738, 3293094250487745346], - "y": [3246688300070721763, 8836841286539929132, 1231014124908407748, 3042941126579517307], + "x": [ + 15994614598808477960, + 5137738490508028659, + 6599503545391493738, + 3293094250487745346 + ], + "y": [ + 3246688300070721763, + 8836841286539929132, + 1231014124908407748, + 3042941126579517307 + ], "infinity": false }, { - "x": [12550390789117808745, 14001030013656521177, 16383284077678821701, 1815317458772356897], - "y": [10125044837604978181, 7468984969058409331, 592554137766258541, 2877688586321491725], + "x": [ + 12550390789117808745, + 14001030013656521177, + 16383284077678821701, + 1815317458772356897 + ], + "y": [ + 10125044837604978181, + 7468984969058409331, + 592554137766258541, + 2877688586321491725 + ], "infinity": false }, { - "x": [12238091769471133989, 184716847866634800, 5888077423956723698, 609118759536864800], - "y": [7725369615076384544, 7561073323636510559, 10473734750023783127, 861766554781597742], + "x": [ + 12238091769471133989, + 184716847866634800, + 5888077423956723698, + 609118759536864800 + ], + "y": [ + 7725369615076384544, + 7561073323636510559, + 10473734750023783127, + 861766554781597742 + ], "infinity": false } ], "gate_selectors_commitments": [ { - "x": [1206127807467530207, 3510053718168412786, 7933459343694333819, 3179950874373950282], - "y": [5784856107466398982, 395767970566909293, 11244200096534021583, 2068407511544404377], + "x": [ + 1206127807467530207, + 3510053718168412786, + 7933459343694333819, + 3179950874373950282 + ], + "y": [ + 5784856107466398982, + 395767970566909293, + 11244200096534021583, + 2068407511544404377 + ], "infinity": false }, { - "x": [4044617248058764838, 11957266999135308674, 17621747993137866783, 990156155955733134], - "y": [17234504892477991728, 17558826298225495489, 9349531438753716103, 2656409262947709594], + "x": [ + 4044617248058764838, + 11957266999135308674, + 17621747993137866783, + 990156155955733134 + ], + "y": [ + 17234504892477991728, + 17558826298225495489, + 9349531438753716103, + 2656409262947709594 + ], "infinity": false } ], "permutation_commitments": [ { - "x": [4308597000331285311, 12130199317436319902, 3842336010209461436, 191866453597778475], - "y": [2144400171783010971, 13016087318985913183, 7166370365336301922, 2216888390030560212], + "x": [ + 4308597000331285311, + 12130199317436319902, + 3842336010209461436, + 191866453597778475 + ], + "y": [ + 2144400171783010971, + 13016087318985913183, + 7166370365336301922, + 2216888390030560212 + ], "infinity": false }, { - "x": [4661184458541745063, 12423889401726065791, 11959346001895915074, 779668716585305501], - "y": [16401363790535442499, 7367694133722005848, 8015837005184593399, 454166987511489961], + "x": [ + 4661184458541745063, + 12423889401726065791, + 11959346001895915074, + 779668716585305501 + ], + "y": [ + 16401363790535442499, + 7367694133722005848, + 8015837005184593399, + 454166987511489961 + ], "infinity": false }, { - "x": [858215262803403659, 1405268530667707386, 7763962169005921611, 2845435536097215865], - "y": [10639490331338262540, 6397733211512468794, 968161689973799899, 2054756257253905633], + "x": [ + 858215262803403659, + 1405268530667707386, + 7763962169005921611, + 2845435536097215865 + ], + "y": [ + 10639490331338262540, + 6397733211512468794, + 968161689973799899, + 2054756257253905633 + ], "infinity": false }, { - "x": [17338818659525246480, 13318488425310212471, 10548319374858973842, 87084958643052105], - "y": [2279840344577984658, 15197280761751903251, 16019225334594459873, 149925650787595538], + "x": [ + 17338818659525246480, + 13318488425310212471, + 10548319374858973842, + 87084958643052105 + ], + "y": [ + 2279840344577984658, + 15197280761751903251, + 16019225334594459873, + 149925650787595538 + ], "infinity": false } ], "total_lookup_entries_length": 3054916, "lookup_selector_commitment": { - "x": [4844230422625825285, 956290027823441223, 763010695794739308, 2426170829255106638], - "y": [13850520521470006763, 9003994589054655373, 10310690204425503422, 3012516431885755457], + "x": [ + 4844230422625825285, + 956290027823441223, + 763010695794739308, + 2426170829255106638 + ], + "y": [ + 13850520521470006763, + 9003994589054655373, + 10310690204425503422, + 3012516431885755457 + ], "infinity": false }, "lookup_tables_commitments": [ { - "x": [5825422128268478267, 9219263846299851036, 3879231702557190566, 1702488722758880769], - "y": [18311881100262470992, 5742998199368802392, 18106865487471159417, 502191980176920012], + "x": [ + 5825422128268478267, + 9219263846299851036, + 3879231702557190566, + 1702488722758880769 + ], + "y": [ + 18311881100262470992, + 5742998199368802392, + 18106865487471159417, + 502191980176920012 + ], "infinity": false }, { - "x": [17195892082859417081, 7890531942603584793, 2381805632820057528, 3173232410464566465], - "y": [16359614627947132075, 3459600273035137079, 4550762061432972122, 3394559699318358224], + "x": [ + 17195892082859417081, + 7890531942603584793, + 2381805632820057528, + 3173232410464566465 + ], + "y": [ + 16359614627947132075, + 3459600273035137079, + 4550762061432972122, + 3394559699318358224 + ], "infinity": false }, { - "x": [1716103379277390185, 18097936269579187542, 16357329729761063450, 1508640059338197502], - "y": [11014806739603983364, 4396503314588777389, 9397245609635151055, 1703957955248411380], + "x": [ + 1716103379277390185, + 18097936269579187542, + 16357329729761063450, + 1508640059338197502 + ], + "y": [ + 11014806739603983364, + 4396503314588777389, + 9397245609635151055, + 1703957955248411380 + ], "infinity": false }, { - "x": [4770171350693477354, 17110558673192292253, 9799800677557311408, 761984875463445481], - "y": [1560561403388310063, 31331275310848146, 287152055803835484, 457826332542037277], + "x": [ + 4770171350693477354, + 17110558673192292253, + 9799800677557311408, + 761984875463445481 + ], + "y": [ + 1560561403388310063, + 31331275310848146, + 287152055803835484, + 457826332542037277 + ], "infinity": false } ], "lookup_table_type_commitment": { - "x": [16775586915653722908, 9787338077086882544, 8381721730521821042, 2974660093975661578], - "y": [3011389235487891234, 15409507493813096391, 17416460976276029026, 324418288749844627], + "x": [ + 16775586915653722908, + 9787338077086882544, + 8381721730521821042, + 2974660093975661578 + ], + "y": [ + 3011389235487891234, + 15409507493813096391, + 17416460976276029026, + 324418288749844627 + ], "infinity": false }, "non_residues": [ - [5, 0, 0, 0], - [7, 0, 0, 0], - [10, 0, 0, 0] + [ + 5, + 0, + 0, + 0 + ], + [ + 7, + 0, + 0, + 0 + ], + [ + 10, + 0, + 0, + 0 + ] ], "g2_elements": [ { "x": { - "c0": [5106727233969649389, 7440829307424791261, 4785637993704342649, 1729627375292849782], - "c1": [10945020018377822914, 17413811393473931026, 8241798111626485029, 1841571559660931130] + "c0": [ + 5106727233969649389, + 7440829307424791261, + 4785637993704342649, + 1729627375292849782 + ], + "c1": [ + 10945020018377822914, + 17413811393473931026, + 8241798111626485029, + 1841571559660931130 + ] }, "y": { - "c0": [5541340697920699818, 16416156555105522555, 5380518976772849807, 1353435754470862315], - "c1": [6173549831154472795, 13567992399387660019, 17050234209342075797, 650358724130500725] + "c0": [ + 5541340697920699818, + 16416156555105522555, + 5380518976772849807, + 1353435754470862315 + ], + "c1": [ + 6173549831154472795, + 13567992399387660019, + 17050234209342075797, + 650358724130500725 + ] }, "infinity": false }, { "x": { - "c0": [9089143573911733168, 11482283522806384523, 13585589533905622862, 79029415676722370], - "c1": [5692040832573735873, 16884514497384809355, 16717166481813659368, 2742131088506155463] + "c0": [ + 9089143573911733168, + 11482283522806384523, + 13585589533905622862, + 79029415676722370 + ], + "c1": [ + 5692040832573735873, + 16884514497384809355, + 16717166481813659368, + 2742131088506155463 + ] }, "y": { - "c0": [9604638503594647125, 1289961608472612514, 6217038149984805214, 2521661352385209130], - "c1": [17168069778630926308, 11309277837895768996, 15154989611154567813, 359271377050603491] + "c0": [ + 9604638503594647125, + 1289961608472612514, + 6217038149984805214, + 2521661352385209130 + ], + "c1": [ + 17168069778630926308, + 11309277837895768996, + 15154989611154567813, + 359271377050603491 + ] }, "infinity": false } ] -} +} \ No newline at end of file diff --git a/core/bin/verification_key_generator_and_server/data/verification_7_key.json b/core/bin/verification_key_generator_and_server/data/verification_7_key.json index 056dd64ad54..406afcf4f0f 100644 --- a/core/bin/verification_key_generator_and_server/data/verification_7_key.json +++ b/core/bin/verification_key_generator_and_server/data/verification_7_key.json @@ -5,140 +5,395 @@ "num_witness_polys": 0, "gate_setup_commitments": [ { - "x": [14104278525941001335, 6652111379088654370, 12369045377338511525, 969809670184836151], - "y": [10111598525423302991, 15018239425425696172, 3683372413830991953, 1023765059890131543], + "x": [ + 14104278525941001335, + 6652111379088654370, + 12369045377338511525, + 969809670184836151 + ], + "y": [ + 10111598525423302991, + 15018239425425696172, + 3683372413830991953, + 1023765059890131543 + ], "infinity": false }, { - "x": [11576486884237685781, 16315823052257401029, 9860864515877414033, 3179959598270002012], - "y": [487035971539979311, 5573003039451484772, 15711637819381564577, 1904127920269177012], + "x": [ + 11576486884237685781, + 16315823052257401029, + 9860864515877414033, + 3179959598270002012 + ], + "y": [ + 487035971539979311, + 5573003039451484772, + 15711637819381564577, + 1904127920269177012 + ], "infinity": false }, { - "x": [18299921128106602792, 211731469708793711, 17645028854462121436, 675870769139913517], - "y": [15146647508675165454, 18353083579110652488, 12704645658780892142, 2929235299763077823], + "x": [ + 18299921128106602792, + 211731469708793711, + 17645028854462121436, + 675870769139913517 + ], + "y": [ + 15146647508675165454, + 18353083579110652488, + 12704645658780892142, + 2929235299763077823 + ], "infinity": false }, { - "x": [11570586127780196277, 2363872676317471379, 7386811009552915084, 959006902628416514], - "y": [17455735716787098890, 14879699386306994564, 5628100821420984321, 2862659911936763739], + "x": [ + 11570586127780196277, + 2363872676317471379, + 7386811009552915084, + 959006902628416514 + ], + "y": [ + 17455735716787098890, + 14879699386306994564, + 5628100821420984321, + 2862659911936763739 + ], "infinity": false }, { - "x": [8746328571248006135, 17089435014355939378, 8764506524471462449, 1810135458362589443], - "y": [14070512019208911265, 8756287737315170424, 14821473955626613, 1559545289765661890], + "x": [ + 8746328571248006135, + 17089435014355939378, + 8764506524471462449, + 1810135458362589443 + ], + "y": [ + 14070512019208911265, + 8756287737315170424, + 14821473955626613, + 1559545289765661890 + ], "infinity": false }, { - "x": [2113591086436573082, 12629483649401688389, 11845953673798951216, 3081238281103628853], - "y": [727696133406005469, 14413827745813557208, 6425035421156126073, 291513487083052109], + "x": [ + 2113591086436573082, + 12629483649401688389, + 11845953673798951216, + 3081238281103628853 + ], + "y": [ + 727696133406005469, + 14413827745813557208, + 6425035421156126073, + 291513487083052109 + ], "infinity": false }, { - "x": [15346257923988607256, 10403316660718504706, 7158515894996917286, 2702098910103276762], - "y": [16559143492878738107, 12716298061927369795, 12296985344891017351, 2814996798832983835], + "x": [ + 15346257923988607256, + 10403316660718504706, + 7158515894996917286, + 2702098910103276762 + ], + "y": [ + 16559143492878738107, + 12716298061927369795, + 12296985344891017351, + 2814996798832983835 + ], "infinity": false }, { - "x": [2213195001372039295, 8878300942582564036, 10524986226191936528, 1815326540993196034], - "y": [11397120982692424098, 4455537142488107627, 14205354993332845055, 2313809587433567240], + "x": [ + 2213195001372039295, + 8878300942582564036, + 10524986226191936528, + 1815326540993196034 + ], + "y": [ + 11397120982692424098, + 4455537142488107627, + 14205354993332845055, + 2313809587433567240 + ], "infinity": false } ], "gate_selectors_commitments": [ { - "x": [14849046431510808003, 11699893139960418168, 6000246307731364190, 3362832011707902866], - "y": [3242560497217933852, 11672398501106836413, 987926723326096281, 2451226739475091625], + "x": [ + 14849046431510808003, + 11699893139960418168, + 6000246307731364190, + 3362832011707902866 + ], + "y": [ + 3242560497217933852, + 11672398501106836413, + 987926723326096281, + 2451226739475091625 + ], "infinity": false }, { - "x": [9272095445402359796, 1201046264826394411, 7424934554242366462, 1125893484262333608], - "y": [15903920299684884420, 17703294385387204708, 2256937129195345942, 1905295733884217610], + "x": [ + 9272095445402359796, + 1201046264826394411, + 7424934554242366462, + 1125893484262333608 + ], + "y": [ + 15903920299684884420, + 17703294385387204708, + 2256937129195345942, + 1905295733884217610 + ], "infinity": false } ], "permutation_commitments": [ { - "x": [7591926766688292250, 10457199375342460747, 3214976192729961314, 1412860682249358355], - "y": [16894260140402496006, 3666374878391815131, 15124268261678582348, 1340579262756129480], + "x": [ + 7591926766688292250, + 10457199375342460747, + 3214976192729961314, + 1412860682249358355 + ], + "y": [ + 16894260140402496006, + 3666374878391815131, + 15124268261678582348, + 1340579262756129480 + ], "infinity": false }, { - "x": [2963934507934439034, 17415763666461861018, 6331792462137338053, 3122358526111186727], - "y": [15040784043381591388, 7188410244350767315, 14077554108063383431, 1704329843327300001], + "x": [ + 2963934507934439034, + 17415763666461861018, + 6331792462137338053, + 3122358526111186727 + ], + "y": [ + 15040784043381591388, + 7188410244350767315, + 14077554108063383431, + 1704329843327300001 + ], "infinity": false }, { - "x": [7967507884960122293, 13509230570773443525, 11125712791473385552, 2241808950326876268], - "y": [10594180941877323940, 17179032413109513856, 17941607623778808075, 646138820984886096], + "x": [ + 7967507884960122293, + 13509230570773443525, + 11125712791473385552, + 2241808950326876268 + ], + "y": [ + 10594180941877323940, + 17179032413109513856, + 17941607623778808075, + 646138820984886096 + ], "infinity": false }, { - "x": [4729534828155895283, 15489050734511381239, 4847364931161261393, 2461584260035042491], - "y": [15255817542606978857, 6517429187947361297, 17127878630247240853, 3389541567226838859], + "x": [ + 4729534828155895283, + 15489050734511381239, + 4847364931161261393, + 2461584260035042491 + ], + "y": [ + 15255817542606978857, + 6517429187947361297, + 17127878630247240853, + 3389541567226838859 + ], "infinity": false } ], "total_lookup_entries_length": 40724289, "lookup_selector_commitment": { - "x": [5449769839889646584, 2072406321611922291, 9391796773218391195, 2377769168011090955], - "y": [1789189431152658324, 2639430755172378798, 136577695530283091, 3045539535973502646], + "x": [ + 5449769839889646584, + 2072406321611922291, + 9391796773218391195, + 2377769168011090955 + ], + "y": [ + 1789189431152658324, + 2639430755172378798, + 136577695530283091, + 3045539535973502646 + ], "infinity": false }, "lookup_tables_commitments": [ { - "x": [631990924006796604, 16139625628991115157, 13331739325995827711, 1062301837743594995], - "y": [15303054606290800139, 15906872095881647437, 7093896572295020249, 1342952934989901142], + "x": [ + 631990924006796604, + 16139625628991115157, + 13331739325995827711, + 1062301837743594995 + ], + "y": [ + 15303054606290800139, + 15906872095881647437, + 7093896572295020249, + 1342952934989901142 + ], "infinity": false }, { - "x": [7983921919542246393, 13296544189644416678, 17081022784392007697, 1980832835348244027], - "y": [10874958134865200330, 7702740658637630534, 14052057929798961943, 3193353539419869016], + "x": [ + 7983921919542246393, + 13296544189644416678, + 17081022784392007697, + 1980832835348244027 + ], + "y": [ + 10874958134865200330, + 7702740658637630534, + 14052057929798961943, + 3193353539419869016 + ], "infinity": false }, { - "x": [1114587284824996932, 4636906500482867924, 15328247172597030456, 87946895873973686], - "y": [15573033830207915877, 5194694185599035278, 2562407345425607214, 2782078999306862675], + "x": [ + 1114587284824996932, + 4636906500482867924, + 15328247172597030456, + 87946895873973686 + ], + "y": [ + 15573033830207915877, + 5194694185599035278, + 2562407345425607214, + 2782078999306862675 + ], "infinity": false }, { - "x": [18225112781127431982, 18048613958187123807, 7325490730844456621, 1953409020724855888], - "y": [7577000130125917198, 6193701449695751861, 4102082927677054717, 395350071385269650], + "x": [ + 18225112781127431982, + 18048613958187123807, + 7325490730844456621, + 1953409020724855888 + ], + "y": [ + 7577000130125917198, + 6193701449695751861, + 4102082927677054717, + 395350071385269650 + ], "infinity": false } ], "lookup_table_type_commitment": { - "x": [12639039925867405095, 9606685454938605275, 7802675863289639223, 1948831418843225802], - "y": [11059150608777595761, 10458812733010634961, 16772660325487078311, 340608886692078192], + "x": [ + 12639039925867405095, + 9606685454938605275, + 7802675863289639223, + 1948831418843225802 + ], + "y": [ + 11059150608777595761, + 10458812733010634961, + 16772660325487078311, + 340608886692078192 + ], "infinity": false }, "non_residues": [ - [5, 0, 0, 0], - [7, 0, 0, 0], - [10, 0, 0, 0] + [ + 5, + 0, + 0, + 0 + ], + [ + 7, + 0, + 0, + 0 + ], + [ + 10, + 0, + 0, + 0 + ] ], "g2_elements": [ { "x": { - "c0": [5106727233969649389, 7440829307424791261, 4785637993704342649, 1729627375292849782], - "c1": [10945020018377822914, 17413811393473931026, 8241798111626485029, 1841571559660931130] + "c0": [ + 5106727233969649389, + 7440829307424791261, + 4785637993704342649, + 1729627375292849782 + ], + "c1": [ + 10945020018377822914, + 17413811393473931026, + 8241798111626485029, + 1841571559660931130 + ] }, "y": { - "c0": [5541340697920699818, 16416156555105522555, 5380518976772849807, 1353435754470862315], - "c1": [6173549831154472795, 13567992399387660019, 17050234209342075797, 650358724130500725] + "c0": [ + 5541340697920699818, + 16416156555105522555, + 5380518976772849807, + 1353435754470862315 + ], + "c1": [ + 6173549831154472795, + 13567992399387660019, + 17050234209342075797, + 650358724130500725 + ] }, "infinity": false }, { "x": { - "c0": [9089143573911733168, 11482283522806384523, 13585589533905622862, 79029415676722370], - "c1": [5692040832573735873, 16884514497384809355, 16717166481813659368, 2742131088506155463] + "c0": [ + 9089143573911733168, + 11482283522806384523, + 13585589533905622862, + 79029415676722370 + ], + "c1": [ + 5692040832573735873, + 16884514497384809355, + 16717166481813659368, + 2742131088506155463 + ] }, "y": { - "c0": [9604638503594647125, 1289961608472612514, 6217038149984805214, 2521661352385209130], - "c1": [17168069778630926308, 11309277837895768996, 15154989611154567813, 359271377050603491] + "c0": [ + 9604638503594647125, + 1289961608472612514, + 6217038149984805214, + 2521661352385209130 + ], + "c1": [ + 17168069778630926308, + 11309277837895768996, + 15154989611154567813, + 359271377050603491 + ] }, "infinity": false } ] -} +} \ No newline at end of file diff --git a/core/bin/verification_key_generator_and_server/data/verification_8_key.json b/core/bin/verification_key_generator_and_server/data/verification_8_key.json index 23d632840ec..b8511e17b75 100644 --- a/core/bin/verification_key_generator_and_server/data/verification_8_key.json +++ b/core/bin/verification_key_generator_and_server/data/verification_8_key.json @@ -5,140 +5,395 @@ "num_witness_polys": 0, "gate_setup_commitments": [ { - "x": [1834112096176967541, 5137529514715617427, 6540843391881340212, 3033401888759110412], - "y": [8910602970094475216, 13169513767982514776, 5761530093694221441, 2733318557350866268], + "x": [ + 1834112096176967541, + 5137529514715617427, + 6540843391881340212, + 3033401888759110412 + ], + "y": [ + 8910602970094475216, + 13169513767982514776, + 5761530093694221441, + 2733318557350866268 + ], "infinity": false }, { - "x": [4701064149158432365, 5425087325981406309, 7911131985858828309, 1683257627049186617], - "y": [13565328904521460918, 17013189171844282257, 4897087111183007258, 2345861178674095559], + "x": [ + 4701064149158432365, + 5425087325981406309, + 7911131985858828309, + 1683257627049186617 + ], + "y": [ + 13565328904521460918, + 17013189171844282257, + 4897087111183007258, + 2345861178674095559 + ], "infinity": false }, { - "x": [17285353863442654170, 17787410547699779811, 4803131526909484890, 1607731426619418092], - "y": [3219378920021652314, 11046862703797106703, 10595836629242151972, 2970963661532337787], + "x": [ + 17285353863442654170, + 17787410547699779811, + 4803131526909484890, + 1607731426619418092 + ], + "y": [ + 3219378920021652314, + 11046862703797106703, + 10595836629242151972, + 2970963661532337787 + ], "infinity": false }, { - "x": [6619857367954187649, 8023974497004524989, 10088058961892288757, 938018804109053807], - "y": [15549411064757453720, 1776820811429478220, 8222111141823917842, 290593315633281086], + "x": [ + 6619857367954187649, + 8023974497004524989, + 10088058961892288757, + 938018804109053807 + ], + "y": [ + 15549411064757453720, + 1776820811429478220, + 8222111141823917842, + 290593315633281086 + ], "infinity": false }, { - "x": [3338931670632164423, 11330459786926502111, 13560408114559586439, 233279858410037466], - "y": [9757980615881472290, 6475296714459436577, 15954545788543926629, 2522580407814024231], + "x": [ + 3338931670632164423, + 11330459786926502111, + 13560408114559586439, + 233279858410037466 + ], + "y": [ + 9757980615881472290, + 6475296714459436577, + 15954545788543926629, + 2522580407814024231 + ], "infinity": false }, { - "x": [2168501453409628158, 16417992951888116942, 1994813140597965849, 1938552030580060698], - "y": [2393885012813093493, 5109365147685051030, 4449898145078443978, 996506294158321126], + "x": [ + 2168501453409628158, + 16417992951888116942, + 1994813140597965849, + 1938552030580060698 + ], + "y": [ + 2393885012813093493, + 5109365147685051030, + 4449898145078443978, + 996506294158321126 + ], "infinity": false }, { - "x": [8163446935422765754, 17127634458571165785, 18101155318188210010, 1502677094108070955], - "y": [4184320355428455210, 15479528531137595907, 8455846016430686855, 2570922865513301289], + "x": [ + 8163446935422765754, + 17127634458571165785, + 18101155318188210010, + 1502677094108070955 + ], + "y": [ + 4184320355428455210, + 15479528531137595907, + 8455846016430686855, + 2570922865513301289 + ], "infinity": false }, { - "x": [407579941387952352, 17088458915370169940, 16892753644011369852, 2421666516533613805], - "y": [597435837737447683, 18122233368438707442, 4844832744563923839, 396103093107107006], + "x": [ + 407579941387952352, + 17088458915370169940, + 16892753644011369852, + 2421666516533613805 + ], + "y": [ + 597435837737447683, + 18122233368438707442, + 4844832744563923839, + 396103093107107006 + ], "infinity": false } ], "gate_selectors_commitments": [ { - "x": [16242434178832819081, 2218928756172422054, 5871927983870638422, 810020555846721779], - "y": [9387856576677982883, 5119490172321159350, 14295435318421985120, 1325809191818871673], + "x": [ + 16242434178832819081, + 2218928756172422054, + 5871927983870638422, + 810020555846721779 + ], + "y": [ + 9387856576677982883, + 5119490172321159350, + 14295435318421985120, + 1325809191818871673 + ], "infinity": false }, { - "x": [5933965238687071287, 10681704800081225943, 14555731010498897395, 959799154476325145], - "y": [1501632601560034962, 9401704677918783964, 12292111854761501889, 858616662661742045], + "x": [ + 5933965238687071287, + 10681704800081225943, + 14555731010498897395, + 959799154476325145 + ], + "y": [ + 1501632601560034962, + 9401704677918783964, + 12292111854761501889, + 858616662661742045 + ], "infinity": false } ], "permutation_commitments": [ { - "x": [12841507457971520539, 6525486152471484441, 3744486588589217686, 2769451038405535407], - "y": [14145668232228974364, 9864097401535863500, 12665512227995054273, 1710776254334161256], + "x": [ + 12841507457971520539, + 6525486152471484441, + 3744486588589217686, + 2769451038405535407 + ], + "y": [ + 14145668232228974364, + 9864097401535863500, + 12665512227995054273, + 1710776254334161256 + ], "infinity": false }, { - "x": [12108157388466567796, 12008825937320240484, 11228446795405478904, 1520424921904150640], - "y": [18157047055378899649, 10836823561088895074, 583613418617515639, 2570085764232471205], + "x": [ + 12108157388466567796, + 12008825937320240484, + 11228446795405478904, + 1520424921904150640 + ], + "y": [ + 18157047055378899649, + 10836823561088895074, + 583613418617515639, + 2570085764232471205 + ], "infinity": false }, { - "x": [3117226099128838157, 10181632193024509490, 1215328570209780930, 1536961491401844084], - "y": [11646905141441654681, 6168936708987385450, 14459621573162108487, 2047975568887748173], + "x": [ + 3117226099128838157, + 10181632193024509490, + 1215328570209780930, + 1536961491401844084 + ], + "y": [ + 11646905141441654681, + 6168936708987385450, + 14459621573162108487, + 2047975568887748173 + ], "infinity": false }, { - "x": [12034664246790330785, 12032082546920592595, 12002839514296456095, 3009479689157977152], - "y": [180421277197569955, 5815678523367268562, 11718416396488597085, 408186057258055191], + "x": [ + 12034664246790330785, + 12032082546920592595, + 12002839514296456095, + 3009479689157977152 + ], + "y": [ + 180421277197569955, + 5815678523367268562, + 11718416396488597085, + 408186057258055191 + ], "infinity": false } ], "total_lookup_entries_length": 34384753, "lookup_selector_commitment": { - "x": [3872970821419373956, 13556503327407661223, 12832313376327677595, 211677646774476601], - "y": [17281673428499585093, 235933066531227024, 17890327653152417391, 2551853991532334733], + "x": [ + 3872970821419373956, + 13556503327407661223, + 12832313376327677595, + 211677646774476601 + ], + "y": [ + 17281673428499585093, + 235933066531227024, + 17890327653152417391, + 2551853991532334733 + ], "infinity": false }, "lookup_tables_commitments": [ { - "x": [14943975734974680929, 9516136771242606543, 6695719565456036638, 3449077049666620393], - "y": [11678209093898264827, 4499447145490933412, 6317798459829178953, 1439219764789809864], + "x": [ + 14943975734974680929, + 9516136771242606543, + 6695719565456036638, + 3449077049666620393 + ], + "y": [ + 11678209093898264827, + 4499447145490933412, + 6317798459829178953, + 1439219764789809864 + ], "infinity": false }, { - "x": [13501290183905491407, 17914451638435951710, 5188762915201956497, 1220375585898114161], - "y": [14519533874806433487, 409100046306023, 2203176115240501563, 3105700623762337563], + "x": [ + 13501290183905491407, + 17914451638435951710, + 5188762915201956497, + 1220375585898114161 + ], + "y": [ + 14519533874806433487, + 409100046306023, + 2203176115240501563, + 3105700623762337563 + ], "infinity": false }, { - "x": [13968159480895722732, 6973568812120893251, 6250254745096478587, 2299355969860561070], - "y": [7695944005480078577, 12009671787784557856, 13727042561077817002, 219052945806305675], + "x": [ + 13968159480895722732, + 6973568812120893251, + 6250254745096478587, + 2299355969860561070 + ], + "y": [ + 7695944005480078577, + 12009671787784557856, + 13727042561077817002, + 219052945806305675 + ], "infinity": false }, { - "x": [4871629130106420314, 4091595855728790015, 1851744390500340594, 3123168382710331270], - "y": [9703969956757970162, 1215036492891076659, 11876727836856213678, 2640893636590396388], + "x": [ + 4871629130106420314, + 4091595855728790015, + 1851744390500340594, + 3123168382710331270 + ], + "y": [ + 9703969956757970162, + 1215036492891076659, + 11876727836856213678, + 2640893636590396388 + ], "infinity": false } ], "lookup_table_type_commitment": { - "x": [10299044894603982393, 4664166516779563250, 13124827128688646542, 3361599897730972314], - "y": [18259946931458798404, 10145479316480429602, 15446978899103328376, 265382288883021070], + "x": [ + 10299044894603982393, + 4664166516779563250, + 13124827128688646542, + 3361599897730972314 + ], + "y": [ + 18259946931458798404, + 10145479316480429602, + 15446978899103328376, + 265382288883021070 + ], "infinity": false }, "non_residues": [ - [5, 0, 0, 0], - [7, 0, 0, 0], - [10, 0, 0, 0] + [ + 5, + 0, + 0, + 0 + ], + [ + 7, + 0, + 0, + 0 + ], + [ + 10, + 0, + 0, + 0 + ] ], "g2_elements": [ { "x": { - "c0": [5106727233969649389, 7440829307424791261, 4785637993704342649, 1729627375292849782], - "c1": [10945020018377822914, 17413811393473931026, 8241798111626485029, 1841571559660931130] + "c0": [ + 5106727233969649389, + 7440829307424791261, + 4785637993704342649, + 1729627375292849782 + ], + "c1": [ + 10945020018377822914, + 17413811393473931026, + 8241798111626485029, + 1841571559660931130 + ] }, "y": { - "c0": [5541340697920699818, 16416156555105522555, 5380518976772849807, 1353435754470862315], - "c1": [6173549831154472795, 13567992399387660019, 17050234209342075797, 650358724130500725] + "c0": [ + 5541340697920699818, + 16416156555105522555, + 5380518976772849807, + 1353435754470862315 + ], + "c1": [ + 6173549831154472795, + 13567992399387660019, + 17050234209342075797, + 650358724130500725 + ] }, "infinity": false }, { "x": { - "c0": [9089143573911733168, 11482283522806384523, 13585589533905622862, 79029415676722370], - "c1": [5692040832573735873, 16884514497384809355, 16717166481813659368, 2742131088506155463] + "c0": [ + 9089143573911733168, + 11482283522806384523, + 13585589533905622862, + 79029415676722370 + ], + "c1": [ + 5692040832573735873, + 16884514497384809355, + 16717166481813659368, + 2742131088506155463 + ] }, "y": { - "c0": [9604638503594647125, 1289961608472612514, 6217038149984805214, 2521661352385209130], - "c1": [17168069778630926308, 11309277837895768996, 15154989611154567813, 359271377050603491] + "c0": [ + 9604638503594647125, + 1289961608472612514, + 6217038149984805214, + 2521661352385209130 + ], + "c1": [ + 17168069778630926308, + 11309277837895768996, + 15154989611154567813, + 359271377050603491 + ] }, "infinity": false } ] -} +} \ No newline at end of file diff --git a/core/bin/verification_key_generator_and_server/data/verification_9_key.json b/core/bin/verification_key_generator_and_server/data/verification_9_key.json index 598f2083b41..75de5f75c78 100644 --- a/core/bin/verification_key_generator_and_server/data/verification_9_key.json +++ b/core/bin/verification_key_generator_and_server/data/verification_9_key.json @@ -5,140 +5,395 @@ "num_witness_polys": 0, "gate_setup_commitments": [ { - "x": [15041888416700822899, 15908701850433687369, 6928173929840686173, 501601364708497325], - "y": [9443860646360881208, 15174745959183347299, 3341918218952258763, 1470216750942469587], + "x": [ + 15041888416700822899, + 15908701850433687369, + 6928173929840686173, + 501601364708497325 + ], + "y": [ + 9443860646360881208, + 15174745959183347299, + 3341918218952258763, + 1470216750942469587 + ], "infinity": false }, { - "x": [1713492202424532619, 5921868784153327820, 3919870428680620477, 2459274846398943915], - "y": [8012717129874416534, 13032363221581987781, 9462161206147300944, 1151760065513271967], + "x": [ + 1713492202424532619, + 5921868784153327820, + 3919870428680620477, + 2459274846398943915 + ], + "y": [ + 8012717129874416534, + 13032363221581987781, + 9462161206147300944, + 1151760065513271967 + ], "infinity": false }, { - "x": [6636128327108235840, 9362733145474272574, 7779132015244601843, 474802631021936400], - "y": [3900992471196218787, 113851245079995197, 7493904056590361535, 3140468871801097229], + "x": [ + 6636128327108235840, + 9362733145474272574, + 7779132015244601843, + 474802631021936400 + ], + "y": [ + 3900992471196218787, + 113851245079995197, + 7493904056590361535, + 3140468871801097229 + ], "infinity": false }, { - "x": [4340102674797800902, 8715432707094353745, 4331145745081713603, 45456583984841487], - "y": [18326546742044058782, 15443239165658185296, 9765917874876721196, 687859761729374839], + "x": [ + 4340102674797800902, + 8715432707094353745, + 4331145745081713603, + 45456583984841487 + ], + "y": [ + 18326546742044058782, + 15443239165658185296, + 9765917874876721196, + 687859761729374839 + ], "infinity": false }, { - "x": [10804694580890857975, 10550068287306981825, 14956274043654722561, 3060589920124935341], - "y": [17010223672048359580, 263749806111642373, 8349695975133446526, 2826070525773268002], + "x": [ + 10804694580890857975, + 10550068287306981825, + 14956274043654722561, + 3060589920124935341 + ], + "y": [ + 17010223672048359580, + 263749806111642373, + 8349695975133446526, + 2826070525773268002 + ], "infinity": false }, { - "x": [16133249269780245267, 4275571784340824698, 6262619645627758753, 3231281899173719188], - "y": [11839616617849449709, 7142633755989890055, 10840735473548209733, 2847350786075278882], + "x": [ + 16133249269780245267, + 4275571784340824698, + 6262619645627758753, + 3231281899173719188 + ], + "y": [ + 11839616617849449709, + 7142633755989890055, + 10840735473548209733, + 2847350786075278882 + ], "infinity": false }, { - "x": [16258572583186965203, 1354691125575792689, 17235265854934968790, 1252220109588505888], - "y": [9336541637487074271, 18402912967310224930, 13223187653117829136, 2979297976786733465], + "x": [ + 16258572583186965203, + 1354691125575792689, + 17235265854934968790, + 1252220109588505888 + ], + "y": [ + 9336541637487074271, + 18402912967310224930, + 13223187653117829136, + 2979297976786733465 + ], "infinity": false }, { - "x": [8525686695522099028, 4103157564078645049, 18392570749492199187, 2911539491816599180], - "y": [114653447583918953, 10470307038453386601, 11189850644566793538, 1298227034210846592], + "x": [ + 8525686695522099028, + 4103157564078645049, + 18392570749492199187, + 2911539491816599180 + ], + "y": [ + 114653447583918953, + 10470307038453386601, + 11189850644566793538, + 1298227034210846592 + ], "infinity": false } ], "gate_selectors_commitments": [ { - "x": [2069700145549311928, 4250782333685017927, 14207216715687122978, 1145927286048477791], - "y": [9341202692364554712, 12346939747104737180, 2826478533799125818, 2279570556437452275], + "x": [ + 2069700145549311928, + 4250782333685017927, + 14207216715687122978, + 1145927286048477791 + ], + "y": [ + 9341202692364554712, + 12346939747104737180, + 2826478533799125818, + 2279570556437452275 + ], "infinity": false }, { - "x": [12388902775325386546, 1277383964095999647, 10535796018183893831, 3359866702323175506], - "y": [16500893366957272235, 2806147688388338314, 8233156072220488773, 2867848844627212711], + "x": [ + 12388902775325386546, + 1277383964095999647, + 10535796018183893831, + 3359866702323175506 + ], + "y": [ + 16500893366957272235, + 2806147688388338314, + 8233156072220488773, + 2867848844627212711 + ], "infinity": false } ], "permutation_commitments": [ { - "x": [17521183961631816299, 18327810537117645266, 16586212795163003556, 3052771534158410452], - "y": [8441310283734453731, 14146088755801181801, 17480253356603213989, 3217948944323396651], + "x": [ + 17521183961631816299, + 18327810537117645266, + 16586212795163003556, + 3052771534158410452 + ], + "y": [ + 8441310283734453731, + 14146088755801181801, + 17480253356603213989, + 3217948944323396651 + ], "infinity": false }, { - "x": [16076801532842923524, 7514743296775639295, 2571323986448120255, 184367540214459973], - "y": [13389643967183613114, 17108261756464256828, 11145735340309739417, 2142196980030893874], + "x": [ + 16076801532842923524, + 7514743296775639295, + 2571323986448120255, + 184367540214459973 + ], + "y": [ + 13389643967183613114, + 17108261756464256828, + 11145735340309739417, + 2142196980030893874 + ], "infinity": false }, { - "x": [8034683328666433725, 5436036566901194392, 18053257213361014053, 2821377847227509494], - "y": [14471305228212723444, 8894846184648865892, 7047725473055235530, 2413388400332075493], + "x": [ + 8034683328666433725, + 5436036566901194392, + 18053257213361014053, + 2821377847227509494 + ], + "y": [ + 14471305228212723444, + 8894846184648865892, + 7047725473055235530, + 2413388400332075493 + ], "infinity": false }, { - "x": [14026981588443304814, 14671946927765496183, 13387079215022495926, 2554705188091675830], - "y": [440116222237740520, 1630168477189852269, 17833425794232523381, 908824471705597078], + "x": [ + 14026981588443304814, + 14671946927765496183, + 13387079215022495926, + 2554705188091675830 + ], + "y": [ + 440116222237740520, + 1630168477189852269, + 17833425794232523381, + 908824471705597078 + ], "infinity": false } ], "total_lookup_entries_length": 41494904, "lookup_selector_commitment": { - "x": [13889323383351416990, 17887386740570674124, 5463612855590268091, 2434255340534820869], - "y": [2436699678434218349, 11251365794004058995, 11023509005141034197, 2867854671852170604], + "x": [ + 13889323383351416990, + 17887386740570674124, + 5463612855590268091, + 2434255340534820869 + ], + "y": [ + 2436699678434218349, + 11251365794004058995, + 11023509005141034197, + 2867854671852170604 + ], "infinity": false }, "lookup_tables_commitments": [ { - "x": [631990924006796604, 16139625628991115157, 13331739325995827711, 1062301837743594995], - "y": [15303054606290800139, 15906872095881647437, 7093896572295020249, 1342952934989901142], + "x": [ + 631990924006796604, + 16139625628991115157, + 13331739325995827711, + 1062301837743594995 + ], + "y": [ + 15303054606290800139, + 15906872095881647437, + 7093896572295020249, + 1342952934989901142 + ], "infinity": false }, { - "x": [7983921919542246393, 13296544189644416678, 17081022784392007697, 1980832835348244027], - "y": [10874958134865200330, 7702740658637630534, 14052057929798961943, 3193353539419869016], + "x": [ + 7983921919542246393, + 13296544189644416678, + 17081022784392007697, + 1980832835348244027 + ], + "y": [ + 10874958134865200330, + 7702740658637630534, + 14052057929798961943, + 3193353539419869016 + ], "infinity": false }, { - "x": [1114587284824996932, 4636906500482867924, 15328247172597030456, 87946895873973686], - "y": [15573033830207915877, 5194694185599035278, 2562407345425607214, 2782078999306862675], + "x": [ + 1114587284824996932, + 4636906500482867924, + 15328247172597030456, + 87946895873973686 + ], + "y": [ + 15573033830207915877, + 5194694185599035278, + 2562407345425607214, + 2782078999306862675 + ], "infinity": false }, { - "x": [18225112781127431982, 18048613958187123807, 7325490730844456621, 1953409020724855888], - "y": [7577000130125917198, 6193701449695751861, 4102082927677054717, 395350071385269650], + "x": [ + 18225112781127431982, + 18048613958187123807, + 7325490730844456621, + 1953409020724855888 + ], + "y": [ + 7577000130125917198, + 6193701449695751861, + 4102082927677054717, + 395350071385269650 + ], "infinity": false } ], "lookup_table_type_commitment": { - "x": [3832160677272803715, 2122279734318217808, 811690144328522684, 1416829483108546006], - "y": [10041279311991435550, 14702496983143623186, 4419862575487552747, 1429817244630465543], + "x": [ + 3832160677272803715, + 2122279734318217808, + 811690144328522684, + 1416829483108546006 + ], + "y": [ + 10041279311991435550, + 14702496983143623186, + 4419862575487552747, + 1429817244630465543 + ], "infinity": false }, "non_residues": [ - [5, 0, 0, 0], - [7, 0, 0, 0], - [10, 0, 0, 0] + [ + 5, + 0, + 0, + 0 + ], + [ + 7, + 0, + 0, + 0 + ], + [ + 10, + 0, + 0, + 0 + ] ], "g2_elements": [ { "x": { - "c0": [5106727233969649389, 7440829307424791261, 4785637993704342649, 1729627375292849782], - "c1": [10945020018377822914, 17413811393473931026, 8241798111626485029, 1841571559660931130] + "c0": [ + 5106727233969649389, + 7440829307424791261, + 4785637993704342649, + 1729627375292849782 + ], + "c1": [ + 10945020018377822914, + 17413811393473931026, + 8241798111626485029, + 1841571559660931130 + ] }, "y": { - "c0": [5541340697920699818, 16416156555105522555, 5380518976772849807, 1353435754470862315], - "c1": [6173549831154472795, 13567992399387660019, 17050234209342075797, 650358724130500725] + "c0": [ + 5541340697920699818, + 16416156555105522555, + 5380518976772849807, + 1353435754470862315 + ], + "c1": [ + 6173549831154472795, + 13567992399387660019, + 17050234209342075797, + 650358724130500725 + ] }, "infinity": false }, { "x": { - "c0": [9089143573911733168, 11482283522806384523, 13585589533905622862, 79029415676722370], - "c1": [5692040832573735873, 16884514497384809355, 16717166481813659368, 2742131088506155463] + "c0": [ + 9089143573911733168, + 11482283522806384523, + 13585589533905622862, + 79029415676722370 + ], + "c1": [ + 5692040832573735873, + 16884514497384809355, + 16717166481813659368, + 2742131088506155463 + ] }, "y": { - "c0": [9604638503594647125, 1289961608472612514, 6217038149984805214, 2521661352385209130], - "c1": [17168069778630926308, 11309277837895768996, 15154989611154567813, 359271377050603491] + "c0": [ + 9604638503594647125, + 1289961608472612514, + 6217038149984805214, + 2521661352385209130 + ], + "c1": [ + 17168069778630926308, + 11309277837895768996, + 15154989611154567813, + 359271377050603491 + ] }, "infinity": false } ] -} +} \ No newline at end of file diff --git a/core/lib/dal/sqlx-data.json b/core/lib/dal/sqlx-data.json index 7f683ac7fce..6b47021e2f0 100644 --- a/core/lib/dal/sqlx-data.json +++ b/core/lib/dal/sqlx-data.json @@ -5,7 +5,10 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Text", "Int8"] + "Left": [ + "Text", + "Int8" + ] } }, "query": "UPDATE proof_generation_details SET status=$1, updated_at = now() WHERE l1_batch_number = $2" @@ -89,9 +92,28 @@ "type_info": "Text" } ], - "nullable": [false, false, false, false, false, false, true, true, true, true, false, false, true, true, true], + "nullable": [ + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + false, + false, + true, + true, + true + ], "parameters": { - "Left": ["Int4Array", "Text"] + "Left": [ + "Int4Array", + "Text" + ] } }, "query": "\n UPDATE node_aggregation_witness_jobs_fri\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now(),\n picked_by = $2\n WHERE id = (\n SELECT id\n FROM node_aggregation_witness_jobs_fri\n WHERE status = 'queued'\n AND protocol_version = ANY($1)\n ORDER BY l1_batch_number ASC, depth ASC, id ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING node_aggregation_witness_jobs_fri.*\n " @@ -101,7 +123,11 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Text", "Int4", "Text"] + "Left": [ + "Text", + "Int4", + "Text" + ] } }, "query": "UPDATE gpu_prover_queue_fri SET instance_status = 'available', updated_at = now() WHERE instance_host = $1::text::inet AND instance_port = $2 AND instance_status = 'full' AND zone = $3\n " @@ -115,9 +141,13 @@ "type_info": "Bytea" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "SELECT bytecode_hash FROM factory_deps WHERE miniblock_number > $1" @@ -191,9 +221,25 @@ "type_info": "Int4" } ], - "nullable": [true, true, true, true, true, true, true, true, true, true, true, true, true], + "nullable": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "\n WITH events_select AS (\n SELECT\n address, topic1, topic2, topic3, topic4, value,\n miniblock_number, tx_hash, tx_index_in_block,\n event_index_in_block, event_index_in_tx\n FROM events\n WHERE miniblock_number > $1\n ORDER BY miniblock_number ASC, event_index_in_block ASC\n )\n SELECT miniblocks.hash as \"block_hash?\",\n address as \"address!\", topic1 as \"topic1!\", topic2 as \"topic2!\", topic3 as \"topic3!\", topic4 as \"topic4!\", value as \"value!\",\n miniblock_number as \"miniblock_number!\", miniblocks.l1_batch_number as \"l1_batch_number?\", tx_hash as \"tx_hash!\",\n tx_index_in_block as \"tx_index_in_block!\", event_index_in_block as \"event_index_in_block!\", event_index_in_tx as \"event_index_in_tx!\"\n FROM events_select\n INNER JOIN miniblocks ON events_select.miniblock_number = miniblocks.number\n ORDER BY miniblock_number ASC, event_index_in_block ASC\n " @@ -203,7 +249,12 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int8", "Bytea", "Text", "Int4"] + "Left": [ + "Int8", + "Bytea", + "Text", + "Int4" + ] } }, "query": "INSERT INTO witness_inputs(l1_batch_number, merkle_tree_paths, merkel_tree_paths_blob_url, status, protocol_version, created_at, updated_at) VALUES ($1, $2, $3, 'queued', $4, now(), now())\n ON CONFLICT (l1_batch_number) DO NOTHING" @@ -213,7 +264,10 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int4", "Int4"] + "Left": [ + "Int4", + "Int4" + ] } }, "query": "UPDATE eth_txs\n SET confirmed_eth_tx_history_id = $1\n WHERE id = $2" @@ -223,7 +277,10 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int8", "Int4"] + "Left": [ + "Int8", + "Int4" + ] } }, "query": "\n INSERT INTO node_aggregation_witness_jobs\n (l1_batch_number, protocol_version, status, created_at, updated_at)\n VALUES ($1, $2, 'waiting_for_artifacts', now(), now())\n " @@ -247,7 +304,11 @@ "type_info": "Int2" } ], - "nullable": [null, false, false], + "nullable": [ + null, + false, + false + ], "parameters": { "Left": [] } @@ -259,7 +320,9 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["ByteaArray"] + "Left": [ + "ByteaArray" + ] } }, "query": "UPDATE transactions SET in_mempool = FALSE FROM UNNEST ($1::bytea[]) AS s(address) WHERE transactions.in_mempool = TRUE AND transactions.initiator_address = s.address" @@ -273,7 +336,9 @@ "type_info": "Int8" } ], - "nullable": [null], + "nullable": [ + null + ], "parameters": { "Left": [] } @@ -289,9 +354,17 @@ "type_info": "Int8" } ], - "nullable": [null], + "nullable": [ + null + ], "parameters": { - "Left": ["Int8", "Bytea", "Bytea", "Bytea", "Bytea"] + "Left": [ + "Int8", + "Bytea", + "Bytea", + "Bytea", + "Bytea" + ] } }, "query": "SELECT COUNT(*) as \"count!\" FROM l1_batches WHERE number = $1 AND hash = $2 AND merkle_root_hash = $3 AND parent_hash = $4 AND l2_l1_merkle_root = $5" @@ -345,9 +418,23 @@ "type_info": "Timestamp" } ], - "nullable": [false, false, false, false, false, true, false, false, true], + "nullable": [ + false, + false, + false, + false, + false, + true, + false, + false, + true + ], "parameters": { - "Left": ["Interval", "Int2", "Text"] + "Left": [ + "Interval", + "Int2", + "Text" + ] } }, "query": "UPDATE gpu_prover_queue_fri SET instance_status = 'reserved', updated_at = now(), processing_started_at = now() WHERE id in ( SELECT id FROM gpu_prover_queue_fri WHERE specialized_prover_group_id=$2 AND zone=$3 AND ( instance_status = 'available' OR (instance_status = 'reserved' AND processing_started_at < now() - $1::interval) ) ORDER BY updated_at ASC LIMIT 1 FOR UPDATE SKIP LOCKED ) RETURNING gpu_prover_queue_fri.*\n " @@ -361,9 +448,14 @@ "type_info": "Int8" } ], - "nullable": [true], + "nullable": [ + true + ], "parameters": { - "Left": ["Bytea", "Int8"] + "Left": [ + "Bytea", + "Int8" + ] } }, "query": "SELECT nonce as \"nonce!\" FROM transactions WHERE initiator_address = $1 AND nonce >= $2 AND is_priority = FALSE AND (miniblock_number IS NOT NULL OR error IS NULL) ORDER BY nonce" @@ -377,9 +469,13 @@ "type_info": "Int8" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "SELECT timestamp FROM miniblocks WHERE number = $1" @@ -398,7 +494,10 @@ "type_info": "Text" } ], - "nullable": [null, false], + "nullable": [ + null, + false + ], "parameters": { "Left": [] } @@ -484,9 +583,30 @@ "type_info": "Int4" } ], - "nullable": [false, false, false, false, false, true, true, true, false, false, false, true, true, false, true], + "nullable": [ + false, + false, + false, + false, + false, + true, + true, + true, + false, + false, + false, + true, + true, + false, + true + ], "parameters": { - "Left": ["Interval", "Int4", "Int8", "Int4Array"] + "Left": [ + "Interval", + "Int4", + "Int8", + "Int4Array" + ] } }, "query": "\n UPDATE leaf_aggregation_witness_jobs\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now()\n WHERE l1_batch_number = (\n SELECT l1_batch_number\n FROM leaf_aggregation_witness_jobs\n WHERE l1_batch_number <= $3\n AND\n ( status = 'queued'\n OR (status = 'in_progress' AND processing_started_at < now() - $1::interval)\n OR (status = 'failed' AND attempts < $2)\n )\n AND protocol_version = ANY($4)\n ORDER BY l1_batch_number ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING leaf_aggregation_witness_jobs.*\n " @@ -500,9 +620,14 @@ "type_info": "Bytea" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { - "Left": ["Int8", "Int8"] + "Left": [ + "Int8", + "Int8" + ] } }, "query": "SELECT DISTINCT hashed_key FROM storage_logs WHERE miniblock_number BETWEEN $1 and $2" @@ -516,9 +641,13 @@ "type_info": "Text" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { - "Left": ["Int4"] + "Left": [ + "Int4" + ] } }, "query": "SELECT tx_hash FROM eth_txs_history\n WHERE eth_tx_id = $1 AND confirmed_at IS NOT NULL" @@ -532,7 +661,9 @@ "type_info": "Int8" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { "Left": [] } @@ -548,9 +679,13 @@ "type_info": "Int8" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "SELECT number from miniblocks where timestamp > $1 ORDER BY number ASC LIMIT 1" @@ -560,7 +695,9 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int8Array"] + "Left": [ + "Int8Array" + ] } }, "query": "\n UPDATE scheduler_witness_jobs\n SET is_blob_cleaned=TRUE\n WHERE l1_batch_number = ANY($1);\n " @@ -574,9 +711,13 @@ "type_info": "Bytea" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { - "Left": ["Numeric"] + "Left": [ + "Numeric" + ] } }, "query": "SELECT l1_address FROM tokens WHERE market_volume > $1" @@ -586,7 +727,9 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "DELETE FROM storage_logs WHERE miniblock_number > $1" @@ -600,9 +743,13 @@ "type_info": "Jsonb" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "SELECT serialized_events_queue FROM events_queue WHERE l1_batch_number = $1" @@ -621,9 +768,15 @@ "type_info": "Bytea" } ], - "nullable": [null, null], + "nullable": [ + null, + null + ], "parameters": { - "Left": ["ByteaArray", "Int8"] + "Left": [ + "ByteaArray", + "Int8" + ] } }, "query": "SELECT u.hashed_key as \"hashed_key!\", (SELECT value FROM storage_logs WHERE hashed_key = u.hashed_key AND miniblock_number <= $2 ORDER BY miniblock_number DESC, operation_number DESC LIMIT 1) as \"value?\" FROM UNNEST($1::bytea[]) AS u(hashed_key)" @@ -637,9 +790,13 @@ "type_info": "Int4" } ], - "nullable": [true], + "nullable": [ + true + ], "parameters": { - "Left": ["Int4"] + "Left": [ + "Int4" + ] } }, "query": "SELECT sent_at_block FROM eth_txs_history WHERE eth_tx_id = $1 AND sent_at_block IS NOT NULL ORDER BY created_at ASC LIMIT 1" @@ -683,9 +840,22 @@ "type_info": "Numeric" } ], - "nullable": [false, false, false, false, false, false, true], + "nullable": [ + false, + false, + false, + false, + false, + false, + true + ], "parameters": { - "Left": ["ByteaArray", "Bytea", "Bytea", "Bytea"] + "Left": [ + "ByteaArray", + "Bytea", + "Bytea", + "Bytea" + ] } }, "query": "\n SELECT storage.value as \"value!\",\n tokens.l1_address as \"l1_address!\", tokens.l2_address as \"l2_address!\",\n tokens.symbol as \"symbol!\", tokens.name as \"name!\", tokens.decimals as \"decimals!\", tokens.usd_price as \"usd_price?\"\n FROM storage\n INNER JOIN tokens ON\n storage.address = tokens.l2_address OR (storage.address = $2 AND tokens.l2_address = $3)\n WHERE storage.hashed_key = ANY($1) AND storage.value != $4\n " @@ -769,9 +939,29 @@ "type_info": "Bytea" } ], - "nullable": [false, true, true, true, true, true, false, null, null, true, false, true, false, true, false], + "nullable": [ + false, + true, + true, + true, + true, + true, + false, + null, + null, + true, + false, + true, + false, + true, + false + ], "parameters": { - "Left": ["Bytea", "Bytea", "Bytea"] + "Left": [ + "Bytea", + "Bytea", + "Bytea" + ] } }, "query": "\n WITH sl AS (\n SELECT * FROM storage_logs\n WHERE storage_logs.address = $1 AND storage_logs.tx_hash = $2\n ORDER BY storage_logs.miniblock_number DESC, storage_logs.operation_number DESC\n LIMIT 1\n )\n SELECT\n transactions.hash as tx_hash,\n transactions.index_in_block as index_in_block,\n transactions.l1_batch_tx_index as l1_batch_tx_index,\n transactions.miniblock_number as block_number,\n transactions.error as error,\n transactions.effective_gas_price as effective_gas_price,\n transactions.initiator_address as initiator_address,\n transactions.data->'to' as \"transfer_to?\",\n transactions.data->'contractAddress' as \"execute_contract_address?\",\n transactions.tx_format as \"tx_format?\",\n transactions.refunded_gas as refunded_gas,\n transactions.gas_limit as gas_limit,\n miniblocks.hash as \"block_hash?\",\n miniblocks.l1_batch_number as \"l1_batch_number?\",\n sl.key as \"contract_address?\"\n FROM transactions\n LEFT JOIN miniblocks\n ON miniblocks.number = transactions.miniblock_number\n LEFT JOIN sl\n ON sl.value != $3\n WHERE transactions.hash = $2\n " @@ -855,9 +1045,27 @@ "type_info": "Bytea" } ], - "nullable": [false, false, false, false, true, false, true, false, true, false, true, false, false, true, true], + "nullable": [ + false, + false, + false, + false, + true, + false, + true, + false, + true, + false, + true, + false, + false, + true, + true + ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "\n SELECT l1_batches.number,\n l1_batches.timestamp,\n l1_batches.l1_tx_count,\n l1_batches.l2_tx_count,\n l1_batches.hash as \"root_hash?\",\n commit_tx.tx_hash as \"commit_tx_hash?\",\n commit_tx.confirmed_at as \"committed_at?\",\n prove_tx.tx_hash as \"prove_tx_hash?\",\n prove_tx.confirmed_at as \"proven_at?\",\n execute_tx.tx_hash as \"execute_tx_hash?\",\n execute_tx.confirmed_at as \"executed_at?\",\n l1_batches.l1_gas_price,\n l1_batches.l2_fair_gas_price,\n l1_batches.bootloader_code_hash,\n l1_batches.default_aa_code_hash\n FROM l1_batches\n LEFT JOIN eth_txs_history as commit_tx ON (l1_batches.eth_commit_tx_id = commit_tx.eth_tx_id AND commit_tx.confirmed_at IS NOT NULL)\n LEFT JOIN eth_txs_history as prove_tx ON (l1_batches.eth_prove_tx_id = prove_tx.eth_tx_id AND prove_tx.confirmed_at IS NOT NULL)\n LEFT JOIN eth_txs_history as execute_tx ON (l1_batches.eth_execute_tx_id = execute_tx.eth_tx_id AND execute_tx.confirmed_at IS NOT NULL)\n WHERE l1_batches.number = $1\n " @@ -867,7 +1075,10 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Text", "Int8"] + "Left": [ + "Text", + "Int8" + ] } }, "query": "\n UPDATE witness_inputs_fri SET status =$1, updated_at = now()\n WHERE l1_batch_number = $2\n " @@ -877,7 +1088,10 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Text", "Int8"] + "Left": [ + "Text", + "Int8" + ] } }, "query": "\n UPDATE prover_jobs\n SET status = $1, updated_at = now()\n WHERE id = $2\n " @@ -901,7 +1115,11 @@ "type_info": "Int4" } ], - "nullable": [false, false, false], + "nullable": [ + false, + false, + false + ], "parameters": { "Left": [] } @@ -932,7 +1150,12 @@ "type_info": "Text" } ], - "nullable": [null, false, false, false], + "nullable": [ + null, + false, + false, + false + ], "parameters": { "Left": [] } @@ -944,7 +1167,10 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int8", "Text"] + "Left": [ + "Int8", + "Text" + ] } }, "query": "INSERT INTO proof_compression_jobs_fri(l1_batch_number, status, created_at, updated_at) VALUES ($1, $2, now(), now()) ON CONFLICT (l1_batch_number) DO NOTHING" @@ -1068,7 +1294,9 @@ true ], "parameters": { - "Left": ["Int4"] + "Left": [ + "Int4" + ] } }, "query": "SELECT number, l1_tx_count, l2_tx_count, timestamp, is_finished, fee_account_address, l2_to_l1_logs, l2_to_l1_messages, bloom, priority_ops_onchain_data, used_contract_hashes, base_fee_per_gas, l1_gas_price, l2_fair_gas_price, bootloader_code_hash, default_aa_code_hash, protocol_version FROM l1_batches WHERE eth_commit_tx_id = $1 OR eth_prove_tx_id = $1 OR eth_execute_tx_id = $1" @@ -1082,9 +1310,13 @@ "type_info": "Int4" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { - "Left": ["Text"] + "Left": [ + "Text" + ] } }, "query": "SELECT eth_txs.id FROM eth_txs_history JOIN eth_txs\n ON eth_txs.confirmed_eth_tx_history_id = eth_txs_history.id\n WHERE eth_txs_history.tx_hash = $1" @@ -1204,7 +1436,9 @@ true ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "SELECT * from prover_jobs where id=$1" @@ -1233,9 +1467,16 @@ "type_info": "Bytea" } ], - "nullable": [false, false, false, false], + "nullable": [ + false, + false, + false, + false + ], "parameters": { - "Left": ["Int4"] + "Left": [ + "Int4" + ] } }, "query": "SELECT recursion_scheduler_level_vk_hash, recursion_node_level_vk_hash, recursion_leaf_level_vk_hash, recursion_circuits_set_vks_hash\n FROM protocol_versions\n WHERE id = $1\n " @@ -1249,7 +1490,9 @@ "type_info": "Int8" } ], - "nullable": [null], + "nullable": [ + null + ], "parameters": { "Left": [] } @@ -1261,7 +1504,11 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int8", "Text", "Text"] + "Left": [ + "Int8", + "Text", + "Text" + ] } }, "query": "INSERT INTO proof_compression_jobs_fri(l1_batch_number, fri_proof_blob_url, status, created_at, updated_at) VALUES ($1, $2, $3, now(), now()) ON CONFLICT (l1_batch_number) DO NOTHING" @@ -1290,9 +1537,16 @@ "type_info": "Int4" } ], - "nullable": [true, false, true, true], + "nullable": [ + true, + false, + true, + true + ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "\n SELECT miniblock_number as \"miniblock_number!\",\n hash, index_in_block as \"index_in_block!\", l1_batch_tx_index as \"l1_batch_tx_index!\"\n FROM transactions\n WHERE l1_batch_number = $1\n ORDER BY miniblock_number, index_in_block\n " @@ -1302,7 +1556,11 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Text", "Text", "Int8"] + "Left": [ + "Text", + "Text", + "Int8" + ] } }, "query": "UPDATE proof_compression_jobs_fri SET status =$1, error= $2, updated_at = now() WHERE l1_batch_number = $3" @@ -1312,7 +1570,10 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Text", "Int8"] + "Left": [ + "Text", + "Int8" + ] } }, "query": "\n UPDATE scheduler_witness_jobs_fri\n SET status ='failed', error= $1, updated_at = now()\n WHERE l1_batch_number = $2\n " @@ -1326,9 +1587,13 @@ "type_info": "Int4" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { - "Left": ["Text"] + "Left": [ + "Text" + ] } }, "query": "INSERT INTO eth_txs (raw_tx, nonce, tx_type, contract_address, predicted_gas_cost, created_at, updated_at)\n VALUES ('\\x00', 0, $1, '', 0, now(), now())\n RETURNING id" @@ -1352,9 +1617,15 @@ "type_info": "Text" } ], - "nullable": [false, true, true], + "nullable": [ + false, + true, + true + ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "\n SELECT l1_batch_number, scheduler_witness_blob_url, final_node_aggregations_blob_url FROM scheduler_witness_jobs\n WHERE status='successful' AND is_blob_cleaned=FALSE\n AND updated_at < NOW() - INTERVAL '30 days'\n AND scheduler_witness_blob_url is NOT NULL\n AND final_node_aggregations_blob_url is NOT NULL\n LIMIT $1;\n " @@ -1378,9 +1649,15 @@ "type_info": "Int8" } ], - "nullable": [false, false, false], + "nullable": [ + false, + false, + false + ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "SELECT hash, number, timestamp FROM miniblocks WHERE number > $1 ORDER BY number ASC" @@ -1444,9 +1721,23 @@ "type_info": "Timestamp" } ], - "nullable": [false, false, false, false, false, false, false, false, false, true, false], + "nullable": [ + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + false + ], "parameters": { - "Left": ["Int4"] + "Left": [ + "Int4" + ] } }, "query": "SELECT * FROM protocol_versions WHERE id = $1" @@ -1460,9 +1751,13 @@ "type_info": "Jsonb" } ], - "nullable": [true], + "nullable": [ + true + ], "parameters": { - "Left": ["Bytea"] + "Left": [ + "Bytea" + ] } }, "query": "SELECT verification_info FROM contracts_verification_info WHERE address = $1" @@ -1472,7 +1767,10 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Time", "Int8"] + "Left": [ + "Time", + "Int8" + ] } }, "query": "\n UPDATE node_aggregation_witness_jobs_fri\n SET status = 'successful', updated_at = now(), time_taken = $1\n WHERE id = $2\n " @@ -1541,9 +1839,24 @@ "type_info": "Int8" } ], - "nullable": [false, false, false, false, false, false, false, false, true, true, true, false], + "nullable": [ + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + false + ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "SELECT number, timestamp, hash, l1_tx_count, l2_tx_count, base_fee_per_gas, l1_gas_price, l2_fair_gas_price, bootloader_code_hash, default_aa_code_hash, protocol_version, virtual_blocks\n FROM miniblocks WHERE number = $1" @@ -1557,9 +1870,14 @@ "type_info": "Int8" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { - "Left": ["Int8", "Int2"] + "Left": [ + "Int8", + "Int2" + ] } }, "query": "SELECT id from prover_jobs_fri WHERE l1_batch_number = $1 AND status = 'successful' AND aggregation_round = $2" @@ -1573,7 +1891,9 @@ "type_info": "Int8" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { "Left": [] } @@ -1609,7 +1929,13 @@ "type_info": "Int4" } ], - "nullable": [false, false, false, false, false], + "nullable": [ + false, + false, + false, + false, + false + ], "parameters": { "Left": [] } @@ -1630,7 +1956,10 @@ "type_info": "Int2" } ], - "nullable": [false, false], + "nullable": [ + false, + false + ], "parameters": { "Left": [] } @@ -1642,7 +1971,10 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Bytea", "Jsonb"] + "Left": [ + "Bytea", + "Jsonb" + ] } }, "query": "INSERT INTO transaction_traces (tx_hash, trace, created_at, updated_at) VALUES ($1, $2, now(), now())" @@ -1870,7 +2202,12 @@ true ], "parameters": { - "Left": ["Int8", "Numeric", "Numeric", "Int4"] + "Left": [ + "Int8", + "Numeric", + "Numeric", + "Int4" + ] } }, "query": "UPDATE transactions\n SET in_mempool = TRUE\n FROM (\n SELECT hash FROM (\n SELECT hash\n FROM transactions\n WHERE miniblock_number IS NULL AND in_mempool = FALSE AND error IS NULL\n AND (is_priority = TRUE OR (max_fee_per_gas >= $2 and gas_per_pubdata_limit >= $3))\n AND tx_format != $4\n ORDER BY is_priority DESC, priority_op_id, received_at\n LIMIT $1\n ) as subquery1\n ORDER BY hash\n ) as subquery2\n WHERE transactions.hash = subquery2.hash\n RETURNING transactions.*" @@ -1880,7 +2217,10 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int8", "Int4Array"] + "Left": [ + "Int8", + "Int4Array" + ] } }, "query": "DELETE FROM storage_logs WHERE miniblock_number = $1 AND operation_number != ALL($2)" @@ -1890,7 +2230,10 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Bytea", "Int8"] + "Left": [ + "Bytea", + "Int8" + ] } }, "query": "UPDATE l1_batches SET hash = $1 WHERE number = $2" @@ -1904,9 +2247,13 @@ "type_info": "Int8" } ], - "nullable": [null], + "nullable": [ + null + ], "parameters": { - "Left": ["Bytea"] + "Left": [ + "Bytea" + ] } }, "query": "\n SELECT COUNT(*) as \"count!\"\n FROM contracts_verification_info\n WHERE address = $1\n " @@ -1920,9 +2267,14 @@ "type_info": "Bytea" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { - "Left": ["Bytea", "Int8"] + "Left": [ + "Bytea", + "Int8" + ] } }, "query": "SELECT bytecode FROM factory_deps WHERE bytecode_hash = $1 AND miniblock_number <= $2" @@ -2160,7 +2512,14 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int8", "Int2", "Int4", "Text", "Int4", "Int4"] + "Left": [ + "Int8", + "Int2", + "Int4", + "Text", + "Int4", + "Int4" + ] } }, "query": "INSERT INTO node_aggregation_witness_jobs_fri (l1_batch_number, circuit_id, depth, aggregations_url, number_of_dependent_jobs, protocol_version, status, created_at, updated_at)\n VALUES ($1, $2, $3, $4, $5, $6, 'waiting_for_proofs', now(), now())\n ON CONFLICT(l1_batch_number, circuit_id, depth)\n DO UPDATE SET updated_at=now()" @@ -2174,9 +2533,13 @@ "type_info": "Bytea" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { - "Left": ["ByteaArray"] + "Left": [ + "ByteaArray" + ] } }, "query": "SELECT hashed_key FROM initial_writes WHERE hashed_key = ANY($1)" @@ -2190,7 +2553,9 @@ "type_info": "Int8" } ], - "nullable": [null], + "nullable": [ + null + ], "parameters": { "Left": [] } @@ -2256,7 +2621,19 @@ "type_info": "Timestamp" } ], - "nullable": [false, false, false, false, false, false, false, false, false, true, false], + "nullable": [ + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + false + ], "parameters": { "Left": [] } @@ -2282,9 +2659,15 @@ "type_info": "Text" } ], - "nullable": [false, true, true], + "nullable": [ + false, + true, + true + ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "\n SELECT l1_batch_number, leaf_layer_subqueues_blob_url, aggregation_outputs_blob_url FROM node_aggregation_witness_jobs\n WHERE status='successful' AND is_blob_cleaned=FALSE\n AND leaf_layer_subqueues_blob_url is NOT NULL\n AND aggregation_outputs_blob_url is NOT NULL\n AND updated_at < NOW() - INTERVAL '30 days'\n LIMIT $1;\n " @@ -2298,7 +2681,9 @@ "type_info": "Int8" } ], - "nullable": [null], + "nullable": [ + null + ], "parameters": { "Left": [] } @@ -2314,9 +2699,15 @@ "type_info": "Int4" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { - "Left": ["Int4", "Text", "Timestamp"] + "Left": [ + "Int4", + "Text", + "Timestamp" + ] } }, "query": "INSERT INTO eth_txs_history\n (eth_tx_id, base_fee_per_gas, priority_fee_per_gas, tx_hash, signed_raw_tx, created_at, updated_at, confirmed_at)\n VALUES ($1, 0, 0, $2, '\\x00', now(), now(), $3)\n RETURNING id" @@ -2335,9 +2726,14 @@ "type_info": "Bytea" } ], - "nullable": [false, false], + "nullable": [ + false, + false + ], "parameters": { - "Left": ["Bytea"] + "Left": [ + "Bytea" + ] } }, "query": "\n SELECT * FROM call_traces\n WHERE tx_hash = $1\n " @@ -2406,9 +2802,26 @@ "type_info": "Text" } ], - "nullable": [false, true, false, false, true, false, false, true, true, true, true, true], + "nullable": [ + false, + true, + false, + false, + true, + false, + false, + true, + true, + true, + true, + true + ], "parameters": { - "Left": ["Int8", "Int4Array", "Text"] + "Left": [ + "Int8", + "Int4Array", + "Text" + ] } }, "query": "\n UPDATE witness_inputs_fri\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now(),\n picked_by = $3\n WHERE l1_batch_number = (\n SELECT l1_batch_number\n FROM witness_inputs_fri\n WHERE l1_batch_number <= $1\n AND status = 'queued'\n AND protocol_version = ANY($2)\n ORDER BY l1_batch_number ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING witness_inputs_fri.*\n " @@ -2418,7 +2831,9 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["ByteaArray"] + "Left": [ + "ByteaArray" + ] } }, "query": "DELETE FROM call_traces\n WHERE tx_hash = ANY($1)" @@ -2502,9 +2917,30 @@ "type_info": "Int4" } ], - "nullable": [false, false, true, false, true, true, true, false, false, false, true, true, true, false, true], + "nullable": [ + false, + false, + true, + false, + true, + true, + true, + false, + false, + false, + true, + true, + true, + false, + true + ], "parameters": { - "Left": ["Interval", "Int4", "Int8", "Int4Array"] + "Left": [ + "Interval", + "Int4", + "Int8", + "Int4Array" + ] } }, "query": "\n UPDATE scheduler_witness_jobs\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now()\n WHERE l1_batch_number = (\n SELECT l1_batch_number\n FROM scheduler_witness_jobs\n WHERE l1_batch_number <= $3\n AND\n ( status = 'queued'\n OR (status = 'in_progress' AND processing_started_at < now() - $1::interval)\n OR (status = 'failed' AND attempts < $2)\n )\n AND protocol_version = ANY($4)\n ORDER BY l1_batch_number ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING scheduler_witness_jobs.*\n " @@ -2514,7 +2950,11 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int4Array", "ByteaArray", "Int8"] + "Left": [ + "Int4Array", + "ByteaArray", + "Int8" + ] } }, "query": "\n UPDATE transactions\n SET \n l1_batch_number = $3,\n l1_batch_tx_index = data_table.l1_batch_tx_index,\n updated_at = now()\n FROM\n (SELECT\n UNNEST($1::int[]) AS l1_batch_tx_index,\n UNNEST($2::bytea[]) AS hash\n ) AS data_table\n WHERE transactions.hash=data_table.hash \n " @@ -2524,7 +2964,9 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "DELETE FROM events WHERE miniblock_number > $1" @@ -2534,7 +2976,9 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Text"] + "Left": [ + "Text" + ] } }, "query": "DELETE FROM compiler_versions WHERE compiler = $1" @@ -2544,7 +2988,10 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["ByteaArray", "ByteaArray"] + "Left": [ + "ByteaArray", + "ByteaArray" + ] } }, "query": "UPDATE storage SET value = u.value FROM UNNEST($1::bytea[], $2::bytea[]) AS u(key, value) WHERE u.key = hashed_key" @@ -2563,9 +3010,15 @@ "type_info": "Bytea" } ], - "nullable": [false, false], + "nullable": [ + false, + false + ], "parameters": { - "Left": ["Int4", "Int8"] + "Left": [ + "Int4", + "Int8" + ] } }, "query": "SELECT number, hash FROM miniblocks WHERE protocol_version = $1 ORDER BY number DESC LIMIT $2" @@ -2575,7 +3028,10 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int8", "Text"] + "Left": [ + "Int8", + "Text" + ] } }, "query": "\n UPDATE scheduler_witness_jobs\n SET final_node_aggregations_blob_url = $2,\n status = 'waiting_for_proofs',\n updated_at = now()\n WHERE l1_batch_number = $1 AND status != 'queued'\n " @@ -2819,7 +3275,12 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int4", "Int8", "Text", "Text"] + "Left": [ + "Int4", + "Int8", + "Text", + "Text" + ] } }, "query": "\n UPDATE node_aggregation_witness_jobs\n SET number_of_leaf_circuits = $1,\n leaf_layer_subqueues_blob_url = $3,\n aggregation_outputs_blob_url = $4,\n status = 'waiting_for_proofs',\n updated_at = now()\n WHERE l1_batch_number = $2 AND status != 'queued'\n " @@ -2833,9 +3294,13 @@ "type_info": "Bytea" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "SELECT hash FROM miniblocks WHERE number = $1" @@ -2845,7 +3310,9 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int8Array"] + "Left": [ + "Int8Array" + ] } }, "query": "\n UPDATE scheduler_dependency_tracker_fri\n SET status='queued'\n WHERE l1_batch_number = ANY($1)\n " @@ -2869,9 +3336,13 @@ "type_info": "Bytea" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { - "Left": ["Interval"] + "Left": [ + "Interval" + ] } }, "query": "DELETE FROM transactions WHERE miniblock_number IS NULL AND received_at < now() - $1::interval AND is_priority=false AND error IS NULL RETURNING hash" @@ -2885,7 +3356,9 @@ "type_info": "Bytea" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { "Left": [] } @@ -2906,9 +3379,14 @@ "type_info": "Bytea" } ], - "nullable": [false, false], + "nullable": [ + false, + false + ], "parameters": { - "Left": ["ByteaArray"] + "Left": [ + "ByteaArray" + ] } }, "query": "SELECT hashed_key, value as \"value!\" FROM storage WHERE hashed_key = ANY($1)" @@ -2918,7 +3396,13 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int8", "Int2", "Text", "Int4", "Int4"] + "Left": [ + "Int8", + "Int2", + "Text", + "Int4", + "Int4" + ] } }, "query": "\n INSERT INTO leaf_aggregation_witness_jobs_fri\n (l1_batch_number, circuit_id, closed_form_inputs_blob_url, number_of_basic_circuits, protocol_version, status, created_at, updated_at)\n VALUES ($1, $2, $3, $4, $5, 'waiting_for_proofs', now(), now())\n ON CONFLICT(l1_batch_number, circuit_id)\n DO UPDATE SET updated_at=now()\n " @@ -2982,9 +3466,23 @@ "type_info": "Timestamp" } ], - "nullable": [false, false, false, false, false, false, false, false, false, true, false], + "nullable": [ + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + false + ], "parameters": { - "Left": ["Int4"] + "Left": [ + "Int4" + ] } }, "query": "SELECT * FROM protocol_versions\n WHERE id = $1\n " @@ -3003,7 +3501,10 @@ "type_info": "Text" } ], - "nullable": [null, false], + "nullable": [ + null, + false + ], "parameters": { "Left": [] } @@ -3015,7 +3516,9 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "DELETE FROM l2_to_l1_logs WHERE miniblock_number > $1" @@ -3029,7 +3532,9 @@ "type_info": "Int8" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { "Left": [] } @@ -3045,7 +3550,9 @@ "type_info": "Int8" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { "Left": [] } @@ -3061,7 +3568,9 @@ "type_info": "Int8" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { "Left": [] } @@ -3137,9 +3646,28 @@ "type_info": "Int2" } ], - "nullable": [false, false, false, false, false, false, true, true, true, true, false, false, true], + "nullable": [ + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + false, + false, + true + ], "parameters": { - "Left": ["Interval", "Int2", "Text", "Text"] + "Left": [ + "Interval", + "Int2", + "Text", + "Text" + ] } }, "query": "\n UPDATE gpu_prover_queue\n SET instance_status = 'reserved',\n updated_at = now(),\n processing_started_at = now()\n WHERE id in (\n SELECT id\n FROM gpu_prover_queue\n WHERE specialized_prover_group_id=$2\n AND region=$3\n AND zone=$4\n AND (\n instance_status = 'available'\n OR (instance_status = 'reserved' AND processing_started_at < now() - $1::interval)\n )\n ORDER BY updated_at ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING gpu_prover_queue.*\n " @@ -3163,9 +3691,16 @@ "type_info": "Int2" } ], - "nullable": [false, false, false], + "nullable": [ + false, + false, + false + ], "parameters": { - "Left": ["Interval", "Int2"] + "Left": [ + "Interval", + "Int2" + ] } }, "query": "UPDATE proof_compression_jobs_fri SET status = 'queued', attempts = attempts + 1, updated_at = now(), processing_started_at = now() WHERE (status = 'in_progress' AND processing_started_at <= now() - $1::interval AND attempts < $2) OR (status = 'failed' AND attempts < $2) RETURNING l1_batch_number, status, attempts" @@ -3175,7 +3710,9 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int4"] + "Left": [ + "Int4" + ] } }, "query": "UPDATE eth_txs SET has_failed = TRUE WHERE id = $1" @@ -3249,9 +3786,25 @@ "type_info": "Bytea" } ], - "nullable": [false, null, null, false, false, false, false, true, true, false, false, true, false], + "nullable": [ + false, + null, + null, + false, + false, + false, + false, + true, + true, + false, + false, + true, + false + ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "\n SELECT miniblocks.number,\n COALESCE(miniblocks.l1_batch_number, (SELECT (max(number) + 1) FROM l1_batches)) as \"l1_batch_number!\",\n (SELECT max(m2.number) FROM miniblocks m2 WHERE miniblocks.l1_batch_number = m2.l1_batch_number) as \"last_batch_miniblock?\",\n miniblocks.timestamp,\n miniblocks.hash as \"root_hash?\",\n miniblocks.l1_gas_price,\n miniblocks.l2_fair_gas_price,\n miniblocks.bootloader_code_hash,\n miniblocks.default_aa_code_hash,\n miniblocks.virtual_blocks,\n miniblocks.hash,\n miniblocks.protocol_version as \"protocol_version!\",\n l1_batches.fee_account_address as \"fee_account_address?\"\n FROM miniblocks\n LEFT JOIN l1_batches ON miniblocks.l1_batch_number = l1_batches.number\n WHERE miniblocks.number = $1\n " @@ -3270,9 +3823,14 @@ "type_info": "Bytea" } ], - "nullable": [false, false], + "nullable": [ + false, + false + ], "parameters": { - "Left": ["Int4"] + "Left": [ + "Int4" + ] } }, "query": "SELECT bootloader_code_hash, default_account_code_hash FROM protocol_versions\n WHERE id = $1\n " @@ -3286,7 +3844,9 @@ "type_info": "Int8" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { "Left": [] } @@ -3352,9 +3912,23 @@ "type_info": "Timestamp" } ], - "nullable": [false, false, false, false, false, false, false, false, false, true, false], + "nullable": [ + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + false + ], "parameters": { - "Left": ["Int4"] + "Left": [ + "Int4" + ] } }, "query": "SELECT * FROM protocol_versions\n WHERE id < $1\n ORDER BY id DESC\n LIMIT 1\n " @@ -3373,9 +3947,14 @@ "type_info": "Bytea" } ], - "nullable": [false, false], + "nullable": [ + false, + false + ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "SELECT bytecode_hash, bytecode FROM factory_deps INNER JOIN miniblocks ON miniblocks.number = factory_deps.miniblock_number WHERE miniblocks.l1_batch_number = $1" @@ -3399,7 +3978,11 @@ "type_info": "Int8" } ], - "nullable": [false, false, null], + "nullable": [ + false, + false, + null + ], "parameters": { "Left": [] } @@ -3411,7 +3994,9 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int4"] + "Left": [ + "Int4" + ] } }, "query": "UPDATE miniblocks SET protocol_version = $1 WHERE l1_batch_number IS NULL" @@ -3421,7 +4006,11 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int4", "Int8", "Int8"] + "Left": [ + "Int4", + "Int8", + "Int8" + ] } }, "query": "UPDATE l1_batches SET eth_commit_tx_id = $1, updated_at = now() WHERE number BETWEEN $2 AND $3" @@ -3431,7 +4020,10 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int4", "Int4"] + "Left": [ + "Int4", + "Int4" + ] } }, "query": "UPDATE eth_txs_history SET sent_at_block = $2, sent_at = now()\n WHERE id = $1 AND sent_at_block IS NULL" @@ -3445,9 +4037,14 @@ "type_info": "Numeric" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { - "Left": ["Int8", "Int8"] + "Left": [ + "Int8", + "Int8" + ] } }, "query": "SELECT base_fee_per_gas FROM miniblocks WHERE number <= $1 ORDER BY number DESC LIMIT $2" @@ -3461,9 +4058,14 @@ "type_info": "Int8" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { - "Left": ["Int8", "Numeric"] + "Left": [ + "Int8", + "Numeric" + ] } }, "query": "SELECT number FROM ( SELECT number, sum(virtual_blocks) OVER(ORDER BY number) AS virtual_block_sum FROM miniblocks WHERE l1_batch_number >= $1 ) AS vts WHERE virtual_block_sum <= $2 ORDER BY number DESC LIMIT 1" @@ -3487,9 +4089,15 @@ "type_info": "Int4" } ], - "nullable": [false, false, false], + "nullable": [ + false, + false, + false + ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "SELECT bootloader_code_hash, default_account_code_hash, id FROM protocol_versions\n WHERE timestamp <= $1\n ORDER BY id DESC\n LIMIT 1\n " @@ -3508,9 +4116,14 @@ "type_info": "Int8" } ], - "nullable": [false, false], + "nullable": [ + false, + false + ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "SELECT hashed_key, index FROM initial_writes WHERE l1_batch_number = $1 ORDER BY index" @@ -3524,7 +4137,9 @@ "type_info": "Int8" } ], - "nullable": [null], + "nullable": [ + null + ], "parameters": { "Left": [] } @@ -3540,9 +4155,14 @@ "type_info": "Int8" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { - "Left": ["Int8", "Numeric"] + "Left": [ + "Int8", + "Numeric" + ] } }, "query": "SELECT number FROM ( SELECT number, sum(virtual_blocks) OVER(ORDER BY number) AS virtual_block_sum FROM miniblocks WHERE l1_batch_number >= $1 ) AS vts WHERE virtual_block_sum >= $2 ORDER BY number LIMIT 1" @@ -3561,9 +4181,15 @@ "type_info": "Int4" } ], - "nullable": [false, false], + "nullable": [ + false, + false + ], "parameters": { - "Left": ["Text", "Int8"] + "Left": [ + "Text", + "Int8" + ] } }, "query": "\n UPDATE prover_jobs\n SET status = 'failed', error = $1, updated_at = now()\n WHERE id = $2\n RETURNING l1_batch_number, attempts\n " @@ -3577,9 +4203,13 @@ "type_info": "Bytea" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { - "Left": ["Bytea"] + "Left": [ + "Bytea" + ] } }, "query": "SELECT value FROM storage WHERE hashed_key = $1" @@ -3589,7 +4219,10 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Text", "Int8"] + "Left": [ + "Text", + "Int8" + ] } }, "query": "\n UPDATE prover_jobs_fri\n SET status = 'failed', error = $1, updated_at = now()\n WHERE id = $2\n " @@ -3608,7 +4241,10 @@ "type_info": "Int4" } ], - "nullable": [null, false], + "nullable": [ + null, + false + ], "parameters": { "Left": [] } @@ -3624,7 +4260,9 @@ "type_info": "Int8" } ], - "nullable": [null], + "nullable": [ + null + ], "parameters": { "Left": [] } @@ -3636,7 +4274,13 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Text", "Int8", "Int2", "Int4", "Int4"] + "Left": [ + "Text", + "Int8", + "Int2", + "Int4", + "Int4" + ] } }, "query": "\n UPDATE node_aggregation_witness_jobs_fri\n SET aggregations_url = $1, number_of_dependent_jobs = $5, updated_at = now()\n WHERE l1_batch_number = $2\n AND circuit_id = $3\n AND depth = $4\n " @@ -3650,7 +4294,9 @@ "type_info": "Int8" } ], - "nullable": [null], + "nullable": [ + null + ], "parameters": { "Left": [] } @@ -3736,9 +4382,30 @@ "type_info": "Int4" } ], - "nullable": [false, true, true, true, false, true, true, true, false, false, false, true, true, false, true], + "nullable": [ + false, + true, + true, + true, + false, + true, + true, + true, + false, + false, + false, + true, + true, + false, + true + ], "parameters": { - "Left": ["Interval", "Int4", "Int8", "Int4Array"] + "Left": [ + "Interval", + "Int4", + "Int8", + "Int4Array" + ] } }, "query": "\n UPDATE node_aggregation_witness_jobs\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now()\n WHERE l1_batch_number = (\n SELECT l1_batch_number\n FROM node_aggregation_witness_jobs\n WHERE l1_batch_number <= $3\n AND\n ( status = 'queued'\n OR (status = 'in_progress' AND processing_started_at < now() - $1::interval)\n OR (status = 'failed' AND attempts < $2)\n )\n AND protocol_version = ANY($4)\n ORDER BY l1_batch_number ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING node_aggregation_witness_jobs.*\n " @@ -3757,9 +4424,14 @@ "type_info": "Int8" } ], - "nullable": [null, null], + "nullable": [ + null, + null + ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "SELECT (SELECT l1_batch_number FROM miniblocks WHERE number = $1) as \"block_batch?\", (SELECT MAX(number) + 1 FROM l1_batches) as \"max_batch?\"" @@ -3773,7 +4445,9 @@ "type_info": "Int8" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { "Left": [] } @@ -3785,7 +4459,10 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int8", "Jsonb"] + "Left": [ + "Int8", + "Jsonb" + ] } }, "query": "INSERT INTO events_queue (l1_batch_number, serialized_events_queue) VALUES ($1, $2)" @@ -3795,7 +4472,9 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int4"] + "Left": [ + "Int4" + ] } }, "query": "DELETE FROM eth_txs_history\n WHERE id = $1" @@ -3809,9 +4488,13 @@ "type_info": "Text" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { - "Left": ["Text"] + "Left": [ + "Text" + ] } }, "query": "SELECT version FROM compiler_versions WHERE compiler = $1 ORDER by version" @@ -3821,7 +4504,10 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["TextArray", "Text"] + "Left": [ + "TextArray", + "Text" + ] } }, "query": "\n INSERT INTO compiler_versions (version, compiler, created_at, updated_at)\n SELECT u.version, $2, now(), now()\n FROM UNNEST($1::text[])\n AS u(version)\n ON CONFLICT (version, compiler) DO NOTHING" @@ -3845,9 +4531,15 @@ "type_info": "Jsonb" } ], - "nullable": [false, true, true], + "nullable": [ + false, + true, + true + ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "\n SELECT status, error, compilation_errors FROM contract_verification_requests\n WHERE id = $1\n " @@ -3891,9 +4583,22 @@ "type_info": "Bool" } ], - "nullable": [false, false, false, false, false, false, false], + "nullable": [ + false, + false, + false, + false, + false, + false, + false + ], "parameters": { - "Left": ["Int2Array", "Int2Array", "Int4Array", "Text"] + "Left": [ + "Int2Array", + "Int2Array", + "Int4Array", + "Text" + ] } }, "query": "\n UPDATE prover_jobs_fri\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now(),\n picked_by = $4\n WHERE id = (\n SELECT id\n FROM prover_jobs_fri\n WHERE status = 'queued'\n AND (circuit_id, aggregation_round) IN (\n SELECT * FROM UNNEST($1::smallint[], $2::smallint[])\n )\n AND protocol_version = ANY($3)\n ORDER BY aggregation_round DESC, l1_batch_number ASC, id ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING prover_jobs_fri.id, prover_jobs_fri.l1_batch_number, prover_jobs_fri.circuit_id,\n prover_jobs_fri.aggregation_round, prover_jobs_fri.sequence_number, prover_jobs_fri.depth,\n prover_jobs_fri.is_node_final_proof\n " @@ -3903,7 +4608,10 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Text", "Int8"] + "Left": [ + "Text", + "Int8" + ] } }, "query": "\n UPDATE node_aggregation_witness_jobs_fri\n SET status ='failed', error= $1, updated_at = now()\n WHERE id = $2\n " @@ -3913,7 +4621,12 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Time", "Bytea", "Text", "Int8"] + "Left": [ + "Time", + "Bytea", + "Text", + "Int8" + ] } }, "query": "\n UPDATE prover_jobs\n SET status = 'successful', updated_at = now(), time_taken = $1, result = $2, proccesed_by = $3\n WHERE id = $4\n " @@ -3927,9 +4640,13 @@ "type_info": "ByteaArray" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "SELECT l2_to_l1_logs FROM l1_batches WHERE number = $1" @@ -3943,7 +4660,9 @@ "type_info": "Int8" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { "Left": [] } @@ -4179,7 +4898,9 @@ true ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "SELECT number, timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, rollup_last_leaf_index, zkporter_is_available, bootloader_code_hash, default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, meta_parameters_hash, protocol_version, events_queue_commitment, bootloader_initial_content_commitment FROM l1_batches LEFT JOIN commitments ON commitments.l1_batch_number = l1_batches.number WHERE number = $1" @@ -4189,7 +4910,11 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int8", "Bytea", "Bytea"] + "Left": [ + "Int8", + "Bytea", + "Bytea" + ] } }, "query": "INSERT INTO commitments (l1_batch_number, events_queue_commitment, bootloader_initial_content_commitment) VALUES ($1, $2, $3) ON CONFLICT (l1_batch_number) DO UPDATE SET events_queue_commitment = $2, bootloader_initial_content_commitment = $3" @@ -4233,9 +4958,21 @@ "type_info": "Bool" } ], - "nullable": [false, false, false, false, false, false, false], + "nullable": [ + false, + false, + false, + false, + false, + false, + false + ], "parameters": { - "Left": ["Time", "Text", "Int8"] + "Left": [ + "Time", + "Text", + "Int8" + ] } }, "query": "\n UPDATE prover_jobs_fri\n SET status = 'successful', updated_at = now(), time_taken = $1, proof_blob_url=$2\n WHERE id = $3\n RETURNING prover_jobs_fri.id, prover_jobs_fri.l1_batch_number, prover_jobs_fri.circuit_id,\n prover_jobs_fri.aggregation_round, prover_jobs_fri.sequence_number, prover_jobs_fri.depth,\n prover_jobs_fri.is_node_final_proof\n " @@ -4249,7 +4986,9 @@ "type_info": "Int4" } ], - "nullable": [null], + "nullable": [ + null + ], "parameters": { "Left": [] } @@ -4265,9 +5004,16 @@ "type_info": "Int4" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { - "Left": ["Bytea", "Bytea", "Bytea", "Bytea"] + "Left": [ + "Bytea", + "Bytea", + "Bytea", + "Bytea" + ] } }, "query": "SELECT id FROM prover_fri_protocol_versions WHERE recursion_circuits_set_vks_hash = $1 AND recursion_leaf_level_vk_hash = $2 AND recursion_node_level_vk_hash = $3 AND recursion_scheduler_level_vk_hash = $4 " @@ -4291,9 +5037,16 @@ "type_info": "Bytea" } ], - "nullable": [false, false, true], + "nullable": [ + false, + false, + true + ], "parameters": { - "Left": ["Bytea", "Bytea"] + "Left": [ + "Bytea", + "Bytea" + ] } }, "query": "\n SELECT factory_deps.bytecode, transactions.data as \"data?\", transactions.contract_address as \"contract_address?\"\n FROM (\n SELECT * FROM storage_logs\n WHERE storage_logs.hashed_key = $1\n ORDER BY miniblock_number DESC, operation_number DESC\n LIMIT 1\n ) storage_logs\n JOIN factory_deps ON factory_deps.bytecode_hash = storage_logs.value\n LEFT JOIN transactions ON transactions.hash = storage_logs.tx_hash\n WHERE storage_logs.value != $2\n " @@ -4307,9 +5060,14 @@ "type_info": "Bytea" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { - "Left": ["Int8", "Int8"] + "Left": [ + "Int8", + "Int8" + ] } }, "query": "SELECT hash FROM miniblocks WHERE number BETWEEN $1 AND $2 ORDER BY number" @@ -4347,9 +5105,13 @@ "type_info": "Int4" } ], - "nullable": [true], + "nullable": [ + true + ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "\n SELECT protocol_version\n FROM witness_inputs\n WHERE l1_batch_number = $1\n " @@ -4583,7 +5345,11 @@ true ], "parameters": { - "Left": ["Int8", "Int8", "Int8"] + "Left": [ + "Int8", + "Int8", + "Int8" + ] } }, "query": "SELECT number, timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, rollup_last_leaf_index, zkporter_is_available, bootloader_code_hash, default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, meta_parameters_hash, protocol_version, events_queue_commitment, bootloader_initial_content_commitment FROM l1_batches LEFT JOIN commitments ON commitments.l1_batch_number = l1_batches.number WHERE number BETWEEN $1 AND $2 ORDER BY number LIMIT $3" @@ -4593,7 +5359,11 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["ByteaArray", "ByteaArray", "Int8"] + "Left": [ + "ByteaArray", + "ByteaArray", + "Int8" + ] } }, "query": "INSERT INTO factory_deps (bytecode_hash, bytecode, miniblock_number, created_at, updated_at) SELECT u.bytecode_hash, u.bytecode, $3, now(), now() FROM UNNEST($1::bytea[], $2::bytea[]) AS u(bytecode_hash, bytecode) ON CONFLICT (bytecode_hash) DO NOTHING" @@ -4617,9 +5387,15 @@ "type_info": "Text" } ], - "nullable": [false, true, true], + "nullable": [ + false, + true, + true + ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "\n SELECT l1_batch_number, basic_circuits_blob_url, basic_circuits_inputs_blob_url FROM leaf_aggregation_witness_jobs\n WHERE status='successful' AND is_blob_cleaned=FALSE\n AND basic_circuits_blob_url is NOT NULL\n AND basic_circuits_inputs_blob_url is NOT NULL\n AND updated_at < NOW() - INTERVAL '30 days'\n LIMIT $1;\n " @@ -4638,9 +5414,14 @@ "type_info": "Int8" } ], - "nullable": [null, null], + "nullable": [ + null, + null + ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "SELECT MIN(miniblocks.number) as \"min?\", MAX(miniblocks.number) as \"max?\" FROM miniblocks WHERE l1_batch_number = $1" @@ -4654,9 +5435,13 @@ "type_info": "Int8" } ], - "nullable": [true], + "nullable": [ + true + ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "SELECT l1_batch_number FROM miniblocks WHERE number = $1" @@ -4670,7 +5455,9 @@ "type_info": "Int8" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { "Left": [] } @@ -4686,9 +5473,13 @@ "type_info": "Int8" } ], - "nullable": [null], + "nullable": [ + null + ], "parameters": { - "Left": ["Numeric"] + "Left": [ + "Numeric" + ] } }, "query": "SELECT max(l1_batches.number) FROM l1_batches JOIN eth_txs ON (l1_batches.eth_commit_tx_id = eth_txs.id) JOIN eth_txs_history AS commit_tx ON (eth_txs.confirmed_eth_tx_history_id = commit_tx.id) WHERE commit_tx.confirmed_at IS NOT NULL AND eth_prove_tx_id IS NOT NULL AND eth_execute_tx_id IS NULL AND EXTRACT(epoch FROM commit_tx.confirmed_at) < $1" @@ -4702,9 +5493,13 @@ "type_info": "ByteaArray" } ], - "nullable": [null], + "nullable": [ + null + ], "parameters": { - "Left": ["ByteaArray"] + "Left": [ + "ByteaArray" + ] } }, "query": "SELECT (SELECT ARRAY[address,key] FROM storage_logs WHERE hashed_key = u.hashed_key ORDER BY miniblock_number, operation_number LIMIT 1) as \"address_and_key?\" FROM UNNEST($1::bytea[]) AS u(hashed_key)" @@ -4718,7 +5513,9 @@ "type_info": "Int8" } ], - "nullable": [null], + "nullable": [ + null + ], "parameters": { "Left": [] } @@ -4739,9 +5536,14 @@ "type_info": "Bytea" } ], - "nullable": [false, false], + "nullable": [ + false, + false + ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "SELECT * FROM call_traces WHERE tx_hash IN (SELECT hash FROM transactions WHERE miniblock_number = $1)" @@ -4751,7 +5553,15 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int8", "Bytea", "Bytea", "Text", "Text", "Int4", "Int4"] + "Left": [ + "Int8", + "Bytea", + "Bytea", + "Text", + "Text", + "Int4", + "Int4" + ] } }, "query": "\n INSERT INTO leaf_aggregation_witness_jobs\n (l1_batch_number, basic_circuits, basic_circuits_inputs, basic_circuits_blob_url, basic_circuits_inputs_blob_url, number_of_basic_circuits, protocol_version, status, created_at, updated_at)\n VALUES ($1, $2, $3, $4, $5, $6, $7, 'waiting_for_proofs', now(), now())\n " @@ -4770,9 +5580,14 @@ "type_info": "Text" } ], - "nullable": [false, true], + "nullable": [ + false, + true + ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "SELECT l1_batch_number, merkel_tree_paths_blob_url FROM witness_inputs WHERE status = 'successful' AND is_blob_cleaned = FALSE AND merkel_tree_paths_blob_url is NOT NULL AND updated_at < NOW() - INTERVAL '30 days' LIMIT $1" @@ -5006,7 +5821,12 @@ true ], "parameters": { - "Left": ["Bytea", "Bytea", "Int4", "Int8"] + "Left": [ + "Bytea", + "Bytea", + "Int4", + "Int8" + ] } }, "query": "SELECT number, l1_batches.timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, rollup_last_leaf_index, zkporter_is_available, l1_batches.bootloader_code_hash, l1_batches.default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, meta_parameters_hash, protocol_version, events_queue_commitment, bootloader_initial_content_commitment FROM l1_batches LEFT JOIN commitments ON commitments.l1_batch_number = l1_batches.number JOIN protocol_versions ON protocol_versions.id = l1_batches.protocol_version WHERE eth_commit_tx_id IS NULL AND number != 0 AND protocol_versions.bootloader_code_hash = $1 AND protocol_versions.default_account_code_hash = $2 AND commitment IS NOT NULL AND (protocol_versions.id = $3 OR protocol_versions.upgrade_tx_hash IS NULL) ORDER BY number LIMIT $4" @@ -5016,7 +5836,11 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int8", "Text", "Int4"] + "Left": [ + "Int8", + "Text", + "Int4" + ] } }, "query": "INSERT INTO witness_inputs_fri(l1_batch_number, merkle_tree_paths_blob_url, protocol_version, status, created_at, updated_at) VALUES ($1, $2, $3, 'queued', now(), now()) ON CONFLICT (l1_batch_number) DO NOTHING" @@ -5136,7 +5960,10 @@ true ], "parameters": { - "Left": ["TextArray", "Int4Array"] + "Left": [ + "TextArray", + "Int4Array" + ] } }, "query": "\n UPDATE prover_jobs\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now()\n WHERE id = (\n SELECT id\n FROM prover_jobs\n WHERE circuit_type = ANY($1)\n AND status = 'queued'\n AND protocol_version = ANY($2)\n ORDER BY aggregation_round DESC, l1_batch_number ASC, id ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING prover_jobs.*\n " @@ -5150,9 +5977,13 @@ "type_info": "Bytea" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "UPDATE transactions\n SET l1_batch_number = NULL, miniblock_number = NULL, error = NULL, index_in_block = NULL, execution_info = '{}'\n WHERE miniblock_number > $1\n RETURNING hash\n " @@ -5162,7 +5993,11 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Bytea", "Numeric", "Timestamp"] + "Left": [ + "Bytea", + "Numeric", + "Timestamp" + ] } }, "query": "UPDATE tokens SET usd_price = $2, usd_price_updated_at = $3, updated_at = now() WHERE l1_address = $1" @@ -5172,7 +6007,10 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Bytea", "Jsonb"] + "Left": [ + "Bytea", + "Jsonb" + ] } }, "query": "\n INSERT INTO contracts_verification_info\n (address, verification_info)\n VALUES ($1, $2)\n ON CONFLICT (address)\n DO UPDATE SET verification_info = $2\n " @@ -5186,7 +6024,9 @@ "type_info": "Int8" } ], - "nullable": [null], + "nullable": [ + null + ], "parameters": { "Left": [] } @@ -5198,7 +6038,9 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "UPDATE miniblocks SET l1_batch_number = $1 WHERE l1_batch_number IS NULL" @@ -5272,9 +6114,25 @@ "type_info": "Bytea" } ], - "nullable": [false, false, false, false, null, null, false, false, false, false, false, false, false], + "nullable": [ + false, + false, + false, + false, + null, + null, + false, + false, + false, + false, + false, + false, + false + ], "parameters": { - "Left": ["Bytea"] + "Left": [ + "Bytea" + ] } }, "query": "SELECT miniblock_number, log_index_in_miniblock, log_index_in_tx, tx_hash, Null::bytea as \"block_hash\", Null::bigint as \"l1_batch_number?\", shard_id, is_service, tx_index_in_miniblock, tx_index_in_l1_batch, sender, key, value FROM l2_to_l1_logs WHERE tx_hash = $1 ORDER BY log_index_in_tx ASC" @@ -5293,9 +6151,15 @@ "type_info": "Text" } ], - "nullable": [false, false], + "nullable": [ + false, + false + ], "parameters": { - "Left": ["Text", "Text"] + "Left": [ + "Text", + "Text" + ] } }, "query": "SELECT l1_batch_number, status FROM proof_compression_jobs_fri\n WHERE l1_batch_number = ( SELECT MIN(l1_batch_number) FROM proof_compression_jobs_fri WHERE status = $1 OR status = $2\n )" @@ -5409,7 +6273,9 @@ true ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "SELECT number, l1_tx_count, l2_tx_count, timestamp, is_finished, fee_account_address, l2_to_l1_logs, l2_to_l1_messages, bloom, priority_ops_onchain_data, used_contract_hashes, base_fee_per_gas, l1_gas_price, l2_fair_gas_price, bootloader_code_hash, default_aa_code_hash, protocol_version FROM l1_batches WHERE number = $1" @@ -5428,9 +6294,14 @@ "type_info": "Bytea" } ], - "nullable": [false, true], + "nullable": [ + false, + true + ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "SELECT timestamp, hash FROM l1_batches WHERE number = $1" @@ -5440,7 +6311,9 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "DELETE FROM l1_batches WHERE number > $1" @@ -5459,9 +6332,14 @@ "type_info": "Text" } ], - "nullable": [false, true], + "nullable": [ + false, + true + ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "\n SELECT id, circuit_input_blob_url FROM prover_jobs\n WHERE status='successful' AND is_blob_cleaned=FALSE\n AND circuit_input_blob_url is NOT NULL\n AND updated_at < NOW() - INTERVAL '30 days'\n LIMIT $1;\n " @@ -5485,9 +6363,16 @@ "type_info": "Int2" } ], - "nullable": [false, false, false], + "nullable": [ + false, + false, + false + ], "parameters": { - "Left": ["Interval", "Int2"] + "Left": [ + "Interval", + "Int2" + ] } }, "query": "\n UPDATE prover_jobs_fri\n SET status = 'queued', attempts = attempts + 1, updated_at = now(), processing_started_at = now()\n WHERE (status = 'in_progress' AND processing_started_at <= now() - $1::interval AND attempts < $2)\n OR (status = 'in_gpu_proof' AND processing_started_at <= now() - $1::interval AND attempts < $2)\n OR (status = 'failed' AND attempts < $2)\n RETURNING id, status, attempts\n " @@ -5556,9 +6441,24 @@ "type_info": "Text" } ], - "nullable": [false, false, true, true, false, true, true, true, false, false, false, false], + "nullable": [ + false, + false, + true, + true, + false, + true, + true, + true, + false, + false, + false, + false + ], "parameters": { - "Left": ["Bytea"] + "Left": [ + "Bytea" + ] } }, "query": "\n SELECT transactions.is_priority,\n transactions.initiator_address,\n transactions.gas_limit,\n transactions.gas_per_pubdata_limit,\n transactions.received_at,\n transactions.miniblock_number,\n transactions.error,\n transactions.effective_gas_price,\n transactions.refunded_gas,\n commit_tx.tx_hash as \"eth_commit_tx_hash?\",\n prove_tx.tx_hash as \"eth_prove_tx_hash?\",\n execute_tx.tx_hash as \"eth_execute_tx_hash?\"\n FROM transactions\n LEFT JOIN miniblocks ON miniblocks.number = transactions.miniblock_number\n LEFT JOIN l1_batches ON l1_batches.number = miniblocks.l1_batch_number\n LEFT JOIN eth_txs_history as commit_tx ON (l1_batches.eth_commit_tx_id = commit_tx.eth_tx_id AND commit_tx.confirmed_at IS NOT NULL)\n LEFT JOIN eth_txs_history as prove_tx ON (l1_batches.eth_prove_tx_id = prove_tx.eth_tx_id AND prove_tx.confirmed_at IS NOT NULL)\n LEFT JOIN eth_txs_history as execute_tx ON (l1_batches.eth_execute_tx_id = execute_tx.eth_tx_id AND execute_tx.confirmed_at IS NOT NULL)\n WHERE transactions.hash = $1\n " @@ -5568,7 +6468,11 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int4", "Int8", "Int8"] + "Left": [ + "Int4", + "Int8", + "Int8" + ] } }, "query": "UPDATE l1_batches SET eth_prove_tx_id = $1, updated_at = now() WHERE number BETWEEN $2 AND $3" @@ -5578,7 +6482,10 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Time", "Int8"] + "Left": [ + "Time", + "Int8" + ] } }, "query": "\n UPDATE leaf_aggregation_witness_jobs_fri\n SET status = 'successful', updated_at = now(), time_taken = $1\n WHERE id = $2\n " @@ -5698,7 +6605,9 @@ false ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "\n SELECT miniblocks.number,\n COALESCE(miniblocks.l1_batch_number, (SELECT (max(number) + 1) FROM l1_batches)) as \"l1_batch_number!\",\n miniblocks.timestamp,\n miniblocks.l1_tx_count,\n miniblocks.l2_tx_count,\n miniblocks.hash as \"root_hash?\",\n commit_tx.tx_hash as \"commit_tx_hash?\",\n commit_tx.confirmed_at as \"committed_at?\",\n prove_tx.tx_hash as \"prove_tx_hash?\",\n prove_tx.confirmed_at as \"proven_at?\",\n execute_tx.tx_hash as \"execute_tx_hash?\",\n execute_tx.confirmed_at as \"executed_at?\",\n miniblocks.l1_gas_price,\n miniblocks.l2_fair_gas_price,\n miniblocks.bootloader_code_hash,\n miniblocks.default_aa_code_hash,\n miniblocks.protocol_version,\n l1_batches.fee_account_address as \"fee_account_address?\"\n FROM miniblocks\n LEFT JOIN l1_batches ON miniblocks.l1_batch_number = l1_batches.number\n LEFT JOIN eth_txs_history as commit_tx ON (l1_batches.eth_commit_tx_id = commit_tx.eth_tx_id AND commit_tx.confirmed_at IS NOT NULL)\n LEFT JOIN eth_txs_history as prove_tx ON (l1_batches.eth_prove_tx_id = prove_tx.eth_tx_id AND prove_tx.confirmed_at IS NOT NULL)\n LEFT JOIN eth_txs_history as execute_tx ON (l1_batches.eth_execute_tx_id = execute_tx.eth_tx_id AND execute_tx.confirmed_at IS NOT NULL)\n WHERE miniblocks.number = $1\n " @@ -5712,9 +6621,13 @@ "type_info": "Bytea" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "SELECT DISTINCT ON (hashed_key) hashed_key FROM (SELECT * FROM storage_logs WHERE miniblock_number > $1) inn" @@ -5738,7 +6651,11 @@ "type_info": "Int4" } ], - "nullable": [false, false, false], + "nullable": [ + false, + false, + false + ], "parameters": { "Left": [] } @@ -5750,7 +6667,9 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "UPDATE prover_jobs_fri SET status = 'sent_to_server', updated_at = now() WHERE l1_batch_number = $1" @@ -5760,7 +6679,9 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "\n INSERT INTO scheduler_dependency_tracker_fri\n (l1_batch_number, status, created_at, updated_at)\n VALUES ($1, 'waiting_for_proofs', now(), now())\n ON CONFLICT(l1_batch_number)\n DO UPDATE SET updated_at=now()\n " @@ -5801,7 +6722,9 @@ "type_info": "Bytea" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { "Left": [] } @@ -5817,9 +6740,17 @@ "type_info": "Int4" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { - "Left": ["Int4", "Int8", "Int8", "Text", "Bytea"] + "Left": [ + "Int4", + "Int8", + "Int8", + "Text", + "Bytea" + ] } }, "query": "INSERT INTO eth_txs_history\n (eth_tx_id, base_fee_per_gas, priority_fee_per_gas, tx_hash, signed_raw_tx, created_at, updated_at)\n VALUES ($1, $2, $3, $4, $5, now(), now())\n ON CONFLICT (tx_hash) DO NOTHING\n RETURNING id" @@ -5833,9 +6764,14 @@ "type_info": "Bytea" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { - "Left": ["Bytea", "Int8"] + "Left": [ + "Bytea", + "Int8" + ] } }, "query": "\n SELECT value\n FROM storage_logs\n WHERE storage_logs.hashed_key = $1 AND storage_logs.miniblock_number <= $2\n ORDER BY storage_logs.miniblock_number DESC, storage_logs.operation_number DESC\n LIMIT 1\n " @@ -5849,9 +6785,13 @@ "type_info": "Int4" } ], - "nullable": [true], + "nullable": [ + true + ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "SELECT protocol_version FROM l1_batches WHERE number = $1" @@ -5920,9 +6860,28 @@ "type_info": "Int8" } ], - "nullable": [false, false, false, false, false, true, false, false, false, true, true, false], + "nullable": [ + false, + false, + false, + false, + false, + true, + false, + false, + false, + true, + true, + false + ], "parameters": { - "Left": ["Bytea", "Int8", "Text", "Text", "Int8"] + "Left": [ + "Bytea", + "Int8", + "Text", + "Text", + "Int8" + ] } }, "query": "INSERT INTO eth_txs (raw_tx, nonce, tx_type, contract_address, predicted_gas_cost, created_at, updated_at)\n VALUES ($1, $2, $3, $4, $5, now(), now())\n RETURNING *" @@ -5932,7 +6891,9 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int8Array"] + "Left": [ + "Int8Array" + ] } }, "query": "\n UPDATE prover_jobs\n SET is_blob_cleaned=TRUE\n WHERE id = ANY($1);\n " @@ -5946,9 +6907,14 @@ "type_info": "Int8" } ], - "nullable": [null], + "nullable": [ + null + ], "parameters": { - "Left": ["Bytea", "Bytea"] + "Left": [ + "Bytea", + "Bytea" + ] } }, "query": "SELECT COUNT(*) as \"count!\" FROM (SELECT * FROM storage_logs WHERE storage_logs.hashed_key = $1 ORDER BY storage_logs.miniblock_number DESC, storage_logs.operation_number DESC LIMIT 1) sl WHERE sl.value != $2" @@ -5958,7 +6924,9 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["ByteaArray"] + "Left": [ + "ByteaArray" + ] } }, "query": "DELETE FROM storage WHERE hashed_key = ANY($1)" @@ -5968,7 +6936,10 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Text", "Int8"] + "Left": [ + "Text", + "Int8" + ] } }, "query": "UPDATE prover_jobs_fri SET status = $1, updated_at = now() WHERE id = $2" @@ -6088,7 +7059,9 @@ true ], "parameters": { - "Left": ["Int4Array"] + "Left": [ + "Int4Array" + ] } }, "query": "\n UPDATE prover_jobs\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now()\n WHERE id = (\n SELECT id\n FROM prover_jobs\n WHERE status = 'queued'\n AND protocol_version = ANY($1)\n ORDER BY aggregation_round DESC, l1_batch_number ASC, id ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING prover_jobs.*\n " @@ -6130,7 +7103,12 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int8", "Bytea", "Text", "Int4"] + "Left": [ + "Int8", + "Bytea", + "Text", + "Int4" + ] } }, "query": "\n INSERT INTO scheduler_witness_jobs\n (l1_batch_number, scheduler_witness, scheduler_witness_blob_url, protocol_version, status, created_at, updated_at)\n VALUES ($1, $2, $3, $4, 'waiting_for_artifacts', now(), now())\n " @@ -6144,9 +7122,21 @@ "type_info": "Int8" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { - "Left": ["Bytea", "Text", "Text", "Text", "Text", "Bool", "Text", "Bytea", "Bool"] + "Left": [ + "Bytea", + "Text", + "Text", + "Text", + "Text", + "Bool", + "Text", + "Bytea", + "Bool" + ] } }, "query": "\n INSERT INTO contract_verification_requests (\n contract_address,\n source_code,\n contract_name,\n zk_compiler_version,\n compiler_version,\n optimization_used,\n optimizer_mode,\n constructor_arguments,\n is_system,\n status,\n created_at,\n updated_at\n )\n VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, 'queued', now(), now())\n RETURNING id\n " @@ -6156,7 +7146,15 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int8", "Text", "Int4", "Bytea", "Int4", "Text", "Int4"] + "Left": [ + "Int8", + "Text", + "Int4", + "Bytea", + "Int4", + "Text", + "Int4" + ] } }, "query": "\n INSERT INTO prover_jobs (l1_batch_number, circuit_type, sequence_number, prover_input, aggregation_round, circuit_input_blob_url, protocol_version, status, created_at, updated_at)\n VALUES ($1, $2, $3, $4, $5, $6, $7, 'queued', now(), now())\n ON CONFLICT(l1_batch_number, aggregation_round, sequence_number) DO NOTHING\n " @@ -6180,7 +7178,11 @@ "type_info": "Int8" } ], - "nullable": [null, null, null], + "nullable": [ + null, + null, + null + ], "parameters": { "Left": [] } @@ -6217,7 +7219,16 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int8", "Int2", "Text", "Int2", "Int4", "Int4", "Bool", "Int4"] + "Left": [ + "Int8", + "Int2", + "Text", + "Int2", + "Int4", + "Int4", + "Bool", + "Int4" + ] } }, "query": "\n INSERT INTO prover_jobs_fri (l1_batch_number, circuit_id, circuit_blob_url, aggregation_round, sequence_number, depth, is_node_final_proof, protocol_version, status, created_at, updated_at)\n VALUES ($1, $2, $3, $4, $5, $6, $7, $8, 'queued', now(), now())\n ON CONFLICT(l1_batch_number, aggregation_round, circuit_id, depth, sequence_number)\n DO UPDATE SET updated_at=now()\n " @@ -6276,9 +7287,22 @@ "type_info": "Bool" } ], - "nullable": [false, false, false, false, false, false, false, true, false, false], + "nullable": [ + false, + false, + false, + false, + false, + false, + false, + true, + false, + false + ], "parameters": { - "Left": ["Interval"] + "Left": [ + "Interval" + ] } }, "query": "UPDATE contract_verification_requests\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now()\n WHERE id = (\n SELECT id FROM contract_verification_requests\n WHERE status = 'queued' OR (status = 'in_progress' AND processing_started_at < now() - $1::interval)\n ORDER BY created_at\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING id, contract_address, source_code, contract_name, zk_compiler_version, compiler_version, optimization_used,\n optimizer_mode, constructor_arguments, is_system\n " @@ -6362,9 +7386,28 @@ "type_info": "Text" } ], - "nullable": [false, false, false, true, false, false, true, false, false, true, true, true, true, true, true], + "nullable": [ + false, + false, + false, + true, + false, + false, + true, + false, + false, + true, + true, + true, + true, + true, + true + ], "parameters": { - "Left": ["Int4Array", "Text"] + "Left": [ + "Int4Array", + "Text" + ] } }, "query": "\n UPDATE leaf_aggregation_witness_jobs_fri\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now(),\n picked_by = $2\n WHERE id = (\n SELECT id\n FROM leaf_aggregation_witness_jobs_fri\n WHERE status = 'queued'\n AND protocol_version = ANY($1)\n ORDER BY l1_batch_number ASC, id ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING leaf_aggregation_witness_jobs_fri.*\n " @@ -6378,9 +7421,13 @@ "type_info": "Bytea" } ], - "nullable": [true], + "nullable": [ + true + ], "parameters": { - "Left": ["Int4"] + "Left": [ + "Int4" + ] } }, "query": "\n SELECT upgrade_tx_hash FROM protocol_versions\n WHERE id = $1\n " @@ -6390,7 +7437,13 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int4", "Bytea", "Bytea", "Bytea", "Bytea"] + "Left": [ + "Int4", + "Bytea", + "Bytea", + "Bytea", + "Bytea" + ] } }, "query": "INSERT INTO prover_fri_protocol_versions (id, recursion_scheduler_level_vk_hash, recursion_node_level_vk_hash, recursion_leaf_level_vk_hash, recursion_circuits_set_vks_hash, created_at) VALUES ($1, $2, $3, $4, $5, now()) ON CONFLICT(id) DO NOTHING" @@ -6464,9 +7517,25 @@ "type_info": "Int4" } ], - "nullable": [false, false, false, false, false, false, null, null, false, false, false, false, false], + "nullable": [ + false, + false, + false, + false, + false, + false, + null, + null, + false, + false, + false, + false, + false + ], "parameters": { - "Left": ["Bytea"] + "Left": [ + "Bytea" + ] } }, "query": "\n SELECT\n address, topic1, topic2, topic3, topic4, value,\n Null::bytea as \"block_hash\", Null::bigint as \"l1_batch_number?\",\n miniblock_number, tx_hash, tx_index_in_block,\n event_index_in_block, event_index_in_tx\n FROM events\n WHERE tx_hash = $1\n ORDER BY miniblock_number ASC, event_index_in_block ASC\n " @@ -6476,7 +7545,11 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int4", "Int8", "Int8"] + "Left": [ + "Int4", + "Int8", + "Int8" + ] } }, "query": "UPDATE l1_batches SET eth_execute_tx_id = $1, updated_at = now() WHERE number BETWEEN $2 AND $3" @@ -6486,7 +7559,9 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "\n UPDATE scheduler_witness_jobs_fri\n SET status='queued'\n WHERE l1_batch_number = $1\n AND status != 'successful'\n AND status != 'in_progress'\n " @@ -6505,9 +7580,15 @@ "type_info": "Timestamp" } ], - "nullable": [false, false], + "nullable": [ + false, + false + ], "parameters": { - "Left": ["Timestamp", "Int8"] + "Left": [ + "Timestamp", + "Int8" + ] } }, "query": "SELECT transactions.hash, transactions.received_at FROM transactions LEFT JOIN miniblocks ON miniblocks.number = miniblock_number WHERE received_at > $1 ORDER BY received_at ASC LIMIT $2" @@ -6517,7 +7598,10 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int8", "Text"] + "Left": [ + "Int8", + "Text" + ] } }, "query": "INSERT INTO proof_generation_details (l1_batch_number, status, proof_gen_data_blob_url, created_at, updated_at) VALUES ($1, 'ready_to_be_proven', $2, now(), now()) ON CONFLICT (l1_batch_number) DO NOTHING" @@ -6531,9 +7615,13 @@ "type_info": "Int4" } ], - "nullable": [null], + "nullable": [ + null + ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "SELECT MAX(operation_number) as \"max?\" FROM storage_logs WHERE miniblock_number = $1" @@ -6547,9 +7635,13 @@ "type_info": "Int8" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { - "Left": ["Bytea"] + "Left": [ + "Bytea" + ] } }, "query": "SELECT l1_batch_number FROM initial_writes WHERE hashed_key = $1" @@ -6568,9 +7660,15 @@ "type_info": "Bytea" } ], - "nullable": [true, true], + "nullable": [ + true, + true + ], "parameters": { - "Left": ["Int8", "Int8"] + "Left": [ + "Int8", + "Int8" + ] } }, "query": "SELECT prover_jobs.result as proof, scheduler_witness_jobs.aggregation_result_coords\n FROM prover_jobs\n INNER JOIN scheduler_witness_jobs\n ON prover_jobs.l1_batch_number = scheduler_witness_jobs.l1_batch_number\n WHERE prover_jobs.l1_batch_number >= $1 AND prover_jobs.l1_batch_number <= $2\n AND prover_jobs.aggregation_round = 3\n AND prover_jobs.status = 'successful'\n " @@ -6639,9 +7737,24 @@ "type_info": "Int8" } ], - "nullable": [false, false, false, false, false, true, false, false, false, true, true, false], + "nullable": [ + false, + false, + false, + false, + false, + true, + false, + false, + false, + true, + true, + false + ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "SELECT * FROM eth_txs \n WHERE id > (SELECT COALESCE(MAX(eth_tx_id), 0) FROM eth_txs_history)\n ORDER BY id\n LIMIT $1\n " @@ -6651,7 +7764,12 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Text", "Time", "Text", "Int8"] + "Left": [ + "Text", + "Time", + "Text", + "Int8" + ] } }, "query": "UPDATE proof_compression_jobs_fri SET status = $1, updated_at = now(), time_taken = $2, l1_proof_blob_url = $3WHERE l1_batch_number = $4" @@ -6665,7 +7783,9 @@ "type_info": "Int8" } ], - "nullable": [null], + "nullable": [ + null + ], "parameters": { "Left": [] } @@ -6681,7 +7801,9 @@ "type_info": "Int8" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { "Left": [] } @@ -6693,7 +7815,11 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["ByteaArray", "Int8Array", "Int8"] + "Left": [ + "ByteaArray", + "Int8Array", + "Int8" + ] } }, "query": "INSERT INTO initial_writes (hashed_key, index, l1_batch_number, created_at, updated_at) SELECT u.hashed_key, u.index, $3, now(), now() FROM UNNEST($1::bytea[], $2::bigint[]) AS u(hashed_key, index)" @@ -6757,9 +7883,23 @@ "type_info": "Timestamp" } ], - "nullable": [false, false, false, false, false, false, false, true, true, true, true], + "nullable": [ + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true + ], "parameters": { - "Left": ["Int4"] + "Left": [ + "Int4" + ] } }, "query": "SELECT * FROM eth_txs_history WHERE eth_tx_id = $1 ORDER BY created_at DESC LIMIT 1" @@ -6769,7 +7909,10 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Bytea", "Int8"] + "Left": [ + "Bytea", + "Int8" + ] } }, "query": "\n UPDATE scheduler_witness_jobs\n SET aggregation_result_coords = $1,\n updated_at = now()\n WHERE l1_batch_number = $2\n " @@ -6779,7 +7922,9 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "DELETE FROM factory_deps WHERE miniblock_number > $1" @@ -6798,9 +7943,14 @@ "type_info": "Int4" } ], - "nullable": [true, true], + "nullable": [ + true, + true + ], "parameters": { - "Left": ["Bytea"] + "Left": [ + "Bytea" + ] } }, "query": "SELECT l1_batch_number, l1_batch_tx_index FROM transactions WHERE hash = $1" @@ -6810,7 +7960,10 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Time", "Int8"] + "Left": [ + "Time", + "Int8" + ] } }, "query": "\n UPDATE scheduler_witness_jobs_fri\n SET status = 'successful', updated_at = now(), time_taken = $1\n WHERE l1_batch_number = $2\n " @@ -6824,7 +7977,9 @@ "type_info": "Int4" } ], - "nullable": [true], + "nullable": [ + true + ], "parameters": { "Left": [] } @@ -6890,9 +8045,23 @@ "type_info": "Timestamp" } ], - "nullable": [false, false, false, false, false, false, false, true, true, true, true], + "nullable": [ + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true + ], "parameters": { - "Left": ["Int4"] + "Left": [ + "Int4" + ] } }, "query": "SELECT * FROM eth_txs_history WHERE eth_tx_id = $1 ORDER BY created_at DESC" @@ -6902,7 +8071,10 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Text", "Int8"] + "Left": [ + "Text", + "Int8" + ] } }, "query": "\n UPDATE leaf_aggregation_witness_jobs_fri\n SET status ='failed', error= $1, updated_at = now()\n WHERE id = $2\n " @@ -6912,7 +8084,10 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int8Array", "ByteaArray"] + "Left": [ + "Int8Array", + "ByteaArray" + ] } }, "query": "UPDATE miniblocks SET hash = u.hash FROM UNNEST($1::bigint[], $2::bytea[]) AS u(number, hash) WHERE miniblocks.number = u.number\n " @@ -6931,9 +8106,15 @@ "type_info": "Bytea" } ], - "nullable": [false, false], + "nullable": [ + false, + false + ], "parameters": { - "Left": ["Int8", "Int8"] + "Left": [ + "Int8", + "Int8" + ] } }, "query": "SELECT number, hash FROM miniblocks WHERE number > $1 ORDER BY number ASC LIMIT $2" @@ -6981,7 +8162,10 @@ "type_info": "Bytea" } ], - "nullable": [false, false], + "nullable": [ + false, + false + ], "parameters": { "Left": [] } @@ -7217,7 +8401,10 @@ true ], "parameters": { - "Left": ["Int8", "Int8"] + "Left": [ + "Int8", + "Int8" + ] } }, "query": "SELECT number, timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, rollup_last_leaf_index, zkporter_is_available, bootloader_code_hash, default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, meta_parameters_hash, protocol_version, events_queue_commitment, bootloader_initial_content_commitment FROM (SELECT l1_batches.*, row_number() OVER (ORDER BY number ASC) AS row_number FROM l1_batches WHERE eth_commit_tx_id IS NOT NULL AND l1_batches.skip_proof = TRUE AND l1_batches.number > $1 ORDER BY number LIMIT $2) inn LEFT JOIN commitments ON commitments.l1_batch_number = inn.number WHERE number - row_number = $1" @@ -7286,7 +8473,20 @@ "type_info": "Int8" } ], - "nullable": [false, false, false, false, false, true, false, false, false, true, true, false], + "nullable": [ + false, + false, + false, + false, + false, + true, + false, + false, + false, + true, + true, + false + ], "parameters": { "Left": [] } @@ -7298,7 +8498,15 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int4", "Int8", "Bytea", "Bytea", "Bytea", "Bytea", "Bytea"] + "Left": [ + "Int4", + "Int8", + "Bytea", + "Bytea", + "Bytea", + "Bytea", + "Bytea" + ] } }, "query": "INSERT INTO prover_protocol_versions\n (id, timestamp, recursion_scheduler_level_vk_hash, recursion_node_level_vk_hash,\n recursion_leaf_level_vk_hash, recursion_circuits_set_vks_hash, verifier_address, created_at)\n VALUES ($1, $2, $3, $4, $5, $6, $7, now())\n " @@ -7357,7 +8565,18 @@ "type_info": "Bool" } ], - "nullable": [false, false, false, false, false, false, false, true, false, false], + "nullable": [ + false, + false, + false, + false, + false, + false, + false, + true, + false, + false + ], "parameters": { "Left": [] } @@ -7383,9 +8602,16 @@ "type_info": "Int2" } ], - "nullable": [false, false, false], + "nullable": [ + false, + false, + false + ], "parameters": { - "Left": ["Interval", "Int2"] + "Left": [ + "Interval", + "Int2" + ] } }, "query": "\n UPDATE leaf_aggregation_witness_jobs_fri\n SET status = 'queued', attempts = attempts + 1, updated_at = now(), processing_started_at = now()\n WHERE (status = 'in_progress' AND processing_started_at <= now() - $1::interval AND attempts < $2)\n OR (status = 'failed' AND attempts < $2)\n RETURNING id, status, attempts\n " @@ -7409,9 +8635,16 @@ "type_info": "Int2" } ], - "nullable": [false, false, false], + "nullable": [ + false, + false, + false + ], "parameters": { - "Left": ["Interval", "Int2"] + "Left": [ + "Interval", + "Int2" + ] } }, "query": "\n UPDATE witness_inputs_fri\n SET status = 'queued', attempts = attempts + 1, updated_at = now(), processing_started_at = now()\n WHERE (status = 'in_progress' AND processing_started_at <= now() - $1::interval AND attempts < $2)\n OR (status = 'in_gpu_proof' AND processing_started_at <= now() - $1::interval AND attempts < $2)\n OR (status = 'failed' AND attempts < $2)\n RETURNING l1_batch_number, status, attempts\n " @@ -7425,9 +8658,13 @@ "type_info": "Int8" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { - "Left": ["Interval"] + "Left": [ + "Interval" + ] } }, "query": "UPDATE proof_generation_details SET status = 'picked_by_prover', updated_at = now(), prover_taken_at = now() WHERE l1_batch_number = ( SELECT l1_batch_number FROM proof_generation_details WHERE status = 'ready_to_be_proven' OR (status = 'picked_by_prover' AND prover_taken_at < now() - $1::interval) ORDER BY l1_batch_number ASC LIMIT 1 FOR UPDATE SKIP LOCKED ) RETURNING proof_generation_details.l1_batch_number" @@ -7441,9 +8678,15 @@ "type_info": "Int8" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { - "Left": ["Text", "Text", "Text"] + "Left": [ + "Text", + "Text", + "Text" + ] } }, "query": "UPDATE proof_compression_jobs_fri SET status = $1, attempts = attempts + 1, updated_at = now(), processing_started_at = now(), picked_by = $3 WHERE l1_batch_number = ( SELECT l1_batch_number FROM proof_compression_jobs_fri WHERE status = $2 ORDER BY l1_batch_number ASC LIMIT 1 FOR UPDATE SKIP LOCKED ) RETURNING proof_compression_jobs_fri.l1_batch_number" @@ -7677,7 +8920,9 @@ true ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "SELECT number, timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, rollup_last_leaf_index, zkporter_is_available, bootloader_code_hash, default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, meta_parameters_hash, protocol_version, events_queue_commitment, bootloader_initial_content_commitment FROM l1_batches LEFT JOIN commitments ON commitments.l1_batch_number = l1_batches.number WHERE eth_commit_tx_id IS NOT NULL AND eth_prove_tx_id IS NULL ORDER BY number LIMIT $1" @@ -7691,9 +8936,16 @@ "type_info": "Int8" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { - "Left": ["Int8", "Int2", "Int2", "Int4"] + "Left": [ + "Int8", + "Int2", + "Int2", + "Int4" + ] } }, "query": "\n SELECT id from prover_jobs_fri\n WHERE l1_batch_number = $1\n AND circuit_id = $2\n AND aggregation_round = $3\n AND depth = $4\n AND status = 'successful'\n ORDER BY sequence_number ASC;\n " @@ -7712,9 +8964,14 @@ "type_info": "Bytea" } ], - "nullable": [false, false], + "nullable": [ + false, + false + ], "parameters": { - "Left": ["ByteaArray"] + "Left": [ + "ByteaArray" + ] } }, "query": "SELECT bytecode, bytecode_hash FROM factory_deps WHERE bytecode_hash = ANY($1)" @@ -7728,9 +8985,13 @@ "type_info": "Int4" } ], - "nullable": [true], + "nullable": [ + true + ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "SELECT protocol_version FROM miniblocks WHERE number = $1" @@ -7794,9 +9055,24 @@ "type_info": "Text" } ], - "nullable": [false, false, false, true, true, true, false, false, false, true, true], + "nullable": [ + false, + false, + false, + true, + true, + true, + false, + false, + false, + true, + true + ], "parameters": { - "Left": ["Int4Array", "Text"] + "Left": [ + "Int4Array", + "Text" + ] } }, "query": "\n UPDATE scheduler_witness_jobs_fri\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now(),\n picked_by = $2\n WHERE l1_batch_number = (\n SELECT l1_batch_number\n FROM scheduler_witness_jobs_fri\n WHERE status = 'queued'\n AND protocol_version = ANY($1)\n ORDER BY l1_batch_number ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING scheduler_witness_jobs_fri.*\n " @@ -7806,7 +9082,10 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["ByteaArray", "ByteaArray"] + "Left": [ + "ByteaArray", + "ByteaArray" + ] } }, "query": "\n INSERT INTO call_traces (tx_hash, call_trace)\n SELECT u.tx_hash, u.call_trace\n FROM UNNEST($1::bytea[], $2::bytea[])\n AS u(tx_hash, call_trace)\n " @@ -7820,9 +9099,13 @@ "type_info": "Int8Array" } ], - "nullable": [true], + "nullable": [ + true + ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "SELECT storage_refunds FROM l1_batches WHERE number = $1" @@ -7846,9 +9129,16 @@ "type_info": "Int2" } ], - "nullable": [false, false, false], + "nullable": [ + false, + false, + false + ], "parameters": { - "Left": ["Interval", "Int2"] + "Left": [ + "Interval", + "Int2" + ] } }, "query": "\n UPDATE scheduler_witness_jobs_fri\n SET status = 'queued', attempts = attempts + 1, updated_at = now(), processing_started_at = now()\n WHERE (status = 'in_progress' AND processing_started_at <= now() - $1::interval AND attempts < $2)\n OR (status = 'failed' AND attempts < $2)\n RETURNING l1_batch_number, status, attempts\n " @@ -8082,7 +9372,9 @@ true ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "SELECT number, timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, rollup_last_leaf_index, zkporter_is_available, bootloader_code_hash, default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, meta_parameters_hash, protocol_version, events_queue_commitment, bootloader_initial_content_commitment FROM l1_batches LEFT JOIN commitments ON commitments.l1_batch_number = l1_batches.number WHERE eth_prove_tx_id IS NOT NULL AND eth_execute_tx_id IS NULL ORDER BY number LIMIT $1" @@ -8092,7 +9384,15 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int8", "ByteaArray", "Int4Array", "VarcharArray", "JsonbArray", "Int8Array", "NumericArray"] + "Left": [ + "Int8", + "ByteaArray", + "Int4Array", + "VarcharArray", + "JsonbArray", + "Int8Array", + "NumericArray" + ] } }, "query": "\n UPDATE transactions\n SET\n miniblock_number = $1,\n index_in_block = data_table.index_in_block,\n error = NULLIF(data_table.error, ''),\n in_mempool=FALSE,\n execution_info = execution_info || data_table.new_execution_info,\n refunded_gas = data_table.refunded_gas,\n effective_gas_price = data_table.effective_gas_price,\n updated_at = now()\n FROM\n (\n SELECT\n UNNEST($2::bytea[]) AS hash,\n UNNEST($3::integer[]) AS index_in_block,\n UNNEST($4::varchar[]) AS error,\n UNNEST($5::jsonb[]) AS new_execution_info,\n UNNEST($6::bigint[]) as refunded_gas,\n UNNEST($7::numeric[]) as effective_gas_price\n ) AS data_table\n WHERE transactions.hash = data_table.hash\n " @@ -8136,7 +9436,15 @@ "type_info": "Int8" } ], - "nullable": [false, false, false, false, false, true, false], + "nullable": [ + false, + false, + false, + false, + false, + true, + false + ], "parameters": { "Left": [] } @@ -8162,9 +9470,16 @@ "type_info": "Int4" } ], - "nullable": [false, false, false], + "nullable": [ + false, + false, + false + ], "parameters": { - "Left": ["Interval", "Int4"] + "Left": [ + "Interval", + "Int4" + ] } }, "query": "\n UPDATE prover_jobs\n SET status = 'queued', attempts = attempts + 1, updated_at = now(), processing_started_at = now()\n WHERE (status = 'in_progress' AND processing_started_at <= now() - $1::interval AND attempts < $2)\n OR (status = 'in_gpu_proof' AND processing_started_at <= now() - $1::interval AND attempts < $2)\n OR (status = 'failed' AND attempts < $2)\n RETURNING id, status, attempts\n " @@ -8178,7 +9493,9 @@ "type_info": "Int8" } ], - "nullable": [null], + "nullable": [ + null + ], "parameters": { "Left": [] } @@ -8190,7 +9507,10 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Time", "Int8"] + "Left": [ + "Time", + "Int8" + ] } }, "query": "\n UPDATE witness_inputs_fri\n SET status = 'successful', updated_at = now(), time_taken = $1\n WHERE l1_batch_number = $2\n " @@ -8200,7 +9520,9 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int8Array"] + "Left": [ + "Int8Array" + ] } }, "query": "\n UPDATE node_aggregation_witness_jobs\n SET is_blob_cleaned=TRUE\n WHERE l1_batch_number = ANY($1);\n " @@ -8214,9 +9536,15 @@ "type_info": "Bytea" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { - "Left": ["Bytea", "Int8", "Bytea"] + "Left": [ + "Bytea", + "Int8", + "Bytea" + ] } }, "query": "\n SELECT bytecode FROM (\n SELECT * FROM storage_logs\n WHERE\n storage_logs.hashed_key = $1 AND\n storage_logs.miniblock_number <= $2\n ORDER BY\n storage_logs.miniblock_number DESC, storage_logs.operation_number DESC\n LIMIT 1\n ) t\n JOIN factory_deps ON value = factory_deps.bytecode_hash\n WHERE value != $3\n " @@ -8226,7 +9554,11 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int8", "Int4", "Int4"] + "Left": [ + "Int8", + "Int4", + "Int4" + ] } }, "query": "UPDATE eth_txs\n SET gas_used = $1, confirmed_eth_tx_history_id = $2\n WHERE id = $3" @@ -8245,9 +9577,14 @@ "type_info": "Bytea" } ], - "nullable": [false, false], + "nullable": [ + false, + false + ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "SELECT address, key FROM protective_reads WHERE l1_batch_number = $1" @@ -8266,9 +9603,14 @@ "type_info": "Timestamp" } ], - "nullable": [true, true], + "nullable": [ + true, + true + ], "parameters": { - "Left": ["Bytea"] + "Left": [ + "Bytea" + ] } }, "query": "SELECT usd_price, usd_price_updated_at FROM tokens WHERE l2_address = $1" @@ -8278,7 +9620,9 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int8Array"] + "Left": [ + "Int8Array" + ] } }, "query": "UPDATE witness_inputs SET is_blob_cleaned = TRUE WHERE l1_batch_number = ANY($1)" @@ -8288,7 +9632,15 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Text", "Int4", "Int4", "Int2", "Text", "Text", "Int2"] + "Left": [ + "Text", + "Int4", + "Int4", + "Int2", + "Text", + "Text", + "Int2" + ] } }, "query": "\n INSERT INTO gpu_prover_queue (instance_host, instance_port, queue_capacity, queue_free_slots, instance_status, specialized_prover_group_id, region, zone, num_gpu, created_at, updated_at)\n VALUES (cast($1::text as inet), $2, $3, $3, 'available', $4, $5, $6, $7, now(), now())\n ON CONFLICT(instance_host, instance_port, region, zone)\n DO UPDATE SET instance_status='available', queue_capacity=$3, queue_free_slots=$3, specialized_prover_group_id=$4, region=$5, zone=$6, num_gpu=$7, updated_at=now()" @@ -8298,7 +9650,18 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int4", "Int8", "Bytea", "Bytea", "Bytea", "Bytea", "Bytea", "Bytea", "Bytea", "Bytea"] + "Left": [ + "Int4", + "Int8", + "Bytea", + "Bytea", + "Bytea", + "Bytea", + "Bytea", + "Bytea", + "Bytea", + "Bytea" + ] } }, "query": "INSERT INTO protocol_versions (id, timestamp, recursion_scheduler_level_vk_hash, recursion_node_level_vk_hash, recursion_leaf_level_vk_hash, recursion_circuits_set_vks_hash, bootloader_code_hash, default_account_code_hash, verifier_address, upgrade_tx_hash, created_at) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, now())" @@ -8308,7 +9671,11 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Bytea", "Int8", "Bytea"] + "Left": [ + "Bytea", + "Int8", + "Bytea" + ] } }, "query": "\n DELETE FROM tokens \n WHERE l2_address IN\n (\n SELECT substring(key, 12, 20) FROM storage_logs \n WHERE storage_logs.address = $1 AND miniblock_number > $2 AND NOT EXISTS (\n SELECT 1 FROM storage_logs as s\n WHERE\n s.hashed_key = storage_logs.hashed_key AND\n (s.miniblock_number, s.operation_number) >= (storage_logs.miniblock_number, storage_logs.operation_number) AND\n s.value = $3\n )\n )\n " @@ -8318,7 +9685,9 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "DELETE FROM miniblocks WHERE number > $1" @@ -8328,7 +9697,12 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int8", "Text", "Jsonb", "Text"] + "Left": [ + "Int8", + "Text", + "Jsonb", + "Text" + ] } }, "query": "\n UPDATE contract_verification_requests\n SET status = 'failed', updated_at = now(), error = $2, compilation_errors = $3, panic_message = $4\n WHERE id = $1\n " @@ -8352,7 +9726,11 @@ "type_info": "Text" } ], - "nullable": [null, false, false], + "nullable": [ + null, + false, + false + ], "parameters": { "Left": [] } @@ -8368,7 +9746,9 @@ "type_info": "Int8" } ], - "nullable": [null], + "nullable": [ + null + ], "parameters": { "Left": [] } @@ -8380,7 +9760,14 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Text", "Text", "Int4", "Int4", "Text", "Text"] + "Left": [ + "Text", + "Text", + "Int4", + "Int4", + "Text", + "Text" + ] } }, "query": "\n UPDATE gpu_prover_queue\n SET instance_status = $1, updated_at = now(), queue_free_slots = $4\n WHERE instance_host = $2::text::inet\n AND instance_port = $3\n AND region = $5\n AND zone = $6\n " @@ -8424,9 +9811,20 @@ "type_info": "Bool" } ], - "nullable": [false, false, false, false, false, false, false], + "nullable": [ + false, + false, + false, + false, + false, + false, + false + ], "parameters": { - "Left": ["Int4Array", "Text"] + "Left": [ + "Int4Array", + "Text" + ] } }, "query": "\n UPDATE prover_jobs_fri\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now(),\n picked_by = $2\n WHERE id = (\n SELECT id\n FROM prover_jobs_fri\n WHERE status = 'queued'\n AND protocol_version = ANY($1)\n ORDER BY aggregation_round DESC, l1_batch_number ASC, id ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING prover_jobs_fri.id, prover_jobs_fri.l1_batch_number, prover_jobs_fri.circuit_id,\n prover_jobs_fri.aggregation_round, prover_jobs_fri.sequence_number, prover_jobs_fri.depth,\n prover_jobs_fri.is_node_final_proof\n " @@ -8450,9 +9848,15 @@ "type_info": "Int8" } ], - "nullable": [false, false, false], + "nullable": [ + false, + false, + false + ], "parameters": { - "Left": ["ByteaArray"] + "Left": [ + "ByteaArray" + ] } }, "query": "SELECT hashed_key, l1_batch_number, index FROM initial_writes WHERE hashed_key = ANY($1::bytea[])" @@ -8462,7 +9866,12 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Bytea", "Varchar", "Varchar", "Int4"] + "Left": [ + "Bytea", + "Varchar", + "Varchar", + "Int4" + ] } }, "query": "UPDATE tokens SET token_list_name = $2, token_list_symbol = $3,\n token_list_decimals = $4, well_known = true, updated_at = now()\n WHERE l1_address = $1\n " @@ -8476,9 +9885,16 @@ "type_info": "Int4" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { - "Left": ["Bytea", "Bytea", "Bytea", "Bytea"] + "Left": [ + "Bytea", + "Bytea", + "Bytea", + "Bytea" + ] } }, "query": "\n SELECT id\n FROM prover_protocol_versions\n WHERE recursion_circuits_set_vks_hash = $1\n AND recursion_leaf_level_vk_hash = $2\n AND recursion_node_level_vk_hash = $3\n AND recursion_scheduler_level_vk_hash = $4\n " @@ -8492,9 +9908,13 @@ "type_info": "Bytea" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { - "Left": ["Bytea"] + "Left": [ + "Bytea" + ] } }, "query": "SELECT bytecode FROM factory_deps WHERE bytecode_hash = $1" @@ -8504,7 +9924,9 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "UPDATE l1_batches SET skip_proof = TRUE WHERE number = $1" @@ -8518,7 +9940,9 @@ "type_info": "Int8" } ], - "nullable": [null], + "nullable": [ + null + ], "parameters": { "Left": [] } @@ -8544,9 +9968,16 @@ "type_info": "Int2" } ], - "nullable": [false, false, false], + "nullable": [ + false, + false, + false + ], "parameters": { - "Left": ["Interval", "Int2"] + "Left": [ + "Interval", + "Int2" + ] } }, "query": "\n UPDATE node_aggregation_witness_jobs_fri\n SET status = 'queued', attempts = attempts + 1, updated_at = now(), processing_started_at = now()\n WHERE (status = 'in_progress' AND processing_started_at <= now() - $1::interval AND attempts < $2)\n OR (status = 'failed' AND attempts < $2)\n RETURNING id, status, attempts\n " @@ -8593,9 +10024,13 @@ "type_info": "Int8" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "SELECT l1_batch_number FROM witness_inputs WHERE length(merkle_tree_paths) <> 0 ORDER BY l1_batch_number DESC LIMIT $1" @@ -8605,7 +10040,10 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Varchar", "Bytea"] + "Left": [ + "Varchar", + "Bytea" + ] } }, "query": "UPDATE transactions\n SET error = $1, updated_at = now()\n WHERE hash = $2" @@ -8619,7 +10057,9 @@ "type_info": "Int4" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { "Left": [] } @@ -8640,9 +10080,15 @@ "type_info": "Bytea" } ], - "nullable": [false, true], + "nullable": [ + false, + true + ], "parameters": { - "Left": ["Int8", "Int4"] + "Left": [ + "Int8", + "Int4" + ] } }, "query": "\n SELECT circuit_type, result from prover_jobs\n WHERE l1_batch_number = $1 AND status = 'successful' AND aggregation_round = $2\n ORDER BY sequence_number ASC;\n " @@ -8652,7 +10098,12 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Text", "Text", "Int4", "Text"] + "Left": [ + "Text", + "Text", + "Int4", + "Text" + ] } }, "query": "UPDATE gpu_prover_queue_fri SET instance_status = $1, updated_at = now() WHERE instance_host = $2::text::inet AND instance_port = $3 AND zone = $4\n " @@ -8666,9 +10117,13 @@ "type_info": "Int4" } ], - "nullable": [true], + "nullable": [ + true + ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "SELECT protocol_version FROM witness_inputs_fri WHERE l1_batch_number = $1" @@ -8678,7 +10133,13 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["ByteaArray", "ByteaArray", "ByteaArray", "ByteaArray", "ByteaArray"] + "Left": [ + "ByteaArray", + "ByteaArray", + "ByteaArray", + "ByteaArray", + "ByteaArray" + ] } }, "query": "INSERT INTO storage (hashed_key, address, key, value, tx_hash, created_at, updated_at) SELECT u.hashed_key, u.address, u.key, u.value, u.tx_hash, now(), now() FROM UNNEST ($1::bytea[], $2::bytea[], $3::bytea[], $4::bytea[], $5::bytea[]) AS u(hashed_key, address, key, value, tx_hash) ON CONFLICT (hashed_key) DO UPDATE SET tx_hash = excluded.tx_hash, value = excluded.value, updated_at = now()" @@ -8747,9 +10208,27 @@ "type_info": "Int4" } ], - "nullable": [false, true, false, false, false, false, true, true, false, true, false, true], + "nullable": [ + false, + true, + false, + false, + false, + false, + true, + true, + false, + true, + false, + true + ], "parameters": { - "Left": ["Interval", "Int4", "Int8", "Int4Array"] + "Left": [ + "Interval", + "Int4", + "Int8", + "Int4Array" + ] } }, "query": "\n UPDATE witness_inputs\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now()\n WHERE l1_batch_number = (\n SELECT l1_batch_number\n FROM witness_inputs\n WHERE l1_batch_number <= $3\n AND\n ( status = 'queued'\n OR (status = 'in_progress' AND processing_started_at < now() - $1::interval)\n OR (status = 'failed' AND attempts < $2)\n )\n AND protocol_version = ANY($4)\n ORDER BY l1_batch_number ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING witness_inputs.*\n " @@ -8768,9 +10247,15 @@ "type_info": "Int8" } ], - "nullable": [false, false], + "nullable": [ + false, + false + ], "parameters": { - "Left": ["Int8", "Int8"] + "Left": [ + "Int8", + "Int8" + ] } }, "query": "SELECT timestamp, virtual_blocks FROM miniblocks WHERE number BETWEEN $1 AND $2 ORDER BY number" @@ -8789,9 +10274,14 @@ "type_info": "Int4" } ], - "nullable": [false, false], + "nullable": [ + false, + false + ], "parameters": { - "Left": ["Text"] + "Left": [ + "Text" + ] } }, "query": "UPDATE eth_txs_history\n SET updated_at = now(), confirmed_at = now()\n WHERE tx_hash = $1\n RETURNING id, eth_tx_id" @@ -8810,9 +10300,16 @@ "type_info": "Bytea" } ], - "nullable": [false, false], + "nullable": [ + false, + false + ], "parameters": { - "Left": ["Int8", "Int4", "Int8"] + "Left": [ + "Int8", + "Int4", + "Int8" + ] } }, "query": "SELECT number, hash FROM miniblocks WHERE number >= $1 and protocol_version = $2 ORDER BY number LIMIT $3" @@ -8822,7 +10319,10 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Text", "Int8"] + "Left": [ + "Text", + "Int8" + ] } }, "query": "UPDATE proof_generation_details SET status='generated', proof_blob_url = $1, updated_at = now() WHERE l1_batch_number = $2" @@ -8946,7 +10446,9 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["ByteaArray"] + "Left": [ + "ByteaArray" + ] } }, "query": "DELETE FROM transactions WHERE in_mempool = TRUE AND initiator_address = ANY($1)" @@ -8966,7 +10468,11 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int8", "Text", "Int4"] + "Left": [ + "Int8", + "Text", + "Int4" + ] } }, "query": "\n INSERT INTO scheduler_witness_jobs_fri\n (l1_batch_number, scheduler_partial_input_blob_url, protocol_version, status, created_at, updated_at)\n VALUES ($1, $2, $3, 'waiting_for_proofs', now(), now())\n ON CONFLICT(l1_batch_number)\n DO UPDATE SET updated_at=now()\n " @@ -9194,7 +10700,9 @@ true ], "parameters": { - "Left": ["Bytea"] + "Left": [ + "Bytea" + ] } }, "query": "\n SELECT * FROM transactions\n WHERE hash = $1\n " @@ -9204,7 +10712,10 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int8", "Int8"] + "Left": [ + "Int8", + "Int8" + ] } }, "query": "UPDATE l1_batches SET predicted_commit_gas_cost = $2, updated_at = now() WHERE number = $1" @@ -9214,7 +10725,12 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Text", "Int4", "Int2", "Text"] + "Left": [ + "Text", + "Int4", + "Int2", + "Text" + ] } }, "query": "INSERT INTO gpu_prover_queue_fri (instance_host, instance_port, instance_status, specialized_prover_group_id, zone, created_at, updated_at) VALUES (cast($1::text as inet), $2, 'available', $3, $4, now(), now()) ON CONFLICT(instance_host, instance_port, zone) DO UPDATE SET instance_status='available', specialized_prover_group_id=$3, zone=$4, updated_at=now()" @@ -9228,7 +10744,9 @@ "type_info": "Int8" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { "Left": [] } @@ -9240,7 +10758,9 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int8Array"] + "Left": [ + "Int8Array" + ] } }, "query": "\n UPDATE leaf_aggregation_witness_jobs\n SET is_blob_cleaned=TRUE\n WHERE l1_batch_number = ANY($1);\n " @@ -9280,9 +10800,13 @@ "type_info": "Jsonb" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "SELECT initial_bootloader_heap_content FROM l1_batches WHERE number = $1" @@ -9296,7 +10820,9 @@ "type_info": "Bool" } ], - "nullable": [null], + "nullable": [ + null + ], "parameters": { "Left": [ "Bytea", @@ -9546,7 +11072,9 @@ true ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "SELECT * FROM transactions WHERE miniblock_number = $1 ORDER BY index_in_block" @@ -9560,9 +11088,13 @@ "type_info": "Bytea" } ], - "nullable": [true], + "nullable": [ + true + ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "SELECT hash FROM l1_batches WHERE number = $1" @@ -9576,7 +11108,9 @@ "type_info": "Int8" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { "Left": [] } @@ -9588,7 +11122,13 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Text", "Int4", "Int4", "Text", "Text"] + "Left": [ + "Text", + "Int4", + "Int4", + "Text", + "Text" + ] } }, "query": "\n UPDATE gpu_prover_queue\n SET instance_status = 'available', updated_at = now(), queue_free_slots = $3\n WHERE instance_host = $1::text::inet\n AND instance_port = $2\n AND instance_status = 'full'\n AND region = $4\n AND zone = $5\n " @@ -9612,9 +11152,15 @@ "type_info": "Bytea" } ], - "nullable": [false, false, false], + "nullable": [ + false, + false, + false + ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "SELECT address, key, value FROM storage_logs WHERE miniblock_number BETWEEN (SELECT MIN(number) FROM miniblocks WHERE l1_batch_number = $1) AND (SELECT MAX(number) FROM miniblocks WHERE l1_batch_number = $1) ORDER BY miniblock_number, operation_number" @@ -9624,7 +11170,10 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Text", "Int8"] + "Left": [ + "Text", + "Int8" + ] } }, "query": "\n UPDATE witness_inputs_fri SET status ='failed', error= $1, updated_at = now()\n WHERE l1_batch_number = $2\n " @@ -9638,9 +11187,13 @@ "type_info": "Jsonb" } ], - "nullable": [false], + "nullable": [ + false + ], "parameters": { - "Left": ["Bytea"] + "Left": [ + "Bytea" + ] } }, "query": "SELECT trace FROM transaction_traces WHERE tx_hash = $1" @@ -9709,7 +11262,20 @@ "type_info": "Int8" } ], - "nullable": [false, false, false, false, false, false, false, false, true, true, true, false], + "nullable": [ + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + false + ], "parameters": { "Left": [] } @@ -9825,7 +11391,9 @@ false ], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "\n SELECT * FROM scheduler_dependency_tracker_fri\n WHERE l1_batch_number = $1\n " @@ -9839,7 +11407,9 @@ "type_info": "Int8" } ], - "nullable": [null], + "nullable": [ + null + ], "parameters": { "Left": [] } @@ -9910,9 +11480,24 @@ "type_info": "Int8" } ], - "nullable": [false, false, false, false, false, true, false, false, false, true, true, false], + "nullable": [ + false, + false, + false, + false, + false, + true, + false, + false, + false, + true, + true, + false + ], "parameters": { - "Left": ["Int4"] + "Left": [ + "Int4" + ] } }, "query": "SELECT * FROM eth_txs WHERE id = $1" @@ -9922,7 +11507,9 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Int8"] + "Left": [ + "Int8" + ] } }, "query": "\n UPDATE contract_verification_requests\n SET status = 'successful', updated_at = now()\n WHERE id = $1\n " @@ -9936,9 +11523,13 @@ "type_info": "Int8" } ], - "nullable": [null], + "nullable": [ + null + ], "parameters": { - "Left": ["Int4"] + "Left": [ + "Int4" + ] } }, "query": "SELECT COUNT(*) as \"count!\" FROM prover_protocol_versions WHERE id = $1" @@ -9948,9 +11539,12 @@ "columns": [], "nullable": [], "parameters": { - "Left": ["Text", "Int8"] + "Left": [ + "Text", + "Int8" + ] } }, "query": "UPDATE proof_compression_jobs_fri SET status = $1, updated_at = now() WHERE l1_batch_number = $2" } -} +} \ No newline at end of file diff --git a/core/tests/revert-test/tsconfig.json b/core/tests/revert-test/tsconfig.json index 9b3bd705b36..6c8907a8601 100644 --- a/core/tests/revert-test/tsconfig.json +++ b/core/tests/revert-test/tsconfig.json @@ -1,9 +1,9 @@ { - "compilerOptions": { - "target": "es2019", - "module": "commonjs", - "strict": true, - "esModuleInterop": true, - "skipLibCheck": true - } + "compilerOptions": { + "target": "es2019", + "module": "commonjs", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true + } } diff --git a/core/tests/ts-integration/jest.config.json b/core/tests/ts-integration/jest.config.json index 77dd5158c55..109e7a1e008 100644 --- a/core/tests/ts-integration/jest.config.json +++ b/core/tests/ts-integration/jest.config.json @@ -1,15 +1,20 @@ { - "reporters": ["default", "github-actions"], - "transform": { - "^.+\\.ts?$": "ts-jest" - }, - "//": "!!! Do not increase the test timeout blindly!!!", - "//": "Timeout is set to match ~4 L1 operations with 10 blocks confirmation", - "//": "If you need bigger timeout, consider either disabling the test outside of fast mode or increasing timeout on a single test", - "//": "If this value would be too big, it may cause tests on stage to get stuck for too long", - "testTimeout": 605000, - "globalSetup": "/src/jest-setup/global-setup.ts", - "globalTeardown": "/src/jest-setup/global-teardown.ts", - "setupFilesAfterEnv": ["/src/jest-setup/add-matchers.ts"], - "slowTestThreshold": 120 + "reporters": [ + "default", + "github-actions" + ], + "transform": { + "^.+\\.ts?$": "ts-jest" + }, + "//": "!!! Do not increase the test timeout blindly!!!", + "//": "Timeout is set to match ~4 L1 operations with 10 blocks confirmation", + "//": "If you need bigger timeout, consider either disabling the test outside of fast mode or increasing timeout on a single test", + "//": "If this value would be too big, it may cause tests on stage to get stuck for too long", + "testTimeout": 605000, + "globalSetup": "/src/jest-setup/global-setup.ts", + "globalTeardown": "/src/jest-setup/global-teardown.ts", + "setupFilesAfterEnv": [ + "/src/jest-setup/add-matchers.ts" + ], + "slowTestThreshold": 120 } diff --git a/core/tests/ts-integration/package.json b/core/tests/ts-integration/package.json index 882b1c77a76..b039cb4978b 100644 --- a/core/tests/ts-integration/package.json +++ b/core/tests/ts-integration/package.json @@ -1,33 +1,33 @@ { - "name": "ts-integration", - "version": "0.1.0", - "license": "MIT", - "private": true, - "scripts": { - "test": "zk f jest --forceExit --testTimeout 60000", - "long-running-test": "zk f jest", - "fee-test": "RUN_FEE_TEST=1 zk f jest -- fees.test.ts", - "api-test": "zk f jest -- api/web3.test.ts", - "contract-verification-test": "zk f jest -- api/contract-verification.test.ts" - }, - "devDependencies": { - "@matterlabs/hardhat-zksync-deploy": "^0.6.1", - "@matterlabs/hardhat-zksync-solc": "^0.3.15", - "@matterlabs/hardhat-zksync-vyper": "^0.2.0", - "@nomiclabs/hardhat-vyper": "^3.0.3", - "@types/jest": "^29.0.3", - "@types/node": "^14.14.5", - "@types/node-fetch": "^2.5.7", - "chalk": "^4.0.0", - "ethereumjs-abi": "^0.6.8", - "ethers": "~5.7.0", - "hardhat": "^2.12.4", - "jest": "^29.0.3", - "jest-matcher-utils": "^29.0.3", - "node-fetch": "^2.6.1", - "ts-jest": "^29.0.1", - "ts-node": "^10.1.0", - "typescript": "^4.3.5", - "zksync-web3": "link:../../../sdk/zksync-web3.js" - } + "name": "ts-integration", + "version": "0.1.0", + "license": "MIT", + "private": true, + "scripts": { + "test": "zk f jest --forceExit --testTimeout 60000", + "long-running-test": "zk f jest", + "fee-test": "RUN_FEE_TEST=1 zk f jest -- fees.test.ts", + "api-test": "zk f jest -- api/web3.test.ts", + "contract-verification-test": "zk f jest -- api/contract-verification.test.ts" + }, + "devDependencies": { + "@matterlabs/hardhat-zksync-deploy": "^0.6.1", + "@matterlabs/hardhat-zksync-solc": "^0.3.15", + "@matterlabs/hardhat-zksync-vyper": "^0.2.0", + "@nomiclabs/hardhat-vyper": "^3.0.3", + "@types/jest": "^29.0.3", + "@types/node": "^14.14.5", + "@types/node-fetch": "^2.5.7", + "chalk": "^4.0.0", + "ethereumjs-abi": "^0.6.8", + "ethers": "~5.7.0", + "hardhat": "^2.12.4", + "jest": "^29.0.3", + "jest-matcher-utils": "^29.0.3", + "node-fetch": "^2.6.1", + "ts-jest": "^29.0.1", + "ts-node": "^10.1.0", + "typescript": "^4.3.5", + "zksync-web3": "link:../../../sdk/zksync-web3.js" + } } diff --git a/core/tests/ts-integration/tsconfig.json b/core/tests/ts-integration/tsconfig.json index d3093921ca2..baf2b2d0a79 100644 --- a/core/tests/ts-integration/tsconfig.json +++ b/core/tests/ts-integration/tsconfig.json @@ -1,12 +1,16 @@ { - "compilerOptions": { - "target": "es2019", - "module": "commonjs", - "esModuleInterop": true, - "strict": true, - "skipLibCheck": true, - "noEmitOnError": true - }, - "include": ["**/*.ts"], - "exclude": ["node_modules"] + "compilerOptions": { + "target": "es2019", + "module": "commonjs", + "esModuleInterop": true, + "strict": true, + "skipLibCheck": true, + "noEmitOnError": true + }, + "include": [ + "**/*.ts" + ], + "exclude": [ + "node_modules" + ] } diff --git a/core/tests/upgrade-test/tsconfig.json b/core/tests/upgrade-test/tsconfig.json index 9b3bd705b36..6c8907a8601 100644 --- a/core/tests/upgrade-test/tsconfig.json +++ b/core/tests/upgrade-test/tsconfig.json @@ -1,9 +1,9 @@ { - "compilerOptions": { - "target": "es2019", - "module": "commonjs", - "strict": true, - "esModuleInterop": true, - "skipLibCheck": true - } + "compilerOptions": { + "target": "es2019", + "module": "commonjs", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true + } } diff --git a/etc/commitment_tests/zksync_testharness_test.json b/etc/commitment_tests/zksync_testharness_test.json index 55506cec544..3240c3b4d9e 100644 --- a/etc/commitment_tests/zksync_testharness_test.json +++ b/etc/commitment_tests/zksync_testharness_test.json @@ -17,6 +17,7 @@ "key": "0xcb99d29a1b4ffeaefdbf74b8b8b07c78e5e02b3100946f8d0463b79789086aff", "value": "0x0000000000000000000000000000000000000000000000000000000000000001" } + ], "initial_writes": [ { diff --git a/etc/test_config/constant/api.json b/etc/test_config/constant/api.json index a8d75555dbe..050daba0e66 100644 --- a/etc/test_config/constant/api.json +++ b/etc/test_config/constant/api.json @@ -1,3 +1,3 @@ { - "rest_api_url": "http://127.0.0.1:3001" + "rest_api_url": "http://127.0.0.1:3001" } diff --git a/etc/test_config/constant/eth.json b/etc/test_config/constant/eth.json index 9a5571a641f..624e605e3c2 100644 --- a/etc/test_config/constant/eth.json +++ b/etc/test_config/constant/eth.json @@ -1,5 +1,5 @@ { - "web3_url": "http://127.0.0.1:8545", - "test_mnemonic": "stuff slice staff easily soup parent arm payment cotton trade scatter struggle", - "mnemonic": "fine music test violin matrix prize squirrel panther purchase material script deal" + "web3_url": "http://127.0.0.1:8545", + "test_mnemonic": "stuff slice staff easily soup parent arm payment cotton trade scatter struggle", + "mnemonic": "fine music test violin matrix prize squirrel panther purchase material script deal" } diff --git a/etc/upgrades/1692195639-upgrade-system/common.json b/etc/upgrades/1692195639-upgrade-system/common.json index bd12423d49a..4aa0c5bacd0 100644 --- a/etc/upgrades/1692195639-upgrade-system/common.json +++ b/etc/upgrades/1692195639-upgrade-system/common.json @@ -2,4 +2,4 @@ "name": "upgrade-system", "creationTimestamp": 1692195639, "protocolVersion": "12" -} +} \ No newline at end of file diff --git a/etc/upgrades/1692195639-upgrade-system/mainnet2/facetCuts.json b/etc/upgrades/1692195639-upgrade-system/mainnet2/facetCuts.json index 5d5ef1b8c37..bfad4bfe0b9 100644 --- a/etc/upgrades/1692195639-upgrade-system/mainnet2/facetCuts.json +++ b/etc/upgrades/1692195639-upgrade-system/mainnet2/facetCuts.json @@ -1,13 +1,25 @@ [ { "facet": "0x0000000000000000000000000000000000000000", - "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], + "selectors": [ + "0x0c4dd810", + "0xce9dcf16", + "0x7739cbe7", + "0xa9a2d18a" + ], "action": 2, "isFreezable": false }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], + "selectors": [ + "0x6c0960f9", + "0xb473318e", + "0x042901c7", + "0x263b7f8e", + "0xe4948f43", + "0xeb672419" + ], "action": 2, "isFreezable": false }, @@ -141,20 +153,38 @@ }, { "facet": "0x5349E94435Cc9Cab9FfB40A492DA46935052733A", - "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], + "selectors": [ + "0x6c0960f9", + "0xb473318e", + "0x042901c7", + "0x263b7f8e", + "0xe4948f43", + "0xeb672419" + ], "action": 0, "isFreezable": true }, { "facet": "0x16615a85B451edfb6FCBea0b34405D9C7ca1a22A", - "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], + "selectors": [ + "0x0c4dd810", + "0xce9dcf16", + "0x7739cbe7", + "0xa9a2d18a" + ], "action": 0, "isFreezable": true }, { "facet": "0x2E64926BE35412f7710A3E097Ba076740bF97CC0", - "selectors": ["0xe58bb639", "0xf235757f", "0x1cc5d103", "0xbe6f11cf", "0x4623c91d"], + "selectors": [ + "0xe58bb639", + "0xf235757f", + "0x1cc5d103", + "0xbe6f11cf", + "0x4623c91d" + ], "action": 0, "isFreezable": true } -] +] \ No newline at end of file diff --git a/etc/upgrades/1692195639-upgrade-system/mainnet2/facets.json b/etc/upgrades/1692195639-upgrade-system/mainnet2/facets.json index 41924c56024..f8247ebc353 100644 --- a/etc/upgrades/1692195639-upgrade-system/mainnet2/facets.json +++ b/etc/upgrades/1692195639-upgrade-system/mainnet2/facets.json @@ -19,4 +19,4 @@ "address": "0x5349E94435Cc9Cab9FfB40A492DA46935052733A", "txHash": "0x5040611a8ba1811851e998aa8d7bbe4aa3027db9ccc526a84a1237bc2f9fa698" } -} +} \ No newline at end of file diff --git a/etc/upgrades/1692195639-upgrade-system/mainnet2/l2Upgrade.json b/etc/upgrades/1692195639-upgrade-system/mainnet2/l2Upgrade.json index 2a772be7564..da024be79e3 100644 --- a/etc/upgrades/1692195639-upgrade-system/mainnet2/l2Upgrade.json +++ b/etc/upgrades/1692195639-upgrade-system/mainnet2/l2Upgrade.json @@ -2,72 +2,100 @@ "systemContracts": [ { "name": "AccountCodeStorage", - "bytecodeHashes": ["0x01000091af8506f97c5a2b2ff4edf06ba1bfd2ec2304056fb9987ce717970105"], + "bytecodeHashes": [ + "0x01000091af8506f97c5a2b2ff4edf06ba1bfd2ec2304056fb9987ce717970105" + ], "address": "0x0000000000000000000000000000000000008002" }, { "name": "NonceHolder", - "bytecodeHashes": ["0x0100012f78c4022788ff0deb6c282f93df2b209d3c819999c3384498f1fec9b4"], + "bytecodeHashes": [ + "0x0100012f78c4022788ff0deb6c282f93df2b209d3c819999c3384498f1fec9b4" + ], "address": "0x0000000000000000000000000000000000008003" }, { "name": "KnownCodesStorage", - "bytecodeHashes": ["0x0100008fa5c8a47d82ec783ad7cdefd382f5b031e7ef0754fcf242ccb4c65fd3"], + "bytecodeHashes": [ + "0x0100008fa5c8a47d82ec783ad7cdefd382f5b031e7ef0754fcf242ccb4c65fd3" + ], "address": "0x0000000000000000000000000000000000008004" }, { "name": "ImmutableSimulator", - "bytecodeHashes": ["0x010000475561147799af163bef4d19262be10ed2d4a8977f793a195cd077e83d"], + "bytecodeHashes": [ + "0x010000475561147799af163bef4d19262be10ed2d4a8977f793a195cd077e83d" + ], "address": "0x0000000000000000000000000000000000008005" }, { "name": "ContractDeployer", - "bytecodeHashes": ["0x010005c17cd3ee506e5156f76afda69c905dfdc22578bec37609a1693bba4fdc"], + "bytecodeHashes": [ + "0x010005c17cd3ee506e5156f76afda69c905dfdc22578bec37609a1693bba4fdc" + ], "address": "0x0000000000000000000000000000000000008006" }, { "name": "L1Messenger", - "bytecodeHashes": ["0x0100007562a15173ca081ddb179bb321500997ba6b43b15cf601cdf266af1cdb"], + "bytecodeHashes": [ + "0x0100007562a15173ca081ddb179bb321500997ba6b43b15cf601cdf266af1cdb" + ], "address": "0x0000000000000000000000000000000000008008" }, { "name": "MsgValueSimulator", - "bytecodeHashes": ["0x010000711288f63c4cd27ecd73df769b834eeda2645f6567beea6b7ed44aaf03"], + "bytecodeHashes": [ + "0x010000711288f63c4cd27ecd73df769b834eeda2645f6567beea6b7ed44aaf03" + ], "address": "0x0000000000000000000000000000000000008009" }, { "name": "L2EthToken", - "bytecodeHashes": ["0x010001397d906d62832c455f701b9f81267a1687e52210986d4e943b3f440d7d"], + "bytecodeHashes": [ + "0x010001397d906d62832c455f701b9f81267a1687e52210986d4e943b3f440d7d" + ], "address": "0x000000000000000000000000000000000000800a" }, { "name": "SystemContext", - "bytecodeHashes": ["0x010000f1d9ad80b5eb80ad14232d7438b1c09314dda76f296eca922da87dbfcc"], + "bytecodeHashes": [ + "0x010000f1d9ad80b5eb80ad14232d7438b1c09314dda76f296eca922da87dbfcc" + ], "address": "0x000000000000000000000000000000000000800b" }, { "name": "BootloaderUtilities", - "bytecodeHashes": ["0x010009ad8e522bb120c5f52d2236035edeb0a4259b89c3429c5ece7d1dc50286"], + "bytecodeHashes": [ + "0x010009ad8e522bb120c5f52d2236035edeb0a4259b89c3429c5ece7d1dc50286" + ], "address": "0x000000000000000000000000000000000000800c" }, { "name": "BytecodeCompressor", - "bytecodeHashes": ["0x010000e1066c916b985495ac9e671ae6930e373e9b5074499c7f6014c439a04a"], + "bytecodeHashes": [ + "0x010000e1066c916b985495ac9e671ae6930e373e9b5074499c7f6014c439a04a" + ], "address": "0x000000000000000000000000000000000000800e" }, { "name": "ComplexUpgrader", - "bytecodeHashes": ["0x0100005b3e7150f7f6daac7cc9a46522f5ad593f9a3e3f0573282b41f86acf16"], + "bytecodeHashes": [ + "0x0100005b3e7150f7f6daac7cc9a46522f5ad593f9a3e3f0573282b41f86acf16" + ], "address": "0x000000000000000000000000000000000000800f" } ], "bootloader": { "name": "Bootloader", - "bytecodeHashes": ["0x010007af2271352ac99f97670a7d6999ae63b53f4e9480a957091d8848a46c61"] + "bytecodeHashes": [ + "0x010007af2271352ac99f97670a7d6999ae63b53f4e9480a957091d8848a46c61" + ] }, "defaultAA": { "name": "DefaultAccount", - "bytecodeHashes": ["0x0100067d592a040e8914eda295f3521561d64b1a4c1b9e6dbd2933093102febf"] + "bytecodeHashes": [ + "0x0100067d592a040e8914eda295f3521561d64b1a4c1b9e6dbd2933093102febf" + ] }, "forcedDeployments": [ { @@ -168,11 +196,16 @@ "paymaster": 0, "nonce": "12", "value": 0, - "reserved": [0, 0, 0, 0], + "reserved": [ + 0, + 0, + 0, + 0 + ], "data": "0xe9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c001000091af8506f97c5a2b2ff4edf06ba1bfd2ec2304056fb9987ce71797010500000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f78c4022788ff0deb6c282f93df2b209d3c819999c3384498f1fec9b400000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fa5c8a47d82ec783ad7cdefd382f5b031e7ef0754fcf242ccb4c65fd300000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475561147799af163bef4d19262be10ed2d4a8977f793a195cd077e83d00000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c17cd3ee506e5156f76afda69c905dfdc22578bec37609a1693bba4fdc00000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100007562a15173ca081ddb179bb321500997ba6b43b15cf601cdf266af1cdb00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000711288f63c4cd27ecd73df769b834eeda2645f6567beea6b7ed44aaf0300000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010001397d906d62832c455f701b9f81267a1687e52210986d4e943b3f440d7d000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000f1d9ad80b5eb80ad14232d7438b1c09314dda76f296eca922da87dbfcc000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009ad8e522bb120c5f52d2236035edeb0a4259b89c3429c5ece7d1dc50286000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1066c916b985495ac9e671ae6930e373e9b5074499c7f6014c439a04a000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005b3e7150f7f6daac7cc9a46522f5ad593f9a3e3f0573282b41f86acf16000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000", "signature": "0x", "factoryDeps": [], "paymasterInput": "0x", "reservedDynamic": "0x" } -} +} \ No newline at end of file diff --git a/etc/upgrades/1692195639-upgrade-system/mainnet2/transactions.json b/etc/upgrades/1692195639-upgrade-system/mainnet2/transactions.json index 40a0041f332..badf4772a3c 100644 --- a/etc/upgrades/1692195639-upgrade-system/mainnet2/transactions.json +++ b/etc/upgrades/1692195639-upgrade-system/mainnet2/transactions.json @@ -11,7 +11,12 @@ "paymaster": 0, "nonce": "12", "value": 0, - "reserved": [0, 0, 0, 0], + "reserved": [ + 0, + 0, + 0, + 0 + ], "data": "0xe9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c001000091af8506f97c5a2b2ff4edf06ba1bfd2ec2304056fb9987ce71797010500000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f78c4022788ff0deb6c282f93df2b209d3c819999c3384498f1fec9b400000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fa5c8a47d82ec783ad7cdefd382f5b031e7ef0754fcf242ccb4c65fd300000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475561147799af163bef4d19262be10ed2d4a8977f793a195cd077e83d00000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c17cd3ee506e5156f76afda69c905dfdc22578bec37609a1693bba4fdc00000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100007562a15173ca081ddb179bb321500997ba6b43b15cf601cdf266af1cdb00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000711288f63c4cd27ecd73df769b834eeda2645f6567beea6b7ed44aaf0300000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010001397d906d62832c455f701b9f81267a1687e52210986d4e943b3f440d7d000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000f1d9ad80b5eb80ad14232d7438b1c09314dda76f296eca922da87dbfcc000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009ad8e522bb120c5f52d2236035edeb0a4259b89c3429c5ece7d1dc50286000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1066c916b985495ac9e671ae6930e373e9b5074499c7f6014c439a04a000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005b3e7150f7f6daac7cc9a46522f5ad593f9a3e3f0573282b41f86acf16000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000", "signature": "0x", "factoryDeps": [], @@ -49,13 +54,25 @@ "facetCuts": [ { "facet": "0x0000000000000000000000000000000000000000", - "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], + "selectors": [ + "0x0c4dd810", + "0xce9dcf16", + "0x7739cbe7", + "0xa9a2d18a" + ], "action": 2, "isFreezable": false }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], + "selectors": [ + "0x6c0960f9", + "0xb473318e", + "0x042901c7", + "0x263b7f8e", + "0xe4948f43", + "0xeb672419" + ], "action": 2, "isFreezable": false }, @@ -189,19 +206,37 @@ }, { "facet": "0x5349E94435Cc9Cab9FfB40A492DA46935052733A", - "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], + "selectors": [ + "0x6c0960f9", + "0xb473318e", + "0x042901c7", + "0x263b7f8e", + "0xe4948f43", + "0xeb672419" + ], "action": 0, "isFreezable": true }, { "facet": "0x16615a85B451edfb6FCBea0b34405D9C7ca1a22A", - "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], + "selectors": [ + "0x0c4dd810", + "0xce9dcf16", + "0x7739cbe7", + "0xa9a2d18a" + ], "action": 0, "isFreezable": true }, { "facet": "0x2E64926BE35412f7710A3E097Ba076740bF97CC0", - "selectors": ["0xe58bb639", "0xf235757f", "0x1cc5d103", "0xbe6f11cf", "0x4623c91d"], + "selectors": [ + "0xe58bb639", + "0xf235757f", + "0x1cc5d103", + "0xbe6f11cf", + "0x4623c91d" + ], "action": 0, "isFreezable": true } @@ -210,4 +245,4 @@ "initCalldata": "0x1ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000f80010007af2271352ac99f97670a7d6999ae63b53f4e9480a957091d8848a46c610100067d592a040e8914eda295f3521561d64b1a4c1b9e6dbd2933093102febf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa00000000000000000000000000000000000000000000000000000000000000fc00000000000000000000000000000000000000000000000000000000064ec7e30000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fe0000000000000000000000000000000000000000000000000000000000008007000000000000000000000000000000000000000000000000000000000000800600000000000000000000000000000000000000000000000000000000044aa2000000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000d600000000000000000000000000000000000000000000000000000000000000d800000000000000000000000000000000000000000000000000000000000000da00000000000000000000000000000000000000000000000000000000000000dc00000000000000000000000000000000000000000000000000000000000000ac4e9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c001000091af8506f97c5a2b2ff4edf06ba1bfd2ec2304056fb9987ce71797010500000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f78c4022788ff0deb6c282f93df2b209d3c819999c3384498f1fec9b400000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fa5c8a47d82ec783ad7cdefd382f5b031e7ef0754fcf242ccb4c65fd300000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475561147799af163bef4d19262be10ed2d4a8977f793a195cd077e83d00000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c17cd3ee506e5156f76afda69c905dfdc22578bec37609a1693bba4fdc00000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100007562a15173ca081ddb179bb321500997ba6b43b15cf601cdf266af1cdb00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000711288f63c4cd27ecd73df769b834eeda2645f6567beea6b7ed44aaf0300000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010001397d906d62832c455f701b9f81267a1687e52210986d4e943b3f440d7d000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000f1d9ad80b5eb80ad14232d7438b1c09314dda76f296eca922da87dbfcc000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009ad8e522bb120c5f52d2236035edeb0a4259b89c3429c5ece7d1dc50286000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1066c916b985495ac9e671ae6930e373e9b5074499c7f6014c439a04a000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005b3e7150f7f6daac7cc9a46522f5ad593f9a3e3f0573282b41f86acf16000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, "executeUpgradeCalldata": "0x36d4eb8400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000091ca046dad8c3db41f296267e1720d9c940f613d00000000000000000000000000000000000000000000000000000000000016c0000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000026000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000005a000000000000000000000000000000000000000000000000000000000000007400000000000000000000000000000000000000000000000000000000000000be00000000000000000000000000000000000000000000000000000000000000d80000000000000000000000000000000000000000000000000000000000000128000000000000000000000000000000000000000000000000000000000000013e00000000000000000000000000000000000000000000000000000000000001500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000040c4dd81000000000000000000000000000000000000000000000000000000000ce9dcf16000000000000000000000000000000000000000000000000000000007739cbe700000000000000000000000000000000000000000000000000000000a9a2d18a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000066c0960f900000000000000000000000000000000000000000000000000000000b473318e00000000000000000000000000000000000000000000000000000000042901c700000000000000000000000000000000000000000000000000000000263b7f8e00000000000000000000000000000000000000000000000000000000e4948f4300000000000000000000000000000000000000000000000000000000eb672419000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000ae58bb63900000000000000000000000000000000000000000000000000000000ed6d06c00000000000000000000000000000000000000000000000000000000086cb9909000000000000000000000000000000000000000000000000000000000707ac0900000000000000000000000000000000000000000000000000000000f235757f000000000000000000000000000000000000000000000000000000001cc5d10300000000000000000000000000000000000000000000000000000000be6f11cf000000000000000000000000000000000000000000000000000000004623c91d000000000000000000000000000000000000000000000000000000005437988d000000000000000000000000000000000000000000000000000000000b508883000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000873fb92970000000000000000000000000000000000000000000000000000000036d4eb840000000000000000000000000000000000000000000000000000000027ae4c16000000000000000000000000000000000000000000000000000000000551448c000000000000000000000000000000000000000000000000000000008043760a00000000000000000000000000000000000000000000000000000000beda4b12000000000000000000000000000000000000000000000000000000001733894500000000000000000000000000000000000000000000000000000000587809c70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000020cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed62700000000000000000000000000000000000000000000000000000000a7cd63b700000000000000000000000000000000000000000000000000000000fe10226d0000000000000000000000000000000000000000000000000000000079823c9a000000000000000000000000000000000000000000000000000000004fc07d7500000000000000000000000000000000000000000000000000000000d86970d800000000000000000000000000000000000000000000000000000000fd791f3c000000000000000000000000000000000000000000000000000000008665b15000000000000000000000000000000000000000000000000000000000631f4bac000000000000000000000000000000000000000000000000000000000ec6b0b7000000000000000000000000000000000000000000000000000000001b60e62600000000000000000000000000000000000000000000000000000000e39d3bff000000000000000000000000000000000000000000000000000000000ef240a000000000000000000000000000000000000000000000000000000000fe26699e000000000000000000000000000000000000000000000000000000003960738200000000000000000000000000000000000000000000000000000000af6a2dcd00000000000000000000000000000000000000000000000000000000a1954fc500000000000000000000000000000000000000000000000000000000a39980a00000000000000000000000000000000000000000000000000000000046657fe90000000000000000000000000000000000000000000000000000000018e3a941000000000000000000000000000000000000000000000000000000003db920ce0000000000000000000000000000000000000000000000000000000029b98c6700000000000000000000000000000000000000000000000000000000bd7c541200000000000000000000000000000000000000000000000000000000c3bbd2d700000000000000000000000000000000000000000000000000000000e81e0ba100000000000000000000000000000000000000000000000000000000facd743b000000000000000000000000000000000000000000000000000000009cd939e40000000000000000000000000000000000000000000000000000000056142d7a0000000000000000000000000000000000000000000000000000000074f4d30d00000000000000000000000000000000000000000000000000000000000000000000000000000000c6f7e57c6e1e20468d869fe33675524e243cd6a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000873fb92970000000000000000000000000000000000000000000000000000000036d4eb840000000000000000000000000000000000000000000000000000000027ae4c16000000000000000000000000000000000000000000000000000000000551448c000000000000000000000000000000000000000000000000000000008043760a00000000000000000000000000000000000000000000000000000000beda4b12000000000000000000000000000000000000000000000000000000001733894500000000000000000000000000000000000000000000000000000000587809c7000000000000000000000000000000000000000000000000000000000000000000000000000000007444de636699f080ca1c033528d2bb3705b391ce0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000023cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed62700000000000000000000000000000000000000000000000000000000a7cd63b700000000000000000000000000000000000000000000000000000000fe10226d0000000000000000000000000000000000000000000000000000000079823c9a000000000000000000000000000000000000000000000000000000004fc07d7500000000000000000000000000000000000000000000000000000000d86970d800000000000000000000000000000000000000000000000000000000fd791f3c000000000000000000000000000000000000000000000000000000009d1b5a81000000000000000000000000000000000000000000000000000000007b30c8da000000000000000000000000000000000000000000000000000000008665b15000000000000000000000000000000000000000000000000000000000631f4bac000000000000000000000000000000000000000000000000000000000ec6b0b7000000000000000000000000000000000000000000000000000000001b60e62600000000000000000000000000000000000000000000000000000000e39d3bff0000000000000000000000000000000000000000000000000000000033ce93fe000000000000000000000000000000000000000000000000000000000ef240a000000000000000000000000000000000000000000000000000000000fe26699e000000000000000000000000000000000000000000000000000000003960738200000000000000000000000000000000000000000000000000000000af6a2dcd00000000000000000000000000000000000000000000000000000000a1954fc500000000000000000000000000000000000000000000000000000000a39980a00000000000000000000000000000000000000000000000000000000046657fe90000000000000000000000000000000000000000000000000000000018e3a941000000000000000000000000000000000000000000000000000000003db920ce0000000000000000000000000000000000000000000000000000000029b98c6700000000000000000000000000000000000000000000000000000000bd7c541200000000000000000000000000000000000000000000000000000000c3bbd2d700000000000000000000000000000000000000000000000000000000e81e0ba100000000000000000000000000000000000000000000000000000000facd743b000000000000000000000000000000000000000000000000000000009cd939e40000000000000000000000000000000000000000000000000000000056142d7a0000000000000000000000000000000000000000000000000000000074f4d30d000000000000000000000000000000000000000000000000000000000000000000000000000000005349e94435cc9cab9ffb40a492da46935052733a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000066c0960f900000000000000000000000000000000000000000000000000000000b473318e00000000000000000000000000000000000000000000000000000000042901c700000000000000000000000000000000000000000000000000000000263b7f8e00000000000000000000000000000000000000000000000000000000e4948f4300000000000000000000000000000000000000000000000000000000eb6724190000000000000000000000000000000000000000000000000000000000000000000000000000000016615a85b451edfb6fcbea0b34405d9c7ca1a22a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000040c4dd81000000000000000000000000000000000000000000000000000000000ce9dcf16000000000000000000000000000000000000000000000000000000007739cbe700000000000000000000000000000000000000000000000000000000a9a2d18a000000000000000000000000000000000000000000000000000000000000000000000000000000002e64926be35412f7710a3e097ba076740bf97cc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000005e58bb63900000000000000000000000000000000000000000000000000000000f235757f000000000000000000000000000000000000000000000000000000001cc5d10300000000000000000000000000000000000000000000000000000000be6f11cf000000000000000000000000000000000000000000000000000000004623c91d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010041ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000f80010007af2271352ac99f97670a7d6999ae63b53f4e9480a957091d8848a46c610100067d592a040e8914eda295f3521561d64b1a4c1b9e6dbd2933093102febf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa00000000000000000000000000000000000000000000000000000000000000fc00000000000000000000000000000000000000000000000000000000064ec7e30000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fe0000000000000000000000000000000000000000000000000000000000008007000000000000000000000000000000000000000000000000000000000000800600000000000000000000000000000000000000000000000000000000044aa2000000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000d600000000000000000000000000000000000000000000000000000000000000d800000000000000000000000000000000000000000000000000000000000000da00000000000000000000000000000000000000000000000000000000000000dc00000000000000000000000000000000000000000000000000000000000000ac4e9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c001000091af8506f97c5a2b2ff4edf06ba1bfd2ec2304056fb9987ce71797010500000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f78c4022788ff0deb6c282f93df2b209d3c819999c3384498f1fec9b400000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fa5c8a47d82ec783ad7cdefd382f5b031e7ef0754fcf242ccb4c65fd300000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475561147799af163bef4d19262be10ed2d4a8977f793a195cd077e83d00000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c17cd3ee506e5156f76afda69c905dfdc22578bec37609a1693bba4fdc00000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100007562a15173ca081ddb179bb321500997ba6b43b15cf601cdf266af1cdb00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000711288f63c4cd27ecd73df769b834eeda2645f6567beea6b7ed44aaf0300000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010001397d906d62832c455f701b9f81267a1687e52210986d4e943b3f440d7d000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000f1d9ad80b5eb80ad14232d7438b1c09314dda76f296eca922da87dbfcc000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009ad8e522bb120c5f52d2236035edeb0a4259b89c3429c5ece7d1dc50286000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1066c916b985495ac9e671ae6930e373e9b5074499c7f6014c439a04a000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005b3e7150f7f6daac7cc9a46522f5ad593f9a3e3f0573282b41f86acf16000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" -} +} \ No newline at end of file diff --git a/etc/upgrades/1692195639-upgrade-system/stage2/facetCuts.json b/etc/upgrades/1692195639-upgrade-system/stage2/facetCuts.json index 0c411cd2fba..3a1f9b3c57b 100644 --- a/etc/upgrades/1692195639-upgrade-system/stage2/facetCuts.json +++ b/etc/upgrades/1692195639-upgrade-system/stage2/facetCuts.json @@ -1,13 +1,25 @@ [ { "facet": "0x0000000000000000000000000000000000000000", - "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], + "selectors": [ + "0x0c4dd810", + "0xce9dcf16", + "0x7739cbe7", + "0xa9a2d18a" + ], "action": 2, "isFreezable": false }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], + "selectors": [ + "0x6c0960f9", + "0xb473318e", + "0x042901c7", + "0x263b7f8e", + "0xe4948f43", + "0xeb672419" + ], "action": 2, "isFreezable": false }, @@ -141,20 +153,38 @@ }, { "facet": "0x5349E94435Cc9Cab9FfB40A492DA46935052733A", - "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], + "selectors": [ + "0x6c0960f9", + "0xb473318e", + "0x042901c7", + "0x263b7f8e", + "0xe4948f43", + "0xeb672419" + ], "action": 0, "isFreezable": true }, { "facet": "0xB54f822966FD4940b6fb465AC67075e5119094C3", - "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], + "selectors": [ + "0x0c4dd810", + "0xce9dcf16", + "0x7739cbe7", + "0xa9a2d18a" + ], "action": 0, "isFreezable": true }, { "facet": "0x2E64926BE35412f7710A3E097Ba076740bF97CC0", - "selectors": ["0xe58bb639", "0xf235757f", "0x1cc5d103", "0xbe6f11cf", "0x4623c91d"], + "selectors": [ + "0xe58bb639", + "0xf235757f", + "0x1cc5d103", + "0xbe6f11cf", + "0x4623c91d" + ], "action": 0, "isFreezable": true } -] +] \ No newline at end of file diff --git a/etc/upgrades/1692195639-upgrade-system/stage2/facets.json b/etc/upgrades/1692195639-upgrade-system/stage2/facets.json index 7977f86a5d1..9fcdac88c7e 100644 --- a/etc/upgrades/1692195639-upgrade-system/stage2/facets.json +++ b/etc/upgrades/1692195639-upgrade-system/stage2/facets.json @@ -19,4 +19,4 @@ "address": "0x5349E94435Cc9Cab9FfB40A492DA46935052733A", "txHash": "0xe0f50dd600de1240d6b753cf5a88e97679f754e3e6d0e93ba66877da0ca70d0e" } -} +} \ No newline at end of file diff --git a/etc/upgrades/1692195639-upgrade-system/stage2/l2Upgrade.json b/etc/upgrades/1692195639-upgrade-system/stage2/l2Upgrade.json index 2ad5949f93d..63fbb387322 100644 --- a/etc/upgrades/1692195639-upgrade-system/stage2/l2Upgrade.json +++ b/etc/upgrades/1692195639-upgrade-system/stage2/l2Upgrade.json @@ -2,72 +2,100 @@ "systemContracts": [ { "name": "AccountCodeStorage", - "bytecodeHashes": ["0x01000091af8506f97c5a2b2ff4edf06ba1bfd2ec2304056fb9987ce717970105"], + "bytecodeHashes": [ + "0x01000091af8506f97c5a2b2ff4edf06ba1bfd2ec2304056fb9987ce717970105" + ], "address": "0x0000000000000000000000000000000000008002" }, { "name": "NonceHolder", - "bytecodeHashes": ["0x0100012f78c4022788ff0deb6c282f93df2b209d3c819999c3384498f1fec9b4"], + "bytecodeHashes": [ + "0x0100012f78c4022788ff0deb6c282f93df2b209d3c819999c3384498f1fec9b4" + ], "address": "0x0000000000000000000000000000000000008003" }, { "name": "KnownCodesStorage", - "bytecodeHashes": ["0x0100008fa5c8a47d82ec783ad7cdefd382f5b031e7ef0754fcf242ccb4c65fd3"], + "bytecodeHashes": [ + "0x0100008fa5c8a47d82ec783ad7cdefd382f5b031e7ef0754fcf242ccb4c65fd3" + ], "address": "0x0000000000000000000000000000000000008004" }, { "name": "ImmutableSimulator", - "bytecodeHashes": ["0x010000475561147799af163bef4d19262be10ed2d4a8977f793a195cd077e83d"], + "bytecodeHashes": [ + "0x010000475561147799af163bef4d19262be10ed2d4a8977f793a195cd077e83d" + ], "address": "0x0000000000000000000000000000000000008005" }, { "name": "ContractDeployer", - "bytecodeHashes": ["0x010005c17cd3ee506e5156f76afda69c905dfdc22578bec37609a1693bba4fdc"], + "bytecodeHashes": [ + "0x010005c17cd3ee506e5156f76afda69c905dfdc22578bec37609a1693bba4fdc" + ], "address": "0x0000000000000000000000000000000000008006" }, { "name": "L1Messenger", - "bytecodeHashes": ["0x0100007562a15173ca081ddb179bb321500997ba6b43b15cf601cdf266af1cdb"], + "bytecodeHashes": [ + "0x0100007562a15173ca081ddb179bb321500997ba6b43b15cf601cdf266af1cdb" + ], "address": "0x0000000000000000000000000000000000008008" }, { "name": "MsgValueSimulator", - "bytecodeHashes": ["0x010000711288f63c4cd27ecd73df769b834eeda2645f6567beea6b7ed44aaf03"], + "bytecodeHashes": [ + "0x010000711288f63c4cd27ecd73df769b834eeda2645f6567beea6b7ed44aaf03" + ], "address": "0x0000000000000000000000000000000000008009" }, { "name": "L2EthToken", - "bytecodeHashes": ["0x010001397d906d62832c455f701b9f81267a1687e52210986d4e943b3f440d7d"], + "bytecodeHashes": [ + "0x010001397d906d62832c455f701b9f81267a1687e52210986d4e943b3f440d7d" + ], "address": "0x000000000000000000000000000000000000800a" }, { "name": "SystemContext", - "bytecodeHashes": ["0x010000f1d9ad80b5eb80ad14232d7438b1c09314dda76f296eca922da87dbfcc"], + "bytecodeHashes": [ + "0x010000f1d9ad80b5eb80ad14232d7438b1c09314dda76f296eca922da87dbfcc" + ], "address": "0x000000000000000000000000000000000000800b" }, { "name": "BootloaderUtilities", - "bytecodeHashes": ["0x010009ad8e522bb120c5f52d2236035edeb0a4259b89c3429c5ece7d1dc50286"], + "bytecodeHashes": [ + "0x010009ad8e522bb120c5f52d2236035edeb0a4259b89c3429c5ece7d1dc50286" + ], "address": "0x000000000000000000000000000000000000800c" }, { "name": "BytecodeCompressor", - "bytecodeHashes": ["0x010000e1066c916b985495ac9e671ae6930e373e9b5074499c7f6014c439a04a"], + "bytecodeHashes": [ + "0x010000e1066c916b985495ac9e671ae6930e373e9b5074499c7f6014c439a04a" + ], "address": "0x000000000000000000000000000000000000800e" }, { "name": "ComplexUpgrader", - "bytecodeHashes": ["0x0100005b3e7150f7f6daac7cc9a46522f5ad593f9a3e3f0573282b41f86acf16"], + "bytecodeHashes": [ + "0x0100005b3e7150f7f6daac7cc9a46522f5ad593f9a3e3f0573282b41f86acf16" + ], "address": "0x000000000000000000000000000000000000800f" } ], "bootloader": { "name": "Bootloader", - "bytecodeHashes": ["0x010007af2271352ac99f97670a7d6999ae63b53f4e9480a957091d8848a46c61"] + "bytecodeHashes": [ + "0x010007af2271352ac99f97670a7d6999ae63b53f4e9480a957091d8848a46c61" + ] }, "defaultAA": { "name": "DefaultAccount", - "bytecodeHashes": ["0x0100067d592a040e8914eda295f3521561d64b1a4c1b9e6dbd2933093102febf"] + "bytecodeHashes": [ + "0x0100067d592a040e8914eda295f3521561d64b1a4c1b9e6dbd2933093102febf" + ] }, "tx": { "txType": 254, @@ -80,7 +108,12 @@ "paymaster": 0, "nonce": "12", "value": 0, - "reserved": [0, 0, 0, 0], + "reserved": [ + 0, + 0, + 0, + 0 + ], "data": "0xe9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c001000091af8506f97c5a2b2ff4edf06ba1bfd2ec2304056fb9987ce71797010500000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f78c4022788ff0deb6c282f93df2b209d3c819999c3384498f1fec9b400000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fa5c8a47d82ec783ad7cdefd382f5b031e7ef0754fcf242ccb4c65fd300000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475561147799af163bef4d19262be10ed2d4a8977f793a195cd077e83d00000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c17cd3ee506e5156f76afda69c905dfdc22578bec37609a1693bba4fdc00000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100007562a15173ca081ddb179bb321500997ba6b43b15cf601cdf266af1cdb00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000711288f63c4cd27ecd73df769b834eeda2645f6567beea6b7ed44aaf0300000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010001397d906d62832c455f701b9f81267a1687e52210986d4e943b3f440d7d000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000f1d9ad80b5eb80ad14232d7438b1c09314dda76f296eca922da87dbfcc000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009ad8e522bb120c5f52d2236035edeb0a4259b89c3429c5ece7d1dc50286000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1066c916b985495ac9e671ae6930e373e9b5074499c7f6014c439a04a000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005b3e7150f7f6daac7cc9a46522f5ad593f9a3e3f0573282b41f86acf16000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000", "signature": "0x", "factoryDeps": [], @@ -175,4 +208,4 @@ ], "forcedDeploymentCalldata": "0xe9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c001000091af8506f97c5a2b2ff4edf06ba1bfd2ec2304056fb9987ce71797010500000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f78c4022788ff0deb6c282f93df2b209d3c819999c3384498f1fec9b400000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fa5c8a47d82ec783ad7cdefd382f5b031e7ef0754fcf242ccb4c65fd300000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475561147799af163bef4d19262be10ed2d4a8977f793a195cd077e83d00000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c17cd3ee506e5156f76afda69c905dfdc22578bec37609a1693bba4fdc00000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100007562a15173ca081ddb179bb321500997ba6b43b15cf601cdf266af1cdb00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000711288f63c4cd27ecd73df769b834eeda2645f6567beea6b7ed44aaf0300000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010001397d906d62832c455f701b9f81267a1687e52210986d4e943b3f440d7d000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000f1d9ad80b5eb80ad14232d7438b1c09314dda76f296eca922da87dbfcc000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009ad8e522bb120c5f52d2236035edeb0a4259b89c3429c5ece7d1dc50286000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1066c916b985495ac9e671ae6930e373e9b5074499c7f6014c439a04a000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005b3e7150f7f6daac7cc9a46522f5ad593f9a3e3f0573282b41f86acf16000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000", "calldata": "0xe9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c001000091af8506f97c5a2b2ff4edf06ba1bfd2ec2304056fb9987ce71797010500000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f78c4022788ff0deb6c282f93df2b209d3c819999c3384498f1fec9b400000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fa5c8a47d82ec783ad7cdefd382f5b031e7ef0754fcf242ccb4c65fd300000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475561147799af163bef4d19262be10ed2d4a8977f793a195cd077e83d00000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c17cd3ee506e5156f76afda69c905dfdc22578bec37609a1693bba4fdc00000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100007562a15173ca081ddb179bb321500997ba6b43b15cf601cdf266af1cdb00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000711288f63c4cd27ecd73df769b834eeda2645f6567beea6b7ed44aaf0300000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010001397d906d62832c455f701b9f81267a1687e52210986d4e943b3f440d7d000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000f1d9ad80b5eb80ad14232d7438b1c09314dda76f296eca922da87dbfcc000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009ad8e522bb120c5f52d2236035edeb0a4259b89c3429c5ece7d1dc50286000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1066c916b985495ac9e671ae6930e373e9b5074499c7f6014c439a04a000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005b3e7150f7f6daac7cc9a46522f5ad593f9a3e3f0573282b41f86acf16000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000" -} +} \ No newline at end of file diff --git a/etc/upgrades/1692195639-upgrade-system/stage2/transactions.json b/etc/upgrades/1692195639-upgrade-system/stage2/transactions.json index 76fd2da9539..9cc3c1eb7fd 100644 --- a/etc/upgrades/1692195639-upgrade-system/stage2/transactions.json +++ b/etc/upgrades/1692195639-upgrade-system/stage2/transactions.json @@ -11,7 +11,12 @@ "paymaster": 0, "nonce": "12", "value": 0, - "reserved": [0, 0, 0, 0], + "reserved": [ + 0, + 0, + 0, + 0 + ], "data": "0xe9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c001000091af8506f97c5a2b2ff4edf06ba1bfd2ec2304056fb9987ce71797010500000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f78c4022788ff0deb6c282f93df2b209d3c819999c3384498f1fec9b400000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fa5c8a47d82ec783ad7cdefd382f5b031e7ef0754fcf242ccb4c65fd300000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475561147799af163bef4d19262be10ed2d4a8977f793a195cd077e83d00000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c17cd3ee506e5156f76afda69c905dfdc22578bec37609a1693bba4fdc00000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100007562a15173ca081ddb179bb321500997ba6b43b15cf601cdf266af1cdb00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000711288f63c4cd27ecd73df769b834eeda2645f6567beea6b7ed44aaf0300000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010001397d906d62832c455f701b9f81267a1687e52210986d4e943b3f440d7d000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000f1d9ad80b5eb80ad14232d7438b1c09314dda76f296eca922da87dbfcc000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009ad8e522bb120c5f52d2236035edeb0a4259b89c3429c5ece7d1dc50286000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1066c916b985495ac9e671ae6930e373e9b5074499c7f6014c439a04a000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005b3e7150f7f6daac7cc9a46522f5ad593f9a3e3f0573282b41f86acf16000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000", "signature": "0x", "factoryDeps": [], @@ -49,13 +54,25 @@ "facetCuts": [ { "facet": "0x0000000000000000000000000000000000000000", - "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], + "selectors": [ + "0x0c4dd810", + "0xce9dcf16", + "0x7739cbe7", + "0xa9a2d18a" + ], "action": 2, "isFreezable": false }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], + "selectors": [ + "0x6c0960f9", + "0xb473318e", + "0x042901c7", + "0x263b7f8e", + "0xe4948f43", + "0xeb672419" + ], "action": 2, "isFreezable": false }, @@ -189,19 +206,37 @@ }, { "facet": "0x5349E94435Cc9Cab9FfB40A492DA46935052733A", - "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], + "selectors": [ + "0x6c0960f9", + "0xb473318e", + "0x042901c7", + "0x263b7f8e", + "0xe4948f43", + "0xeb672419" + ], "action": 0, "isFreezable": true }, { "facet": "0xB54f822966FD4940b6fb465AC67075e5119094C3", - "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], + "selectors": [ + "0x0c4dd810", + "0xce9dcf16", + "0x7739cbe7", + "0xa9a2d18a" + ], "action": 0, "isFreezable": true }, { "facet": "0x2E64926BE35412f7710A3E097Ba076740bF97CC0", - "selectors": ["0xe58bb639", "0xf235757f", "0x1cc5d103", "0xbe6f11cf", "0x4623c91d"], + "selectors": [ + "0xe58bb639", + "0xf235757f", + "0x1cc5d103", + "0xbe6f11cf", + "0x4623c91d" + ], "action": 0, "isFreezable": true } @@ -210,4 +245,4 @@ "initCalldata": "0x1ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000f80010007af2271352ac99f97670a7d6999ae63b53f4e9480a957091d8848a46c610100067d592a040e8914eda295f3521561d64b1a4c1b9e6dbd2933093102febf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa00000000000000000000000000000000000000000000000000000000000000fc00000000000000000000000000000000000000000000000000000000064ddf6a8000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fe0000000000000000000000000000000000000000000000000000000000008007000000000000000000000000000000000000000000000000000000000000800600000000000000000000000000000000000000000000000000000000044aa2000000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000d600000000000000000000000000000000000000000000000000000000000000d800000000000000000000000000000000000000000000000000000000000000da00000000000000000000000000000000000000000000000000000000000000dc00000000000000000000000000000000000000000000000000000000000000ac4e9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c001000091af8506f97c5a2b2ff4edf06ba1bfd2ec2304056fb9987ce71797010500000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f78c4022788ff0deb6c282f93df2b209d3c819999c3384498f1fec9b400000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fa5c8a47d82ec783ad7cdefd382f5b031e7ef0754fcf242ccb4c65fd300000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475561147799af163bef4d19262be10ed2d4a8977f793a195cd077e83d00000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c17cd3ee506e5156f76afda69c905dfdc22578bec37609a1693bba4fdc00000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100007562a15173ca081ddb179bb321500997ba6b43b15cf601cdf266af1cdb00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000711288f63c4cd27ecd73df769b834eeda2645f6567beea6b7ed44aaf0300000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010001397d906d62832c455f701b9f81267a1687e52210986d4e943b3f440d7d000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000f1d9ad80b5eb80ad14232d7438b1c09314dda76f296eca922da87dbfcc000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009ad8e522bb120c5f52d2236035edeb0a4259b89c3429c5ece7d1dc50286000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1066c916b985495ac9e671ae6930e373e9b5074499c7f6014c439a04a000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005b3e7150f7f6daac7cc9a46522f5ad593f9a3e3f0573282b41f86acf16000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, "executeUpgradeCalldata": "0x36d4eb84000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000db876240f01a6dd38f5efc4ecefe52e5c13db3c700000000000000000000000000000000000000000000000000000000000016c0000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000026000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000008600000000000000000000000000000000000000000000000000000000000000a400000000000000000000000000000000000000000000000000000000000000be00000000000000000000000000000000000000000000000000000000000000d80000000000000000000000000000000000000000000000000000000000000128000000000000000000000000000000000000000000000000000000000000013e00000000000000000000000000000000000000000000000000000000000001500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000040c4dd81000000000000000000000000000000000000000000000000000000000ce9dcf16000000000000000000000000000000000000000000000000000000007739cbe700000000000000000000000000000000000000000000000000000000a9a2d18a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000066c0960f900000000000000000000000000000000000000000000000000000000b473318e00000000000000000000000000000000000000000000000000000000042901c700000000000000000000000000000000000000000000000000000000263b7f8e00000000000000000000000000000000000000000000000000000000e4948f4300000000000000000000000000000000000000000000000000000000eb6724190000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000020cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed62700000000000000000000000000000000000000000000000000000000a7cd63b700000000000000000000000000000000000000000000000000000000fe10226d0000000000000000000000000000000000000000000000000000000079823c9a000000000000000000000000000000000000000000000000000000004fc07d7500000000000000000000000000000000000000000000000000000000d86970d800000000000000000000000000000000000000000000000000000000fd791f3c000000000000000000000000000000000000000000000000000000008665b15000000000000000000000000000000000000000000000000000000000631f4bac000000000000000000000000000000000000000000000000000000000ec6b0b7000000000000000000000000000000000000000000000000000000001b60e62600000000000000000000000000000000000000000000000000000000e39d3bff000000000000000000000000000000000000000000000000000000000ef240a000000000000000000000000000000000000000000000000000000000fe26699e000000000000000000000000000000000000000000000000000000003960738200000000000000000000000000000000000000000000000000000000af6a2dcd00000000000000000000000000000000000000000000000000000000a1954fc500000000000000000000000000000000000000000000000000000000a39980a00000000000000000000000000000000000000000000000000000000046657fe90000000000000000000000000000000000000000000000000000000018e3a941000000000000000000000000000000000000000000000000000000003db920ce0000000000000000000000000000000000000000000000000000000029b98c6700000000000000000000000000000000000000000000000000000000bd7c541200000000000000000000000000000000000000000000000000000000c3bbd2d700000000000000000000000000000000000000000000000000000000e81e0ba100000000000000000000000000000000000000000000000000000000facd743b000000000000000000000000000000000000000000000000000000009cd939e40000000000000000000000000000000000000000000000000000000056142d7a0000000000000000000000000000000000000000000000000000000074f4d30d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000ae58bb63900000000000000000000000000000000000000000000000000000000ed6d06c00000000000000000000000000000000000000000000000000000000086cb9909000000000000000000000000000000000000000000000000000000000707ac0900000000000000000000000000000000000000000000000000000000f235757f000000000000000000000000000000000000000000000000000000001cc5d10300000000000000000000000000000000000000000000000000000000be6f11cf000000000000000000000000000000000000000000000000000000004623c91d000000000000000000000000000000000000000000000000000000005437988d000000000000000000000000000000000000000000000000000000000b508883000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000873fb92970000000000000000000000000000000000000000000000000000000036d4eb840000000000000000000000000000000000000000000000000000000027ae4c16000000000000000000000000000000000000000000000000000000000551448c000000000000000000000000000000000000000000000000000000008043760a00000000000000000000000000000000000000000000000000000000beda4b12000000000000000000000000000000000000000000000000000000001733894500000000000000000000000000000000000000000000000000000000587809c700000000000000000000000000000000000000000000000000000000000000000000000000000000c6f7e57c6e1e20468d869fe33675524e243cd6a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000873fb92970000000000000000000000000000000000000000000000000000000036d4eb840000000000000000000000000000000000000000000000000000000027ae4c16000000000000000000000000000000000000000000000000000000000551448c000000000000000000000000000000000000000000000000000000008043760a00000000000000000000000000000000000000000000000000000000beda4b12000000000000000000000000000000000000000000000000000000001733894500000000000000000000000000000000000000000000000000000000587809c7000000000000000000000000000000000000000000000000000000000000000000000000000000007444de636699f080ca1c033528d2bb3705b391ce0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000023cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed62700000000000000000000000000000000000000000000000000000000a7cd63b700000000000000000000000000000000000000000000000000000000fe10226d0000000000000000000000000000000000000000000000000000000079823c9a000000000000000000000000000000000000000000000000000000004fc07d7500000000000000000000000000000000000000000000000000000000d86970d800000000000000000000000000000000000000000000000000000000fd791f3c000000000000000000000000000000000000000000000000000000009d1b5a81000000000000000000000000000000000000000000000000000000007b30c8da000000000000000000000000000000000000000000000000000000008665b15000000000000000000000000000000000000000000000000000000000631f4bac000000000000000000000000000000000000000000000000000000000ec6b0b7000000000000000000000000000000000000000000000000000000001b60e62600000000000000000000000000000000000000000000000000000000e39d3bff0000000000000000000000000000000000000000000000000000000033ce93fe000000000000000000000000000000000000000000000000000000000ef240a000000000000000000000000000000000000000000000000000000000fe26699e000000000000000000000000000000000000000000000000000000003960738200000000000000000000000000000000000000000000000000000000af6a2dcd00000000000000000000000000000000000000000000000000000000a1954fc500000000000000000000000000000000000000000000000000000000a39980a00000000000000000000000000000000000000000000000000000000046657fe90000000000000000000000000000000000000000000000000000000018e3a941000000000000000000000000000000000000000000000000000000003db920ce0000000000000000000000000000000000000000000000000000000029b98c6700000000000000000000000000000000000000000000000000000000bd7c541200000000000000000000000000000000000000000000000000000000c3bbd2d700000000000000000000000000000000000000000000000000000000e81e0ba100000000000000000000000000000000000000000000000000000000facd743b000000000000000000000000000000000000000000000000000000009cd939e40000000000000000000000000000000000000000000000000000000056142d7a0000000000000000000000000000000000000000000000000000000074f4d30d000000000000000000000000000000000000000000000000000000000000000000000000000000005349e94435cc9cab9ffb40a492da46935052733a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000066c0960f900000000000000000000000000000000000000000000000000000000b473318e00000000000000000000000000000000000000000000000000000000042901c700000000000000000000000000000000000000000000000000000000263b7f8e00000000000000000000000000000000000000000000000000000000e4948f4300000000000000000000000000000000000000000000000000000000eb67241900000000000000000000000000000000000000000000000000000000000000000000000000000000b54f822966fd4940b6fb465ac67075e5119094c300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000040c4dd81000000000000000000000000000000000000000000000000000000000ce9dcf16000000000000000000000000000000000000000000000000000000007739cbe700000000000000000000000000000000000000000000000000000000a9a2d18a000000000000000000000000000000000000000000000000000000000000000000000000000000002e64926be35412f7710a3e097ba076740bf97cc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000005e58bb63900000000000000000000000000000000000000000000000000000000f235757f000000000000000000000000000000000000000000000000000000001cc5d10300000000000000000000000000000000000000000000000000000000be6f11cf000000000000000000000000000000000000000000000000000000004623c91d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010041ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000f80010007af2271352ac99f97670a7d6999ae63b53f4e9480a957091d8848a46c610100067d592a040e8914eda295f3521561d64b1a4c1b9e6dbd2933093102febf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa00000000000000000000000000000000000000000000000000000000000000fc00000000000000000000000000000000000000000000000000000000064ddf6a8000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fe0000000000000000000000000000000000000000000000000000000000008007000000000000000000000000000000000000000000000000000000000000800600000000000000000000000000000000000000000000000000000000044aa2000000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000d600000000000000000000000000000000000000000000000000000000000000d800000000000000000000000000000000000000000000000000000000000000da00000000000000000000000000000000000000000000000000000000000000dc00000000000000000000000000000000000000000000000000000000000000ac4e9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c001000091af8506f97c5a2b2ff4edf06ba1bfd2ec2304056fb9987ce71797010500000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f78c4022788ff0deb6c282f93df2b209d3c819999c3384498f1fec9b400000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fa5c8a47d82ec783ad7cdefd382f5b031e7ef0754fcf242ccb4c65fd300000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475561147799af163bef4d19262be10ed2d4a8977f793a195cd077e83d00000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c17cd3ee506e5156f76afda69c905dfdc22578bec37609a1693bba4fdc00000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100007562a15173ca081ddb179bb321500997ba6b43b15cf601cdf266af1cdb00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000711288f63c4cd27ecd73df769b834eeda2645f6567beea6b7ed44aaf0300000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010001397d906d62832c455f701b9f81267a1687e52210986d4e943b3f440d7d000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000f1d9ad80b5eb80ad14232d7438b1c09314dda76f296eca922da87dbfcc000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009ad8e522bb120c5f52d2236035edeb0a4259b89c3429c5ece7d1dc50286000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1066c916b985495ac9e671ae6930e373e9b5074499c7f6014c439a04a000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005b3e7150f7f6daac7cc9a46522f5ad593f9a3e3f0573282b41f86acf16000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" -} +} \ No newline at end of file diff --git a/etc/upgrades/1692195639-upgrade-system/testnet2/facetCuts.json b/etc/upgrades/1692195639-upgrade-system/testnet2/facetCuts.json index c3660b47705..f48328679fe 100644 --- a/etc/upgrades/1692195639-upgrade-system/testnet2/facetCuts.json +++ b/etc/upgrades/1692195639-upgrade-system/testnet2/facetCuts.json @@ -1,13 +1,25 @@ [ { "facet": "0x0000000000000000000000000000000000000000", - "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], + "selectors": [ + "0x0c4dd810", + "0xce9dcf16", + "0x7739cbe7", + "0xa9a2d18a" + ], "action": 2, "isFreezable": false }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], + "selectors": [ + "0x6c0960f9", + "0xb473318e", + "0x042901c7", + "0x263b7f8e", + "0xe4948f43", + "0xeb672419" + ], "action": 2, "isFreezable": false }, @@ -141,20 +153,38 @@ }, { "facet": "0x5349E94435Cc9Cab9FfB40A492DA46935052733A", - "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], + "selectors": [ + "0x6c0960f9", + "0xb473318e", + "0x042901c7", + "0x263b7f8e", + "0xe4948f43", + "0xeb672419" + ], "action": 0, "isFreezable": true }, { "facet": "0xB54f822966FD4940b6fb465AC67075e5119094C3", - "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], + "selectors": [ + "0x0c4dd810", + "0xce9dcf16", + "0x7739cbe7", + "0xa9a2d18a" + ], "action": 0, "isFreezable": true }, { "facet": "0x2E64926BE35412f7710A3E097Ba076740bF97CC0", - "selectors": ["0xe58bb639", "0xf235757f", "0x1cc5d103", "0xbe6f11cf", "0x4623c91d"], + "selectors": [ + "0xe58bb639", + "0xf235757f", + "0x1cc5d103", + "0xbe6f11cf", + "0x4623c91d" + ], "action": 0, "isFreezable": true } -] +] \ No newline at end of file diff --git a/etc/upgrades/1692195639-upgrade-system/testnet2/facets.json b/etc/upgrades/1692195639-upgrade-system/testnet2/facets.json index 2e52ec41fd4..56fbbc60131 100644 --- a/etc/upgrades/1692195639-upgrade-system/testnet2/facets.json +++ b/etc/upgrades/1692195639-upgrade-system/testnet2/facets.json @@ -19,4 +19,4 @@ "address": "0x5349E94435Cc9Cab9FfB40A492DA46935052733A", "txHash": "0x2a584f3e8229a38e5f976fadf563411728c4dbc3ff6259c067dfc7ffccb0dd80" } -} +} \ No newline at end of file diff --git a/etc/upgrades/1692195639-upgrade-system/testnet2/l2Upgrade.json b/etc/upgrades/1692195639-upgrade-system/testnet2/l2Upgrade.json index 2a772be7564..da024be79e3 100644 --- a/etc/upgrades/1692195639-upgrade-system/testnet2/l2Upgrade.json +++ b/etc/upgrades/1692195639-upgrade-system/testnet2/l2Upgrade.json @@ -2,72 +2,100 @@ "systemContracts": [ { "name": "AccountCodeStorage", - "bytecodeHashes": ["0x01000091af8506f97c5a2b2ff4edf06ba1bfd2ec2304056fb9987ce717970105"], + "bytecodeHashes": [ + "0x01000091af8506f97c5a2b2ff4edf06ba1bfd2ec2304056fb9987ce717970105" + ], "address": "0x0000000000000000000000000000000000008002" }, { "name": "NonceHolder", - "bytecodeHashes": ["0x0100012f78c4022788ff0deb6c282f93df2b209d3c819999c3384498f1fec9b4"], + "bytecodeHashes": [ + "0x0100012f78c4022788ff0deb6c282f93df2b209d3c819999c3384498f1fec9b4" + ], "address": "0x0000000000000000000000000000000000008003" }, { "name": "KnownCodesStorage", - "bytecodeHashes": ["0x0100008fa5c8a47d82ec783ad7cdefd382f5b031e7ef0754fcf242ccb4c65fd3"], + "bytecodeHashes": [ + "0x0100008fa5c8a47d82ec783ad7cdefd382f5b031e7ef0754fcf242ccb4c65fd3" + ], "address": "0x0000000000000000000000000000000000008004" }, { "name": "ImmutableSimulator", - "bytecodeHashes": ["0x010000475561147799af163bef4d19262be10ed2d4a8977f793a195cd077e83d"], + "bytecodeHashes": [ + "0x010000475561147799af163bef4d19262be10ed2d4a8977f793a195cd077e83d" + ], "address": "0x0000000000000000000000000000000000008005" }, { "name": "ContractDeployer", - "bytecodeHashes": ["0x010005c17cd3ee506e5156f76afda69c905dfdc22578bec37609a1693bba4fdc"], + "bytecodeHashes": [ + "0x010005c17cd3ee506e5156f76afda69c905dfdc22578bec37609a1693bba4fdc" + ], "address": "0x0000000000000000000000000000000000008006" }, { "name": "L1Messenger", - "bytecodeHashes": ["0x0100007562a15173ca081ddb179bb321500997ba6b43b15cf601cdf266af1cdb"], + "bytecodeHashes": [ + "0x0100007562a15173ca081ddb179bb321500997ba6b43b15cf601cdf266af1cdb" + ], "address": "0x0000000000000000000000000000000000008008" }, { "name": "MsgValueSimulator", - "bytecodeHashes": ["0x010000711288f63c4cd27ecd73df769b834eeda2645f6567beea6b7ed44aaf03"], + "bytecodeHashes": [ + "0x010000711288f63c4cd27ecd73df769b834eeda2645f6567beea6b7ed44aaf03" + ], "address": "0x0000000000000000000000000000000000008009" }, { "name": "L2EthToken", - "bytecodeHashes": ["0x010001397d906d62832c455f701b9f81267a1687e52210986d4e943b3f440d7d"], + "bytecodeHashes": [ + "0x010001397d906d62832c455f701b9f81267a1687e52210986d4e943b3f440d7d" + ], "address": "0x000000000000000000000000000000000000800a" }, { "name": "SystemContext", - "bytecodeHashes": ["0x010000f1d9ad80b5eb80ad14232d7438b1c09314dda76f296eca922da87dbfcc"], + "bytecodeHashes": [ + "0x010000f1d9ad80b5eb80ad14232d7438b1c09314dda76f296eca922da87dbfcc" + ], "address": "0x000000000000000000000000000000000000800b" }, { "name": "BootloaderUtilities", - "bytecodeHashes": ["0x010009ad8e522bb120c5f52d2236035edeb0a4259b89c3429c5ece7d1dc50286"], + "bytecodeHashes": [ + "0x010009ad8e522bb120c5f52d2236035edeb0a4259b89c3429c5ece7d1dc50286" + ], "address": "0x000000000000000000000000000000000000800c" }, { "name": "BytecodeCompressor", - "bytecodeHashes": ["0x010000e1066c916b985495ac9e671ae6930e373e9b5074499c7f6014c439a04a"], + "bytecodeHashes": [ + "0x010000e1066c916b985495ac9e671ae6930e373e9b5074499c7f6014c439a04a" + ], "address": "0x000000000000000000000000000000000000800e" }, { "name": "ComplexUpgrader", - "bytecodeHashes": ["0x0100005b3e7150f7f6daac7cc9a46522f5ad593f9a3e3f0573282b41f86acf16"], + "bytecodeHashes": [ + "0x0100005b3e7150f7f6daac7cc9a46522f5ad593f9a3e3f0573282b41f86acf16" + ], "address": "0x000000000000000000000000000000000000800f" } ], "bootloader": { "name": "Bootloader", - "bytecodeHashes": ["0x010007af2271352ac99f97670a7d6999ae63b53f4e9480a957091d8848a46c61"] + "bytecodeHashes": [ + "0x010007af2271352ac99f97670a7d6999ae63b53f4e9480a957091d8848a46c61" + ] }, "defaultAA": { "name": "DefaultAccount", - "bytecodeHashes": ["0x0100067d592a040e8914eda295f3521561d64b1a4c1b9e6dbd2933093102febf"] + "bytecodeHashes": [ + "0x0100067d592a040e8914eda295f3521561d64b1a4c1b9e6dbd2933093102febf" + ] }, "forcedDeployments": [ { @@ -168,11 +196,16 @@ "paymaster": 0, "nonce": "12", "value": 0, - "reserved": [0, 0, 0, 0], + "reserved": [ + 0, + 0, + 0, + 0 + ], "data": "0xe9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c001000091af8506f97c5a2b2ff4edf06ba1bfd2ec2304056fb9987ce71797010500000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f78c4022788ff0deb6c282f93df2b209d3c819999c3384498f1fec9b400000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fa5c8a47d82ec783ad7cdefd382f5b031e7ef0754fcf242ccb4c65fd300000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475561147799af163bef4d19262be10ed2d4a8977f793a195cd077e83d00000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c17cd3ee506e5156f76afda69c905dfdc22578bec37609a1693bba4fdc00000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100007562a15173ca081ddb179bb321500997ba6b43b15cf601cdf266af1cdb00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000711288f63c4cd27ecd73df769b834eeda2645f6567beea6b7ed44aaf0300000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010001397d906d62832c455f701b9f81267a1687e52210986d4e943b3f440d7d000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000f1d9ad80b5eb80ad14232d7438b1c09314dda76f296eca922da87dbfcc000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009ad8e522bb120c5f52d2236035edeb0a4259b89c3429c5ece7d1dc50286000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1066c916b985495ac9e671ae6930e373e9b5074499c7f6014c439a04a000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005b3e7150f7f6daac7cc9a46522f5ad593f9a3e3f0573282b41f86acf16000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000", "signature": "0x", "factoryDeps": [], "paymasterInput": "0x", "reservedDynamic": "0x" } -} +} \ No newline at end of file diff --git a/etc/upgrades/1692195639-upgrade-system/testnet2/transactions.json b/etc/upgrades/1692195639-upgrade-system/testnet2/transactions.json index 18c909b7045..82f3a1d9d75 100644 --- a/etc/upgrades/1692195639-upgrade-system/testnet2/transactions.json +++ b/etc/upgrades/1692195639-upgrade-system/testnet2/transactions.json @@ -11,7 +11,12 @@ "paymaster": 0, "nonce": "12", "value": 0, - "reserved": [0, 0, 0, 0], + "reserved": [ + 0, + 0, + 0, + 0 + ], "data": "0xe9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c001000091af8506f97c5a2b2ff4edf06ba1bfd2ec2304056fb9987ce71797010500000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f78c4022788ff0deb6c282f93df2b209d3c819999c3384498f1fec9b400000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fa5c8a47d82ec783ad7cdefd382f5b031e7ef0754fcf242ccb4c65fd300000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475561147799af163bef4d19262be10ed2d4a8977f793a195cd077e83d00000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c17cd3ee506e5156f76afda69c905dfdc22578bec37609a1693bba4fdc00000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100007562a15173ca081ddb179bb321500997ba6b43b15cf601cdf266af1cdb00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000711288f63c4cd27ecd73df769b834eeda2645f6567beea6b7ed44aaf0300000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010001397d906d62832c455f701b9f81267a1687e52210986d4e943b3f440d7d000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000f1d9ad80b5eb80ad14232d7438b1c09314dda76f296eca922da87dbfcc000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009ad8e522bb120c5f52d2236035edeb0a4259b89c3429c5ece7d1dc50286000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1066c916b985495ac9e671ae6930e373e9b5074499c7f6014c439a04a000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005b3e7150f7f6daac7cc9a46522f5ad593f9a3e3f0573282b41f86acf16000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000", "signature": "0x", "factoryDeps": [], @@ -49,13 +54,25 @@ "facetCuts": [ { "facet": "0x0000000000000000000000000000000000000000", - "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], + "selectors": [ + "0x0c4dd810", + "0xce9dcf16", + "0x7739cbe7", + "0xa9a2d18a" + ], "action": 2, "isFreezable": false }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], + "selectors": [ + "0x6c0960f9", + "0xb473318e", + "0x042901c7", + "0x263b7f8e", + "0xe4948f43", + "0xeb672419" + ], "action": 2, "isFreezable": false }, @@ -189,19 +206,37 @@ }, { "facet": "0x5349E94435Cc9Cab9FfB40A492DA46935052733A", - "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], + "selectors": [ + "0x6c0960f9", + "0xb473318e", + "0x042901c7", + "0x263b7f8e", + "0xe4948f43", + "0xeb672419" + ], "action": 0, "isFreezable": true }, { "facet": "0xB54f822966FD4940b6fb465AC67075e5119094C3", - "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], + "selectors": [ + "0x0c4dd810", + "0xce9dcf16", + "0x7739cbe7", + "0xa9a2d18a" + ], "action": 0, "isFreezable": true }, { "facet": "0x2E64926BE35412f7710A3E097Ba076740bF97CC0", - "selectors": ["0xe58bb639", "0xf235757f", "0x1cc5d103", "0xbe6f11cf", "0x4623c91d"], + "selectors": [ + "0xe58bb639", + "0xf235757f", + "0x1cc5d103", + "0xbe6f11cf", + "0x4623c91d" + ], "action": 0, "isFreezable": true } @@ -210,4 +245,4 @@ "initCalldata": "0x1ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000f80010007af2271352ac99f97670a7d6999ae63b53f4e9480a957091d8848a46c610100067d592a040e8914eda295f3521561d64b1a4c1b9e6dbd2933093102febf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa00000000000000000000000000000000000000000000000000000000000000fc00000000000000000000000000000000000000000000000000000000064e35670000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fe0000000000000000000000000000000000000000000000000000000000008007000000000000000000000000000000000000000000000000000000000000800600000000000000000000000000000000000000000000000000000000044aa2000000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000d600000000000000000000000000000000000000000000000000000000000000d800000000000000000000000000000000000000000000000000000000000000da00000000000000000000000000000000000000000000000000000000000000dc00000000000000000000000000000000000000000000000000000000000000ac4e9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c001000091af8506f97c5a2b2ff4edf06ba1bfd2ec2304056fb9987ce71797010500000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f78c4022788ff0deb6c282f93df2b209d3c819999c3384498f1fec9b400000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fa5c8a47d82ec783ad7cdefd382f5b031e7ef0754fcf242ccb4c65fd300000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475561147799af163bef4d19262be10ed2d4a8977f793a195cd077e83d00000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c17cd3ee506e5156f76afda69c905dfdc22578bec37609a1693bba4fdc00000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100007562a15173ca081ddb179bb321500997ba6b43b15cf601cdf266af1cdb00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000711288f63c4cd27ecd73df769b834eeda2645f6567beea6b7ed44aaf0300000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010001397d906d62832c455f701b9f81267a1687e52210986d4e943b3f440d7d000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000f1d9ad80b5eb80ad14232d7438b1c09314dda76f296eca922da87dbfcc000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009ad8e522bb120c5f52d2236035edeb0a4259b89c3429c5ece7d1dc50286000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1066c916b985495ac9e671ae6930e373e9b5074499c7f6014c439a04a000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005b3e7150f7f6daac7cc9a46522f5ad593f9a3e3f0573282b41f86acf16000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, "executeUpgradeCalldata": "0x36d4eb8400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000070eedd750ce140c6320a721d3e6ff62c80e29db800000000000000000000000000000000000000000000000000000000000016c0000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000026000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000005a000000000000000000000000000000000000000000000000000000000000007400000000000000000000000000000000000000000000000000000000000000be00000000000000000000000000000000000000000000000000000000000000d80000000000000000000000000000000000000000000000000000000000000128000000000000000000000000000000000000000000000000000000000000013e00000000000000000000000000000000000000000000000000000000000001500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000040c4dd81000000000000000000000000000000000000000000000000000000000ce9dcf16000000000000000000000000000000000000000000000000000000007739cbe700000000000000000000000000000000000000000000000000000000a9a2d18a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000066c0960f900000000000000000000000000000000000000000000000000000000b473318e00000000000000000000000000000000000000000000000000000000042901c700000000000000000000000000000000000000000000000000000000263b7f8e00000000000000000000000000000000000000000000000000000000e4948f4300000000000000000000000000000000000000000000000000000000eb672419000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000ae58bb63900000000000000000000000000000000000000000000000000000000ed6d06c00000000000000000000000000000000000000000000000000000000086cb9909000000000000000000000000000000000000000000000000000000000707ac0900000000000000000000000000000000000000000000000000000000f235757f000000000000000000000000000000000000000000000000000000001cc5d10300000000000000000000000000000000000000000000000000000000be6f11cf000000000000000000000000000000000000000000000000000000004623c91d000000000000000000000000000000000000000000000000000000005437988d000000000000000000000000000000000000000000000000000000000b508883000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000873fb92970000000000000000000000000000000000000000000000000000000036d4eb840000000000000000000000000000000000000000000000000000000027ae4c16000000000000000000000000000000000000000000000000000000000551448c000000000000000000000000000000000000000000000000000000008043760a00000000000000000000000000000000000000000000000000000000beda4b12000000000000000000000000000000000000000000000000000000001733894500000000000000000000000000000000000000000000000000000000587809c70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000020cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed62700000000000000000000000000000000000000000000000000000000a7cd63b700000000000000000000000000000000000000000000000000000000fe10226d0000000000000000000000000000000000000000000000000000000079823c9a000000000000000000000000000000000000000000000000000000004fc07d7500000000000000000000000000000000000000000000000000000000d86970d800000000000000000000000000000000000000000000000000000000fd791f3c000000000000000000000000000000000000000000000000000000008665b15000000000000000000000000000000000000000000000000000000000631f4bac000000000000000000000000000000000000000000000000000000000ec6b0b7000000000000000000000000000000000000000000000000000000001b60e62600000000000000000000000000000000000000000000000000000000e39d3bff000000000000000000000000000000000000000000000000000000000ef240a000000000000000000000000000000000000000000000000000000000fe26699e000000000000000000000000000000000000000000000000000000003960738200000000000000000000000000000000000000000000000000000000af6a2dcd00000000000000000000000000000000000000000000000000000000a1954fc500000000000000000000000000000000000000000000000000000000a39980a00000000000000000000000000000000000000000000000000000000046657fe90000000000000000000000000000000000000000000000000000000018e3a941000000000000000000000000000000000000000000000000000000003db920ce0000000000000000000000000000000000000000000000000000000029b98c6700000000000000000000000000000000000000000000000000000000bd7c541200000000000000000000000000000000000000000000000000000000c3bbd2d700000000000000000000000000000000000000000000000000000000e81e0ba100000000000000000000000000000000000000000000000000000000facd743b000000000000000000000000000000000000000000000000000000009cd939e40000000000000000000000000000000000000000000000000000000056142d7a0000000000000000000000000000000000000000000000000000000074f4d30d00000000000000000000000000000000000000000000000000000000000000000000000000000000c6f7e57c6e1e20468d869fe33675524e243cd6a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000873fb92970000000000000000000000000000000000000000000000000000000036d4eb840000000000000000000000000000000000000000000000000000000027ae4c16000000000000000000000000000000000000000000000000000000000551448c000000000000000000000000000000000000000000000000000000008043760a00000000000000000000000000000000000000000000000000000000beda4b12000000000000000000000000000000000000000000000000000000001733894500000000000000000000000000000000000000000000000000000000587809c7000000000000000000000000000000000000000000000000000000000000000000000000000000007444de636699f080ca1c033528d2bb3705b391ce0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000023cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed62700000000000000000000000000000000000000000000000000000000a7cd63b700000000000000000000000000000000000000000000000000000000fe10226d0000000000000000000000000000000000000000000000000000000079823c9a000000000000000000000000000000000000000000000000000000004fc07d7500000000000000000000000000000000000000000000000000000000d86970d800000000000000000000000000000000000000000000000000000000fd791f3c000000000000000000000000000000000000000000000000000000009d1b5a81000000000000000000000000000000000000000000000000000000007b30c8da000000000000000000000000000000000000000000000000000000008665b15000000000000000000000000000000000000000000000000000000000631f4bac000000000000000000000000000000000000000000000000000000000ec6b0b7000000000000000000000000000000000000000000000000000000001b60e62600000000000000000000000000000000000000000000000000000000e39d3bff0000000000000000000000000000000000000000000000000000000033ce93fe000000000000000000000000000000000000000000000000000000000ef240a000000000000000000000000000000000000000000000000000000000fe26699e000000000000000000000000000000000000000000000000000000003960738200000000000000000000000000000000000000000000000000000000af6a2dcd00000000000000000000000000000000000000000000000000000000a1954fc500000000000000000000000000000000000000000000000000000000a39980a00000000000000000000000000000000000000000000000000000000046657fe90000000000000000000000000000000000000000000000000000000018e3a941000000000000000000000000000000000000000000000000000000003db920ce0000000000000000000000000000000000000000000000000000000029b98c6700000000000000000000000000000000000000000000000000000000bd7c541200000000000000000000000000000000000000000000000000000000c3bbd2d700000000000000000000000000000000000000000000000000000000e81e0ba100000000000000000000000000000000000000000000000000000000facd743b000000000000000000000000000000000000000000000000000000009cd939e40000000000000000000000000000000000000000000000000000000056142d7a0000000000000000000000000000000000000000000000000000000074f4d30d000000000000000000000000000000000000000000000000000000000000000000000000000000005349e94435cc9cab9ffb40a492da46935052733a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000066c0960f900000000000000000000000000000000000000000000000000000000b473318e00000000000000000000000000000000000000000000000000000000042901c700000000000000000000000000000000000000000000000000000000263b7f8e00000000000000000000000000000000000000000000000000000000e4948f4300000000000000000000000000000000000000000000000000000000eb67241900000000000000000000000000000000000000000000000000000000000000000000000000000000b54f822966fd4940b6fb465ac67075e5119094c300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000040c4dd81000000000000000000000000000000000000000000000000000000000ce9dcf16000000000000000000000000000000000000000000000000000000007739cbe700000000000000000000000000000000000000000000000000000000a9a2d18a000000000000000000000000000000000000000000000000000000000000000000000000000000002e64926be35412f7710a3e097ba076740bf97cc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000005e58bb63900000000000000000000000000000000000000000000000000000000f235757f000000000000000000000000000000000000000000000000000000001cc5d10300000000000000000000000000000000000000000000000000000000be6f11cf000000000000000000000000000000000000000000000000000000004623c91d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010041ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000f80010007af2271352ac99f97670a7d6999ae63b53f4e9480a957091d8848a46c610100067d592a040e8914eda295f3521561d64b1a4c1b9e6dbd2933093102febf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa00000000000000000000000000000000000000000000000000000000000000fc00000000000000000000000000000000000000000000000000000000064e35670000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fe0000000000000000000000000000000000000000000000000000000000008007000000000000000000000000000000000000000000000000000000000000800600000000000000000000000000000000000000000000000000000000044aa2000000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000d600000000000000000000000000000000000000000000000000000000000000d800000000000000000000000000000000000000000000000000000000000000da00000000000000000000000000000000000000000000000000000000000000dc00000000000000000000000000000000000000000000000000000000000000ac4e9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c001000091af8506f97c5a2b2ff4edf06ba1bfd2ec2304056fb9987ce71797010500000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f78c4022788ff0deb6c282f93df2b209d3c819999c3384498f1fec9b400000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fa5c8a47d82ec783ad7cdefd382f5b031e7ef0754fcf242ccb4c65fd300000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475561147799af163bef4d19262be10ed2d4a8977f793a195cd077e83d00000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c17cd3ee506e5156f76afda69c905dfdc22578bec37609a1693bba4fdc00000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100007562a15173ca081ddb179bb321500997ba6b43b15cf601cdf266af1cdb00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000711288f63c4cd27ecd73df769b834eeda2645f6567beea6b7ed44aaf0300000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010001397d906d62832c455f701b9f81267a1687e52210986d4e943b3f440d7d000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000f1d9ad80b5eb80ad14232d7438b1c09314dda76f296eca922da87dbfcc000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009ad8e522bb120c5f52d2236035edeb0a4259b89c3429c5ece7d1dc50286000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1066c916b985495ac9e671ae6930e373e9b5074499c7f6014c439a04a000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005b3e7150f7f6daac7cc9a46522f5ad593f9a3e3f0573282b41f86acf16000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" -} +} \ No newline at end of file diff --git a/etc/upgrades/1693318788-virtual-block-timestamp/common.json b/etc/upgrades/1693318788-virtual-block-timestamp/common.json index 1da04cec70b..c2da970debe 100644 --- a/etc/upgrades/1693318788-virtual-block-timestamp/common.json +++ b/etc/upgrades/1693318788-virtual-block-timestamp/common.json @@ -2,4 +2,4 @@ "name": "virtual-block-timestamp", "creationTimestamp": 1693318788, "protocolVersion": "13" -} +} \ No newline at end of file diff --git a/etc/upgrades/1693318788-virtual-block-timestamp/stage2/facetCuts.json b/etc/upgrades/1693318788-virtual-block-timestamp/stage2/facetCuts.json index 02f3a8bf31e..4dca4e604b2 100644 --- a/etc/upgrades/1693318788-virtual-block-timestamp/stage2/facetCuts.json +++ b/etc/upgrades/1693318788-virtual-block-timestamp/stage2/facetCuts.json @@ -58,19 +58,37 @@ }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], + "selectors": [ + "0x6c0960f9", + "0xb473318e", + "0x042901c7", + "0x263b7f8e", + "0xe4948f43", + "0xeb672419" + ], "action": 2, "isFreezable": false }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], + "selectors": [ + "0x0c4dd810", + "0xce9dcf16", + "0x7739cbe7", + "0xa9a2d18a" + ], "action": 2, "isFreezable": false }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": ["0xe58bb639", "0xf235757f", "0x1cc5d103", "0xbe6f11cf", "0x4623c91d"], + "selectors": [ + "0xe58bb639", + "0xf235757f", + "0x1cc5d103", + "0xbe6f11cf", + "0x4623c91d" + ], "action": 2, "isFreezable": false }, @@ -133,20 +151,38 @@ }, { "facet": "0x0aE41F9fc8A83FBC6062bA956224AB86fA6D1507", - "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], + "selectors": [ + "0x6c0960f9", + "0xb473318e", + "0x042901c7", + "0x263b7f8e", + "0xe4948f43", + "0xeb672419" + ], "action": 0, "isFreezable": true }, { "facet": "0x69b8cdA4c8E66A0b51Fc82834458e087039dB2Ab", - "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], + "selectors": [ + "0x0c4dd810", + "0xce9dcf16", + "0x7739cbe7", + "0xa9a2d18a" + ], "action": 0, "isFreezable": true }, { "facet": "0x2E64926BE35412f7710A3E097Ba076740bF97CC0", - "selectors": ["0xe58bb639", "0xf235757f", "0x1cc5d103", "0xbe6f11cf", "0x4623c91d"], + "selectors": [ + "0xe58bb639", + "0xf235757f", + "0x1cc5d103", + "0xbe6f11cf", + "0x4623c91d" + ], "action": 0, "isFreezable": true } -] +] \ No newline at end of file diff --git a/etc/upgrades/1693318788-virtual-block-timestamp/stage2/facets.json b/etc/upgrades/1693318788-virtual-block-timestamp/stage2/facets.json index bd5107c9f0d..8825c24c582 100644 --- a/etc/upgrades/1693318788-virtual-block-timestamp/stage2/facets.json +++ b/etc/upgrades/1693318788-virtual-block-timestamp/stage2/facets.json @@ -19,4 +19,4 @@ "address": "0x0aE41F9fc8A83FBC6062bA956224AB86fA6D1507", "txHash": "0x670ec0ed30ecb0950c54321bc06ad9d98cd063eef282d17253446f248978691f" } -} +} \ No newline at end of file diff --git a/etc/upgrades/1693318788-virtual-block-timestamp/stage2/l2Upgrade.json b/etc/upgrades/1693318788-virtual-block-timestamp/stage2/l2Upgrade.json index 188adf7ddc3..33bc8587bbb 100644 --- a/etc/upgrades/1693318788-virtual-block-timestamp/stage2/l2Upgrade.json +++ b/etc/upgrades/1693318788-virtual-block-timestamp/stage2/l2Upgrade.json @@ -2,72 +2,100 @@ "systemContracts": [ { "name": "AccountCodeStorage", - "bytecodeHashes": ["0x010000911c610c6e91d050e608ac4f5db8b08c33bb032a57f70899cdd250a75e"], + "bytecodeHashes": [ + "0x010000911c610c6e91d050e608ac4f5db8b08c33bb032a57f70899cdd250a75e" + ], "address": "0x0000000000000000000000000000000000008002" }, { "name": "NonceHolder", - "bytecodeHashes": ["0x0100012f42627ab0dd09d78d8a25f459e3b3caf2126668fdfc19887eb5cbf4de"], + "bytecodeHashes": [ + "0x0100012f42627ab0dd09d78d8a25f459e3b3caf2126668fdfc19887eb5cbf4de" + ], "address": "0x0000000000000000000000000000000000008003" }, { "name": "KnownCodesStorage", - "bytecodeHashes": ["0x0100008fd05a39ae3ccc0c081732b2c09b783810773a66d6429cfb03d813a692"], + "bytecodeHashes": [ + "0x0100008fd05a39ae3ccc0c081732b2c09b783810773a66d6429cfb03d813a692" + ], "address": "0x0000000000000000000000000000000000008004" }, { "name": "ImmutableSimulator", - "bytecodeHashes": ["0x010000475ebeaf64663ebad3ab3fd14b6e985f576c816a66f84bda5a18253107"], + "bytecodeHashes": [ + "0x010000475ebeaf64663ebad3ab3fd14b6e985f576c816a66f84bda5a18253107" + ], "address": "0x0000000000000000000000000000000000008005" }, { "name": "ContractDeployer", - "bytecodeHashes": ["0x010005c1731dded081c794319523b82102fd09237011e23e0dda219b1a814799"], + "bytecodeHashes": [ + "0x010005c1731dded081c794319523b82102fd09237011e23e0dda219b1a814799" + ], "address": "0x0000000000000000000000000000000000008006" }, { "name": "L1Messenger", - "bytecodeHashes": ["0x01000075efc5d3c37f1861e7c9f7f12c5c71f7b98c8e96bc1ae750441942911a"], + "bytecodeHashes": [ + "0x01000075efc5d3c37f1861e7c9f7f12c5c71f7b98c8e96bc1ae750441942911a" + ], "address": "0x0000000000000000000000000000000000008008" }, { "name": "MsgValueSimulator", - "bytecodeHashes": ["0x01000071fb47c4855b3cee15acfc19af66272afb61ae2196cdf8f0af81316c22"], + "bytecodeHashes": [ + "0x01000071fb47c4855b3cee15acfc19af66272afb61ae2196cdf8f0af81316c22" + ], "address": "0x0000000000000000000000000000000000008009" }, { "name": "L2EthToken", - "bytecodeHashes": ["0x01000139d95a414e7910bb755fecc60531a8c7ba6cc49c2fbd763df8541e4fae"], + "bytecodeHashes": [ + "0x01000139d95a414e7910bb755fecc60531a8c7ba6cc49c2fbd763df8541e4fae" + ], "address": "0x000000000000000000000000000000000000800a" }, { "name": "SystemContext", - "bytecodeHashes": ["0x0100021f8bc6a6311dc169f267fafb32fa14724539b5488a9c62788b158e8fcd"], + "bytecodeHashes": [ + "0x0100021f8bc6a6311dc169f267fafb32fa14724539b5488a9c62788b158e8fcd" + ], "address": "0x000000000000000000000000000000000000800b" }, { "name": "BootloaderUtilities", - "bytecodeHashes": ["0x010009adf7ebf8227ee5d057438bf502d132ed4c7017255f16f691286f3dd7b3"], + "bytecodeHashes": [ + "0x010009adf7ebf8227ee5d057438bf502d132ed4c7017255f16f691286f3dd7b3" + ], "address": "0x000000000000000000000000000000000000800c" }, { "name": "BytecodeCompressor", - "bytecodeHashes": ["0x010000e1073ab7b4226bb86ca2746fbf1ecb305e23c61240b900c4e0ea161a99"], + "bytecodeHashes": [ + "0x010000e1073ab7b4226bb86ca2746fbf1ecb305e23c61240b900c4e0ea161a99" + ], "address": "0x000000000000000000000000000000000000800e" }, { "name": "ComplexUpgrader", - "bytecodeHashes": ["0x0100005bc7e5e9f6718a7a59ba32849b08a12d957bcf517cb6ba68faf03983ba"], + "bytecodeHashes": [ + "0x0100005bc7e5e9f6718a7a59ba32849b08a12d957bcf517cb6ba68faf03983ba" + ], "address": "0x000000000000000000000000000000000000800f" } ], "defaultAA": { "name": "DefaultAccount", - "bytecodeHashes": ["0x0100067d16a5485875b4249040bf421f53e869337fe118ec747cf40a4c777e5f"] + "bytecodeHashes": [ + "0x0100067d16a5485875b4249040bf421f53e869337fe118ec747cf40a4c777e5f" + ] }, "bootloader": { "name": "Bootloader", - "bytecodeHashes": ["0x0100089b29c64a520d9033da5a4f80c6f74132cbd44142c6afc5913c26f0487d"] + "bytecodeHashes": [ + "0x0100089b29c64a520d9033da5a4f80c6f74132cbd44142c6afc5913c26f0487d" + ] }, "forcedDeployments": [ { @@ -168,11 +196,16 @@ "paymaster": 0, "nonce": "13", "value": 0, - "reserved": [0, 0, 0, 0], + "reserved": [ + 0, + 0, + 0, + 0 + ], "data": "0xe9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c0010000911c610c6e91d050e608ac4f5db8b08c33bb032a57f70899cdd250a75e00000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f42627ab0dd09d78d8a25f459e3b3caf2126668fdfc19887eb5cbf4de00000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fd05a39ae3ccc0c081732b2c09b783810773a66d6429cfb03d813a69200000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475ebeaf64663ebad3ab3fd14b6e985f576c816a66f84bda5a1825310700000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c1731dded081c794319523b82102fd09237011e23e0dda219b1a81479900000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000075efc5d3c37f1861e7c9f7f12c5c71f7b98c8e96bc1ae750441942911a00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000071fb47c4855b3cee15acfc19af66272afb61ae2196cdf8f0af81316c2200000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000139d95a414e7910bb755fecc60531a8c7ba6cc49c2fbd763df8541e4fae000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100021f8bc6a6311dc169f267fafb32fa14724539b5488a9c62788b158e8fcd000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009adf7ebf8227ee5d057438bf502d132ed4c7017255f16f691286f3dd7b3000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1073ab7b4226bb86ca2746fbf1ecb305e23c61240b900c4e0ea161a99000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005bc7e5e9f6718a7a59ba32849b08a12d957bcf517cb6ba68faf03983ba000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000", "signature": "0x", "factoryDeps": [], "paymasterInput": "0x", "reservedDynamic": "0x" } -} +} \ No newline at end of file diff --git a/etc/upgrades/1693318788-virtual-block-timestamp/stage2/transactions.json b/etc/upgrades/1693318788-virtual-block-timestamp/stage2/transactions.json index b1d32391be9..0e954c5c1d9 100644 --- a/etc/upgrades/1693318788-virtual-block-timestamp/stage2/transactions.json +++ b/etc/upgrades/1693318788-virtual-block-timestamp/stage2/transactions.json @@ -11,7 +11,12 @@ "paymaster": 0, "nonce": "13", "value": 0, - "reserved": [0, 0, 0, 0], + "reserved": [ + 0, + 0, + 0, + 0 + ], "data": "0xe9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c0010000911c610c6e91d050e608ac4f5db8b08c33bb032a57f70899cdd250a75e00000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f42627ab0dd09d78d8a25f459e3b3caf2126668fdfc19887eb5cbf4de00000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fd05a39ae3ccc0c081732b2c09b783810773a66d6429cfb03d813a69200000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475ebeaf64663ebad3ab3fd14b6e985f576c816a66f84bda5a1825310700000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c1731dded081c794319523b82102fd09237011e23e0dda219b1a81479900000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000075efc5d3c37f1861e7c9f7f12c5c71f7b98c8e96bc1ae750441942911a00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000071fb47c4855b3cee15acfc19af66272afb61ae2196cdf8f0af81316c2200000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000139d95a414e7910bb755fecc60531a8c7ba6cc49c2fbd763df8541e4fae000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100021f8bc6a6311dc169f267fafb32fa14724539b5488a9c62788b158e8fcd000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009adf7ebf8227ee5d057438bf502d132ed4c7017255f16f691286f3dd7b3000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1073ab7b4226bb86ca2746fbf1ecb305e23c61240b900c4e0ea161a99000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005bc7e5e9f6718a7a59ba32849b08a12d957bcf517cb6ba68faf03983ba000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000", "signature": "0x", "factoryDeps": [], @@ -106,19 +111,37 @@ }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], + "selectors": [ + "0x6c0960f9", + "0xb473318e", + "0x042901c7", + "0x263b7f8e", + "0xe4948f43", + "0xeb672419" + ], "action": 2, "isFreezable": false }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], + "selectors": [ + "0x0c4dd810", + "0xce9dcf16", + "0x7739cbe7", + "0xa9a2d18a" + ], "action": 2, "isFreezable": false }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": ["0xe58bb639", "0xf235757f", "0x1cc5d103", "0xbe6f11cf", "0x4623c91d"], + "selectors": [ + "0xe58bb639", + "0xf235757f", + "0x1cc5d103", + "0xbe6f11cf", + "0x4623c91d" + ], "action": 2, "isFreezable": false }, @@ -181,19 +204,37 @@ }, { "facet": "0x0aE41F9fc8A83FBC6062bA956224AB86fA6D1507", - "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], + "selectors": [ + "0x6c0960f9", + "0xb473318e", + "0x042901c7", + "0x263b7f8e", + "0xe4948f43", + "0xeb672419" + ], "action": 0, "isFreezable": true }, { "facet": "0x69b8cdA4c8E66A0b51Fc82834458e087039dB2Ab", - "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], + "selectors": [ + "0x0c4dd810", + "0xce9dcf16", + "0x7739cbe7", + "0xa9a2d18a" + ], "action": 0, "isFreezable": true }, { "facet": "0x2E64926BE35412f7710A3E097Ba076740bF97CC0", - "selectors": ["0xe58bb639", "0xf235757f", "0x1cc5d103", "0xbe6f11cf", "0x4623c91d"], + "selectors": [ + "0xe58bb639", + "0xf235757f", + "0x1cc5d103", + "0xbe6f11cf", + "0x4623c91d" + ], "action": 0, "isFreezable": true } @@ -202,4 +243,4 @@ "initCalldata": "0x1ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000f800100089b29c64a520d9033da5a4f80c6f74132cbd44142c6afc5913c26f0487d0100067d16a5485875b4249040bf421f53e869337fe118ec747cf40a4c777e5f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa00000000000000000000000000000000000000000000000000000000000000fc00000000000000000000000000000000000000000000000000000000064ef2a90000000000000000000000000000000000000000000000000000000000000000d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fe0000000000000000000000000000000000000000000000000000000000008007000000000000000000000000000000000000000000000000000000000000800600000000000000000000000000000000000000000000000000000000044aa2000000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000d600000000000000000000000000000000000000000000000000000000000000d800000000000000000000000000000000000000000000000000000000000000da00000000000000000000000000000000000000000000000000000000000000dc00000000000000000000000000000000000000000000000000000000000000ac4e9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c0010000911c610c6e91d050e608ac4f5db8b08c33bb032a57f70899cdd250a75e00000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f42627ab0dd09d78d8a25f459e3b3caf2126668fdfc19887eb5cbf4de00000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fd05a39ae3ccc0c081732b2c09b783810773a66d6429cfb03d813a69200000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475ebeaf64663ebad3ab3fd14b6e985f576c816a66f84bda5a1825310700000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c1731dded081c794319523b82102fd09237011e23e0dda219b1a81479900000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000075efc5d3c37f1861e7c9f7f12c5c71f7b98c8e96bc1ae750441942911a00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000071fb47c4855b3cee15acfc19af66272afb61ae2196cdf8f0af81316c2200000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000139d95a414e7910bb755fecc60531a8c7ba6cc49c2fbd763df8541e4fae000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100021f8bc6a6311dc169f267fafb32fa14724539b5488a9c62788b158e8fcd000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009adf7ebf8227ee5d057438bf502d132ed4c7017255f16f691286f3dd7b3000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1073ab7b4226bb86ca2746fbf1ecb305e23c61240b900c4e0ea161a99000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005bc7e5e9f6718a7a59ba32849b08a12d957bcf517cb6ba68faf03983ba000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, "executeUpgradeCalldata": "0x36d4eb84000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000db876240f01a6dd38f5efc4ecefe52e5c13db3c70000000000000000000000000000000000000000000000000000000000001680000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000009400000000000000000000000000000000000000000000000000000000000000a600000000000000000000000000000000000000000000000000000000000000ba00000000000000000000000000000000000000000000000000000000000000d40000000000000000000000000000000000000000000000000000000000000124000000000000000000000000000000000000000000000000000000000000013a000000000000000000000000000000000000000000000000000000000000014c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000873fb92970000000000000000000000000000000000000000000000000000000036d4eb840000000000000000000000000000000000000000000000000000000027ae4c16000000000000000000000000000000000000000000000000000000000551448c000000000000000000000000000000000000000000000000000000008043760a00000000000000000000000000000000000000000000000000000000beda4b12000000000000000000000000000000000000000000000000000000001733894500000000000000000000000000000000000000000000000000000000587809c70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000023cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed62700000000000000000000000000000000000000000000000000000000a7cd63b700000000000000000000000000000000000000000000000000000000fe10226d0000000000000000000000000000000000000000000000000000000079823c9a000000000000000000000000000000000000000000000000000000004fc07d7500000000000000000000000000000000000000000000000000000000d86970d800000000000000000000000000000000000000000000000000000000fd791f3c000000000000000000000000000000000000000000000000000000009d1b5a81000000000000000000000000000000000000000000000000000000007b30c8da000000000000000000000000000000000000000000000000000000008665b15000000000000000000000000000000000000000000000000000000000631f4bac000000000000000000000000000000000000000000000000000000000ec6b0b7000000000000000000000000000000000000000000000000000000001b60e62600000000000000000000000000000000000000000000000000000000e39d3bff0000000000000000000000000000000000000000000000000000000033ce93fe000000000000000000000000000000000000000000000000000000000ef240a000000000000000000000000000000000000000000000000000000000fe26699e000000000000000000000000000000000000000000000000000000003960738200000000000000000000000000000000000000000000000000000000af6a2dcd00000000000000000000000000000000000000000000000000000000a1954fc500000000000000000000000000000000000000000000000000000000a39980a00000000000000000000000000000000000000000000000000000000046657fe90000000000000000000000000000000000000000000000000000000018e3a941000000000000000000000000000000000000000000000000000000003db920ce0000000000000000000000000000000000000000000000000000000029b98c6700000000000000000000000000000000000000000000000000000000bd7c541200000000000000000000000000000000000000000000000000000000c3bbd2d700000000000000000000000000000000000000000000000000000000e81e0ba100000000000000000000000000000000000000000000000000000000facd743b000000000000000000000000000000000000000000000000000000009cd939e40000000000000000000000000000000000000000000000000000000056142d7a0000000000000000000000000000000000000000000000000000000074f4d30d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000066c0960f900000000000000000000000000000000000000000000000000000000b473318e00000000000000000000000000000000000000000000000000000000042901c700000000000000000000000000000000000000000000000000000000263b7f8e00000000000000000000000000000000000000000000000000000000e4948f4300000000000000000000000000000000000000000000000000000000eb67241900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000040c4dd81000000000000000000000000000000000000000000000000000000000ce9dcf16000000000000000000000000000000000000000000000000000000007739cbe700000000000000000000000000000000000000000000000000000000a9a2d18a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000005e58bb63900000000000000000000000000000000000000000000000000000000f235757f000000000000000000000000000000000000000000000000000000001cc5d10300000000000000000000000000000000000000000000000000000000be6f11cf000000000000000000000000000000000000000000000000000000004623c91d00000000000000000000000000000000000000000000000000000000000000000000000000000000dc7c3d03845efe2c4a9e758a70a68ba6bba9fac4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000873fb92970000000000000000000000000000000000000000000000000000000036d4eb840000000000000000000000000000000000000000000000000000000027ae4c16000000000000000000000000000000000000000000000000000000000551448c000000000000000000000000000000000000000000000000000000008043760a00000000000000000000000000000000000000000000000000000000beda4b12000000000000000000000000000000000000000000000000000000001733894500000000000000000000000000000000000000000000000000000000587809c7000000000000000000000000000000000000000000000000000000000000000000000000000000007444de636699f080ca1c033528d2bb3705b391ce0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000023cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed62700000000000000000000000000000000000000000000000000000000a7cd63b700000000000000000000000000000000000000000000000000000000fe10226d0000000000000000000000000000000000000000000000000000000079823c9a000000000000000000000000000000000000000000000000000000004fc07d7500000000000000000000000000000000000000000000000000000000d86970d800000000000000000000000000000000000000000000000000000000fd791f3c000000000000000000000000000000000000000000000000000000009d1b5a81000000000000000000000000000000000000000000000000000000007b30c8da000000000000000000000000000000000000000000000000000000008665b15000000000000000000000000000000000000000000000000000000000631f4bac000000000000000000000000000000000000000000000000000000000ec6b0b7000000000000000000000000000000000000000000000000000000001b60e62600000000000000000000000000000000000000000000000000000000e39d3bff0000000000000000000000000000000000000000000000000000000033ce93fe000000000000000000000000000000000000000000000000000000000ef240a000000000000000000000000000000000000000000000000000000000fe26699e000000000000000000000000000000000000000000000000000000003960738200000000000000000000000000000000000000000000000000000000af6a2dcd00000000000000000000000000000000000000000000000000000000a1954fc500000000000000000000000000000000000000000000000000000000a39980a00000000000000000000000000000000000000000000000000000000046657fe90000000000000000000000000000000000000000000000000000000018e3a941000000000000000000000000000000000000000000000000000000003db920ce0000000000000000000000000000000000000000000000000000000029b98c6700000000000000000000000000000000000000000000000000000000bd7c541200000000000000000000000000000000000000000000000000000000c3bbd2d700000000000000000000000000000000000000000000000000000000e81e0ba100000000000000000000000000000000000000000000000000000000facd743b000000000000000000000000000000000000000000000000000000009cd939e40000000000000000000000000000000000000000000000000000000056142d7a0000000000000000000000000000000000000000000000000000000074f4d30d000000000000000000000000000000000000000000000000000000000000000000000000000000000ae41f9fc8a83fbc6062ba956224ab86fa6d150700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000066c0960f900000000000000000000000000000000000000000000000000000000b473318e00000000000000000000000000000000000000000000000000000000042901c700000000000000000000000000000000000000000000000000000000263b7f8e00000000000000000000000000000000000000000000000000000000e4948f4300000000000000000000000000000000000000000000000000000000eb6724190000000000000000000000000000000000000000000000000000000000000000000000000000000069b8cda4c8e66a0b51fc82834458e087039db2ab00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000040c4dd81000000000000000000000000000000000000000000000000000000000ce9dcf16000000000000000000000000000000000000000000000000000000007739cbe700000000000000000000000000000000000000000000000000000000a9a2d18a000000000000000000000000000000000000000000000000000000000000000000000000000000002e64926be35412f7710a3e097ba076740bf97cc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000005e58bb63900000000000000000000000000000000000000000000000000000000f235757f000000000000000000000000000000000000000000000000000000001cc5d10300000000000000000000000000000000000000000000000000000000be6f11cf000000000000000000000000000000000000000000000000000000004623c91d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010041ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000f800100089b29c64a520d9033da5a4f80c6f74132cbd44142c6afc5913c26f0487d0100067d16a5485875b4249040bf421f53e869337fe118ec747cf40a4c777e5f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa00000000000000000000000000000000000000000000000000000000000000fc00000000000000000000000000000000000000000000000000000000064ef2a90000000000000000000000000000000000000000000000000000000000000000d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fe0000000000000000000000000000000000000000000000000000000000008007000000000000000000000000000000000000000000000000000000000000800600000000000000000000000000000000000000000000000000000000044aa2000000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000d600000000000000000000000000000000000000000000000000000000000000d800000000000000000000000000000000000000000000000000000000000000da00000000000000000000000000000000000000000000000000000000000000dc00000000000000000000000000000000000000000000000000000000000000ac4e9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c0010000911c610c6e91d050e608ac4f5db8b08c33bb032a57f70899cdd250a75e00000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f42627ab0dd09d78d8a25f459e3b3caf2126668fdfc19887eb5cbf4de00000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fd05a39ae3ccc0c081732b2c09b783810773a66d6429cfb03d813a69200000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475ebeaf64663ebad3ab3fd14b6e985f576c816a66f84bda5a1825310700000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c1731dded081c794319523b82102fd09237011e23e0dda219b1a81479900000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000075efc5d3c37f1861e7c9f7f12c5c71f7b98c8e96bc1ae750441942911a00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000071fb47c4855b3cee15acfc19af66272afb61ae2196cdf8f0af81316c2200000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000139d95a414e7910bb755fecc60531a8c7ba6cc49c2fbd763df8541e4fae000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100021f8bc6a6311dc169f267fafb32fa14724539b5488a9c62788b158e8fcd000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009adf7ebf8227ee5d057438bf502d132ed4c7017255f16f691286f3dd7b3000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1073ab7b4226bb86ca2746fbf1ecb305e23c61240b900c4e0ea161a99000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005bc7e5e9f6718a7a59ba32849b08a12d957bcf517cb6ba68faf03983ba000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" -} +} \ No newline at end of file diff --git a/etc/upgrades/1693318788-virtual-block-timestamp/testnet2/facetCuts.json b/etc/upgrades/1693318788-virtual-block-timestamp/testnet2/facetCuts.json index 02f3a8bf31e..4dca4e604b2 100644 --- a/etc/upgrades/1693318788-virtual-block-timestamp/testnet2/facetCuts.json +++ b/etc/upgrades/1693318788-virtual-block-timestamp/testnet2/facetCuts.json @@ -58,19 +58,37 @@ }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], + "selectors": [ + "0x6c0960f9", + "0xb473318e", + "0x042901c7", + "0x263b7f8e", + "0xe4948f43", + "0xeb672419" + ], "action": 2, "isFreezable": false }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], + "selectors": [ + "0x0c4dd810", + "0xce9dcf16", + "0x7739cbe7", + "0xa9a2d18a" + ], "action": 2, "isFreezable": false }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": ["0xe58bb639", "0xf235757f", "0x1cc5d103", "0xbe6f11cf", "0x4623c91d"], + "selectors": [ + "0xe58bb639", + "0xf235757f", + "0x1cc5d103", + "0xbe6f11cf", + "0x4623c91d" + ], "action": 2, "isFreezable": false }, @@ -133,20 +151,38 @@ }, { "facet": "0x0aE41F9fc8A83FBC6062bA956224AB86fA6D1507", - "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], + "selectors": [ + "0x6c0960f9", + "0xb473318e", + "0x042901c7", + "0x263b7f8e", + "0xe4948f43", + "0xeb672419" + ], "action": 0, "isFreezable": true }, { "facet": "0x69b8cdA4c8E66A0b51Fc82834458e087039dB2Ab", - "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], + "selectors": [ + "0x0c4dd810", + "0xce9dcf16", + "0x7739cbe7", + "0xa9a2d18a" + ], "action": 0, "isFreezable": true }, { "facet": "0x2E64926BE35412f7710A3E097Ba076740bF97CC0", - "selectors": ["0xe58bb639", "0xf235757f", "0x1cc5d103", "0xbe6f11cf", "0x4623c91d"], + "selectors": [ + "0xe58bb639", + "0xf235757f", + "0x1cc5d103", + "0xbe6f11cf", + "0x4623c91d" + ], "action": 0, "isFreezable": true } -] +] \ No newline at end of file diff --git a/etc/upgrades/1693318788-virtual-block-timestamp/testnet2/facets.json b/etc/upgrades/1693318788-virtual-block-timestamp/testnet2/facets.json index 7fd669b93fa..122b3dfd6e4 100644 --- a/etc/upgrades/1693318788-virtual-block-timestamp/testnet2/facets.json +++ b/etc/upgrades/1693318788-virtual-block-timestamp/testnet2/facets.json @@ -19,4 +19,4 @@ "address": "0x0aE41F9fc8A83FBC6062bA956224AB86fA6D1507", "txHash": "0xf987dc0ee0b50a8003f153c2cff78db56202fac9c1cd6f374760c63f80f17f53" } -} +} \ No newline at end of file diff --git a/etc/upgrades/1693318788-virtual-block-timestamp/testnet2/l2Upgrade.json b/etc/upgrades/1693318788-virtual-block-timestamp/testnet2/l2Upgrade.json index 188adf7ddc3..33bc8587bbb 100644 --- a/etc/upgrades/1693318788-virtual-block-timestamp/testnet2/l2Upgrade.json +++ b/etc/upgrades/1693318788-virtual-block-timestamp/testnet2/l2Upgrade.json @@ -2,72 +2,100 @@ "systemContracts": [ { "name": "AccountCodeStorage", - "bytecodeHashes": ["0x010000911c610c6e91d050e608ac4f5db8b08c33bb032a57f70899cdd250a75e"], + "bytecodeHashes": [ + "0x010000911c610c6e91d050e608ac4f5db8b08c33bb032a57f70899cdd250a75e" + ], "address": "0x0000000000000000000000000000000000008002" }, { "name": "NonceHolder", - "bytecodeHashes": ["0x0100012f42627ab0dd09d78d8a25f459e3b3caf2126668fdfc19887eb5cbf4de"], + "bytecodeHashes": [ + "0x0100012f42627ab0dd09d78d8a25f459e3b3caf2126668fdfc19887eb5cbf4de" + ], "address": "0x0000000000000000000000000000000000008003" }, { "name": "KnownCodesStorage", - "bytecodeHashes": ["0x0100008fd05a39ae3ccc0c081732b2c09b783810773a66d6429cfb03d813a692"], + "bytecodeHashes": [ + "0x0100008fd05a39ae3ccc0c081732b2c09b783810773a66d6429cfb03d813a692" + ], "address": "0x0000000000000000000000000000000000008004" }, { "name": "ImmutableSimulator", - "bytecodeHashes": ["0x010000475ebeaf64663ebad3ab3fd14b6e985f576c816a66f84bda5a18253107"], + "bytecodeHashes": [ + "0x010000475ebeaf64663ebad3ab3fd14b6e985f576c816a66f84bda5a18253107" + ], "address": "0x0000000000000000000000000000000000008005" }, { "name": "ContractDeployer", - "bytecodeHashes": ["0x010005c1731dded081c794319523b82102fd09237011e23e0dda219b1a814799"], + "bytecodeHashes": [ + "0x010005c1731dded081c794319523b82102fd09237011e23e0dda219b1a814799" + ], "address": "0x0000000000000000000000000000000000008006" }, { "name": "L1Messenger", - "bytecodeHashes": ["0x01000075efc5d3c37f1861e7c9f7f12c5c71f7b98c8e96bc1ae750441942911a"], + "bytecodeHashes": [ + "0x01000075efc5d3c37f1861e7c9f7f12c5c71f7b98c8e96bc1ae750441942911a" + ], "address": "0x0000000000000000000000000000000000008008" }, { "name": "MsgValueSimulator", - "bytecodeHashes": ["0x01000071fb47c4855b3cee15acfc19af66272afb61ae2196cdf8f0af81316c22"], + "bytecodeHashes": [ + "0x01000071fb47c4855b3cee15acfc19af66272afb61ae2196cdf8f0af81316c22" + ], "address": "0x0000000000000000000000000000000000008009" }, { "name": "L2EthToken", - "bytecodeHashes": ["0x01000139d95a414e7910bb755fecc60531a8c7ba6cc49c2fbd763df8541e4fae"], + "bytecodeHashes": [ + "0x01000139d95a414e7910bb755fecc60531a8c7ba6cc49c2fbd763df8541e4fae" + ], "address": "0x000000000000000000000000000000000000800a" }, { "name": "SystemContext", - "bytecodeHashes": ["0x0100021f8bc6a6311dc169f267fafb32fa14724539b5488a9c62788b158e8fcd"], + "bytecodeHashes": [ + "0x0100021f8bc6a6311dc169f267fafb32fa14724539b5488a9c62788b158e8fcd" + ], "address": "0x000000000000000000000000000000000000800b" }, { "name": "BootloaderUtilities", - "bytecodeHashes": ["0x010009adf7ebf8227ee5d057438bf502d132ed4c7017255f16f691286f3dd7b3"], + "bytecodeHashes": [ + "0x010009adf7ebf8227ee5d057438bf502d132ed4c7017255f16f691286f3dd7b3" + ], "address": "0x000000000000000000000000000000000000800c" }, { "name": "BytecodeCompressor", - "bytecodeHashes": ["0x010000e1073ab7b4226bb86ca2746fbf1ecb305e23c61240b900c4e0ea161a99"], + "bytecodeHashes": [ + "0x010000e1073ab7b4226bb86ca2746fbf1ecb305e23c61240b900c4e0ea161a99" + ], "address": "0x000000000000000000000000000000000000800e" }, { "name": "ComplexUpgrader", - "bytecodeHashes": ["0x0100005bc7e5e9f6718a7a59ba32849b08a12d957bcf517cb6ba68faf03983ba"], + "bytecodeHashes": [ + "0x0100005bc7e5e9f6718a7a59ba32849b08a12d957bcf517cb6ba68faf03983ba" + ], "address": "0x000000000000000000000000000000000000800f" } ], "defaultAA": { "name": "DefaultAccount", - "bytecodeHashes": ["0x0100067d16a5485875b4249040bf421f53e869337fe118ec747cf40a4c777e5f"] + "bytecodeHashes": [ + "0x0100067d16a5485875b4249040bf421f53e869337fe118ec747cf40a4c777e5f" + ] }, "bootloader": { "name": "Bootloader", - "bytecodeHashes": ["0x0100089b29c64a520d9033da5a4f80c6f74132cbd44142c6afc5913c26f0487d"] + "bytecodeHashes": [ + "0x0100089b29c64a520d9033da5a4f80c6f74132cbd44142c6afc5913c26f0487d" + ] }, "forcedDeployments": [ { @@ -168,11 +196,16 @@ "paymaster": 0, "nonce": "13", "value": 0, - "reserved": [0, 0, 0, 0], + "reserved": [ + 0, + 0, + 0, + 0 + ], "data": "0xe9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c0010000911c610c6e91d050e608ac4f5db8b08c33bb032a57f70899cdd250a75e00000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f42627ab0dd09d78d8a25f459e3b3caf2126668fdfc19887eb5cbf4de00000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fd05a39ae3ccc0c081732b2c09b783810773a66d6429cfb03d813a69200000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475ebeaf64663ebad3ab3fd14b6e985f576c816a66f84bda5a1825310700000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c1731dded081c794319523b82102fd09237011e23e0dda219b1a81479900000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000075efc5d3c37f1861e7c9f7f12c5c71f7b98c8e96bc1ae750441942911a00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000071fb47c4855b3cee15acfc19af66272afb61ae2196cdf8f0af81316c2200000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000139d95a414e7910bb755fecc60531a8c7ba6cc49c2fbd763df8541e4fae000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100021f8bc6a6311dc169f267fafb32fa14724539b5488a9c62788b158e8fcd000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009adf7ebf8227ee5d057438bf502d132ed4c7017255f16f691286f3dd7b3000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1073ab7b4226bb86ca2746fbf1ecb305e23c61240b900c4e0ea161a99000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005bc7e5e9f6718a7a59ba32849b08a12d957bcf517cb6ba68faf03983ba000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000", "signature": "0x", "factoryDeps": [], "paymasterInput": "0x", "reservedDynamic": "0x" } -} +} \ No newline at end of file diff --git a/etc/upgrades/1693318788-virtual-block-timestamp/testnet2/transactions.json b/etc/upgrades/1693318788-virtual-block-timestamp/testnet2/transactions.json index 0bc589c5d31..203c9e4c0b5 100644 --- a/etc/upgrades/1693318788-virtual-block-timestamp/testnet2/transactions.json +++ b/etc/upgrades/1693318788-virtual-block-timestamp/testnet2/transactions.json @@ -11,7 +11,12 @@ "paymaster": 0, "nonce": "13", "value": 0, - "reserved": [0, 0, 0, 0], + "reserved": [ + 0, + 0, + 0, + 0 + ], "data": "0xe9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c0010000911c610c6e91d050e608ac4f5db8b08c33bb032a57f70899cdd250a75e00000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f42627ab0dd09d78d8a25f459e3b3caf2126668fdfc19887eb5cbf4de00000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fd05a39ae3ccc0c081732b2c09b783810773a66d6429cfb03d813a69200000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475ebeaf64663ebad3ab3fd14b6e985f576c816a66f84bda5a1825310700000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c1731dded081c794319523b82102fd09237011e23e0dda219b1a81479900000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000075efc5d3c37f1861e7c9f7f12c5c71f7b98c8e96bc1ae750441942911a00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000071fb47c4855b3cee15acfc19af66272afb61ae2196cdf8f0af81316c2200000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000139d95a414e7910bb755fecc60531a8c7ba6cc49c2fbd763df8541e4fae000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100021f8bc6a6311dc169f267fafb32fa14724539b5488a9c62788b158e8fcd000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009adf7ebf8227ee5d057438bf502d132ed4c7017255f16f691286f3dd7b3000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1073ab7b4226bb86ca2746fbf1ecb305e23c61240b900c4e0ea161a99000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005bc7e5e9f6718a7a59ba32849b08a12d957bcf517cb6ba68faf03983ba000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000", "signature": "0x", "factoryDeps": [], @@ -106,19 +111,37 @@ }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], + "selectors": [ + "0x6c0960f9", + "0xb473318e", + "0x042901c7", + "0x263b7f8e", + "0xe4948f43", + "0xeb672419" + ], "action": 2, "isFreezable": false }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], + "selectors": [ + "0x0c4dd810", + "0xce9dcf16", + "0x7739cbe7", + "0xa9a2d18a" + ], "action": 2, "isFreezable": false }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": ["0xe58bb639", "0xf235757f", "0x1cc5d103", "0xbe6f11cf", "0x4623c91d"], + "selectors": [ + "0xe58bb639", + "0xf235757f", + "0x1cc5d103", + "0xbe6f11cf", + "0x4623c91d" + ], "action": 2, "isFreezable": false }, @@ -181,19 +204,37 @@ }, { "facet": "0x0aE41F9fc8A83FBC6062bA956224AB86fA6D1507", - "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], + "selectors": [ + "0x6c0960f9", + "0xb473318e", + "0x042901c7", + "0x263b7f8e", + "0xe4948f43", + "0xeb672419" + ], "action": 0, "isFreezable": true }, { "facet": "0x69b8cdA4c8E66A0b51Fc82834458e087039dB2Ab", - "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], + "selectors": [ + "0x0c4dd810", + "0xce9dcf16", + "0x7739cbe7", + "0xa9a2d18a" + ], "action": 0, "isFreezable": true }, { "facet": "0x2E64926BE35412f7710A3E097Ba076740bF97CC0", - "selectors": ["0xe58bb639", "0xf235757f", "0x1cc5d103", "0xbe6f11cf", "0x4623c91d"], + "selectors": [ + "0xe58bb639", + "0xf235757f", + "0x1cc5d103", + "0xbe6f11cf", + "0x4623c91d" + ], "action": 0, "isFreezable": true } @@ -202,4 +243,4 @@ "initCalldata": "0x1ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000f800100089b29c64a520d9033da5a4f80c6f74132cbd44142c6afc5913c26f0487d0100067d16a5485875b4249040bf421f53e869337fe118ec747cf40a4c777e5f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa00000000000000000000000000000000000000000000000000000000000000fc00000000000000000000000000000000000000000000000000000000064f080c0000000000000000000000000000000000000000000000000000000000000000d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fe0000000000000000000000000000000000000000000000000000000000008007000000000000000000000000000000000000000000000000000000000000800600000000000000000000000000000000000000000000000000000000044aa2000000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000d600000000000000000000000000000000000000000000000000000000000000d800000000000000000000000000000000000000000000000000000000000000da00000000000000000000000000000000000000000000000000000000000000dc00000000000000000000000000000000000000000000000000000000000000ac4e9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c0010000911c610c6e91d050e608ac4f5db8b08c33bb032a57f70899cdd250a75e00000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f42627ab0dd09d78d8a25f459e3b3caf2126668fdfc19887eb5cbf4de00000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fd05a39ae3ccc0c081732b2c09b783810773a66d6429cfb03d813a69200000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475ebeaf64663ebad3ab3fd14b6e985f576c816a66f84bda5a1825310700000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c1731dded081c794319523b82102fd09237011e23e0dda219b1a81479900000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000075efc5d3c37f1861e7c9f7f12c5c71f7b98c8e96bc1ae750441942911a00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000071fb47c4855b3cee15acfc19af66272afb61ae2196cdf8f0af81316c2200000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000139d95a414e7910bb755fecc60531a8c7ba6cc49c2fbd763df8541e4fae000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100021f8bc6a6311dc169f267fafb32fa14724539b5488a9c62788b158e8fcd000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009adf7ebf8227ee5d057438bf502d132ed4c7017255f16f691286f3dd7b3000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1073ab7b4226bb86ca2746fbf1ecb305e23c61240b900c4e0ea161a99000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005bc7e5e9f6718a7a59ba32849b08a12d957bcf517cb6ba68faf03983ba000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, "executeUpgradeCalldata": "0x36d4eb8400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000070eedd750ce140c6320a721d3e6ff62c80e29db80000000000000000000000000000000000000000000000000000000000001680000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000009400000000000000000000000000000000000000000000000000000000000000a600000000000000000000000000000000000000000000000000000000000000ba00000000000000000000000000000000000000000000000000000000000000d40000000000000000000000000000000000000000000000000000000000000124000000000000000000000000000000000000000000000000000000000000013a000000000000000000000000000000000000000000000000000000000000014c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000873fb92970000000000000000000000000000000000000000000000000000000036d4eb840000000000000000000000000000000000000000000000000000000027ae4c16000000000000000000000000000000000000000000000000000000000551448c000000000000000000000000000000000000000000000000000000008043760a00000000000000000000000000000000000000000000000000000000beda4b12000000000000000000000000000000000000000000000000000000001733894500000000000000000000000000000000000000000000000000000000587809c70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000023cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed62700000000000000000000000000000000000000000000000000000000a7cd63b700000000000000000000000000000000000000000000000000000000fe10226d0000000000000000000000000000000000000000000000000000000079823c9a000000000000000000000000000000000000000000000000000000004fc07d7500000000000000000000000000000000000000000000000000000000d86970d800000000000000000000000000000000000000000000000000000000fd791f3c000000000000000000000000000000000000000000000000000000009d1b5a81000000000000000000000000000000000000000000000000000000007b30c8da000000000000000000000000000000000000000000000000000000008665b15000000000000000000000000000000000000000000000000000000000631f4bac000000000000000000000000000000000000000000000000000000000ec6b0b7000000000000000000000000000000000000000000000000000000001b60e62600000000000000000000000000000000000000000000000000000000e39d3bff0000000000000000000000000000000000000000000000000000000033ce93fe000000000000000000000000000000000000000000000000000000000ef240a000000000000000000000000000000000000000000000000000000000fe26699e000000000000000000000000000000000000000000000000000000003960738200000000000000000000000000000000000000000000000000000000af6a2dcd00000000000000000000000000000000000000000000000000000000a1954fc500000000000000000000000000000000000000000000000000000000a39980a00000000000000000000000000000000000000000000000000000000046657fe90000000000000000000000000000000000000000000000000000000018e3a941000000000000000000000000000000000000000000000000000000003db920ce0000000000000000000000000000000000000000000000000000000029b98c6700000000000000000000000000000000000000000000000000000000bd7c541200000000000000000000000000000000000000000000000000000000c3bbd2d700000000000000000000000000000000000000000000000000000000e81e0ba100000000000000000000000000000000000000000000000000000000facd743b000000000000000000000000000000000000000000000000000000009cd939e40000000000000000000000000000000000000000000000000000000056142d7a0000000000000000000000000000000000000000000000000000000074f4d30d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000066c0960f900000000000000000000000000000000000000000000000000000000b473318e00000000000000000000000000000000000000000000000000000000042901c700000000000000000000000000000000000000000000000000000000263b7f8e00000000000000000000000000000000000000000000000000000000e4948f4300000000000000000000000000000000000000000000000000000000eb67241900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000040c4dd81000000000000000000000000000000000000000000000000000000000ce9dcf16000000000000000000000000000000000000000000000000000000007739cbe700000000000000000000000000000000000000000000000000000000a9a2d18a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000005e58bb63900000000000000000000000000000000000000000000000000000000f235757f000000000000000000000000000000000000000000000000000000001cc5d10300000000000000000000000000000000000000000000000000000000be6f11cf000000000000000000000000000000000000000000000000000000004623c91d00000000000000000000000000000000000000000000000000000000000000000000000000000000dc7c3d03845efe2c4a9e758a70a68ba6bba9fac4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000873fb92970000000000000000000000000000000000000000000000000000000036d4eb840000000000000000000000000000000000000000000000000000000027ae4c16000000000000000000000000000000000000000000000000000000000551448c000000000000000000000000000000000000000000000000000000008043760a00000000000000000000000000000000000000000000000000000000beda4b12000000000000000000000000000000000000000000000000000000001733894500000000000000000000000000000000000000000000000000000000587809c7000000000000000000000000000000000000000000000000000000000000000000000000000000007444de636699f080ca1c033528d2bb3705b391ce0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000023cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed62700000000000000000000000000000000000000000000000000000000a7cd63b700000000000000000000000000000000000000000000000000000000fe10226d0000000000000000000000000000000000000000000000000000000079823c9a000000000000000000000000000000000000000000000000000000004fc07d7500000000000000000000000000000000000000000000000000000000d86970d800000000000000000000000000000000000000000000000000000000fd791f3c000000000000000000000000000000000000000000000000000000009d1b5a81000000000000000000000000000000000000000000000000000000007b30c8da000000000000000000000000000000000000000000000000000000008665b15000000000000000000000000000000000000000000000000000000000631f4bac000000000000000000000000000000000000000000000000000000000ec6b0b7000000000000000000000000000000000000000000000000000000001b60e62600000000000000000000000000000000000000000000000000000000e39d3bff0000000000000000000000000000000000000000000000000000000033ce93fe000000000000000000000000000000000000000000000000000000000ef240a000000000000000000000000000000000000000000000000000000000fe26699e000000000000000000000000000000000000000000000000000000003960738200000000000000000000000000000000000000000000000000000000af6a2dcd00000000000000000000000000000000000000000000000000000000a1954fc500000000000000000000000000000000000000000000000000000000a39980a00000000000000000000000000000000000000000000000000000000046657fe90000000000000000000000000000000000000000000000000000000018e3a941000000000000000000000000000000000000000000000000000000003db920ce0000000000000000000000000000000000000000000000000000000029b98c6700000000000000000000000000000000000000000000000000000000bd7c541200000000000000000000000000000000000000000000000000000000c3bbd2d700000000000000000000000000000000000000000000000000000000e81e0ba100000000000000000000000000000000000000000000000000000000facd743b000000000000000000000000000000000000000000000000000000009cd939e40000000000000000000000000000000000000000000000000000000056142d7a0000000000000000000000000000000000000000000000000000000074f4d30d000000000000000000000000000000000000000000000000000000000000000000000000000000000ae41f9fc8a83fbc6062ba956224ab86fa6d150700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000066c0960f900000000000000000000000000000000000000000000000000000000b473318e00000000000000000000000000000000000000000000000000000000042901c700000000000000000000000000000000000000000000000000000000263b7f8e00000000000000000000000000000000000000000000000000000000e4948f4300000000000000000000000000000000000000000000000000000000eb6724190000000000000000000000000000000000000000000000000000000000000000000000000000000069b8cda4c8e66a0b51fc82834458e087039db2ab00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000040c4dd81000000000000000000000000000000000000000000000000000000000ce9dcf16000000000000000000000000000000000000000000000000000000007739cbe700000000000000000000000000000000000000000000000000000000a9a2d18a000000000000000000000000000000000000000000000000000000000000000000000000000000002e64926be35412f7710a3e097ba076740bf97cc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000005e58bb63900000000000000000000000000000000000000000000000000000000f235757f000000000000000000000000000000000000000000000000000000001cc5d10300000000000000000000000000000000000000000000000000000000be6f11cf000000000000000000000000000000000000000000000000000000004623c91d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010041ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000f800100089b29c64a520d9033da5a4f80c6f74132cbd44142c6afc5913c26f0487d0100067d16a5485875b4249040bf421f53e869337fe118ec747cf40a4c777e5f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa00000000000000000000000000000000000000000000000000000000000000fc00000000000000000000000000000000000000000000000000000000064f080c0000000000000000000000000000000000000000000000000000000000000000d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fe0000000000000000000000000000000000000000000000000000000000008007000000000000000000000000000000000000000000000000000000000000800600000000000000000000000000000000000000000000000000000000044aa2000000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000d600000000000000000000000000000000000000000000000000000000000000d800000000000000000000000000000000000000000000000000000000000000da00000000000000000000000000000000000000000000000000000000000000dc00000000000000000000000000000000000000000000000000000000000000ac4e9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c0010000911c610c6e91d050e608ac4f5db8b08c33bb032a57f70899cdd250a75e00000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f42627ab0dd09d78d8a25f459e3b3caf2126668fdfc19887eb5cbf4de00000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fd05a39ae3ccc0c081732b2c09b783810773a66d6429cfb03d813a69200000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475ebeaf64663ebad3ab3fd14b6e985f576c816a66f84bda5a1825310700000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c1731dded081c794319523b82102fd09237011e23e0dda219b1a81479900000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000075efc5d3c37f1861e7c9f7f12c5c71f7b98c8e96bc1ae750441942911a00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000071fb47c4855b3cee15acfc19af66272afb61ae2196cdf8f0af81316c2200000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000139d95a414e7910bb755fecc60531a8c7ba6cc49c2fbd763df8541e4fae000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100021f8bc6a6311dc169f267fafb32fa14724539b5488a9c62788b158e8fcd000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009adf7ebf8227ee5d057438bf502d132ed4c7017255f16f691286f3dd7b3000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1073ab7b4226bb86ca2746fbf1ecb305e23c61240b900c4e0ea161a99000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005bc7e5e9f6718a7a59ba32849b08a12d957bcf517cb6ba68faf03983ba000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" -} +} \ No newline at end of file diff --git a/etc/upgrades/1693905748-virtual-block-timestamp-fixed/common.json b/etc/upgrades/1693905748-virtual-block-timestamp-fixed/common.json index 4ad940e774e..02205de8d97 100644 --- a/etc/upgrades/1693905748-virtual-block-timestamp-fixed/common.json +++ b/etc/upgrades/1693905748-virtual-block-timestamp-fixed/common.json @@ -2,4 +2,4 @@ "name": "virtual-block-timestamp-fixed", "creationTimestamp": 1693905748, "protocolVersion": "14" -} +} \ No newline at end of file diff --git a/etc/upgrades/1693905748-virtual-block-timestamp-fixed/mainnet2/facetCuts.json b/etc/upgrades/1693905748-virtual-block-timestamp-fixed/mainnet2/facetCuts.json index 50697fc105f..0356a0cee4b 100644 --- a/etc/upgrades/1693905748-virtual-block-timestamp-fixed/mainnet2/facetCuts.json +++ b/etc/upgrades/1693905748-virtual-block-timestamp-fixed/mainnet2/facetCuts.json @@ -58,19 +58,37 @@ }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], + "selectors": [ + "0x6c0960f9", + "0xb473318e", + "0x042901c7", + "0x263b7f8e", + "0xe4948f43", + "0xeb672419" + ], "action": 2, "isFreezable": false }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], + "selectors": [ + "0x0c4dd810", + "0xce9dcf16", + "0x7739cbe7", + "0xa9a2d18a" + ], "action": 2, "isFreezable": false }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": ["0xe58bb639", "0xf235757f", "0x1cc5d103", "0xbe6f11cf", "0x4623c91d"], + "selectors": [ + "0xe58bb639", + "0xf235757f", + "0x1cc5d103", + "0xbe6f11cf", + "0x4623c91d" + ], "action": 2, "isFreezable": false }, @@ -133,20 +151,38 @@ }, { "facet": "0x62aA95ac4740A367746A664C4C69034d52E968EF", - "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], + "selectors": [ + "0x6c0960f9", + "0xb473318e", + "0x042901c7", + "0x263b7f8e", + "0xe4948f43", + "0xeb672419" + ], "action": 0, "isFreezable": true }, { "facet": "0x7Ed066718Dfb1b2B04D94780Eca92b67ECF3330b", - "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], + "selectors": [ + "0x0c4dd810", + "0xce9dcf16", + "0x7739cbe7", + "0xa9a2d18a" + ], "action": 0, "isFreezable": true }, { "facet": "0x2E64926BE35412f7710A3E097Ba076740bF97CC0", - "selectors": ["0xe58bb639", "0xf235757f", "0x1cc5d103", "0xbe6f11cf", "0x4623c91d"], + "selectors": [ + "0xe58bb639", + "0xf235757f", + "0x1cc5d103", + "0xbe6f11cf", + "0x4623c91d" + ], "action": 0, "isFreezable": true } -] +] \ No newline at end of file diff --git a/etc/upgrades/1693905748-virtual-block-timestamp-fixed/mainnet2/facets.json b/etc/upgrades/1693905748-virtual-block-timestamp-fixed/mainnet2/facets.json index 290151be8a8..c46371fe276 100644 --- a/etc/upgrades/1693905748-virtual-block-timestamp-fixed/mainnet2/facets.json +++ b/etc/upgrades/1693905748-virtual-block-timestamp-fixed/mainnet2/facets.json @@ -19,4 +19,4 @@ "address": "0x62aA95ac4740A367746A664C4C69034d52E968EF", "txHash": "0x0000000000000000000000000000000000000000000000000000000000000000" } -} +} \ No newline at end of file diff --git a/etc/upgrades/1693905748-virtual-block-timestamp-fixed/mainnet2/l2Upgrade.json b/etc/upgrades/1693905748-virtual-block-timestamp-fixed/mainnet2/l2Upgrade.json index 9bd7e529db9..70ac985e482 100644 --- a/etc/upgrades/1693905748-virtual-block-timestamp-fixed/mainnet2/l2Upgrade.json +++ b/etc/upgrades/1693905748-virtual-block-timestamp-fixed/mainnet2/l2Upgrade.json @@ -2,72 +2,100 @@ "systemContracts": [ { "name": "AccountCodeStorage", - "bytecodeHashes": ["0x010000911c610c6e91d050e608ac4f5db8b08c33bb032a57f70899cdd250a75e"], + "bytecodeHashes": [ + "0x010000911c610c6e91d050e608ac4f5db8b08c33bb032a57f70899cdd250a75e" + ], "address": "0x0000000000000000000000000000000000008002" }, { "name": "NonceHolder", - "bytecodeHashes": ["0x0100012f42627ab0dd09d78d8a25f459e3b3caf2126668fdfc19887eb5cbf4de"], + "bytecodeHashes": [ + "0x0100012f42627ab0dd09d78d8a25f459e3b3caf2126668fdfc19887eb5cbf4de" + ], "address": "0x0000000000000000000000000000000000008003" }, { "name": "KnownCodesStorage", - "bytecodeHashes": ["0x0100008fd05a39ae3ccc0c081732b2c09b783810773a66d6429cfb03d813a692"], + "bytecodeHashes": [ + "0x0100008fd05a39ae3ccc0c081732b2c09b783810773a66d6429cfb03d813a692" + ], "address": "0x0000000000000000000000000000000000008004" }, { "name": "ImmutableSimulator", - "bytecodeHashes": ["0x010000475ebeaf64663ebad3ab3fd14b6e985f576c816a66f84bda5a18253107"], + "bytecodeHashes": [ + "0x010000475ebeaf64663ebad3ab3fd14b6e985f576c816a66f84bda5a18253107" + ], "address": "0x0000000000000000000000000000000000008005" }, { "name": "ContractDeployer", - "bytecodeHashes": ["0x010005c1731dded081c794319523b82102fd09237011e23e0dda219b1a814799"], + "bytecodeHashes": [ + "0x010005c1731dded081c794319523b82102fd09237011e23e0dda219b1a814799" + ], "address": "0x0000000000000000000000000000000000008006" }, { "name": "L1Messenger", - "bytecodeHashes": ["0x01000075efc5d3c37f1861e7c9f7f12c5c71f7b98c8e96bc1ae750441942911a"], + "bytecodeHashes": [ + "0x01000075efc5d3c37f1861e7c9f7f12c5c71f7b98c8e96bc1ae750441942911a" + ], "address": "0x0000000000000000000000000000000000008008" }, { "name": "MsgValueSimulator", - "bytecodeHashes": ["0x01000071fb47c4855b3cee15acfc19af66272afb61ae2196cdf8f0af81316c22"], + "bytecodeHashes": [ + "0x01000071fb47c4855b3cee15acfc19af66272afb61ae2196cdf8f0af81316c22" + ], "address": "0x0000000000000000000000000000000000008009" }, { "name": "L2EthToken", - "bytecodeHashes": ["0x01000139d95a414e7910bb755fecc60531a8c7ba6cc49c2fbd763df8541e4fae"], + "bytecodeHashes": [ + "0x01000139d95a414e7910bb755fecc60531a8c7ba6cc49c2fbd763df8541e4fae" + ], "address": "0x000000000000000000000000000000000000800a" }, { "name": "SystemContext", - "bytecodeHashes": ["0x0100021f60c503126f404845b8cd748b0fa2e71cd99e14462008009e6fe1ab03"], + "bytecodeHashes": [ + "0x0100021f60c503126f404845b8cd748b0fa2e71cd99e14462008009e6fe1ab03" + ], "address": "0x000000000000000000000000000000000000800b" }, { "name": "BootloaderUtilities", - "bytecodeHashes": ["0x010009adf7ebf8227ee5d057438bf502d132ed4c7017255f16f691286f3dd7b3"], + "bytecodeHashes": [ + "0x010009adf7ebf8227ee5d057438bf502d132ed4c7017255f16f691286f3dd7b3" + ], "address": "0x000000000000000000000000000000000000800c" }, { "name": "BytecodeCompressor", - "bytecodeHashes": ["0x010000e1073ab7b4226bb86ca2746fbf1ecb305e23c61240b900c4e0ea161a99"], + "bytecodeHashes": [ + "0x010000e1073ab7b4226bb86ca2746fbf1ecb305e23c61240b900c4e0ea161a99" + ], "address": "0x000000000000000000000000000000000000800e" }, { "name": "ComplexUpgrader", - "bytecodeHashes": ["0x0100005bc7e5e9f6718a7a59ba32849b08a12d957bcf517cb6ba68faf03983ba"], + "bytecodeHashes": [ + "0x0100005bc7e5e9f6718a7a59ba32849b08a12d957bcf517cb6ba68faf03983ba" + ], "address": "0x000000000000000000000000000000000000800f" } ], "defaultAA": { "name": "DefaultAccount", - "bytecodeHashes": ["0x0100067d16a5485875b4249040bf421f53e869337fe118ec747cf40a4c777e5f"] + "bytecodeHashes": [ + "0x0100067d16a5485875b4249040bf421f53e869337fe118ec747cf40a4c777e5f" + ] }, "bootloader": { "name": "Bootloader", - "bytecodeHashes": ["0x0100089b8a2f2e6a20ba28f02c9e0ed0c13d702932364561a0ea61621f65f0a8"] + "bytecodeHashes": [ + "0x0100089b8a2f2e6a20ba28f02c9e0ed0c13d702932364561a0ea61621f65f0a8" + ] }, "forcedDeployments": [ { @@ -168,11 +196,16 @@ "paymaster": 0, "nonce": "14", "value": 0, - "reserved": [0, 0, 0, 0], + "reserved": [ + 0, + 0, + 0, + 0 + ], "data": "0xe9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c0010000911c610c6e91d050e608ac4f5db8b08c33bb032a57f70899cdd250a75e00000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f42627ab0dd09d78d8a25f459e3b3caf2126668fdfc19887eb5cbf4de00000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fd05a39ae3ccc0c081732b2c09b783810773a66d6429cfb03d813a69200000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475ebeaf64663ebad3ab3fd14b6e985f576c816a66f84bda5a1825310700000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c1731dded081c794319523b82102fd09237011e23e0dda219b1a81479900000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000075efc5d3c37f1861e7c9f7f12c5c71f7b98c8e96bc1ae750441942911a00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000071fb47c4855b3cee15acfc19af66272afb61ae2196cdf8f0af81316c2200000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000139d95a414e7910bb755fecc60531a8c7ba6cc49c2fbd763df8541e4fae000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100021f60c503126f404845b8cd748b0fa2e71cd99e14462008009e6fe1ab03000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009adf7ebf8227ee5d057438bf502d132ed4c7017255f16f691286f3dd7b3000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1073ab7b4226bb86ca2746fbf1ecb305e23c61240b900c4e0ea161a99000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005bc7e5e9f6718a7a59ba32849b08a12d957bcf517cb6ba68faf03983ba000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000", "signature": "0x", "factoryDeps": [], "paymasterInput": "0x", "reservedDynamic": "0x" } -} +} \ No newline at end of file diff --git a/etc/upgrades/1693905748-virtual-block-timestamp-fixed/mainnet2/transactions.json b/etc/upgrades/1693905748-virtual-block-timestamp-fixed/mainnet2/transactions.json index c6508b1c828..3025aac1848 100644 --- a/etc/upgrades/1693905748-virtual-block-timestamp-fixed/mainnet2/transactions.json +++ b/etc/upgrades/1693905748-virtual-block-timestamp-fixed/mainnet2/transactions.json @@ -11,7 +11,12 @@ "paymaster": 0, "nonce": "14", "value": 0, - "reserved": [0, 0, 0, 0], + "reserved": [ + 0, + 0, + 0, + 0 + ], "data": "0xe9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c0010000911c610c6e91d050e608ac4f5db8b08c33bb032a57f70899cdd250a75e00000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f42627ab0dd09d78d8a25f459e3b3caf2126668fdfc19887eb5cbf4de00000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fd05a39ae3ccc0c081732b2c09b783810773a66d6429cfb03d813a69200000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475ebeaf64663ebad3ab3fd14b6e985f576c816a66f84bda5a1825310700000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c1731dded081c794319523b82102fd09237011e23e0dda219b1a81479900000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000075efc5d3c37f1861e7c9f7f12c5c71f7b98c8e96bc1ae750441942911a00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000071fb47c4855b3cee15acfc19af66272afb61ae2196cdf8f0af81316c2200000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000139d95a414e7910bb755fecc60531a8c7ba6cc49c2fbd763df8541e4fae000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100021f60c503126f404845b8cd748b0fa2e71cd99e14462008009e6fe1ab03000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009adf7ebf8227ee5d057438bf502d132ed4c7017255f16f691286f3dd7b3000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1073ab7b4226bb86ca2746fbf1ecb305e23c61240b900c4e0ea161a99000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005bc7e5e9f6718a7a59ba32849b08a12d957bcf517cb6ba68faf03983ba000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000", "signature": "0x", "factoryDeps": [], @@ -106,19 +111,37 @@ }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], + "selectors": [ + "0x6c0960f9", + "0xb473318e", + "0x042901c7", + "0x263b7f8e", + "0xe4948f43", + "0xeb672419" + ], "action": 2, "isFreezable": false }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], + "selectors": [ + "0x0c4dd810", + "0xce9dcf16", + "0x7739cbe7", + "0xa9a2d18a" + ], "action": 2, "isFreezable": false }, { "facet": "0x0000000000000000000000000000000000000000", - "selectors": ["0xe58bb639", "0xf235757f", "0x1cc5d103", "0xbe6f11cf", "0x4623c91d"], + "selectors": [ + "0xe58bb639", + "0xf235757f", + "0x1cc5d103", + "0xbe6f11cf", + "0x4623c91d" + ], "action": 2, "isFreezable": false }, @@ -181,19 +204,37 @@ }, { "facet": "0x62aA95ac4740A367746A664C4C69034d52E968EF", - "selectors": ["0x6c0960f9", "0xb473318e", "0x042901c7", "0x263b7f8e", "0xe4948f43", "0xeb672419"], + "selectors": [ + "0x6c0960f9", + "0xb473318e", + "0x042901c7", + "0x263b7f8e", + "0xe4948f43", + "0xeb672419" + ], "action": 0, "isFreezable": true }, { "facet": "0x7Ed066718Dfb1b2B04D94780Eca92b67ECF3330b", - "selectors": ["0x0c4dd810", "0xce9dcf16", "0x7739cbe7", "0xa9a2d18a"], + "selectors": [ + "0x0c4dd810", + "0xce9dcf16", + "0x7739cbe7", + "0xa9a2d18a" + ], "action": 0, "isFreezable": true }, { "facet": "0x2E64926BE35412f7710A3E097Ba076740bF97CC0", - "selectors": ["0xe58bb639", "0xf235757f", "0x1cc5d103", "0xbe6f11cf", "0x4623c91d"], + "selectors": [ + "0xe58bb639", + "0xf235757f", + "0x1cc5d103", + "0xbe6f11cf", + "0x4623c91d" + ], "action": 0, "isFreezable": true } @@ -202,4 +243,4 @@ "initCalldata": "0x1ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000f800100089b8a2f2e6a20ba28f02c9e0ed0c13d702932364561a0ea61621f65f0a80100067d16a5485875b4249040bf421f53e869337fe118ec747cf40a4c777e5f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa00000000000000000000000000000000000000000000000000000000000000fc00000000000000000000000000000000000000000000000000000000064f9a628000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fe0000000000000000000000000000000000000000000000000000000000008007000000000000000000000000000000000000000000000000000000000000800600000000000000000000000000000000000000000000000000000000044aa2000000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000d600000000000000000000000000000000000000000000000000000000000000d800000000000000000000000000000000000000000000000000000000000000da00000000000000000000000000000000000000000000000000000000000000dc00000000000000000000000000000000000000000000000000000000000000ac4e9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c0010000911c610c6e91d050e608ac4f5db8b08c33bb032a57f70899cdd250a75e00000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f42627ab0dd09d78d8a25f459e3b3caf2126668fdfc19887eb5cbf4de00000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fd05a39ae3ccc0c081732b2c09b783810773a66d6429cfb03d813a69200000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475ebeaf64663ebad3ab3fd14b6e985f576c816a66f84bda5a1825310700000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c1731dded081c794319523b82102fd09237011e23e0dda219b1a81479900000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000075efc5d3c37f1861e7c9f7f12c5c71f7b98c8e96bc1ae750441942911a00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000071fb47c4855b3cee15acfc19af66272afb61ae2196cdf8f0af81316c2200000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000139d95a414e7910bb755fecc60531a8c7ba6cc49c2fbd763df8541e4fae000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100021f60c503126f404845b8cd748b0fa2e71cd99e14462008009e6fe1ab03000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009adf7ebf8227ee5d057438bf502d132ed4c7017255f16f691286f3dd7b3000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1073ab7b4226bb86ca2746fbf1ecb305e23c61240b900c4e0ea161a99000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005bc7e5e9f6718a7a59ba32849b08a12d957bcf517cb6ba68faf03983ba000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, "executeUpgradeCalldata": "0x36d4eb8400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000091ca046dad8c3db41f296267e1720d9c940f613d0000000000000000000000000000000000000000000000000000000000001680000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000009400000000000000000000000000000000000000000000000000000000000000a600000000000000000000000000000000000000000000000000000000000000ba00000000000000000000000000000000000000000000000000000000000000d40000000000000000000000000000000000000000000000000000000000000124000000000000000000000000000000000000000000000000000000000000013a000000000000000000000000000000000000000000000000000000000000014c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000873fb92970000000000000000000000000000000000000000000000000000000036d4eb840000000000000000000000000000000000000000000000000000000027ae4c16000000000000000000000000000000000000000000000000000000000551448c000000000000000000000000000000000000000000000000000000008043760a00000000000000000000000000000000000000000000000000000000beda4b12000000000000000000000000000000000000000000000000000000001733894500000000000000000000000000000000000000000000000000000000587809c70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000023cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed62700000000000000000000000000000000000000000000000000000000a7cd63b700000000000000000000000000000000000000000000000000000000fe10226d0000000000000000000000000000000000000000000000000000000079823c9a000000000000000000000000000000000000000000000000000000004fc07d7500000000000000000000000000000000000000000000000000000000d86970d800000000000000000000000000000000000000000000000000000000fd791f3c000000000000000000000000000000000000000000000000000000009d1b5a81000000000000000000000000000000000000000000000000000000007b30c8da000000000000000000000000000000000000000000000000000000008665b15000000000000000000000000000000000000000000000000000000000631f4bac000000000000000000000000000000000000000000000000000000000ec6b0b7000000000000000000000000000000000000000000000000000000001b60e62600000000000000000000000000000000000000000000000000000000e39d3bff0000000000000000000000000000000000000000000000000000000033ce93fe000000000000000000000000000000000000000000000000000000000ef240a000000000000000000000000000000000000000000000000000000000fe26699e000000000000000000000000000000000000000000000000000000003960738200000000000000000000000000000000000000000000000000000000af6a2dcd00000000000000000000000000000000000000000000000000000000a1954fc500000000000000000000000000000000000000000000000000000000a39980a00000000000000000000000000000000000000000000000000000000046657fe90000000000000000000000000000000000000000000000000000000018e3a941000000000000000000000000000000000000000000000000000000003db920ce0000000000000000000000000000000000000000000000000000000029b98c6700000000000000000000000000000000000000000000000000000000bd7c541200000000000000000000000000000000000000000000000000000000c3bbd2d700000000000000000000000000000000000000000000000000000000e81e0ba100000000000000000000000000000000000000000000000000000000facd743b000000000000000000000000000000000000000000000000000000009cd939e40000000000000000000000000000000000000000000000000000000056142d7a0000000000000000000000000000000000000000000000000000000074f4d30d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000066c0960f900000000000000000000000000000000000000000000000000000000b473318e00000000000000000000000000000000000000000000000000000000042901c700000000000000000000000000000000000000000000000000000000263b7f8e00000000000000000000000000000000000000000000000000000000e4948f4300000000000000000000000000000000000000000000000000000000eb67241900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000040c4dd81000000000000000000000000000000000000000000000000000000000ce9dcf16000000000000000000000000000000000000000000000000000000007739cbe700000000000000000000000000000000000000000000000000000000a9a2d18a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000005e58bb63900000000000000000000000000000000000000000000000000000000f235757f000000000000000000000000000000000000000000000000000000001cc5d10300000000000000000000000000000000000000000000000000000000be6f11cf000000000000000000000000000000000000000000000000000000004623c91d00000000000000000000000000000000000000000000000000000000000000000000000000000000dc7c3d03845efe2c4a9e758a70a68ba6bba9fac4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000873fb92970000000000000000000000000000000000000000000000000000000036d4eb840000000000000000000000000000000000000000000000000000000027ae4c16000000000000000000000000000000000000000000000000000000000551448c000000000000000000000000000000000000000000000000000000008043760a00000000000000000000000000000000000000000000000000000000beda4b12000000000000000000000000000000000000000000000000000000001733894500000000000000000000000000000000000000000000000000000000587809c7000000000000000000000000000000000000000000000000000000000000000000000000000000007444de636699f080ca1c033528d2bb3705b391ce0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000023cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed62700000000000000000000000000000000000000000000000000000000a7cd63b700000000000000000000000000000000000000000000000000000000fe10226d0000000000000000000000000000000000000000000000000000000079823c9a000000000000000000000000000000000000000000000000000000004fc07d7500000000000000000000000000000000000000000000000000000000d86970d800000000000000000000000000000000000000000000000000000000fd791f3c000000000000000000000000000000000000000000000000000000009d1b5a81000000000000000000000000000000000000000000000000000000007b30c8da000000000000000000000000000000000000000000000000000000008665b15000000000000000000000000000000000000000000000000000000000631f4bac000000000000000000000000000000000000000000000000000000000ec6b0b7000000000000000000000000000000000000000000000000000000001b60e62600000000000000000000000000000000000000000000000000000000e39d3bff0000000000000000000000000000000000000000000000000000000033ce93fe000000000000000000000000000000000000000000000000000000000ef240a000000000000000000000000000000000000000000000000000000000fe26699e000000000000000000000000000000000000000000000000000000003960738200000000000000000000000000000000000000000000000000000000af6a2dcd00000000000000000000000000000000000000000000000000000000a1954fc500000000000000000000000000000000000000000000000000000000a39980a00000000000000000000000000000000000000000000000000000000046657fe90000000000000000000000000000000000000000000000000000000018e3a941000000000000000000000000000000000000000000000000000000003db920ce0000000000000000000000000000000000000000000000000000000029b98c6700000000000000000000000000000000000000000000000000000000bd7c541200000000000000000000000000000000000000000000000000000000c3bbd2d700000000000000000000000000000000000000000000000000000000e81e0ba100000000000000000000000000000000000000000000000000000000facd743b000000000000000000000000000000000000000000000000000000009cd939e40000000000000000000000000000000000000000000000000000000056142d7a0000000000000000000000000000000000000000000000000000000074f4d30d0000000000000000000000000000000000000000000000000000000000000000000000000000000062aa95ac4740a367746a664c4c69034d52e968ef00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000066c0960f900000000000000000000000000000000000000000000000000000000b473318e00000000000000000000000000000000000000000000000000000000042901c700000000000000000000000000000000000000000000000000000000263b7f8e00000000000000000000000000000000000000000000000000000000e4948f4300000000000000000000000000000000000000000000000000000000eb672419000000000000000000000000000000000000000000000000000000000000000000000000000000007ed066718dfb1b2b04d94780eca92b67ecf3330b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000040c4dd81000000000000000000000000000000000000000000000000000000000ce9dcf16000000000000000000000000000000000000000000000000000000007739cbe700000000000000000000000000000000000000000000000000000000a9a2d18a000000000000000000000000000000000000000000000000000000000000000000000000000000002e64926be35412f7710a3e097ba076740bf97cc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000005e58bb63900000000000000000000000000000000000000000000000000000000f235757f000000000000000000000000000000000000000000000000000000001cc5d10300000000000000000000000000000000000000000000000000000000be6f11cf000000000000000000000000000000000000000000000000000000004623c91d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010041ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000f800100089b8a2f2e6a20ba28f02c9e0ed0c13d702932364561a0ea61621f65f0a80100067d16a5485875b4249040bf421f53e869337fe118ec747cf40a4c777e5f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa00000000000000000000000000000000000000000000000000000000000000fc00000000000000000000000000000000000000000000000000000000064f9a628000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fe0000000000000000000000000000000000000000000000000000000000008007000000000000000000000000000000000000000000000000000000000000800600000000000000000000000000000000000000000000000000000000044aa2000000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000d600000000000000000000000000000000000000000000000000000000000000d800000000000000000000000000000000000000000000000000000000000000da00000000000000000000000000000000000000000000000000000000000000dc00000000000000000000000000000000000000000000000000000000000000ac4e9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009c0010000911c610c6e91d050e608ac4f5db8b08c33bb032a57f70899cdd250a75e00000000000000000000000000000000000000000000000000000000000080020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100012f42627ab0dd09d78d8a25f459e3b3caf2126668fdfc19887eb5cbf4de00000000000000000000000000000000000000000000000000000000000080030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100008fd05a39ae3ccc0c081732b2c09b783810773a66d6429cfb03d813a69200000000000000000000000000000000000000000000000000000000000080040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000475ebeaf64663ebad3ab3fd14b6e985f576c816a66f84bda5a1825310700000000000000000000000000000000000000000000000000000000000080050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010005c1731dded081c794319523b82102fd09237011e23e0dda219b1a81479900000000000000000000000000000000000000000000000000000000000080060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000075efc5d3c37f1861e7c9f7f12c5c71f7b98c8e96bc1ae750441942911a00000000000000000000000000000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000071fb47c4855b3cee15acfc19af66272afb61ae2196cdf8f0af81316c2200000000000000000000000000000000000000000000000000000000000080090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000001000139d95a414e7910bb755fecc60531a8c7ba6cc49c2fbd763df8541e4fae000000000000000000000000000000000000000000000000000000000000800a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100021f60c503126f404845b8cd748b0fa2e71cd99e14462008009e6fe1ab03000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010009adf7ebf8227ee5d057438bf502d132ed4c7017255f16f691286f3dd7b3000000000000000000000000000000000000000000000000000000000000800c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000010000e1073ab7b4226bb86ca2746fbf1ecb305e23c61240b900c4e0ea161a99000000000000000000000000000000000000000000000000000000000000800e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000100005bc7e5e9f6718a7a59ba32849b08a12d957bcf517cb6ba68faf03983ba000000000000000000000000000000000000000000000000000000000000800f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" -} +} \ No newline at end of file diff --git a/etc/upgrades/1693905748-virtual-block-timestamp-fixed/stage2/l2Upgrade.json b/etc/upgrades/1693905748-virtual-block-timestamp-fixed/stage2/l2Upgrade.json index fdb4abf8d91..4f1536a8552 100644 --- a/etc/upgrades/1693905748-virtual-block-timestamp-fixed/stage2/l2Upgrade.json +++ b/etc/upgrades/1693905748-virtual-block-timestamp-fixed/stage2/l2Upgrade.json @@ -2,13 +2,17 @@ "systemContracts": [ { "name": "SystemContext", - "bytecodeHashes": ["0x0100021f60c503126f404845b8cd748b0fa2e71cd99e14462008009e6fe1ab03"], + "bytecodeHashes": [ + "0x0100021f60c503126f404845b8cd748b0fa2e71cd99e14462008009e6fe1ab03" + ], "address": "0x000000000000000000000000000000000000800b" } ], "bootloader": { "name": "Bootloader", - "bytecodeHashes": ["0x0100089b8a2f2e6a20ba28f02c9e0ed0c13d702932364561a0ea61621f65f0a8"] + "bytecodeHashes": [ + "0x0100089b8a2f2e6a20ba28f02c9e0ed0c13d702932364561a0ea61621f65f0a8" + ] }, "forcedDeployments": [ { @@ -32,11 +36,16 @@ "paymaster": 0, "nonce": "14", "value": 0, - "reserved": [0, 0, 0, 0], + "reserved": [ + 0, + 0, + 0, + 0 + ], "data": "0xe9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200100021f60c503126f404845b8cd748b0fa2e71cd99e14462008009e6fe1ab03000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000", "signature": "0x", "factoryDeps": [], "paymasterInput": "0x", "reservedDynamic": "0x" } -} +} \ No newline at end of file diff --git a/etc/upgrades/1693905748-virtual-block-timestamp-fixed/stage2/transactions.json b/etc/upgrades/1693905748-virtual-block-timestamp-fixed/stage2/transactions.json index f44cdeb1922..97c542dc85e 100644 --- a/etc/upgrades/1693905748-virtual-block-timestamp-fixed/stage2/transactions.json +++ b/etc/upgrades/1693905748-virtual-block-timestamp-fixed/stage2/transactions.json @@ -11,7 +11,12 @@ "paymaster": 0, "nonce": "14", "value": 0, - "reserved": [0, 0, 0, 0], + "reserved": [ + 0, + 0, + 0, + 0 + ], "data": "0xe9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200100021f60c503126f404845b8cd748b0fa2e71cd99e14462008009e6fe1ab03000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000", "signature": "0x", "factoryDeps": [], @@ -51,4 +56,4 @@ "initCalldata": "0x1ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000005e00100089b8a2f2e6a20ba28f02c9e0ed0c13d702932364561a0ea61621f65f0a800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006200000000000000000000000000000000000000000000000000000000064f6e4b0000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fe0000000000000000000000000000000000000000000000000000000000008007000000000000000000000000000000000000000000000000000000000000800600000000000000000000000000000000000000000000000000000000044aa2000000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000026000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000003e0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004200000000000000000000000000000000000000000000000000000000000000124e9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200100021f60c503126f404845b8cd748b0fa2e71cd99e14462008009e6fe1ab03000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, "executeUpgradeCalldata": "0x36d4eb84000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000db876240f01a6dd38f5efc4ecefe52e5c13db3c70000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006641ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000005e00100089b8a2f2e6a20ba28f02c9e0ed0c13d702932364561a0ea61621f65f0a800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006200000000000000000000000000000000000000000000000000000000064f6e4b0000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fe0000000000000000000000000000000000000000000000000000000000008007000000000000000000000000000000000000000000000000000000000000800600000000000000000000000000000000000000000000000000000000044aa2000000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000026000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000003e0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004200000000000000000000000000000000000000000000000000000000000000124e9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200100021f60c503126f404845b8cd748b0fa2e71cd99e14462008009e6fe1ab03000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" -} +} \ No newline at end of file diff --git a/etc/upgrades/1693905748-virtual-block-timestamp-fixed/testnet2/l2Upgrade.json b/etc/upgrades/1693905748-virtual-block-timestamp-fixed/testnet2/l2Upgrade.json index fdb4abf8d91..4f1536a8552 100644 --- a/etc/upgrades/1693905748-virtual-block-timestamp-fixed/testnet2/l2Upgrade.json +++ b/etc/upgrades/1693905748-virtual-block-timestamp-fixed/testnet2/l2Upgrade.json @@ -2,13 +2,17 @@ "systemContracts": [ { "name": "SystemContext", - "bytecodeHashes": ["0x0100021f60c503126f404845b8cd748b0fa2e71cd99e14462008009e6fe1ab03"], + "bytecodeHashes": [ + "0x0100021f60c503126f404845b8cd748b0fa2e71cd99e14462008009e6fe1ab03" + ], "address": "0x000000000000000000000000000000000000800b" } ], "bootloader": { "name": "Bootloader", - "bytecodeHashes": ["0x0100089b8a2f2e6a20ba28f02c9e0ed0c13d702932364561a0ea61621f65f0a8"] + "bytecodeHashes": [ + "0x0100089b8a2f2e6a20ba28f02c9e0ed0c13d702932364561a0ea61621f65f0a8" + ] }, "forcedDeployments": [ { @@ -32,11 +36,16 @@ "paymaster": 0, "nonce": "14", "value": 0, - "reserved": [0, 0, 0, 0], + "reserved": [ + 0, + 0, + 0, + 0 + ], "data": "0xe9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200100021f60c503126f404845b8cd748b0fa2e71cd99e14462008009e6fe1ab03000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000", "signature": "0x", "factoryDeps": [], "paymasterInput": "0x", "reservedDynamic": "0x" } -} +} \ No newline at end of file diff --git a/etc/upgrades/1693905748-virtual-block-timestamp-fixed/testnet2/transactions.json b/etc/upgrades/1693905748-virtual-block-timestamp-fixed/testnet2/transactions.json index b8148735aab..447be459dc4 100644 --- a/etc/upgrades/1693905748-virtual-block-timestamp-fixed/testnet2/transactions.json +++ b/etc/upgrades/1693905748-virtual-block-timestamp-fixed/testnet2/transactions.json @@ -11,7 +11,12 @@ "paymaster": 0, "nonce": "14", "value": 0, - "reserved": [0, 0, 0, 0], + "reserved": [ + 0, + 0, + 0, + 0 + ], "data": "0xe9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200100021f60c503126f404845b8cd748b0fa2e71cd99e14462008009e6fe1ab03000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000", "signature": "0x", "factoryDeps": [], @@ -51,4 +56,4 @@ "initCalldata": "0x1ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000005e00100089b8a2f2e6a20ba28f02c9e0ed0c13d702932364561a0ea61621f65f0a800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006200000000000000000000000000000000000000000000000000000000064f70a30000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fe0000000000000000000000000000000000000000000000000000000000008007000000000000000000000000000000000000000000000000000000000000800600000000000000000000000000000000000000000000000000000000044aa2000000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000026000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000003e0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004200000000000000000000000000000000000000000000000000000000000000124e9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200100021f60c503126f404845b8cd748b0fa2e71cd99e14462008009e6fe1ab03000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, "executeUpgradeCalldata": "0x36d4eb8400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000070eedd750ce140c6320a721d3e6ff62c80e29db80000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006641ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000005e00100089b8a2f2e6a20ba28f02c9e0ed0c13d702932364561a0ea61621f65f0a800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006200000000000000000000000000000000000000000000000000000000064f70a30000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fe0000000000000000000000000000000000000000000000000000000000008007000000000000000000000000000000000000000000000000000000000000800600000000000000000000000000000000000000000000000000000000044aa2000000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000026000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000003e0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004200000000000000000000000000000000000000000000000000000000000000124e9f18c170000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200100021f60c503126f404845b8cd748b0fa2e71cd99e14462008009e6fe1ab03000000000000000000000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" -} +} \ No newline at end of file diff --git a/etc/upgrades/1695203585-missing-constraint-in-circuit/common.json b/etc/upgrades/1695203585-missing-constraint-in-circuit/common.json index 9f1965ef427..06930d72b32 100644 --- a/etc/upgrades/1695203585-missing-constraint-in-circuit/common.json +++ b/etc/upgrades/1695203585-missing-constraint-in-circuit/common.json @@ -2,4 +2,4 @@ "name": "missing-constraint-in-circuit", "creationTimestamp": 1695203585, "protocolVersion": "15" -} +} \ No newline at end of file diff --git a/etc/upgrades/1695203585-missing-constraint-in-circuit/mainnet2/crypto.json b/etc/upgrades/1695203585-missing-constraint-in-circuit/mainnet2/crypto.json index 65d3931fabf..c53a681f186 100644 --- a/etc/upgrades/1695203585-missing-constraint-in-circuit/mainnet2/crypto.json +++ b/etc/upgrades/1695203585-missing-constraint-in-circuit/mainnet2/crypto.json @@ -4,4 +4,4 @@ "recursionLeafLevelVkHash": "0x101e08b00193e529145ee09823378ef51a3bc8966504064f1f6ba3f1ba863210", "recursionCircuitsSetVksHash": "0x236c97bfbe75ff507e03909fae32a78be3a70d1b468b183f430010810284ed45" } -} +} \ No newline at end of file diff --git a/etc/upgrades/1695203585-missing-constraint-in-circuit/mainnet2/transactions.json b/etc/upgrades/1695203585-missing-constraint-in-circuit/mainnet2/transactions.json index 1edd1c95879..e80cd6f34cf 100644 --- a/etc/upgrades/1695203585-missing-constraint-in-circuit/mainnet2/transactions.json +++ b/etc/upgrades/1695203585-missing-constraint-in-circuit/mainnet2/transactions.json @@ -11,7 +11,12 @@ "paymaster": 0, "nonce": 0, "value": 0, - "reserved": [0, 0, 0, 0], + "reserved": [ + 0, + 0, + 0, + 0 + ], "data": "0x", "signature": "0x", "factoryDeps": [], @@ -51,4 +56,4 @@ "initCalldata": "0x1ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000004a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001186ec268d49f1905f8d9c1e9d39fc33e98c74f91d91a21b8f7ef78bd09a8db8101e08b00193e529145ee09823378ef51a3bc8966504064f1f6ba3f1ba863210236c97bfbe75ff507e03909fae32a78be3a70d1b468b183f430010810284ed4500000000000000000000000000000000000000000000000000000000000004c000000000000000000000000000000000000000000000000000000000000004e000000000000000000000000000000000000000000000000000000000650d73b0000000000000000000000000000000000000000000000000000000000000000f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, "executeUpgradeCalldata": "0x36d4eb8400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000091ca046dad8c3db41f296267e1720d9c940f613d0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005241ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000004a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001186ec268d49f1905f8d9c1e9d39fc33e98c74f91d91a21b8f7ef78bd09a8db8101e08b00193e529145ee09823378ef51a3bc8966504064f1f6ba3f1ba863210236c97bfbe75ff507e03909fae32a78be3a70d1b468b183f430010810284ed4500000000000000000000000000000000000000000000000000000000000004c000000000000000000000000000000000000000000000000000000000000004e000000000000000000000000000000000000000000000000000000000650d73b0000000000000000000000000000000000000000000000000000000000000000f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" -} +} \ No newline at end of file diff --git a/etc/upgrades/1695203585-missing-constraint-in-circuit/stage2/crypto.json b/etc/upgrades/1695203585-missing-constraint-in-circuit/stage2/crypto.json index 65d3931fabf..c53a681f186 100644 --- a/etc/upgrades/1695203585-missing-constraint-in-circuit/stage2/crypto.json +++ b/etc/upgrades/1695203585-missing-constraint-in-circuit/stage2/crypto.json @@ -4,4 +4,4 @@ "recursionLeafLevelVkHash": "0x101e08b00193e529145ee09823378ef51a3bc8966504064f1f6ba3f1ba863210", "recursionCircuitsSetVksHash": "0x236c97bfbe75ff507e03909fae32a78be3a70d1b468b183f430010810284ed45" } -} +} \ No newline at end of file diff --git a/etc/upgrades/1695203585-missing-constraint-in-circuit/stage2/transactions.json b/etc/upgrades/1695203585-missing-constraint-in-circuit/stage2/transactions.json index 99813371577..71d506231b7 100644 --- a/etc/upgrades/1695203585-missing-constraint-in-circuit/stage2/transactions.json +++ b/etc/upgrades/1695203585-missing-constraint-in-circuit/stage2/transactions.json @@ -11,7 +11,12 @@ "paymaster": 0, "nonce": 0, "value": 0, - "reserved": [0, 0, 0, 0], + "reserved": [ + 0, + 0, + 0, + 0 + ], "data": "0x", "signature": "0x", "factoryDeps": [], @@ -51,4 +56,4 @@ "initCalldata": "0x1ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000004a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001186ec268d49f1905f8d9c1e9d39fc33e98c74f91d91a21b8f7ef78bd09a8db8101e08b00193e529145ee09823378ef51a3bc8966504064f1f6ba3f1ba863210236c97bfbe75ff507e03909fae32a78be3a70d1b468b183f430010810284ed4500000000000000000000000000000000000000000000000000000000000004c000000000000000000000000000000000000000000000000000000000000004e000000000000000000000000000000000000000000000000000000000650ad0b0000000000000000000000000000000000000000000000000000000000000000f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, "executeUpgradeCalldata": "0x36d4eb84000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000db876240f01a6dd38f5efc4ecefe52e5c13db3c70000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005241ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000004a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001186ec268d49f1905f8d9c1e9d39fc33e98c74f91d91a21b8f7ef78bd09a8db8101e08b00193e529145ee09823378ef51a3bc8966504064f1f6ba3f1ba863210236c97bfbe75ff507e03909fae32a78be3a70d1b468b183f430010810284ed4500000000000000000000000000000000000000000000000000000000000004c000000000000000000000000000000000000000000000000000000000000004e000000000000000000000000000000000000000000000000000000000650ad0b0000000000000000000000000000000000000000000000000000000000000000f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" -} +} \ No newline at end of file diff --git a/etc/upgrades/1695203585-missing-constraint-in-circuit/testnet2/crypto.json b/etc/upgrades/1695203585-missing-constraint-in-circuit/testnet2/crypto.json index 65d3931fabf..c53a681f186 100644 --- a/etc/upgrades/1695203585-missing-constraint-in-circuit/testnet2/crypto.json +++ b/etc/upgrades/1695203585-missing-constraint-in-circuit/testnet2/crypto.json @@ -4,4 +4,4 @@ "recursionLeafLevelVkHash": "0x101e08b00193e529145ee09823378ef51a3bc8966504064f1f6ba3f1ba863210", "recursionCircuitsSetVksHash": "0x236c97bfbe75ff507e03909fae32a78be3a70d1b468b183f430010810284ed45" } -} +} \ No newline at end of file diff --git a/etc/upgrades/1695203585-missing-constraint-in-circuit/testnet2/transactions.json b/etc/upgrades/1695203585-missing-constraint-in-circuit/testnet2/transactions.json index 1609a80410c..50b4705cdee 100644 --- a/etc/upgrades/1695203585-missing-constraint-in-circuit/testnet2/transactions.json +++ b/etc/upgrades/1695203585-missing-constraint-in-circuit/testnet2/transactions.json @@ -11,7 +11,12 @@ "paymaster": 0, "nonce": 0, "value": 0, - "reserved": [0, 0, 0, 0], + "reserved": [ + 0, + 0, + 0, + 0 + ], "data": "0x", "signature": "0x", "factoryDeps": [], @@ -51,4 +56,4 @@ "initCalldata": "0x1ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000004a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001186ec268d49f1905f8d9c1e9d39fc33e98c74f91d91a21b8f7ef78bd09a8db8101e08b00193e529145ee09823378ef51a3bc8966504064f1f6ba3f1ba863210236c97bfbe75ff507e03909fae32a78be3a70d1b468b183f430010810284ed4500000000000000000000000000000000000000000000000000000000000004c000000000000000000000000000000000000000000000000000000000000004e00000000000000000000000000000000000000000000000000000000065116f38000000000000000000000000000000000000000000000000000000000000000f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, "executeUpgradeCalldata": "0x36d4eb8400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000070eedd750ce140c6320a721d3e6ff62c80e29db80000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005241ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000004a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001186ec268d49f1905f8d9c1e9d39fc33e98c74f91d91a21b8f7ef78bd09a8db8101e08b00193e529145ee09823378ef51a3bc8966504064f1f6ba3f1ba863210236c97bfbe75ff507e03909fae32a78be3a70d1b468b183f430010810284ed4500000000000000000000000000000000000000000000000000000000000004c000000000000000000000000000000000000000000000000000000000000004e00000000000000000000000000000000000000000000000000000000065116f38000000000000000000000000000000000000000000000000000000000000000f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" -} +} \ No newline at end of file diff --git a/etc/upgrades/1696936385-refunds-enhancement/mainnet2/transactions.json b/etc/upgrades/1696936385-refunds-enhancement/mainnet2/transactions.json index dc132d9bdc5..78314cf95f4 100644 --- a/etc/upgrades/1696936385-refunds-enhancement/mainnet2/transactions.json +++ b/etc/upgrades/1696936385-refunds-enhancement/mainnet2/transactions.json @@ -11,7 +11,12 @@ "paymaster": 0, "nonce": 0, "value": 0, - "reserved": [0, 0, 0, 0], + "reserved": [ + 0, + 0, + 0, + 0 + ], "data": "0x", "signature": "0x", "factoryDeps": [], @@ -51,4 +56,4 @@ "initCalldata": "0x1ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000004a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004c000000000000000000000000000000000000000000000000000000000000004e0000000000000000000000000000000000000000000000000000000006530f01000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, "executeUpgradeCalldata": "0x36d4eb8400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000091ca046dad8c3db41f296267e1720d9c940f613d0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005241ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000004a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004c000000000000000000000000000000000000000000000000000000000000004e0000000000000000000000000000000000000000000000000000000006530f01000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" -} +} \ No newline at end of file diff --git a/etc/upgrades/1696936385-refunds-enhancement/stage2/transactions.json b/etc/upgrades/1696936385-refunds-enhancement/stage2/transactions.json index 110e4f3e593..4f982017d53 100644 --- a/etc/upgrades/1696936385-refunds-enhancement/stage2/transactions.json +++ b/etc/upgrades/1696936385-refunds-enhancement/stage2/transactions.json @@ -11,7 +11,12 @@ "paymaster": 0, "nonce": 0, "value": 0, - "reserved": [0, 0, 0, 0], + "reserved": [ + 0, + 0, + 0, + 0 + ], "data": "0x", "signature": "0x", "factoryDeps": [], @@ -51,4 +56,4 @@ "initCalldata": "0x1ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000004a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004c000000000000000000000000000000000000000000000000000000000000004e00000000000000000000000000000000000000000000000000000000065251ac400000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, "executeUpgradeCalldata": "0x36d4eb84000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000db876240f01a6dd38f5efc4ecefe52e5c13db3c70000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005241ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000004a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004c000000000000000000000000000000000000000000000000000000000000004e00000000000000000000000000000000000000000000000000000000065251ac400000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" -} +} \ No newline at end of file diff --git a/etc/upgrades/1696936385-refunds-enhancement/testnet2/transactions.json b/etc/upgrades/1696936385-refunds-enhancement/testnet2/transactions.json index 5b88b1937ee..f0ee7406059 100644 --- a/etc/upgrades/1696936385-refunds-enhancement/testnet2/transactions.json +++ b/etc/upgrades/1696936385-refunds-enhancement/testnet2/transactions.json @@ -11,7 +11,12 @@ "paymaster": 0, "nonce": 0, "value": 0, - "reserved": [0, 0, 0, 0], + "reserved": [ + 0, + 0, + 0, + 0 + ], "data": "0x", "signature": "0x", "factoryDeps": [], @@ -51,4 +56,4 @@ "initCalldata": "0x1ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000004a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004c000000000000000000000000000000000000000000000000000000000000004e000000000000000000000000000000000000000000000000000000000652d2cc800000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }, "executeUpgradeCalldata": "0x36d4eb8400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000070eedd750ce140c6320a721d3e6ff62c80e29db80000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005241ed824a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000004a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004c000000000000000000000000000000000000000000000000000000000000004e000000000000000000000000000000000000000000000000000000000652d2cc800000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000002e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" -} +} \ No newline at end of file diff --git a/infrastructure/local-setup-preparation/tsconfig.json b/infrastructure/local-setup-preparation/tsconfig.json index f0466cc62ba..25645d23a73 100644 --- a/infrastructure/local-setup-preparation/tsconfig.json +++ b/infrastructure/local-setup-preparation/tsconfig.json @@ -10,5 +10,7 @@ "preserveSymlinks": true, "preserveWatchOutput": true }, - "files": ["src/index.ts"] + "files": [ + "src/index.ts" + ] } diff --git a/infrastructure/protocol-upgrade/tsconfig.json b/infrastructure/protocol-upgrade/tsconfig.json index fe1ce1b5a6e..613eda0f6e1 100644 --- a/infrastructure/protocol-upgrade/tsconfig.json +++ b/infrastructure/protocol-upgrade/tsconfig.json @@ -9,5 +9,5 @@ "preserveSymlinks": true, "preserveWatchOutput": true - } + }, } diff --git a/infrastructure/zk/package.json b/infrastructure/zk/package.json index 4f094e8bfeb..e5111dbfc40 100644 --- a/infrastructure/zk/package.json +++ b/infrastructure/zk/package.json @@ -1,33 +1,33 @@ { - "name": "zk", - "version": "0.1.0", - "main": "build/index.js", - "license": "MIT", - "bin": "build/index.js", - "scripts": { - "build": "tsc", - "watch": "tsc --watch", - "start": "node build/index.js" - }, - "dependencies": { - "@iarna/toml": "^2.2.5", - "chalk": "^4.0.0", - "commander": "^6.0.0", - "deep-extend": "^0.6.0", - "dotenv": "^8.2.0", - "ethers": "~5.5.0", - "handlebars": "^4.7.8", - "node-fetch": "^2.6.1", - "tabtab": "^3.0.2", - "zksync-web3": "link:../../sdk/zksync-web3.js" - }, - "devDependencies": { - "@matterlabs/hardhat-zksync-solc": "^0.3.15", - "@types/deep-extend": "^0.4.31", - "@types/node": "^14.6.1", - "@types/node-fetch": "^2.5.7", - "@types/tabtab": "^3.0.1", - "hardhat": "=2.12.4", - "typescript": "^4.3.5" - } + "name": "zk", + "version": "0.1.0", + "main": "build/index.js", + "license": "MIT", + "bin": "build/index.js", + "scripts": { + "build": "tsc", + "watch": "tsc --watch", + "start": "node build/index.js" + }, + "dependencies": { + "@iarna/toml": "^2.2.5", + "chalk": "^4.0.0", + "commander": "^6.0.0", + "deep-extend": "^0.6.0", + "dotenv": "^8.2.0", + "ethers": "~5.5.0", + "handlebars": "^4.7.8", + "node-fetch": "^2.6.1", + "tabtab": "^3.0.2", + "zksync-web3": "link:../../sdk/zksync-web3.js" + }, + "devDependencies": { + "@matterlabs/hardhat-zksync-solc": "^0.3.15", + "@types/deep-extend": "^0.4.31", + "@types/node": "^14.6.1", + "@types/node-fetch": "^2.5.7", + "@types/tabtab": "^3.0.1", + "hardhat": "=2.12.4", + "typescript": "^4.3.5" + } } diff --git a/infrastructure/zk/tsconfig.json b/infrastructure/zk/tsconfig.json index 75662cbd56a..f96df8d60ed 100644 --- a/infrastructure/zk/tsconfig.json +++ b/infrastructure/zk/tsconfig.json @@ -1,13 +1,15 @@ { - "compilerOptions": { - "target": "es2019", - "module": "commonjs", - "outDir": "build", - "strict": true, - "esModuleInterop": true, - "noEmitOnError": true, - "skipLibCheck": true, - "declaration": true - }, - "files": ["src/index.ts"] + "compilerOptions": { + "target": "es2019", + "module": "commonjs", + "outDir": "build", + "strict": true, + "esModuleInterop": true, + "noEmitOnError": true, + "skipLibCheck": true, + "declaration": true + }, + "files": [ + "src/index.ts" + ] } diff --git a/prover/vk_setup_data_generator_server_fri/data/snark_verification_scheduler_key.json b/prover/vk_setup_data_generator_server_fri/data/snark_verification_scheduler_key.json index b295acad281..d792b273153 100644 --- a/prover/vk_setup_data_generator_server_fri/data/snark_verification_scheduler_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/snark_verification_scheduler_key.json @@ -5,140 +5,395 @@ "num_witness_polys": 0, "gate_setup_commitments": [ { - "x": [3134321788309977316, 10573132553967014755, 3001703164893106466, 381414913732862840], - "y": [10023015411950883744, 6896159948336889230, 6414240783194755732, 872372229201319096], + "x": [ + 3134321788309977316, + 10573132553967014755, + 3001703164893106466, + 381414913732862840 + ], + "y": [ + 10023015411950883744, + 6896159948336889230, + 6414240783194755732, + 872372229201319096 + ], "infinity": false }, { - "x": [13120971644342103937, 11793287663204294817, 3883340854702399708, 1610760885102732376], - "y": [2272149790438908451, 16362277919451948034, 11222024348659324185, 769204936692720831], + "x": [ + 13120971644342103937, + 11793287663204294817, + 3883340854702399708, + 1610760885102732376 + ], + "y": [ + 2272149790438908451, + 16362277919451948034, + 11222024348659324185, + 769204936692720831 + ], "infinity": false }, { - "x": [17731804648385463364, 6957978511947926439, 554530057858945391, 1554116369209063151], - "y": [11068663668443960791, 4165938511251890045, 9157185920319394352, 1356194940161196789], + "x": [ + 17731804648385463364, + 6957978511947926439, + 554530057858945391, + 1554116369209063151 + ], + "y": [ + 11068663668443960791, + 4165938511251890045, + 9157185920319394352, + 1356194940161196789 + ], "infinity": false }, { - "x": [8019563329680255469, 10443600923825661309, 10066002756835006084, 2404912031772130651], - "y": [11909280006603456147, 5818438825251413345, 15870199885834935123, 2757108579883054631], + "x": [ + 8019563329680255469, + 10443600923825661309, + 10066002756835006084, + 2404912031772130651 + ], + "y": [ + 11909280006603456147, + 5818438825251413345, + 15870199885834935123, + 2757108579883054631 + ], "infinity": false }, { - "x": [9723414060399071945, 10180812700717519482, 7936340440930941206, 516257686460616129], - "y": [567977185774136652, 4306281713268395827, 18140207600873092049, 3061955278209883828], + "x": [ + 9723414060399071945, + 10180812700717519482, + 7936340440930941206, + 516257686460616129 + ], + "y": [ + 567977185774136652, + 4306281713268395827, + 18140207600873092049, + 3061955278209883828 + ], "infinity": false }, { - "x": [18120818717781619238, 16711368075993785449, 16673817803744408050, 700058928459046347], - "y": [7622480271915550714, 13902980411406060504, 6164172017934139902, 1836938876363296665], + "x": [ + 18120818717781619238, + 16711368075993785449, + 16673817803744408050, + 700058928459046347 + ], + "y": [ + 7622480271915550714, + 13902980411406060504, + 6164172017934139902, + 1836938876363296665 + ], "infinity": false }, { - "x": [15818628187542915298, 15402701417353228903, 4645743436884029384, 2409582523262225752], - "y": [10225110015471016873, 3480449575574012457, 13646267911522236018, 3070086728021966273], + "x": [ + 15818628187542915298, + 15402701417353228903, + 4645743436884029384, + 2409582523262225752 + ], + "y": [ + 10225110015471016873, + 3480449575574012457, + 13646267911522236018, + 3070086728021966273 + ], "infinity": false }, { - "x": [15593293662666768812, 17768691370516984644, 17174288836059912543, 2950415245130983093], - "y": [10405941745355450827, 3865610534756768698, 563805946543955734, 1806918679491891699], + "x": [ + 15593293662666768812, + 17768691370516984644, + 17174288836059912543, + 2950415245130983093 + ], + "y": [ + 10405941745355450827, + 3865610534756768698, + 563805946543955734, + 1806918679491891699 + ], "infinity": false } ], "gate_selectors_commitments": [ { - "x": [5354921692103962663, 10597914855112022168, 8283977291194706970, 1254033438787241395], - "y": [17990692095059328463, 7491895001046969405, 17510882385599010078, 1762527058736778745], + "x": [ + 5354921692103962663, + 10597914855112022168, + 8283977291194706970, + 1254033438787241395 + ], + "y": [ + 17990692095059328463, + 7491895001046969405, + 17510882385599010078, + 1762527058736778745 + ], "infinity": false }, { - "x": [12328426125821267783, 14677689403443047323, 2357692814373165823, 3268494923353713205], - "y": [9394214569640955242, 450630302635608118, 1477019964334489453, 1150908451828220680], + "x": [ + 12328426125821267783, + 14677689403443047323, + 2357692814373165823, + 3268494923353713205 + ], + "y": [ + 9394214569640955242, + 450630302635608118, + 1477019964334489453, + 1150908451828220680 + ], "infinity": false } ], "permutation_commitments": [ { - "x": [11073033365046587506, 17543366073703943346, 2925375977998636107, 411355966917613086], - "y": [4634938960149933815, 10038620738808728516, 5260176309304737799, 14410327903164543], + "x": [ + 11073033365046587506, + 17543366073703943346, + 2925375977998636107, + 411355966917613086 + ], + "y": [ + 4634938960149933815, + 10038620738808728516, + 5260176309304737799, + 14410327903164543 + ], "infinity": false }, { - "x": [4505573069708166334, 3514663015240928368, 13885581324134225254, 2759554901468343883], - "y": [14766134794032708062, 3419963379718679828, 14090109324006346322, 2080971354192483161], + "x": [ + 4505573069708166334, + 3514663015240928368, + 13885581324134225254, + 2759554901468343883 + ], + "y": [ + 14766134794032708062, + 3419963379718679828, + 14090109324006346322, + 2080971354192483161 + ], "infinity": false }, { - "x": [10034756028637387237, 13956897381252459181, 17676764419229650887, 1786540180828440303], - "y": [16234833038341145650, 1114974762353197748, 16711158590984748387, 961724704749485864], + "x": [ + 10034756028637387237, + 13956897381252459181, + 17676764419229650887, + 1786540180828440303 + ], + "y": [ + 16234833038341145650, + 1114974762353197748, + 16711158590984748387, + 961724704749485864 + ], "infinity": false }, { - "x": [13207237492056542947, 9498840683026707597, 13316073393799666368, 2265958217127439582], - "y": [9080715171198565366, 9520983963961194766, 7885036753736171049, 3318336507646038340], + "x": [ + 13207237492056542947, + 9498840683026707597, + 13316073393799666368, + 2265958217127439582 + ], + "y": [ + 9080715171198565366, + 9520983963961194766, + 7885036753736171049, + 3318336507646038340 + ], "infinity": false } ], "total_lookup_entries_length": 1786644, "lookup_selector_commitment": { - "x": [9218954341000481996, 1038591043397823945, 2355917848722531772, 1603833229224637991], - "y": [9294257929334679357, 9665091690516467420, 7057032139323633744, 2846067557162208306], + "x": [ + 9218954341000481996, + 1038591043397823945, + 2355917848722531772, + 1603833229224637991 + ], + "y": [ + 9294257929334679357, + 9665091690516467420, + 7057032139323633744, + 2846067557162208306 + ], "infinity": false }, "lookup_tables_commitments": [ { - "x": [10873859091125335643, 3906092213625635374, 17046157606087980048, 3193402705223440293], - "y": [10158946293873382504, 2171386304067884865, 6918663094168980658, 350601565475975409], + "x": [ + 10873859091125335643, + 3906092213625635374, + 17046157606087980048, + 3193402705223440293 + ], + "y": [ + 10158946293873382504, + 2171386304067884865, + 6918663094168980658, + 350601565475975409 + ], "infinity": false }, { - "x": [12822112641313049260, 3646552465186399021, 10324071010773924047, 2209084192380614662], - "y": [11045141628975531869, 12589678537679955590, 3065046617868727674, 2099447669854151830], + "x": [ + 12822112641313049260, + 3646552465186399021, + 10324071010773924047, + 2209084192380614662 + ], + "y": [ + 11045141628975531869, + 12589678537679955590, + 3065046617868727674, + 2099447669854151830 + ], "infinity": false }, { - "x": [11395032673621937545, 3000063650268118516, 7857619430005721792, 805706808484810738], - "y": [6817063666434679427, 1646386051225388537, 4677946977082722827, 1369650305976868514], + "x": [ + 11395032673621937545, + 3000063650268118516, + 7857619430005721792, + 805706808484810738 + ], + "y": [ + 6817063666434679427, + 1646386051225388537, + 4677946977082722827, + 1369650305976868514 + ], "infinity": false }, { - "x": [2885179371868476351, 159944842081142878, 6092294387055034894, 213843603626505240], - "y": [11868113133779277990, 8509646480531194854, 14088068011597639414, 707070630614027545], + "x": [ + 2885179371868476351, + 159944842081142878, + 6092294387055034894, + 213843603626505240 + ], + "y": [ + 11868113133779277990, + 8509646480531194854, + 14088068011597639414, + 707070630614027545 + ], "infinity": false } ], "lookup_table_type_commitment": { - "x": [2681380516794566972, 967983640969946255, 2727464508424142824, 1972327038478390223], - "y": [7977458078956869600, 12274734452276806231, 29244742286950686, 667948288229117220], + "x": [ + 2681380516794566972, + 967983640969946255, + 2727464508424142824, + 1972327038478390223 + ], + "y": [ + 7977458078956869600, + 12274734452276806231, + 29244742286950686, + 667948288229117220 + ], "infinity": false }, "non_residues": [ - [5, 0, 0, 0], - [7, 0, 0, 0], - [10, 0, 0, 0] + [ + 5, + 0, + 0, + 0 + ], + [ + 7, + 0, + 0, + 0 + ], + [ + 10, + 0, + 0, + 0 + ] ], "g2_elements": [ { "x": { - "c0": [5106727233969649389, 7440829307424791261, 4785637993704342649, 1729627375292849782], - "c1": [10945020018377822914, 17413811393473931026, 8241798111626485029, 1841571559660931130] + "c0": [ + 5106727233969649389, + 7440829307424791261, + 4785637993704342649, + 1729627375292849782 + ], + "c1": [ + 10945020018377822914, + 17413811393473931026, + 8241798111626485029, + 1841571559660931130 + ] }, "y": { - "c0": [5541340697920699818, 16416156555105522555, 5380518976772849807, 1353435754470862315], - "c1": [6173549831154472795, 13567992399387660019, 17050234209342075797, 650358724130500725] + "c0": [ + 5541340697920699818, + 16416156555105522555, + 5380518976772849807, + 1353435754470862315 + ], + "c1": [ + 6173549831154472795, + 13567992399387660019, + 17050234209342075797, + 650358724130500725 + ] }, "infinity": false }, { "x": { - "c0": [9089143573911733168, 11482283522806384523, 13585589533905622862, 79029415676722370], - "c1": [5692040832573735873, 16884514497384809355, 16717166481813659368, 2742131088506155463] + "c0": [ + 9089143573911733168, + 11482283522806384523, + 13585589533905622862, + 79029415676722370 + ], + "c1": [ + 5692040832573735873, + 16884514497384809355, + 16717166481813659368, + 2742131088506155463 + ] }, "y": { - "c0": [9604638503594647125, 1289961608472612514, 6217038149984805214, 2521661352385209130], - "c1": [17168069778630926308, 11309277837895768996, 15154989611154567813, 359271377050603491] + "c0": [ + 9604638503594647125, + 1289961608472612514, + 6217038149984805214, + 2521661352385209130 + ], + "c1": [ + 17168069778630926308, + 11309277837895768996, + 15154989611154567813, + 359271377050603491 + ] }, "infinity": false } ] -} +} \ No newline at end of file diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_basic_10_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_basic_10_key.json index 341d50aebd7..8b980dde093 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_basic_10_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_basic_10_key.json @@ -17,13 +17,27 @@ "domain_size": 1048576, "total_tables_len": 132352, "public_inputs_locations": [ - [0, 1027358], - [1, 1027358], - [2, 1027358], - [3, 1027358] + [ + 0, + 1027358 + ], + [ + 1, + 1027358 + ], + [ + 2, + 1027358 + ], + [ + 3, + 1027358 + ] ], "extra_constant_polys_for_selectors": 2, - "table_ids_column_idxes": [6], + "table_ids_column_idxes": [ + 6 + ], "quotient_degree": 8, "selectors_placement": { "Fork": { @@ -142,22 +156,102 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [14828808970297586390, 10812916566872682190, 4814232139347019203, 9176100102005882856], - [3967670424646093724, 15187149346332822036, 12510674113975494748, 4510474866283045065], - [3090046568261325916, 2517005306301042120, 15367389528664824672, 4112249640174889690], - [18105273888459951541, 5232822348364097609, 16713617721022374900, 190722882016699057], - [3680596367242563456, 8277283738818682164, 770687293026604966, 964680746586707996], - [14252438150460413337, 10138568641496080571, 10299531489109681582, 1029545029340913858], - [15064118887360123896, 5094380307043679103, 14910118547805564561, 10715877189078928458], - [15803708295742972434, 11361281300374199895, 17281542834964672336, 4609037794875108477], - [17069406781160283989, 1486103635977441667, 5599688364977636665, 2606216552412168601], - [11440625988157319556, 14165489000241104461, 12815938030387403166, 18358353209834817866], - [17484081080457701823, 8488503007959107424, 15436257938093142847, 4434713360392963026], - [11228941610173378380, 15586341149405816978, 6641174723323244420, 6502235669428985157], - [1780813236656786088, 13705357356856822817, 13823081051755218384, 2628439960173921306], - [5781733601274220376, 4396700195519547383, 4802209023715066280, 7053779784999063193], - [11266624277386388719, 8947017045799184361, 15630186476936326904, 4970655490195943663], - [13604491581251560181, 754251763827647964, 85019175871498033, 16264768579713941582] + [ + 14828808970297586390, + 10812916566872682190, + 4814232139347019203, + 9176100102005882856 + ], + [ + 3967670424646093724, + 15187149346332822036, + 12510674113975494748, + 4510474866283045065 + ], + [ + 3090046568261325916, + 2517005306301042120, + 15367389528664824672, + 4112249640174889690 + ], + [ + 18105273888459951541, + 5232822348364097609, + 16713617721022374900, + 190722882016699057 + ], + [ + 3680596367242563456, + 8277283738818682164, + 770687293026604966, + 964680746586707996 + ], + [ + 14252438150460413337, + 10138568641496080571, + 10299531489109681582, + 1029545029340913858 + ], + [ + 15064118887360123896, + 5094380307043679103, + 14910118547805564561, + 10715877189078928458 + ], + [ + 15803708295742972434, + 11361281300374199895, + 17281542834964672336, + 4609037794875108477 + ], + [ + 17069406781160283989, + 1486103635977441667, + 5599688364977636665, + 2606216552412168601 + ], + [ + 11440625988157319556, + 14165489000241104461, + 12815938030387403166, + 18358353209834817866 + ], + [ + 17484081080457701823, + 8488503007959107424, + 15436257938093142847, + 4434713360392963026 + ], + [ + 11228941610173378380, + 15586341149405816978, + 6641174723323244420, + 6502235669428985157 + ], + [ + 1780813236656786088, + 13705357356856822817, + 13823081051755218384, + 2628439960173921306 + ], + [ + 5781733601274220376, + 4396700195519547383, + 4802209023715066280, + 7053779784999063193 + ], + [ + 11266624277386388719, + 8947017045799184361, + 15630186476936326904, + 4970655490195943663 + ], + [ + 13604491581251560181, + 754251763827647964, + 85019175871498033, + 16264768579713941582 + ] ] } -} +} \ No newline at end of file diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_basic_11_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_basic_11_key.json index 3f39e88aad8..bd030f4a394 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_basic_11_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_basic_11_key.json @@ -17,13 +17,27 @@ "domain_size": 1048576, "total_tables_len": 256, "public_inputs_locations": [ - [0, 531517], - [1, 531517], - [2, 531517], - [3, 531517] + [ + 0, + 531517 + ], + [ + 1, + 531517 + ], + [ + 2, + 531517 + ], + [ + 3, + 531517 + ] ], "extra_constant_polys_for_selectors": 3, - "table_ids_column_idxes": [7], + "table_ids_column_idxes": [ + 7 + ], "quotient_degree": 8, "selectors_placement": { "Fork": { @@ -142,22 +156,102 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [769023300008107994, 15035929950782434877, 4767632476551610273, 6003255068455690448], - [9026207300516234226, 12638320530307573615, 9548682324993884667, 1669798832247316225], - [15771054686436993477, 14867268062778845716, 2755571000455103667, 17012958053718147653], - [4796035851498319953, 15578398003463831188, 16487202842559859878, 12241980977059723891], - [4905638728558119005, 7863530509045382726, 17089556944619165055, 6881822366736890373], - [5605698221760842562, 15309408538060590842, 7774687445824112675, 1029523717262265273], - [4602145677202369894, 10437641120626639391, 16191157018649573359, 2145181286557866215], - [8347044010387916224, 7660057627892565262, 4087655568250966187, 4920987872151258558], - [4652946618899021165, 10106017231231912813, 3800120974014235756, 6675575778477161887], - [4980892440155162443, 6801648544364465294, 2944365492323162449, 6942743875951446975], - [17666291786065358473, 11132525791177279380, 1090211641846788491, 18206157565187626653], - [11955322036584323772, 9745237745974724322, 7620783083675382303, 6501674220304463161], - [14154028621322325960, 12267966522963634693, 16381614744195346959, 10938579521199157178], - [5661196656360295299, 16217006627182303897, 15559803411312667053, 14580126280029049348], - [9186970898669061808, 692683705561232556, 14664202853793025315, 7113265307923171991], - [256017097329808658, 1298676672131862834, 9342013003187223457, 172944159302847111] + [ + 769023300008107994, + 15035929950782434877, + 4767632476551610273, + 6003255068455690448 + ], + [ + 9026207300516234226, + 12638320530307573615, + 9548682324993884667, + 1669798832247316225 + ], + [ + 15771054686436993477, + 14867268062778845716, + 2755571000455103667, + 17012958053718147653 + ], + [ + 4796035851498319953, + 15578398003463831188, + 16487202842559859878, + 12241980977059723891 + ], + [ + 4905638728558119005, + 7863530509045382726, + 17089556944619165055, + 6881822366736890373 + ], + [ + 5605698221760842562, + 15309408538060590842, + 7774687445824112675, + 1029523717262265273 + ], + [ + 4602145677202369894, + 10437641120626639391, + 16191157018649573359, + 2145181286557866215 + ], + [ + 8347044010387916224, + 7660057627892565262, + 4087655568250966187, + 4920987872151258558 + ], + [ + 4652946618899021165, + 10106017231231912813, + 3800120974014235756, + 6675575778477161887 + ], + [ + 4980892440155162443, + 6801648544364465294, + 2944365492323162449, + 6942743875951446975 + ], + [ + 17666291786065358473, + 11132525791177279380, + 1090211641846788491, + 18206157565187626653 + ], + [ + 11955322036584323772, + 9745237745974724322, + 7620783083675382303, + 6501674220304463161 + ], + [ + 14154028621322325960, + 12267966522963634693, + 16381614744195346959, + 10938579521199157178 + ], + [ + 5661196656360295299, + 16217006627182303897, + 15559803411312667053, + 14580126280029049348 + ], + [ + 9186970898669061808, + 692683705561232556, + 14664202853793025315, + 7113265307923171991 + ], + [ + 256017097329808658, + 1298676672131862834, + 9342013003187223457, + 172944159302847111 + ] ] } -} +} \ No newline at end of file diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_basic_12_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_basic_12_key.json index af81601a174..15680c68c30 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_basic_12_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_basic_12_key.json @@ -17,13 +17,27 @@ "domain_size": 1048576, "total_tables_len": 256, "public_inputs_locations": [ - [0, 531517], - [1, 531517], - [2, 531517], - [3, 531517] + [ + 0, + 531517 + ], + [ + 1, + 531517 + ], + [ + 2, + 531517 + ], + [ + 3, + 531517 + ] ], "extra_constant_polys_for_selectors": 3, - "table_ids_column_idxes": [7], + "table_ids_column_idxes": [ + 7 + ], "quotient_degree": 8, "selectors_placement": { "Fork": { @@ -142,22 +156,102 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [769023300008107994, 15035929950782434877, 4767632476551610273, 6003255068455690448], - [9026207300516234226, 12638320530307573615, 9548682324993884667, 1669798832247316225], - [15771054686436993477, 14867268062778845716, 2755571000455103667, 17012958053718147653], - [4796035851498319953, 15578398003463831188, 16487202842559859878, 12241980977059723891], - [4905638728558119005, 7863530509045382726, 17089556944619165055, 6881822366736890373], - [5605698221760842562, 15309408538060590842, 7774687445824112675, 1029523717262265273], - [4602145677202369894, 10437641120626639391, 16191157018649573359, 2145181286557866215], - [8347044010387916224, 7660057627892565262, 4087655568250966187, 4920987872151258558], - [4652946618899021165, 10106017231231912813, 3800120974014235756, 6675575778477161887], - [4980892440155162443, 6801648544364465294, 2944365492323162449, 6942743875951446975], - [17666291786065358473, 11132525791177279380, 1090211641846788491, 18206157565187626653], - [11955322036584323772, 9745237745974724322, 7620783083675382303, 6501674220304463161], - [14154028621322325960, 12267966522963634693, 16381614744195346959, 10938579521199157178], - [5661196656360295299, 16217006627182303897, 15559803411312667053, 14580126280029049348], - [9186970898669061808, 692683705561232556, 14664202853793025315, 7113265307923171991], - [256017097329808658, 1298676672131862834, 9342013003187223457, 172944159302847111] + [ + 769023300008107994, + 15035929950782434877, + 4767632476551610273, + 6003255068455690448 + ], + [ + 9026207300516234226, + 12638320530307573615, + 9548682324993884667, + 1669798832247316225 + ], + [ + 15771054686436993477, + 14867268062778845716, + 2755571000455103667, + 17012958053718147653 + ], + [ + 4796035851498319953, + 15578398003463831188, + 16487202842559859878, + 12241980977059723891 + ], + [ + 4905638728558119005, + 7863530509045382726, + 17089556944619165055, + 6881822366736890373 + ], + [ + 5605698221760842562, + 15309408538060590842, + 7774687445824112675, + 1029523717262265273 + ], + [ + 4602145677202369894, + 10437641120626639391, + 16191157018649573359, + 2145181286557866215 + ], + [ + 8347044010387916224, + 7660057627892565262, + 4087655568250966187, + 4920987872151258558 + ], + [ + 4652946618899021165, + 10106017231231912813, + 3800120974014235756, + 6675575778477161887 + ], + [ + 4980892440155162443, + 6801648544364465294, + 2944365492323162449, + 6942743875951446975 + ], + [ + 17666291786065358473, + 11132525791177279380, + 1090211641846788491, + 18206157565187626653 + ], + [ + 11955322036584323772, + 9745237745974724322, + 7620783083675382303, + 6501674220304463161 + ], + [ + 14154028621322325960, + 12267966522963634693, + 16381614744195346959, + 10938579521199157178 + ], + [ + 5661196656360295299, + 16217006627182303897, + 15559803411312667053, + 14580126280029049348 + ], + [ + 9186970898669061808, + 692683705561232556, + 14664202853793025315, + 7113265307923171991 + ], + [ + 256017097329808658, + 1298676672131862834, + 9342013003187223457, + 172944159302847111 + ] ] } -} +} \ No newline at end of file diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_basic_13_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_basic_13_key.json index 11c49d43e5c..fe32152c311 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_basic_13_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_basic_13_key.json @@ -17,13 +17,27 @@ "domain_size": 1048576, "total_tables_len": 132096, "public_inputs_locations": [ - [0, 1038149], - [1, 1038149], - [2, 1038149], - [3, 1038149] + [ + 0, + 1038149 + ], + [ + 1, + 1038149 + ], + [ + 2, + 1038149 + ], + [ + 3, + 1038149 + ] ], "extra_constant_polys_for_selectors": 2, - "table_ids_column_idxes": [6], + "table_ids_column_idxes": [ + 6 + ], "quotient_degree": 8, "selectors_placement": { "Fork": { @@ -129,22 +143,102 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [14777139935278588112, 4852642306346514505, 528870644537653013, 12766220607019407671], - [4257836937173457180, 18105850810127810627, 12045855835945477909, 1337145016913030516], - [13540294178921617935, 5675450379425866696, 8080330723590348862, 12416515377803888920], - [3171578350856517770, 6539655571602714350, 17682924767985674977, 8074611540701237863], - [14866967567212658098, 14985810164396930899, 14103564390721978582, 2713291878303732148], - [7209698436584637628, 72403128177350562, 13748975409439240331, 17101408191037730854], - [7094792714865445950, 14145350607330203478, 3322372571606796615, 7791275147072878055], - [10260092656566629894, 6872708783997532427, 5457407604248314227, 366003053747525096], - [6163187172733089710, 15116272236856095840, 8980783297696807334, 4318634308458673791], - [22911656643808543, 4389862417760095893, 8180530007173246228, 15363392102238906744], - [16724058906600359122, 9749245991791698283, 3733079220084897482, 35144727903715636], - [1733024683910700810, 16815568708094698990, 9597261785243145371, 14191876845225710581], - [3368783094877746336, 10313180424218970297, 7411576603144233838, 18155104604678927944], - [15539244454544408034, 14071575935246766022, 3167686754143854069, 2580957889210849319], - [11188593692389277627, 3317111011441128346, 18315606312625447776, 14080235054242793975], - [11188480902959932408, 16241470651544083095, 17491552077640160913, 1747401256351375709] + [ + 14777139935278588112, + 4852642306346514505, + 528870644537653013, + 12766220607019407671 + ], + [ + 4257836937173457180, + 18105850810127810627, + 12045855835945477909, + 1337145016913030516 + ], + [ + 13540294178921617935, + 5675450379425866696, + 8080330723590348862, + 12416515377803888920 + ], + [ + 3171578350856517770, + 6539655571602714350, + 17682924767985674977, + 8074611540701237863 + ], + [ + 14866967567212658098, + 14985810164396930899, + 14103564390721978582, + 2713291878303732148 + ], + [ + 7209698436584637628, + 72403128177350562, + 13748975409439240331, + 17101408191037730854 + ], + [ + 7094792714865445950, + 14145350607330203478, + 3322372571606796615, + 7791275147072878055 + ], + [ + 10260092656566629894, + 6872708783997532427, + 5457407604248314227, + 366003053747525096 + ], + [ + 6163187172733089710, + 15116272236856095840, + 8980783297696807334, + 4318634308458673791 + ], + [ + 22911656643808543, + 4389862417760095893, + 8180530007173246228, + 15363392102238906744 + ], + [ + 16724058906600359122, + 9749245991791698283, + 3733079220084897482, + 35144727903715636 + ], + [ + 1733024683910700810, + 16815568708094698990, + 9597261785243145371, + 14191876845225710581 + ], + [ + 3368783094877746336, + 10313180424218970297, + 7411576603144233838, + 18155104604678927944 + ], + [ + 15539244454544408034, + 14071575935246766022, + 3167686754143854069, + 2580957889210849319 + ], + [ + 11188593692389277627, + 3317111011441128346, + 18315606312625447776, + 14080235054242793975 + ], + [ + 11188480902959932408, + 16241470651544083095, + 17491552077640160913, + 1747401256351375709 + ] ] } -} +} \ No newline at end of file diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_basic_1_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_basic_1_key.json index 7c616f28d89..54cda61bfca 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_basic_1_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_basic_1_key.json @@ -17,13 +17,27 @@ "domain_size": 1048576, "total_tables_len": 68756, "public_inputs_locations": [ - [0, 1041180], - [1, 1041180], - [2, 1041180], - [3, 1041180] + [ + 0, + 1041180 + ], + [ + 1, + 1041180 + ], + [ + 2, + 1041180 + ], + [ + 3, + 1041180 + ] ], "extra_constant_polys_for_selectors": 3, - "table_ids_column_idxes": [7], + "table_ids_column_idxes": [ + 7 + ], "quotient_degree": 8, "selectors_placement": { "Fork": { @@ -168,22 +182,102 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [11230239963091452912, 13026461504664266360, 16713169701215574185, 12615976815403328075], - [3804170955286114995, 17070428581913287652, 16444458341617335831, 12310477573463289452], - [15717060580753384291, 5009332941172699339, 5141249138356870627, 14525082357218066066], - [5451473672302709994, 14405751484257675144, 6034423888032264287, 14528639950002943854], - [11233253504932768792, 9984746197426258635, 4438596486612781127, 17198259095221505968], - [5681291117413714556, 18436270377115663121, 11989211218541826903, 2671135999160204746], - [963730224051018518, 1293300388921029500, 7261069736084660486, 12414181044622900231], - [17155210460432560694, 920670927493907875, 6658462737460123613, 8253351903179999964], - [3039615529982926935, 12254392109531368227, 12274357209453453775, 16608606384477787215], - [11218496188813210888, 16107046895420213310, 16285761395335573298, 8624190103510841482], - [14835727297511074005, 1164596723783439781, 11276497358832644724, 9219531475080512501], - [3715985935119482043, 12185867206854340138, 7900628271499451412, 8891356055003024224], - [17763963322580587554, 218146194744968367, 16033549148238902530, 1522529898878047239], - [8120794419871565322, 18267867130143702317, 17178857528695612575, 14839022417830798252], - [16480189677896973754, 18441483621256548692, 3982214183107947832, 5099760740801601882], - [10335714458962187072, 8498294096277334786, 8574103413352512596, 9714850528124914412] + [ + 11230239963091452912, + 13026461504664266360, + 16713169701215574185, + 12615976815403328075 + ], + [ + 3804170955286114995, + 17070428581913287652, + 16444458341617335831, + 12310477573463289452 + ], + [ + 15717060580753384291, + 5009332941172699339, + 5141249138356870627, + 14525082357218066066 + ], + [ + 5451473672302709994, + 14405751484257675144, + 6034423888032264287, + 14528639950002943854 + ], + [ + 11233253504932768792, + 9984746197426258635, + 4438596486612781127, + 17198259095221505968 + ], + [ + 5681291117413714556, + 18436270377115663121, + 11989211218541826903, + 2671135999160204746 + ], + [ + 963730224051018518, + 1293300388921029500, + 7261069736084660486, + 12414181044622900231 + ], + [ + 17155210460432560694, + 920670927493907875, + 6658462737460123613, + 8253351903179999964 + ], + [ + 3039615529982926935, + 12254392109531368227, + 12274357209453453775, + 16608606384477787215 + ], + [ + 11218496188813210888, + 16107046895420213310, + 16285761395335573298, + 8624190103510841482 + ], + [ + 14835727297511074005, + 1164596723783439781, + 11276497358832644724, + 9219531475080512501 + ], + [ + 3715985935119482043, + 12185867206854340138, + 7900628271499451412, + 8891356055003024224 + ], + [ + 17763963322580587554, + 218146194744968367, + 16033549148238902530, + 1522529898878047239 + ], + [ + 8120794419871565322, + 18267867130143702317, + 17178857528695612575, + 14839022417830798252 + ], + [ + 16480189677896973754, + 18441483621256548692, + 3982214183107947832, + 5099760740801601882 + ], + [ + 10335714458962187072, + 8498294096277334786, + 8574103413352512596, + 9714850528124914412 + ] ] } -} +} \ No newline at end of file diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_basic_2_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_basic_2_key.json index 938ab4d6243..afbdd17f87d 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_basic_2_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_basic_2_key.json @@ -17,13 +17,27 @@ "domain_size": 1048576, "total_tables_len": 256, "public_inputs_locations": [ - [0, 1021854], - [1, 1021854], - [2, 1021854], - [3, 1021854] + [ + 0, + 1021854 + ], + [ + 1, + 1021854 + ], + [ + 2, + 1021854 + ], + [ + 3, + 1021854 + ] ], "extra_constant_polys_for_selectors": 3, - "table_ids_column_idxes": [7], + "table_ids_column_idxes": [ + 7 + ], "quotient_degree": 8, "selectors_placement": { "Fork": { @@ -142,22 +156,102 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [2638073007663622156, 8095790926675075575, 16070536450025430297, 11107879245782883310], - [14146741033954484667, 6190536674348638720, 16225788979445059477, 14054620090462985529], - [11640224008014629596, 641539748496027160, 13808722951176221096, 16170765986761751839], - [3935980412801468150, 1369763633048581729, 15164038222707237449, 13549026317001505493], - [7347140194150198874, 3761583621533582182, 1201042008705759557, 4518814071203771589], - [800427219378311884, 9408589372717347086, 4254572946942417329, 5142794058426597251], - [9025763675471789857, 9658241200006349915, 10843576536878471228, 4504613934156851017], - [924391528635837029, 17275471398483292983, 7119295641875104852, 3574531397848859770], - [9377840526717456169, 10735342053764638034, 2342156236435128394, 14166002014472046096], - [2892383637971079443, 13418647945623595756, 10019182992393923816, 9844763621346094605], - [10882982703274329811, 1514425380968646350, 13439208364741860903, 13990068349260696136], - [15895812818511549818, 15738749976988188006, 13440084002922282596, 14578356625798184093], - [3859406845557969736, 17314298659359090415, 16770924942850282883, 486597592063200525], - [11378407834848513159, 4967859104549187166, 13937264085276400573, 7478354099484226349], - [1449906124962973794, 5408228139111124399, 1658036384062801904, 7066463570538863033], - [15186027246389802614, 9949859568958827686, 11971923963356626879, 15735564656222075589] + [ + 2638073007663622156, + 8095790926675075575, + 16070536450025430297, + 11107879245782883310 + ], + [ + 14146741033954484667, + 6190536674348638720, + 16225788979445059477, + 14054620090462985529 + ], + [ + 11640224008014629596, + 641539748496027160, + 13808722951176221096, + 16170765986761751839 + ], + [ + 3935980412801468150, + 1369763633048581729, + 15164038222707237449, + 13549026317001505493 + ], + [ + 7347140194150198874, + 3761583621533582182, + 1201042008705759557, + 4518814071203771589 + ], + [ + 800427219378311884, + 9408589372717347086, + 4254572946942417329, + 5142794058426597251 + ], + [ + 9025763675471789857, + 9658241200006349915, + 10843576536878471228, + 4504613934156851017 + ], + [ + 924391528635837029, + 17275471398483292983, + 7119295641875104852, + 3574531397848859770 + ], + [ + 9377840526717456169, + 10735342053764638034, + 2342156236435128394, + 14166002014472046096 + ], + [ + 2892383637971079443, + 13418647945623595756, + 10019182992393923816, + 9844763621346094605 + ], + [ + 10882982703274329811, + 1514425380968646350, + 13439208364741860903, + 13990068349260696136 + ], + [ + 15895812818511549818, + 15738749976988188006, + 13440084002922282596, + 14578356625798184093 + ], + [ + 3859406845557969736, + 17314298659359090415, + 16770924942850282883, + 486597592063200525 + ], + [ + 11378407834848513159, + 4967859104549187166, + 13937264085276400573, + 7478354099484226349 + ], + [ + 1449906124962973794, + 5408228139111124399, + 1658036384062801904, + 7066463570538863033 + ], + [ + 15186027246389802614, + 9949859568958827686, + 11971923963356626879, + 15735564656222075589 + ] ] } -} +} \ No newline at end of file diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_basic_3_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_basic_3_key.json index 1291f810ba0..0cfb70f8292 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_basic_3_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_basic_3_key.json @@ -17,13 +17,27 @@ "domain_size": 1048576, "total_tables_len": 12320, "public_inputs_locations": [ - [0, 1045893], - [1, 1045893], - [2, 1045893], - [3, 1045893] + [ + 0, + 1045893 + ], + [ + 1, + 1045893 + ], + [ + 2, + 1045893 + ], + [ + 3, + 1045893 + ] ], "extra_constant_polys_for_selectors": 2, - "table_ids_column_idxes": [6], + "table_ids_column_idxes": [ + 6 + ], "quotient_degree": 8, "selectors_placement": { "Fork": { @@ -129,22 +143,102 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [14477188964753033185, 8969677320239131616, 1511337688601558079, 6903237435877294238], - [6879979662383013500, 9972710512945599417, 1141938191658961290, 7985281381511529082], - [17209416762295781376, 598939655522077579, 6689912638469680235, 4921519662278829132], - [2218810108211543567, 17367409571577782381, 4068453030111399481, 2894111853945751344], - [9999042349572898395, 7429179575907305306, 10123408942776369379, 3022715221462077728], - [10045842633239015513, 4244812848324665170, 12301343603596417356, 11332920712778059030], - [15900139291770141663, 8192446346506891091, 10086891539583546802, 7343942987745068197], - [6124221718954912549, 13486682166896696529, 15097291952143481844, 16653894364467704495], - [12766623698334678967, 1729058559883227397, 1411108054906351423, 13278453333171202065], - [12233418151438626108, 14016138745865492456, 13255147568691004416, 14998854132551828470], - [10323923076292169703, 8158278707949376146, 12845614783152862914, 5914093648720582597], - [13520835009196520971, 14417779140547238889, 6862603050786324034, 10245030009169430808], - [1835499986105723876, 9973301486190772269, 3431085138170097359, 16617926458565371046], - [6995430833584764582, 10186803315798237521, 13404931797112939412, 17530795913574984460], - [10883424944588923206, 13314595728239865895, 3282096066350298749, 3956046981299225896], - [12087054656445457911, 7314398367646261307, 7998118142061675046, 11673364943123337175] + [ + 14477188964753033185, + 8969677320239131616, + 1511337688601558079, + 6903237435877294238 + ], + [ + 6879979662383013500, + 9972710512945599417, + 1141938191658961290, + 7985281381511529082 + ], + [ + 17209416762295781376, + 598939655522077579, + 6689912638469680235, + 4921519662278829132 + ], + [ + 2218810108211543567, + 17367409571577782381, + 4068453030111399481, + 2894111853945751344 + ], + [ + 9999042349572898395, + 7429179575907305306, + 10123408942776369379, + 3022715221462077728 + ], + [ + 10045842633239015513, + 4244812848324665170, + 12301343603596417356, + 11332920712778059030 + ], + [ + 15900139291770141663, + 8192446346506891091, + 10086891539583546802, + 7343942987745068197 + ], + [ + 6124221718954912549, + 13486682166896696529, + 15097291952143481844, + 16653894364467704495 + ], + [ + 12766623698334678967, + 1729058559883227397, + 1411108054906351423, + 13278453333171202065 + ], + [ + 12233418151438626108, + 14016138745865492456, + 13255147568691004416, + 14998854132551828470 + ], + [ + 10323923076292169703, + 8158278707949376146, + 12845614783152862914, + 5914093648720582597 + ], + [ + 13520835009196520971, + 14417779140547238889, + 6862603050786324034, + 10245030009169430808 + ], + [ + 1835499986105723876, + 9973301486190772269, + 3431085138170097359, + 16617926458565371046 + ], + [ + 6995430833584764582, + 10186803315798237521, + 13404931797112939412, + 17530795913574984460 + ], + [ + 10883424944588923206, + 13314595728239865895, + 3282096066350298749, + 3956046981299225896 + ], + [ + 12087054656445457911, + 7314398367646261307, + 7998118142061675046, + 11673364943123337175 + ] ] } -} +} \ No newline at end of file diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_basic_4_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_basic_4_key.json index abb66a43923..a4a410d90a2 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_basic_4_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_basic_4_key.json @@ -17,13 +17,27 @@ "domain_size": 1048576, "total_tables_len": 256, "public_inputs_locations": [ - [0, 770856], - [1, 770856], - [2, 770856], - [3, 770856] + [ + 0, + 770856 + ], + [ + 1, + 770856 + ], + [ + 2, + 770856 + ], + [ + 3, + 770856 + ] ], "extra_constant_polys_for_selectors": 3, - "table_ids_column_idxes": [7], + "table_ids_column_idxes": [ + 7 + ], "quotient_degree": 8, "selectors_placement": { "Fork": { @@ -142,22 +156,102 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [13241330279191725103, 13753032629530173038, 2076223530664948596, 3297807117114706044], - [11713836288112670191, 1177996762465404370, 7559895083149599749, 3210974432904624409], - [12556775438783409088, 12836668195118427958, 10659579382288992879, 14824820023358081641], - [12129434367710731467, 13223863980858698592, 15076313205959171338, 8812832758598326992], - [5619695298194316584, 1702543119292958822, 10286311332797928654, 5029271658667181176], - [7415141098448981547, 15663039494509354932, 13208197120197557194, 11245742858683836013], - [3002540241136310707, 11547797899694244403, 7124622061839424949, 10949013563713078494], - [17142575575809782204, 13800993532867337554, 4423537342426483807, 12089179399318945120], - [5543363940431137493, 14528536317911082899, 3928220692870214567, 7185369207264833028], - [2815159846192152478, 16507211682718130921, 1793329775903937916, 6473686931817864950], - [17815165628195346102, 9542948826192641186, 14973284068738873799, 13577641628730921985], - [17938393397553240876, 15660715751237780491, 12630446844016399148, 11862059154139259048], - [11953996319846633859, 12131238563851642562, 5803319004748576191, 10988868046472383675], - [3859400868090135128, 15214844687221204138, 13973059553580269639, 7853383910131759805], - [11592486898864810791, 4871056958970591747, 137946356858301988, 14529417267976359973], - [11093343120608557204, 14684319039324015274, 5221221840195929029, 17478918223903237221] + [ + 13241330279191725103, + 13753032629530173038, + 2076223530664948596, + 3297807117114706044 + ], + [ + 11713836288112670191, + 1177996762465404370, + 7559895083149599749, + 3210974432904624409 + ], + [ + 12556775438783409088, + 12836668195118427958, + 10659579382288992879, + 14824820023358081641 + ], + [ + 12129434367710731467, + 13223863980858698592, + 15076313205959171338, + 8812832758598326992 + ], + [ + 5619695298194316584, + 1702543119292958822, + 10286311332797928654, + 5029271658667181176 + ], + [ + 7415141098448981547, + 15663039494509354932, + 13208197120197557194, + 11245742858683836013 + ], + [ + 3002540241136310707, + 11547797899694244403, + 7124622061839424949, + 10949013563713078494 + ], + [ + 17142575575809782204, + 13800993532867337554, + 4423537342426483807, + 12089179399318945120 + ], + [ + 5543363940431137493, + 14528536317911082899, + 3928220692870214567, + 7185369207264833028 + ], + [ + 2815159846192152478, + 16507211682718130921, + 1793329775903937916, + 6473686931817864950 + ], + [ + 17815165628195346102, + 9542948826192641186, + 14973284068738873799, + 13577641628730921985 + ], + [ + 17938393397553240876, + 15660715751237780491, + 12630446844016399148, + 11862059154139259048 + ], + [ + 11953996319846633859, + 12131238563851642562, + 5803319004748576191, + 10988868046472383675 + ], + [ + 3859400868090135128, + 15214844687221204138, + 13973059553580269639, + 7853383910131759805 + ], + [ + 11592486898864810791, + 4871056958970591747, + 137946356858301988, + 14529417267976359973 + ], + [ + 11093343120608557204, + 14684319039324015274, + 5221221840195929029, + 17478918223903237221 + ] ] } -} +} \ No newline at end of file diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_basic_5_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_basic_5_key.json index b3e63bb053d..4537187b9b3 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_basic_5_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_basic_5_key.json @@ -17,13 +17,27 @@ "domain_size": 1048576, "total_tables_len": 132096, "public_inputs_locations": [ - [0, 1047292], - [1, 1047292], - [2, 1047292], - [3, 1047292] + [ + 0, + 1047292 + ], + [ + 1, + 1047292 + ], + [ + 2, + 1047292 + ], + [ + 3, + 1047292 + ] ], "extra_constant_polys_for_selectors": 2, - "table_ids_column_idxes": [6], + "table_ids_column_idxes": [ + 6 + ], "quotient_degree": 8, "selectors_placement": { "Fork": { @@ -129,22 +143,102 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [5926546619152935907, 11291861669768573654, 11100100891141895430, 1040099038134319144], - [9405378490457870663, 11971348617109093172, 7779954465112100917, 8521139113892942903], - [1041442145290466080, 2626937507866398782, 4297959424787982903, 7963254695121664304], - [8679424872010178168, 928230210029079843, 17862919271344969949, 9085342720844642067], - [2346566700143956389, 751827788815495159, 18018129704559687246, 6344673729449349673], - [12798999539756004171, 2962217720855368908, 17815764746262544024, 6141433679632029898], - [10612436896218340091, 5382517797965219051, 1440771605952502920, 6120504474919675320], - [5639210895028949894, 17579589483393163114, 8531068549022389838, 9055992165271810945], - [15625252378325581383, 11791782086341113568, 1976318982912441593, 16561636205817299485], - [9291503982934971506, 5967409911022700010, 9096839168538146295, 3004596177933970509], - [9243725287341188464, 6878316427230924845, 7270708110528992687, 15417458474646493002], - [15577762808206668193, 10775213926343901301, 4900917235853777300, 8940673145641313937], - [18157038451252266825, 13776543473230491269, 17449669960102455201, 1902286122568749061], - [10247491007925641249, 5411016508841956578, 11766519965796614613, 1073824923129670847], - [10691592838471536401, 16863854034452440410, 16989985027265774429, 10784858673090746367], - [5688638173552292266, 2543022480770607266, 1257951713416281965, 6435312724052439304] + [ + 5926546619152935907, + 11291861669768573654, + 11100100891141895430, + 1040099038134319144 + ], + [ + 9405378490457870663, + 11971348617109093172, + 7779954465112100917, + 8521139113892942903 + ], + [ + 1041442145290466080, + 2626937507866398782, + 4297959424787982903, + 7963254695121664304 + ], + [ + 8679424872010178168, + 928230210029079843, + 17862919271344969949, + 9085342720844642067 + ], + [ + 2346566700143956389, + 751827788815495159, + 18018129704559687246, + 6344673729449349673 + ], + [ + 12798999539756004171, + 2962217720855368908, + 17815764746262544024, + 6141433679632029898 + ], + [ + 10612436896218340091, + 5382517797965219051, + 1440771605952502920, + 6120504474919675320 + ], + [ + 5639210895028949894, + 17579589483393163114, + 8531068549022389838, + 9055992165271810945 + ], + [ + 15625252378325581383, + 11791782086341113568, + 1976318982912441593, + 16561636205817299485 + ], + [ + 9291503982934971506, + 5967409911022700010, + 9096839168538146295, + 3004596177933970509 + ], + [ + 9243725287341188464, + 6878316427230924845, + 7270708110528992687, + 15417458474646493002 + ], + [ + 15577762808206668193, + 10775213926343901301, + 4900917235853777300, + 8940673145641313937 + ], + [ + 18157038451252266825, + 13776543473230491269, + 17449669960102455201, + 1902286122568749061 + ], + [ + 10247491007925641249, + 5411016508841956578, + 11766519965796614613, + 1073824923129670847 + ], + [ + 10691592838471536401, + 16863854034452440410, + 16989985027265774429, + 10784858673090746367 + ], + [ + 5688638173552292266, + 2543022480770607266, + 1257951713416281965, + 6435312724052439304 + ] ] } -} +} \ No newline at end of file diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_basic_6_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_basic_6_key.json index d72d240e25b..48533211ab0 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_basic_6_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_basic_6_key.json @@ -17,13 +17,27 @@ "domain_size": 1048576, "total_tables_len": 12320, "public_inputs_locations": [ - [0, 1039793], - [1, 1039793], - [2, 1039793], - [3, 1039793] + [ + 0, + 1039793 + ], + [ + 1, + 1039793 + ], + [ + 2, + 1039793 + ], + [ + 3, + 1039793 + ] ], "extra_constant_polys_for_selectors": 2, - "table_ids_column_idxes": [6], + "table_ids_column_idxes": [ + 6 + ], "quotient_degree": 8, "selectors_placement": { "Fork": { @@ -129,22 +143,102 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [7131095197302553268, 8153577698865827964, 4503618255465567901, 14277683095622422701], - [17227565432950328258, 3812763700819798255, 11013754802988076876, 6868705666417715458], - [6323710131523972374, 2634684603167736396, 18066615186100844391, 12905391948029250777], - [3492005229273374536, 6055742838160324534, 1795486371688618704, 13052026771106363342], - [10281812076992462791, 7165153365649379245, 13022274058059396511, 13989909544832134378], - [12027415465257630320, 3276226892300848010, 8686471638009106913, 14892455799109213586], - [2589896055307349461, 2860115159278340436, 16194627146103061118, 7076143423549975584], - [13667404340259521763, 6297649363425018745, 16167424072873520384, 3830963799067739016], - [16665883187665722508, 314738727176100190, 4253386482569091860, 1926299543937236525], - [7820355437968047327, 6794680285466534678, 2978730525228113593, 3621380956903574094], - [4838056840641790939, 16842388520310131551, 11612178730147038952, 2346195292789238934], - [17810776396991797874, 12063662987004325494, 17932676844730723250, 14283996529720835225], - [4982429352434514173, 14856186579270143608, 4051922516960412257, 8367898317160268319], - [14584337208407353036, 15866593405986269360, 11704298830630250400, 14576621862375131798], - [3101118738129024336, 4028118980088627608, 9223187088487468736, 3845581921289713376], - [1013819453591993424, 13784105701097110976, 9114286772222497781, 10710488663310041007] + [ + 7131095197302553268, + 8153577698865827964, + 4503618255465567901, + 14277683095622422701 + ], + [ + 17227565432950328258, + 3812763700819798255, + 11013754802988076876, + 6868705666417715458 + ], + [ + 6323710131523972374, + 2634684603167736396, + 18066615186100844391, + 12905391948029250777 + ], + [ + 3492005229273374536, + 6055742838160324534, + 1795486371688618704, + 13052026771106363342 + ], + [ + 10281812076992462791, + 7165153365649379245, + 13022274058059396511, + 13989909544832134378 + ], + [ + 12027415465257630320, + 3276226892300848010, + 8686471638009106913, + 14892455799109213586 + ], + [ + 2589896055307349461, + 2860115159278340436, + 16194627146103061118, + 7076143423549975584 + ], + [ + 13667404340259521763, + 6297649363425018745, + 16167424072873520384, + 3830963799067739016 + ], + [ + 16665883187665722508, + 314738727176100190, + 4253386482569091860, + 1926299543937236525 + ], + [ + 7820355437968047327, + 6794680285466534678, + 2978730525228113593, + 3621380956903574094 + ], + [ + 4838056840641790939, + 16842388520310131551, + 11612178730147038952, + 2346195292789238934 + ], + [ + 17810776396991797874, + 12063662987004325494, + 17932676844730723250, + 14283996529720835225 + ], + [ + 4982429352434514173, + 14856186579270143608, + 4051922516960412257, + 8367898317160268319 + ], + [ + 14584337208407353036, + 15866593405986269360, + 11704298830630250400, + 14576621862375131798 + ], + [ + 3101118738129024336, + 4028118980088627608, + 9223187088487468736, + 3845581921289713376 + ], + [ + 1013819453591993424, + 13784105701097110976, + 9114286772222497781, + 10710488663310041007 + ] ] } -} +} \ No newline at end of file diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_basic_7_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_basic_7_key.json index ffaae70e1fc..b905a476ea4 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_basic_7_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_basic_7_key.json @@ -17,13 +17,27 @@ "domain_size": 1048576, "total_tables_len": 132096, "public_inputs_locations": [ - [0, 872841], - [1, 872841], - [2, 872841], - [3, 872841] + [ + 0, + 872841 + ], + [ + 1, + 872841 + ], + [ + 2, + 872841 + ], + [ + 3, + 872841 + ] ], "extra_constant_polys_for_selectors": 2, - "table_ids_column_idxes": [6], + "table_ids_column_idxes": [ + 6 + ], "quotient_degree": 8, "selectors_placement": { "Fork": { @@ -142,22 +156,102 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [13818450912197620420, 5079205692118648775, 14615787041360044769, 2941606671776647183], - [6715253104770723417, 3160280029457127352, 11108406980823166906, 15487865556610611893], - [14039903923831613967, 15298198763143829103, 17031409250405123985, 10266023324667771113], - [17366151300788544369, 13314676565834570017, 17521241757753748935, 13066688955830816807], - [14445090483790969730, 15708367780098206326, 2336844413511710318, 3268235585540529265], - [2882405134850480170, 14247534382965114291, 17531255653612736614, 11676635700695125188], - [11530141675448575062, 8910365257612403024, 300072654586353643, 8472188536913229506], - [1426612518547638168, 17806679375517512145, 14835333334022265221, 2007845272495904476], - [6034343869761808836, 13937750910508416181, 16942548919853718543, 16086518391257789831], - [15933462173546075175, 8612525819877657624, 4132383244121115701, 9288543398092863864], - [8157130847726661070, 4231891352218163681, 14620351586778336684, 4186724240746204294], - [7440132245224537493, 6666895991749911132, 8404993517441732468, 6556569653095950475], - [1982595939619922877, 17561202624392859313, 14381497498171193805, 17908865555917026633], - [7384278864004035589, 10191778068274570585, 6103937442735162958, 5142419559331404710], - [3651117166359200686, 3827322296271305097, 14799462710376656576, 13600220646083181205], - [1989104086172888026, 7796359126421144184, 16967575681666150511, 5993683835612332048] + [ + 13818450912197620420, + 5079205692118648775, + 14615787041360044769, + 2941606671776647183 + ], + [ + 6715253104770723417, + 3160280029457127352, + 11108406980823166906, + 15487865556610611893 + ], + [ + 14039903923831613967, + 15298198763143829103, + 17031409250405123985, + 10266023324667771113 + ], + [ + 17366151300788544369, + 13314676565834570017, + 17521241757753748935, + 13066688955830816807 + ], + [ + 14445090483790969730, + 15708367780098206326, + 2336844413511710318, + 3268235585540529265 + ], + [ + 2882405134850480170, + 14247534382965114291, + 17531255653612736614, + 11676635700695125188 + ], + [ + 11530141675448575062, + 8910365257612403024, + 300072654586353643, + 8472188536913229506 + ], + [ + 1426612518547638168, + 17806679375517512145, + 14835333334022265221, + 2007845272495904476 + ], + [ + 6034343869761808836, + 13937750910508416181, + 16942548919853718543, + 16086518391257789831 + ], + [ + 15933462173546075175, + 8612525819877657624, + 4132383244121115701, + 9288543398092863864 + ], + [ + 8157130847726661070, + 4231891352218163681, + 14620351586778336684, + 4186724240746204294 + ], + [ + 7440132245224537493, + 6666895991749911132, + 8404993517441732468, + 6556569653095950475 + ], + [ + 1982595939619922877, + 17561202624392859313, + 14381497498171193805, + 17908865555917026633 + ], + [ + 7384278864004035589, + 10191778068274570585, + 6103937442735162958, + 5142419559331404710 + ], + [ + 3651117166359200686, + 3827322296271305097, + 14799462710376656576, + 13600220646083181205 + ], + [ + 1989104086172888026, + 7796359126421144184, + 16967575681666150511, + 5993683835612332048 + ] ] } -} +} \ No newline at end of file diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_basic_8_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_basic_8_key.json index 088a58c12d0..01b957e7a61 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_basic_8_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_basic_8_key.json @@ -17,13 +17,27 @@ "domain_size": 1048576, "total_tables_len": 256, "public_inputs_locations": [ - [0, 1044095], - [1, 1044095], - [2, 1044095], - [3, 1044095] + [ + 0, + 1044095 + ], + [ + 1, + 1044095 + ], + [ + 2, + 1044095 + ], + [ + 3, + 1044095 + ] ], "extra_constant_polys_for_selectors": 3, - "table_ids_column_idxes": [7], + "table_ids_column_idxes": [ + 7 + ], "quotient_degree": 8, "selectors_placement": { "Fork": { @@ -142,22 +156,102 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [7748855058771730961, 18077946489631649497, 1126488644057748066, 14688059039599644438], - [4480629341804348299, 10505662440791981234, 4568412032951786787, 12296506456394181969], - [16177866372671364827, 6970256790084749443, 10619139891136255069, 1607793233799494191], - [16984252104671889635, 13549428959009290270, 18134611582044419523, 13805480879905126881], - [17770436976754840017, 7234588192906938750, 1676460085700470353, 17733573771328390126], - [1322939182961086562, 5294941824911180446, 10983825026212251207, 4904636572110590284], - [12784739321844360991, 12439305138735676805, 14983461304040938818, 17269069332772868104], - [14780190734158735021, 13940544738219743565, 6645149114623433718, 13466406487834863255], - [13329778603033226548, 10757456562158453823, 16599667503315631352, 7621238797658185159], - [14547407989101566794, 13324264894451648565, 16566710504362716031, 4779331080355111127], - [6132579229855214454, 17610416320024829323, 12304246579944377351, 9688211256511656964], - [8981542755583161308, 5091565442848149167, 13934425064181076259, 9294930870454289441], - [7427098481125065729, 13578369070049130481, 11513105383705002933, 9750527547580548099], - [5745702296484372803, 17242736621178757499, 11421559995636138498, 12684122852092168791], - [1002992144601037215, 16187923653560782188, 5293022176068028122, 9959247706453715838], - [4182061746333368731, 5244109339200264013, 10015150430260308263, 11549298210681275420] + [ + 7748855058771730961, + 18077946489631649497, + 1126488644057748066, + 14688059039599644438 + ], + [ + 4480629341804348299, + 10505662440791981234, + 4568412032951786787, + 12296506456394181969 + ], + [ + 16177866372671364827, + 6970256790084749443, + 10619139891136255069, + 1607793233799494191 + ], + [ + 16984252104671889635, + 13549428959009290270, + 18134611582044419523, + 13805480879905126881 + ], + [ + 17770436976754840017, + 7234588192906938750, + 1676460085700470353, + 17733573771328390126 + ], + [ + 1322939182961086562, + 5294941824911180446, + 10983825026212251207, + 4904636572110590284 + ], + [ + 12784739321844360991, + 12439305138735676805, + 14983461304040938818, + 17269069332772868104 + ], + [ + 14780190734158735021, + 13940544738219743565, + 6645149114623433718, + 13466406487834863255 + ], + [ + 13329778603033226548, + 10757456562158453823, + 16599667503315631352, + 7621238797658185159 + ], + [ + 14547407989101566794, + 13324264894451648565, + 16566710504362716031, + 4779331080355111127 + ], + [ + 6132579229855214454, + 17610416320024829323, + 12304246579944377351, + 9688211256511656964 + ], + [ + 8981542755583161308, + 5091565442848149167, + 13934425064181076259, + 9294930870454289441 + ], + [ + 7427098481125065729, + 13578369070049130481, + 11513105383705002933, + 9750527547580548099 + ], + [ + 5745702296484372803, + 17242736621178757499, + 11421559995636138498, + 12684122852092168791 + ], + [ + 1002992144601037215, + 16187923653560782188, + 5293022176068028122, + 9959247706453715838 + ], + [ + 4182061746333368731, + 5244109339200264013, + 10015150430260308263, + 11549298210681275420 + ] ] } -} +} \ No newline at end of file diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_basic_9_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_basic_9_key.json index 950f3066741..2823ffec627 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_basic_9_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_basic_9_key.json @@ -17,13 +17,27 @@ "domain_size": 1048576, "total_tables_len": 256, "public_inputs_locations": [ - [0, 1044628], - [1, 1044628], - [2, 1044628], - [3, 1044628] + [ + 0, + 1044628 + ], + [ + 1, + 1044628 + ], + [ + 2, + 1044628 + ], + [ + 3, + 1044628 + ] ], "extra_constant_polys_for_selectors": 3, - "table_ids_column_idxes": [7], + "table_ids_column_idxes": [ + 7 + ], "quotient_degree": 8, "selectors_placement": { "Fork": { @@ -142,22 +156,102 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [15152415627491818135, 7374237605577523933, 4465184016028924212, 2035234088595773309], - [5061557444963845839, 12386849184623218277, 13052284409578998174, 2142376146067763313], - [14276061640225729061, 3667833983304997823, 15567500985315483409, 10110252348727918570], - [12534291856385391774, 4931691717277748218, 10385184271370113628, 10333556044049798387], - [3902530530481162544, 11439177580828992768, 2956353447880097447, 2078779115341733037], - [14361126694241130224, 4508476390465174580, 14814630315120762635, 17198376643024594512], - [15399867818681370342, 17613339377988571860, 17463021656624906492, 18043402438787219822], - [4721341021989730415, 941889554702533152, 4492052956383425703, 11785343591616806540], - [14835583452718692456, 9747287794601877160, 13285319018669943605, 15566660322778346733], - [634069327924902339, 7509671875950276664, 17149763085975395897, 17558106862399785122], - [6504570481933973182, 9863954755773054818, 4192802816900646319, 11708054020605968244], - [5368022000476684675, 11854447477637281190, 773008757856055958, 7428874382179860306], - [820566450151427404, 14487105988932071384, 5168970873173217247, 16840718205559266321], - [15018168499898445860, 15893129254829262789, 1267456796490088156, 14049704864991807107], - [3678472314386256573, 4482269767107891177, 2891258367538769098, 10249141358181035242], - [1175499750244297798, 7441679809319866074, 15706614384330332074, 12399917843582101807] + [ + 15152415627491818135, + 7374237605577523933, + 4465184016028924212, + 2035234088595773309 + ], + [ + 5061557444963845839, + 12386849184623218277, + 13052284409578998174, + 2142376146067763313 + ], + [ + 14276061640225729061, + 3667833983304997823, + 15567500985315483409, + 10110252348727918570 + ], + [ + 12534291856385391774, + 4931691717277748218, + 10385184271370113628, + 10333556044049798387 + ], + [ + 3902530530481162544, + 11439177580828992768, + 2956353447880097447, + 2078779115341733037 + ], + [ + 14361126694241130224, + 4508476390465174580, + 14814630315120762635, + 17198376643024594512 + ], + [ + 15399867818681370342, + 17613339377988571860, + 17463021656624906492, + 18043402438787219822 + ], + [ + 4721341021989730415, + 941889554702533152, + 4492052956383425703, + 11785343591616806540 + ], + [ + 14835583452718692456, + 9747287794601877160, + 13285319018669943605, + 15566660322778346733 + ], + [ + 634069327924902339, + 7509671875950276664, + 17149763085975395897, + 17558106862399785122 + ], + [ + 6504570481933973182, + 9863954755773054818, + 4192802816900646319, + 11708054020605968244 + ], + [ + 5368022000476684675, + 11854447477637281190, + 773008757856055958, + 7428874382179860306 + ], + [ + 820566450151427404, + 14487105988932071384, + 5168970873173217247, + 16840718205559266321 + ], + [ + 15018168499898445860, + 15893129254829262789, + 1267456796490088156, + 14049704864991807107 + ], + [ + 3678472314386256573, + 4482269767107891177, + 2891258367538769098, + 10249141358181035242 + ], + [ + 1175499750244297798, + 7441679809319866074, + 15706614384330332074, + 12399917843582101807 + ] ] } -} +} \ No newline at end of file diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_10_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_10_key.json index 1cf6e373b7e..82e2d2f2fb5 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_10_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_10_key.json @@ -11,10 +11,22 @@ "domain_size": 1048576, "total_tables_len": 0, "public_inputs_locations": [ - [0, 0], - [1, 0], - [2, 0], - [3, 0] + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ] ], "extra_constant_polys_for_selectors": 4, "table_ids_column_idxes": [], @@ -149,22 +161,102 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [1125289536020813216, 13893991227523403350, 18221032481002623145, 6999555513372134161], - [14558032258404044879, 15896302942503207712, 4320679543001532335, 16312301655514654219], - [7101986692613628904, 7577883870349313041, 7352728228661094923, 18332380179278822986], - [4857477437658850102, 2600358150758031758, 11245333823831173537, 8338725066623873242], - [7533080307752291488, 7286216489335488511, 18156637335160778785, 7462498443331890731], - [606568432443359176, 8912183283992686330, 17421481837200753913, 17592999343458504164], - [13072668834394870334, 11175441683787645540, 3718467031089360132, 6303569707785751909], - [15139014418351999292, 13433960894156419831, 1081036147938149073, 5537900067858640688], - [16144198516884069513, 11760722486204114604, 9080477633162807038, 14878319203527003921], - [9887232148319546846, 11280977977331453386, 1634486104168251049, 1013174085024142997], - [8774759106642276381, 17014116512461272516, 5017632137039687644, 2879573590247199312], - [8532316813139433929, 10192336124962558528, 10208988044571331050, 7412443809890180963], - [1940771445624788955, 15990599983917575017, 12383682653785412359, 7243892390926482974], - [15783323653576062669, 7433660384180142428, 11341821314666985051, 13908042579613943595], - [6784650697753378650, 2429262522610065724, 3770879433095160288, 6633370836632857456], - [18435367235881428398, 13152985860267484403, 17561012172979073263, 15335033836397886699] + [ + 1125289536020813216, + 13893991227523403350, + 18221032481002623145, + 6999555513372134161 + ], + [ + 14558032258404044879, + 15896302942503207712, + 4320679543001532335, + 16312301655514654219 + ], + [ + 7101986692613628904, + 7577883870349313041, + 7352728228661094923, + 18332380179278822986 + ], + [ + 4857477437658850102, + 2600358150758031758, + 11245333823831173537, + 8338725066623873242 + ], + [ + 7533080307752291488, + 7286216489335488511, + 18156637335160778785, + 7462498443331890731 + ], + [ + 606568432443359176, + 8912183283992686330, + 17421481837200753913, + 17592999343458504164 + ], + [ + 13072668834394870334, + 11175441683787645540, + 3718467031089360132, + 6303569707785751909 + ], + [ + 15139014418351999292, + 13433960894156419831, + 1081036147938149073, + 5537900067858640688 + ], + [ + 16144198516884069513, + 11760722486204114604, + 9080477633162807038, + 14878319203527003921 + ], + [ + 9887232148319546846, + 11280977977331453386, + 1634486104168251049, + 1013174085024142997 + ], + [ + 8774759106642276381, + 17014116512461272516, + 5017632137039687644, + 2879573590247199312 + ], + [ + 8532316813139433929, + 10192336124962558528, + 10208988044571331050, + 7412443809890180963 + ], + [ + 1940771445624788955, + 15990599983917575017, + 12383682653785412359, + 7243892390926482974 + ], + [ + 15783323653576062669, + 7433660384180142428, + 11341821314666985051, + 13908042579613943595 + ], + [ + 6784650697753378650, + 2429262522610065724, + 3770879433095160288, + 6633370836632857456 + ], + [ + 18435367235881428398, + 13152985860267484403, + 17561012172979073263, + 15335033836397886699 + ] ] } -} +} \ No newline at end of file diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_11_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_11_key.json index 865a75e0b74..14b20e4f718 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_11_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_11_key.json @@ -11,10 +11,22 @@ "domain_size": 1048576, "total_tables_len": 0, "public_inputs_locations": [ - [0, 0], - [1, 0], - [2, 0], - [3, 0] + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ] ], "extra_constant_polys_for_selectors": 4, "table_ids_column_idxes": [], @@ -149,22 +161,102 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [14038008090973880203, 7437991399998284269, 12502661164686015780, 6154468052477899229], - [4890279821462461425, 12267605659025997985, 16220814561210675069, 14958418982789304352], - [16239014851914932689, 11626285279514581577, 7827403995053907198, 3320808129263057989], - [9987109148114223767, 16027730699082584407, 16226544327370131567, 10505655809748447851], - [2426355028560688438, 13015409833156179441, 3357212938175132730, 9924499217906835800], - [7264556678081366657, 11014021481903289086, 1185381295776166890, 11220095453847753366], - [10738220050569983945, 2071033793611953608, 2836853848682426199, 18280211532291996343], - [4622574899935206725, 10283505057353003539, 10924169390994336784, 9267200805799259741], - [4991426063445236730, 292198960832094512, 6370230421874009175, 2987533577516974457], - [15100014620403370288, 17064710328307274600, 13596338039199898149, 7844302147920229272], - [6997319402399846472, 5312486909661565204, 8133503726683094273, 14376435888676319871], - [16536431163453527335, 8329243612205528007, 10332326446350256878, 6187024786825219302], - [15819705933365601754, 17218893784817004570, 7197154299986843671, 11662127518680895562], - [12757050724806983838, 14916998582501427105, 2903621530266216761, 12948020673936426635], - [14563493065638885359, 6770003101729110728, 11839394563403429402, 1065983546047670743], - [2845847955135199124, 16066115065717446946, 4482870472147946913, 8664518745998140088] + [ + 14038008090973880203, + 7437991399998284269, + 12502661164686015780, + 6154468052477899229 + ], + [ + 4890279821462461425, + 12267605659025997985, + 16220814561210675069, + 14958418982789304352 + ], + [ + 16239014851914932689, + 11626285279514581577, + 7827403995053907198, + 3320808129263057989 + ], + [ + 9987109148114223767, + 16027730699082584407, + 16226544327370131567, + 10505655809748447851 + ], + [ + 2426355028560688438, + 13015409833156179441, + 3357212938175132730, + 9924499217906835800 + ], + [ + 7264556678081366657, + 11014021481903289086, + 1185381295776166890, + 11220095453847753366 + ], + [ + 10738220050569983945, + 2071033793611953608, + 2836853848682426199, + 18280211532291996343 + ], + [ + 4622574899935206725, + 10283505057353003539, + 10924169390994336784, + 9267200805799259741 + ], + [ + 4991426063445236730, + 292198960832094512, + 6370230421874009175, + 2987533577516974457 + ], + [ + 15100014620403370288, + 17064710328307274600, + 13596338039199898149, + 7844302147920229272 + ], + [ + 6997319402399846472, + 5312486909661565204, + 8133503726683094273, + 14376435888676319871 + ], + [ + 16536431163453527335, + 8329243612205528007, + 10332326446350256878, + 6187024786825219302 + ], + [ + 15819705933365601754, + 17218893784817004570, + 7197154299986843671, + 11662127518680895562 + ], + [ + 12757050724806983838, + 14916998582501427105, + 2903621530266216761, + 12948020673936426635 + ], + [ + 14563493065638885359, + 6770003101729110728, + 11839394563403429402, + 1065983546047670743 + ], + [ + 2845847955135199124, + 16066115065717446946, + 4482870472147946913, + 8664518745998140088 + ] ] } -} +} \ No newline at end of file diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_12_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_12_key.json index ad9636492af..047a7943389 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_12_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_12_key.json @@ -11,10 +11,22 @@ "domain_size": 1048576, "total_tables_len": 0, "public_inputs_locations": [ - [0, 0], - [1, 0], - [2, 0], - [3, 0] + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ] ], "extra_constant_polys_for_selectors": 4, "table_ids_column_idxes": [], @@ -149,22 +161,102 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [17762498852322133081, 12402705633936516386, 2303979245623416237, 15492962941180331409], - [1368919680062481249, 8419725427681044227, 12407005054982229959, 9729546646519366060], - [3694696222464991628, 10691747603876514511, 5648287760852638838, 15128008410193030270], - [5647849659158863308, 16391316755630265342, 17483459471194878342, 2382689231083026500], - [414523452897415096, 14712743039552404085, 14274376366377496980, 1540457029378813951], - [6437956396547385520, 10457280544359552653, 210288303177892964, 7009065088863365256], - [6189643588169700860, 2874522095144611328, 3459596951253545261, 14912093041250189548], - [2954035721997683722, 2628438295425873126, 9361498414301919378, 7780135632218518403], - [13376229283479650476, 13646160168852625209, 12342809006526169374, 16140909717103038788], - [14544916717622160085, 2335857756498039096, 12834512355397127233, 8257858357688008275], - [13637749549385428585, 1568326361689976373, 14573670474737748882, 8002611813857126901], - [4981475697544147574, 7477162419770815721, 13420952345288491036, 6849943909220872064], - [5645683284474222575, 10480504810673180938, 7038844793157124351, 10701205261596194736], - [2992787956816905753, 10666728141278334493, 4748213040479579674, 13258093297981567423], - [11477426903799919629, 24925561182649344, 11412223773538266154, 2852175545463505023], - [1060175052523024730, 6610510112497451814, 15229121744185849414, 12773820515972201248] + [ + 17762498852322133081, + 12402705633936516386, + 2303979245623416237, + 15492962941180331409 + ], + [ + 1368919680062481249, + 8419725427681044227, + 12407005054982229959, + 9729546646519366060 + ], + [ + 3694696222464991628, + 10691747603876514511, + 5648287760852638838, + 15128008410193030270 + ], + [ + 5647849659158863308, + 16391316755630265342, + 17483459471194878342, + 2382689231083026500 + ], + [ + 414523452897415096, + 14712743039552404085, + 14274376366377496980, + 1540457029378813951 + ], + [ + 6437956396547385520, + 10457280544359552653, + 210288303177892964, + 7009065088863365256 + ], + [ + 6189643588169700860, + 2874522095144611328, + 3459596951253545261, + 14912093041250189548 + ], + [ + 2954035721997683722, + 2628438295425873126, + 9361498414301919378, + 7780135632218518403 + ], + [ + 13376229283479650476, + 13646160168852625209, + 12342809006526169374, + 16140909717103038788 + ], + [ + 14544916717622160085, + 2335857756498039096, + 12834512355397127233, + 8257858357688008275 + ], + [ + 13637749549385428585, + 1568326361689976373, + 14573670474737748882, + 8002611813857126901 + ], + [ + 4981475697544147574, + 7477162419770815721, + 13420952345288491036, + 6849943909220872064 + ], + [ + 5645683284474222575, + 10480504810673180938, + 7038844793157124351, + 10701205261596194736 + ], + [ + 2992787956816905753, + 10666728141278334493, + 4748213040479579674, + 13258093297981567423 + ], + [ + 11477426903799919629, + 24925561182649344, + 11412223773538266154, + 2852175545463505023 + ], + [ + 1060175052523024730, + 6610510112497451814, + 15229121744185849414, + 12773820515972201248 + ] ] } -} +} \ No newline at end of file diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_13_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_13_key.json index 8584987e43f..9b8c7bca329 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_13_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_13_key.json @@ -11,10 +11,22 @@ "domain_size": 1048576, "total_tables_len": 0, "public_inputs_locations": [ - [0, 0], - [1, 0], - [2, 0], - [3, 0] + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ] ], "extra_constant_polys_for_selectors": 4, "table_ids_column_idxes": [], @@ -149,22 +161,102 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [1107277819469948429, 7779138633457495557, 9933991506239962590, 13247997120867942045], - [10020877950065961527, 6525352303263078852, 10601857031603992424, 6699333963081308583], - [8019436446207312706, 17880026081547931046, 14023459613581442883, 12177363081042438182], - [17643512238638359026, 2759065364120570462, 1113452962298378930, 9944550331137276877], - [6208699382898547395, 9442366708032685349, 9362620233586526034, 6406469355002722194], - [17265154700194893264, 11486849446382907011, 1331827641678752332, 13890193454573854721], - [7338198937132638061, 9619578268260381257, 16966504852427653624, 5042032213830518832], - [9998014800451912206, 2764915420573986646, 12638108373731502079, 13849566240043998295], - [18402224478111895268, 10245397321907314013, 15810832121998678624, 16050833323870358750], - [5754119484130347551, 1334330314055286585, 1196783225751134982, 13693638204576454858], - [7476283313073466871, 3327838189135133206, 7576584001149251522, 4746763672176501097], - [8341294580974175099, 6996214973372400649, 2825261487886819108, 17611476352036968111], - [6481216673139681707, 12834349834818063790, 14423475559705119809, 15943814042360079510], - [7771500178827314392, 5968639878444939173, 18006309838458312166, 368714734303788414], - [2137428658614683231, 4604901863694850124, 3581156028309568037, 7485386108131533730], - [1078544443818230878, 14117476483719501663, 17985826373971579789, 10600652728062682193] + [ + 1107277819469948429, + 7779138633457495557, + 9933991506239962590, + 13247997120867942045 + ], + [ + 10020877950065961527, + 6525352303263078852, + 10601857031603992424, + 6699333963081308583 + ], + [ + 8019436446207312706, + 17880026081547931046, + 14023459613581442883, + 12177363081042438182 + ], + [ + 17643512238638359026, + 2759065364120570462, + 1113452962298378930, + 9944550331137276877 + ], + [ + 6208699382898547395, + 9442366708032685349, + 9362620233586526034, + 6406469355002722194 + ], + [ + 17265154700194893264, + 11486849446382907011, + 1331827641678752332, + 13890193454573854721 + ], + [ + 7338198937132638061, + 9619578268260381257, + 16966504852427653624, + 5042032213830518832 + ], + [ + 9998014800451912206, + 2764915420573986646, + 12638108373731502079, + 13849566240043998295 + ], + [ + 18402224478111895268, + 10245397321907314013, + 15810832121998678624, + 16050833323870358750 + ], + [ + 5754119484130347551, + 1334330314055286585, + 1196783225751134982, + 13693638204576454858 + ], + [ + 7476283313073466871, + 3327838189135133206, + 7576584001149251522, + 4746763672176501097 + ], + [ + 8341294580974175099, + 6996214973372400649, + 2825261487886819108, + 17611476352036968111 + ], + [ + 6481216673139681707, + 12834349834818063790, + 14423475559705119809, + 15943814042360079510 + ], + [ + 7771500178827314392, + 5968639878444939173, + 18006309838458312166, + 368714734303788414 + ], + [ + 2137428658614683231, + 4604901863694850124, + 3581156028309568037, + 7485386108131533730 + ], + [ + 1078544443818230878, + 14117476483719501663, + 17985826373971579789, + 10600652728062682193 + ] ] } -} +} \ No newline at end of file diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_14_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_14_key.json index 9bde1915c20..e32be9870e7 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_14_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_14_key.json @@ -11,10 +11,22 @@ "domain_size": 1048576, "total_tables_len": 0, "public_inputs_locations": [ - [0, 0], - [1, 0], - [2, 0], - [3, 0] + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ] ], "extra_constant_polys_for_selectors": 4, "table_ids_column_idxes": [], @@ -149,22 +161,102 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [1107277819469948429, 7779138633457495557, 9933991506239962590, 13247997120867942045], - [10020877950065961527, 6525352303263078852, 10601857031603992424, 6699333963081308583], - [8019436446207312706, 17880026081547931046, 14023459613581442883, 12177363081042438182], - [17643512238638359026, 2759065364120570462, 1113452962298378930, 9944550331137276877], - [6208699382898547395, 9442366708032685349, 9362620233586526034, 6406469355002722194], - [17265154700194893264, 11486849446382907011, 1331827641678752332, 13890193454573854721], - [7338198937132638061, 9619578268260381257, 16966504852427653624, 5042032213830518832], - [9998014800451912206, 2764915420573986646, 12638108373731502079, 13849566240043998295], - [18402224478111895268, 10245397321907314013, 15810832121998678624, 16050833323870358750], - [5754119484130347551, 1334330314055286585, 1196783225751134982, 13693638204576454858], - [7476283313073466871, 3327838189135133206, 7576584001149251522, 4746763672176501097], - [8341294580974175099, 6996214973372400649, 2825261487886819108, 17611476352036968111], - [6481216673139681707, 12834349834818063790, 14423475559705119809, 15943814042360079510], - [7771500178827314392, 5968639878444939173, 18006309838458312166, 368714734303788414], - [2137428658614683231, 4604901863694850124, 3581156028309568037, 7485386108131533730], - [1078544443818230878, 14117476483719501663, 17985826373971579789, 10600652728062682193] + [ + 1107277819469948429, + 7779138633457495557, + 9933991506239962590, + 13247997120867942045 + ], + [ + 10020877950065961527, + 6525352303263078852, + 10601857031603992424, + 6699333963081308583 + ], + [ + 8019436446207312706, + 17880026081547931046, + 14023459613581442883, + 12177363081042438182 + ], + [ + 17643512238638359026, + 2759065364120570462, + 1113452962298378930, + 9944550331137276877 + ], + [ + 6208699382898547395, + 9442366708032685349, + 9362620233586526034, + 6406469355002722194 + ], + [ + 17265154700194893264, + 11486849446382907011, + 1331827641678752332, + 13890193454573854721 + ], + [ + 7338198937132638061, + 9619578268260381257, + 16966504852427653624, + 5042032213830518832 + ], + [ + 9998014800451912206, + 2764915420573986646, + 12638108373731502079, + 13849566240043998295 + ], + [ + 18402224478111895268, + 10245397321907314013, + 15810832121998678624, + 16050833323870358750 + ], + [ + 5754119484130347551, + 1334330314055286585, + 1196783225751134982, + 13693638204576454858 + ], + [ + 7476283313073466871, + 3327838189135133206, + 7576584001149251522, + 4746763672176501097 + ], + [ + 8341294580974175099, + 6996214973372400649, + 2825261487886819108, + 17611476352036968111 + ], + [ + 6481216673139681707, + 12834349834818063790, + 14423475559705119809, + 15943814042360079510 + ], + [ + 7771500178827314392, + 5968639878444939173, + 18006309838458312166, + 368714734303788414 + ], + [ + 2137428658614683231, + 4604901863694850124, + 3581156028309568037, + 7485386108131533730 + ], + [ + 1078544443818230878, + 14117476483719501663, + 17985826373971579789, + 10600652728062682193 + ] ] } -} +} \ No newline at end of file diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_15_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_15_key.json index 31ac2757183..9457eb00fb9 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_15_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_15_key.json @@ -11,10 +11,22 @@ "domain_size": 1048576, "total_tables_len": 0, "public_inputs_locations": [ - [0, 0], - [1, 0], - [2, 0], - [3, 0] + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ] ], "extra_constant_polys_for_selectors": 4, "table_ids_column_idxes": [], @@ -149,22 +161,102 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [18238935086181014750, 12673103801320172126, 1807450351340584945, 4080587540382410469], - [3576906271507691924, 15842010882262104289, 1545568012269070598, 15019610257262428212], - [16552529329663272195, 70143638148036568, 9441616425189858949, 12576239326961652577], - [13378751877668829423, 8821335076667849619, 8787507195664458069, 8033428383364368883], - [14859204728026468678, 67528639960702832, 12174200483518178527, 14324674266854914755], - [9830165552717527013, 2321461270838214863, 9268724714979319202, 9904762657753448069], - [14141058045407997705, 17031147612244105327, 12751542125666982456, 17817764425153554681], - [14795807291665277125, 12320949525745092193, 5617160704961099, 16219204181913320518], - [7773282231989156729, 13990108174498859083, 6307778800331536092, 5637115465294994933], - [3720582507396745477, 12235229471532413465, 2832424082557414313, 1295093033129086530], - [5238251184464937674, 2468597264523797445, 7200015202778095391, 6285172799678453354], - [14592230848145258634, 14635944054407782259, 16328656124118469880, 5673837317773168465], - [10220932976054066577, 587071736468910470, 18317195354162201630, 4442910666147223606], - [6686416988414600368, 14769819815353713716, 7130058524252605584, 9117426323287817862], - [9696785136959918927, 10735699192129851744, 4483660550392452518, 16920055661791281465], - [6465118959707729559, 15053655525644243783, 11077790678846863387, 377514359817848250] + [ + 18238935086181014750, + 12673103801320172126, + 1807450351340584945, + 4080587540382410469 + ], + [ + 3576906271507691924, + 15842010882262104289, + 1545568012269070598, + 15019610257262428212 + ], + [ + 16552529329663272195, + 70143638148036568, + 9441616425189858949, + 12576239326961652577 + ], + [ + 13378751877668829423, + 8821335076667849619, + 8787507195664458069, + 8033428383364368883 + ], + [ + 14859204728026468678, + 67528639960702832, + 12174200483518178527, + 14324674266854914755 + ], + [ + 9830165552717527013, + 2321461270838214863, + 9268724714979319202, + 9904762657753448069 + ], + [ + 14141058045407997705, + 17031147612244105327, + 12751542125666982456, + 17817764425153554681 + ], + [ + 14795807291665277125, + 12320949525745092193, + 5617160704961099, + 16219204181913320518 + ], + [ + 7773282231989156729, + 13990108174498859083, + 6307778800331536092, + 5637115465294994933 + ], + [ + 3720582507396745477, + 12235229471532413465, + 2832424082557414313, + 1295093033129086530 + ], + [ + 5238251184464937674, + 2468597264523797445, + 7200015202778095391, + 6285172799678453354 + ], + [ + 14592230848145258634, + 14635944054407782259, + 16328656124118469880, + 5673837317773168465 + ], + [ + 10220932976054066577, + 587071736468910470, + 18317195354162201630, + 4442910666147223606 + ], + [ + 6686416988414600368, + 14769819815353713716, + 7130058524252605584, + 9117426323287817862 + ], + [ + 9696785136959918927, + 10735699192129851744, + 4483660550392452518, + 16920055661791281465 + ], + [ + 6465118959707729559, + 15053655525644243783, + 11077790678846863387, + 377514359817848250 + ] ] } -} +} \ No newline at end of file diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_1_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_1_key.json index 60aaf6b4cb5..228a0e9fe92 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_1_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_1_key.json @@ -17,13 +17,27 @@ "domain_size": 1048576, "total_tables_len": 132096, "public_inputs_locations": [ - [0, 993345], - [1, 993345], - [2, 993345], - [3, 993345] + [ + 0, + 993345 + ], + [ + 1, + 993345 + ], + [ + 2, + 993345 + ], + [ + 3, + 993345 + ] ], "extra_constant_polys_for_selectors": 4, - "table_ids_column_idxes": [8], + "table_ids_column_idxes": [ + 8 + ], "quotient_degree": 8, "selectors_placement": { "Fork": { @@ -155,22 +169,102 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [5188923951567823784, 1839604164061896861, 3760614143058722712, 17614504340708244503], - [7889899638667026800, 14244435798393850379, 15230145556400915502, 12762495992738055897], - [1590798346328722678, 14143092007536417439, 10480901561038728792, 3201431705395147463], - [2780378477031897976, 11901528146276690135, 1343277030558816196, 6658753207411088573], - [11039463659901501365, 8235548863391687887, 1033553352576624721, 12882010447949399432], - [18078277235848158043, 14794319235551634496, 13982848369540832169, 11146980369941489422], - [5423143341883663864, 15258729611778297770, 7733187200367671156, 11434904591161598775], - [10914070908442174902, 8055525792807466851, 14391942428843610452, 11749906933466154458], - [14580351359387308464, 13254290427053014332, 7257863927775762043, 11078203905320069045], - [6123238811378029441, 11756658038961859601, 760000874907607862, 678236515728235822], - [15657816790157674514, 4104741954972330508, 4150394799973679527, 15124992265078810298], - [13825567788010925982, 636544017935987097, 2260460249587621344, 10354042489703999934], - [12710868603685796297, 91862114057079406, 5614554900380483346, 131393259919990755], - [13185811107579017595, 1006028503100864020, 2087984259170414019, 6445764843889735797], - [10414938568348349467, 15415934042755645234, 11692038010863343064, 2402843492027871760], - [17752536940710015241, 14329244239886245722, 16349180633511906354, 2663305413222761702] + [ + 5188923951567823784, + 1839604164061896861, + 3760614143058722712, + 17614504340708244503 + ], + [ + 7889899638667026800, + 14244435798393850379, + 15230145556400915502, + 12762495992738055897 + ], + [ + 1590798346328722678, + 14143092007536417439, + 10480901561038728792, + 3201431705395147463 + ], + [ + 2780378477031897976, + 11901528146276690135, + 1343277030558816196, + 6658753207411088573 + ], + [ + 11039463659901501365, + 8235548863391687887, + 1033553352576624721, + 12882010447949399432 + ], + [ + 18078277235848158043, + 14794319235551634496, + 13982848369540832169, + 11146980369941489422 + ], + [ + 5423143341883663864, + 15258729611778297770, + 7733187200367671156, + 11434904591161598775 + ], + [ + 10914070908442174902, + 8055525792807466851, + 14391942428843610452, + 11749906933466154458 + ], + [ + 14580351359387308464, + 13254290427053014332, + 7257863927775762043, + 11078203905320069045 + ], + [ + 6123238811378029441, + 11756658038961859601, + 760000874907607862, + 678236515728235822 + ], + [ + 15657816790157674514, + 4104741954972330508, + 4150394799973679527, + 15124992265078810298 + ], + [ + 13825567788010925982, + 636544017935987097, + 2260460249587621344, + 10354042489703999934 + ], + [ + 12710868603685796297, + 91862114057079406, + 5614554900380483346, + 131393259919990755 + ], + [ + 13185811107579017595, + 1006028503100864020, + 2087984259170414019, + 6445764843889735797 + ], + [ + 10414938568348349467, + 15415934042755645234, + 11692038010863343064, + 2402843492027871760 + ], + [ + 17752536940710015241, + 14329244239886245722, + 16349180633511906354, + 2663305413222761702 + ] ] } -} +} \ No newline at end of file diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_2_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_2_key.json index 898044175ed..7865e106454 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_2_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_2_key.json @@ -11,10 +11,22 @@ "domain_size": 1048576, "total_tables_len": 0, "public_inputs_locations": [ - [0, 0], - [1, 0], - [2, 0], - [3, 0] + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ] ], "extra_constant_polys_for_selectors": 4, "table_ids_column_idxes": [], @@ -149,22 +161,102 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [16110944391299715992, 6257581196984129533, 3238325178821009741, 2344850491864189019], - [9070724167014080545, 4270936005334206500, 14011092173278602876, 17233390044312666340], - [15882294806312417165, 4574813182503183418, 15374759504522847393, 12609068726586761599], - [5081359810005150600, 3073725930902770385, 12151383627606620216, 1678712612408922293], - [13389075440637154488, 1394733244174774927, 15897027408886080730, 8756205416909346149], - [9635595243774498130, 12944626865667316474, 11443383015868895087, 11271399114434241688], - [15730316965377191644, 9302195093067483199, 13013113029527355010, 16107136888029757437], - [4376996761649023946, 5151155327098069058, 5052643273518683586, 4214154406154441301], - [14323780220991293990, 8193587898306996901, 5671887774622993207, 9546628649033002185], - [16523271232278987128, 994857983084927437, 14501829109938165419, 9015660151307809950], - [1530238726285436995, 6261885523422263637, 11940153058268689285, 15737357444014615384], - [2670341602838046451, 10669331667080282584, 16656965855764533819, 13339778044433609883], - [17128805815986618686, 18194734266790270296, 5735422502154213482, 10164141197176685232], - [2629176720116777217, 6966722226648521547, 2937669813272776408, 2812827195714811672], - [6178870790111010071, 10834984121929556338, 2836091052290008872, 1311164878771236983], - [7411275786539821863, 3702190765468277039, 18130480549896087952, 5277641488054089382] + [ + 16110944391299715992, + 6257581196984129533, + 3238325178821009741, + 2344850491864189019 + ], + [ + 9070724167014080545, + 4270936005334206500, + 14011092173278602876, + 17233390044312666340 + ], + [ + 15882294806312417165, + 4574813182503183418, + 15374759504522847393, + 12609068726586761599 + ], + [ + 5081359810005150600, + 3073725930902770385, + 12151383627606620216, + 1678712612408922293 + ], + [ + 13389075440637154488, + 1394733244174774927, + 15897027408886080730, + 8756205416909346149 + ], + [ + 9635595243774498130, + 12944626865667316474, + 11443383015868895087, + 11271399114434241688 + ], + [ + 15730316965377191644, + 9302195093067483199, + 13013113029527355010, + 16107136888029757437 + ], + [ + 4376996761649023946, + 5151155327098069058, + 5052643273518683586, + 4214154406154441301 + ], + [ + 14323780220991293990, + 8193587898306996901, + 5671887774622993207, + 9546628649033002185 + ], + [ + 16523271232278987128, + 994857983084927437, + 14501829109938165419, + 9015660151307809950 + ], + [ + 1530238726285436995, + 6261885523422263637, + 11940153058268689285, + 15737357444014615384 + ], + [ + 2670341602838046451, + 10669331667080282584, + 16656965855764533819, + 13339778044433609883 + ], + [ + 17128805815986618686, + 18194734266790270296, + 5735422502154213482, + 10164141197176685232 + ], + [ + 2629176720116777217, + 6966722226648521547, + 2937669813272776408, + 2812827195714811672 + ], + [ + 6178870790111010071, + 10834984121929556338, + 2836091052290008872, + 1311164878771236983 + ], + [ + 7411275786539821863, + 3702190765468277039, + 18130480549896087952, + 5277641488054089382 + ] ] } -} +} \ No newline at end of file diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_3_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_3_key.json index 9952afac334..d117b3b0ade 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_3_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_3_key.json @@ -11,10 +11,22 @@ "domain_size": 1048576, "total_tables_len": 0, "public_inputs_locations": [ - [0, 0], - [1, 0], - [2, 0], - [3, 0] + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ] ], "extra_constant_polys_for_selectors": 4, "table_ids_column_idxes": [], @@ -149,22 +161,102 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [2692117301910616223, 11862373594405581684, 12092750955553531256, 5108545912057877223], - [13191057082261271313, 13461898869001565340, 3144977546711926190, 12887787173850649640], - [8723842528870621436, 9645915571392535116, 6025366220407814286, 4747467989456698429], - [7405718287975487752, 15471426320802247554, 8018397484818843188, 1076292840128333912], - [15567092204640112640, 13512378722158897717, 16839350703341635379, 6580006701757635256], - [478392572686859273, 1879898158113218624, 7956515309033309445, 15667184770862761054], - [4738701842169478640, 14432395387726327998, 14827473518830139511, 7026071202596813302], - [1832914181581899534, 12309614119776336180, 1786307750405330285, 9394109377731731297], - [11330017822804908986, 17965075245400465236, 178921019209832245, 9010774195056378656], - [10066603459136751242, 16922354046552351580, 1488715132336554574, 2488902959064634539], - [12764025501053651238, 10583029583148326399, 10919956138611547307, 193732647159610859], - [10812330075474661907, 11023893070918609227, 14153054852108697346, 3310659191720741717], - [12566885554555589997, 5264949142237538963, 10357889278039077105, 1693879812388879198], - [5143074524340781416, 1340176837904332618, 12593249647365922721, 16619880365401544994], - [8116207797925146203, 2436416957055038167, 1598938366845903588, 7153648406343743028], - [14400322751382246405, 4576201222988375875, 10482138496908129257, 1696076921104575474] + [ + 2692117301910616223, + 11862373594405581684, + 12092750955553531256, + 5108545912057877223 + ], + [ + 13191057082261271313, + 13461898869001565340, + 3144977546711926190, + 12887787173850649640 + ], + [ + 8723842528870621436, + 9645915571392535116, + 6025366220407814286, + 4747467989456698429 + ], + [ + 7405718287975487752, + 15471426320802247554, + 8018397484818843188, + 1076292840128333912 + ], + [ + 15567092204640112640, + 13512378722158897717, + 16839350703341635379, + 6580006701757635256 + ], + [ + 478392572686859273, + 1879898158113218624, + 7956515309033309445, + 15667184770862761054 + ], + [ + 4738701842169478640, + 14432395387726327998, + 14827473518830139511, + 7026071202596813302 + ], + [ + 1832914181581899534, + 12309614119776336180, + 1786307750405330285, + 9394109377731731297 + ], + [ + 11330017822804908986, + 17965075245400465236, + 178921019209832245, + 9010774195056378656 + ], + [ + 10066603459136751242, + 16922354046552351580, + 1488715132336554574, + 2488902959064634539 + ], + [ + 12764025501053651238, + 10583029583148326399, + 10919956138611547307, + 193732647159610859 + ], + [ + 10812330075474661907, + 11023893070918609227, + 14153054852108697346, + 3310659191720741717 + ], + [ + 12566885554555589997, + 5264949142237538963, + 10357889278039077105, + 1693879812388879198 + ], + [ + 5143074524340781416, + 1340176837904332618, + 12593249647365922721, + 16619880365401544994 + ], + [ + 8116207797925146203, + 2436416957055038167, + 1598938366845903588, + 7153648406343743028 + ], + [ + 14400322751382246405, + 4576201222988375875, + 10482138496908129257, + 1696076921104575474 + ] ] } -} +} \ No newline at end of file diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_4_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_4_key.json index acdefe7d1ae..e8b25fd5f24 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_4_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_4_key.json @@ -11,10 +11,22 @@ "domain_size": 1048576, "total_tables_len": 0, "public_inputs_locations": [ - [0, 0], - [1, 0], - [2, 0], - [3, 0] + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ] ], "extra_constant_polys_for_selectors": 4, "table_ids_column_idxes": [], @@ -149,22 +161,102 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [1866437491015022712, 11793636374252065717, 2771461065434523690, 14888818750197177871], - [13530099303626962147, 15053516955824087922, 12339234049539021204, 9708862473063699060], - [11432132052297230557, 6677170992284491097, 6366885341898621463, 8111143143511568092], - [9907106152447520228, 6682147062594018467, 10264912494418416112, 15503628246857005809], - [17195185271365515391, 13597952072744597251, 17744684609835730837, 2231158103010709548], - [14293262369681823328, 13130511952565359928, 10899311746723421149, 13247944667340766269], - [13892335977334728116, 8911034200951442707, 9940381085909975496, 2442123831058139778], - [6225220793196790211, 4712637343981148404, 17195066106455293379, 8613492331172308471], - [6909799331954538355, 10338179227896084459, 12127192147500716446, 17400998769923799388], - [16539422822493187900, 14101588151214983695, 13891327598256492007, 6120137922715167439], - [14993757510795074537, 2243361897978774751, 3014175478852553185, 1107614745766341650], - [13868198230244075748, 14568344587632252919, 18167720887640456957, 892660889500481924], - [17208474456800792292, 12638116024924785718, 17972572249167165358, 14432332670537563027], - [16794312278798106244, 18025850455584262724, 9034611355178459632, 4812066730993316535], - [9019282623207016172, 8465996543066345624, 11891692540217379621, 1309821012694343566], - [1009066940610956673, 6090643896458703235, 16512441752812232072, 14910610346758346291] + [ + 1866437491015022712, + 11793636374252065717, + 2771461065434523690, + 14888818750197177871 + ], + [ + 13530099303626962147, + 15053516955824087922, + 12339234049539021204, + 9708862473063699060 + ], + [ + 11432132052297230557, + 6677170992284491097, + 6366885341898621463, + 8111143143511568092 + ], + [ + 9907106152447520228, + 6682147062594018467, + 10264912494418416112, + 15503628246857005809 + ], + [ + 17195185271365515391, + 13597952072744597251, + 17744684609835730837, + 2231158103010709548 + ], + [ + 14293262369681823328, + 13130511952565359928, + 10899311746723421149, + 13247944667340766269 + ], + [ + 13892335977334728116, + 8911034200951442707, + 9940381085909975496, + 2442123831058139778 + ], + [ + 6225220793196790211, + 4712637343981148404, + 17195066106455293379, + 8613492331172308471 + ], + [ + 6909799331954538355, + 10338179227896084459, + 12127192147500716446, + 17400998769923799388 + ], + [ + 16539422822493187900, + 14101588151214983695, + 13891327598256492007, + 6120137922715167439 + ], + [ + 14993757510795074537, + 2243361897978774751, + 3014175478852553185, + 1107614745766341650 + ], + [ + 13868198230244075748, + 14568344587632252919, + 18167720887640456957, + 892660889500481924 + ], + [ + 17208474456800792292, + 12638116024924785718, + 17972572249167165358, + 14432332670537563027 + ], + [ + 16794312278798106244, + 18025850455584262724, + 9034611355178459632, + 4812066730993316535 + ], + [ + 9019282623207016172, + 8465996543066345624, + 11891692540217379621, + 1309821012694343566 + ], + [ + 1009066940610956673, + 6090643896458703235, + 16512441752812232072, + 14910610346758346291 + ] ] } -} +} \ No newline at end of file diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_5_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_5_key.json index a99ed59cff3..eb327eed3dd 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_5_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_5_key.json @@ -11,10 +11,22 @@ "domain_size": 1048576, "total_tables_len": 0, "public_inputs_locations": [ - [0, 0], - [1, 0], - [2, 0], - [3, 0] + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ] ], "extra_constant_polys_for_selectors": 4, "table_ids_column_idxes": [], @@ -149,22 +161,102 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [232279302667736671, 6726532338542220941, 13706010138770265797, 519282525097925002], - [1103871324670382881, 2908131767596043522, 1184743003960864148, 15387210180491180588], - [1835139914361735684, 16415559350382398669, 5395927063819619365, 11718217787759145490], - [16896753956696589678, 18311507677904418762, 3337753834358040142, 15261701009883534681], - [5146023192165443108, 6435094416669057886, 12102399260358768173, 11345203084302025912], - [12317726061088124860, 16542505080079874955, 14545249352878185130, 6198318878248226108], - [11741052063217712776, 6746988457930817443, 17049940702304400525, 664483646520961959], - [16848268934698055336, 15351522766275089309, 3303427044017225869, 8449387423137144953], - [3539943683510232958, 9977830546935578537, 14361154867928067261, 18078907485257653963], - [9615907517852235498, 4547984845394069068, 1881087510325623488, 8387507487023822878], - [4914791735672339571, 2927646189877435594, 8101987065768319522, 11220909861720631116], - [12470368453784044761, 11566657313839792570, 8916441472890022081, 2460153038592468216], - [11111897832305454757, 16681613892385931738, 11167212997482997212, 12907774125001975406], - [12356110082580425887, 2082693370541797346, 6346996203748293162, 13460912313801928], - [17583700199336254135, 3213348565987316027, 6373106379194368913, 3269747122288195701], - [6235590918094214281, 6461943464583505547, 16473683422501694355, 5297565830886346313] + [ + 232279302667736671, + 6726532338542220941, + 13706010138770265797, + 519282525097925002 + ], + [ + 1103871324670382881, + 2908131767596043522, + 1184743003960864148, + 15387210180491180588 + ], + [ + 1835139914361735684, + 16415559350382398669, + 5395927063819619365, + 11718217787759145490 + ], + [ + 16896753956696589678, + 18311507677904418762, + 3337753834358040142, + 15261701009883534681 + ], + [ + 5146023192165443108, + 6435094416669057886, + 12102399260358768173, + 11345203084302025912 + ], + [ + 12317726061088124860, + 16542505080079874955, + 14545249352878185130, + 6198318878248226108 + ], + [ + 11741052063217712776, + 6746988457930817443, + 17049940702304400525, + 664483646520961959 + ], + [ + 16848268934698055336, + 15351522766275089309, + 3303427044017225869, + 8449387423137144953 + ], + [ + 3539943683510232958, + 9977830546935578537, + 14361154867928067261, + 18078907485257653963 + ], + [ + 9615907517852235498, + 4547984845394069068, + 1881087510325623488, + 8387507487023822878 + ], + [ + 4914791735672339571, + 2927646189877435594, + 8101987065768319522, + 11220909861720631116 + ], + [ + 12470368453784044761, + 11566657313839792570, + 8916441472890022081, + 2460153038592468216 + ], + [ + 11111897832305454757, + 16681613892385931738, + 11167212997482997212, + 12907774125001975406 + ], + [ + 12356110082580425887, + 2082693370541797346, + 6346996203748293162, + 13460912313801928 + ], + [ + 17583700199336254135, + 3213348565987316027, + 6373106379194368913, + 3269747122288195701 + ], + [ + 6235590918094214281, + 6461943464583505547, + 16473683422501694355, + 5297565830886346313 + ] ] } -} +} \ No newline at end of file diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_6_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_6_key.json index ef04a6dabff..fcfc585f123 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_6_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_6_key.json @@ -11,10 +11,22 @@ "domain_size": 1048576, "total_tables_len": 0, "public_inputs_locations": [ - [0, 0], - [1, 0], - [2, 0], - [3, 0] + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ] ], "extra_constant_polys_for_selectors": 4, "table_ids_column_idxes": [], @@ -149,22 +161,102 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [1255474782692205032, 16087518293005221749, 16120433120690725791, 13557959444835590881], - [16027822192018731390, 8319846902607826113, 11762447400221114192, 8443748859905122045], - [14217444156040642299, 11667925428120549150, 8770581120601633705, 13711220870168951809], - [7514565357525361228, 17561543150251615679, 3154909983341532730, 12214081580202496570], - [12103863316007597160, 3323941154151772169, 3020605753288032659, 13719536383629040140], - [5692457694309768505, 2819674835255412986, 762859630950656893, 8641902833919071345], - [17873529730032253633, 7201386304292118615, 11501182428688354869, 484571398574807569], - [14885817894337856307, 6275077850611154396, 11258872656630844770, 3539429443980133849], - [15063387858351738900, 4885324227361507661, 11843813664335157415, 12108718617943024927], - [5899829642851923448, 12815217964596374101, 5258792099613493578, 3492836714462054208], - [9767772893712446038, 9516937526725710003, 533138889369363889, 1960629141548643757], - [5192250756718034923, 6205844331296290914, 16547640844499692480, 13348222714661177711], - [6744522815256114347, 9303892902465539007, 14440545534790765924, 7421221195917428336], - [354635080958416363, 15720855927808633651, 885375182959288083, 10459197185009191208], - [3742508711441291317, 7193882150736289342, 17760334643806787982, 8575009527221694930], - [18274184058397159114, 5200115837479315537, 2808181877606937346, 17946239285125192080] + [ + 1255474782692205032, + 16087518293005221749, + 16120433120690725791, + 13557959444835590881 + ], + [ + 16027822192018731390, + 8319846902607826113, + 11762447400221114192, + 8443748859905122045 + ], + [ + 14217444156040642299, + 11667925428120549150, + 8770581120601633705, + 13711220870168951809 + ], + [ + 7514565357525361228, + 17561543150251615679, + 3154909983341532730, + 12214081580202496570 + ], + [ + 12103863316007597160, + 3323941154151772169, + 3020605753288032659, + 13719536383629040140 + ], + [ + 5692457694309768505, + 2819674835255412986, + 762859630950656893, + 8641902833919071345 + ], + [ + 17873529730032253633, + 7201386304292118615, + 11501182428688354869, + 484571398574807569 + ], + [ + 14885817894337856307, + 6275077850611154396, + 11258872656630844770, + 3539429443980133849 + ], + [ + 15063387858351738900, + 4885324227361507661, + 11843813664335157415, + 12108718617943024927 + ], + [ + 5899829642851923448, + 12815217964596374101, + 5258792099613493578, + 3492836714462054208 + ], + [ + 9767772893712446038, + 9516937526725710003, + 533138889369363889, + 1960629141548643757 + ], + [ + 5192250756718034923, + 6205844331296290914, + 16547640844499692480, + 13348222714661177711 + ], + [ + 6744522815256114347, + 9303892902465539007, + 14440545534790765924, + 7421221195917428336 + ], + [ + 354635080958416363, + 15720855927808633651, + 885375182959288083, + 10459197185009191208 + ], + [ + 3742508711441291317, + 7193882150736289342, + 17760334643806787982, + 8575009527221694930 + ], + [ + 18274184058397159114, + 5200115837479315537, + 2808181877606937346, + 17946239285125192080 + ] ] } -} +} \ No newline at end of file diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_7_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_7_key.json index 5998d88228b..1ab34e32a4f 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_7_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_7_key.json @@ -11,10 +11,22 @@ "domain_size": 1048576, "total_tables_len": 0, "public_inputs_locations": [ - [0, 0], - [1, 0], - [2, 0], - [3, 0] + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ] ], "extra_constant_polys_for_selectors": 4, "table_ids_column_idxes": [], @@ -149,22 +161,102 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [15278222994235313807, 4647505541828109982, 11601404244072907522, 7495301362149670205], - [2294446454282967643, 10852196555067806436, 4676542110718751671, 3650676510146080911], - [10036426682390389619, 15410534417517518379, 411748073143090898, 1725429274294449186], - [10773139363930294963, 14784009814759595952, 4523828744129500622, 14635565308295099932], - [11532260655451503527, 2889442075290561580, 7947536971337998641, 9006850837384135593], - [18268520902352688907, 17460815273130161567, 5448683527846534560, 16860223759333541117], - [8586752129609394016, 17056726335999361043, 13247832408825538184, 10865075704067323346], - [4810539255563012829, 3494541358111189199, 7443746985302784339, 1488118652209005646], - [13632843557374648899, 11530787504038845899, 8016420701220086345, 2100494706314940875], - [12565007434827640436, 2122488373912552994, 7924677296826511433, 4337201927455963919], - [9121346173552113908, 8257616625819727572, 1352571964050839537, 1245015447612032209], - [5550331618999138407, 15197131088442812142, 17401528975137618793, 7876503578710888777], - [10581471072917622415, 11057977535360446233, 4745650017347491925, 16374614618217057484], - [15877663159259953297, 13196700387970223678, 987069829507588466, 1239752961099076877], - [1564056242532596441, 8225585740585112689, 8013357208824893542, 8291061420556283364], - [10408011788640723232, 11035192730597666502, 7808927156371652130, 8373070655798680509] + [ + 15278222994235313807, + 4647505541828109982, + 11601404244072907522, + 7495301362149670205 + ], + [ + 2294446454282967643, + 10852196555067806436, + 4676542110718751671, + 3650676510146080911 + ], + [ + 10036426682390389619, + 15410534417517518379, + 411748073143090898, + 1725429274294449186 + ], + [ + 10773139363930294963, + 14784009814759595952, + 4523828744129500622, + 14635565308295099932 + ], + [ + 11532260655451503527, + 2889442075290561580, + 7947536971337998641, + 9006850837384135593 + ], + [ + 18268520902352688907, + 17460815273130161567, + 5448683527846534560, + 16860223759333541117 + ], + [ + 8586752129609394016, + 17056726335999361043, + 13247832408825538184, + 10865075704067323346 + ], + [ + 4810539255563012829, + 3494541358111189199, + 7443746985302784339, + 1488118652209005646 + ], + [ + 13632843557374648899, + 11530787504038845899, + 8016420701220086345, + 2100494706314940875 + ], + [ + 12565007434827640436, + 2122488373912552994, + 7924677296826511433, + 4337201927455963919 + ], + [ + 9121346173552113908, + 8257616625819727572, + 1352571964050839537, + 1245015447612032209 + ], + [ + 5550331618999138407, + 15197131088442812142, + 17401528975137618793, + 7876503578710888777 + ], + [ + 10581471072917622415, + 11057977535360446233, + 4745650017347491925, + 16374614618217057484 + ], + [ + 15877663159259953297, + 13196700387970223678, + 987069829507588466, + 1239752961099076877 + ], + [ + 1564056242532596441, + 8225585740585112689, + 8013357208824893542, + 8291061420556283364 + ], + [ + 10408011788640723232, + 11035192730597666502, + 7808927156371652130, + 8373070655798680509 + ] ] } -} +} \ No newline at end of file diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_8_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_8_key.json index 51ed882ef0e..53184d3b764 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_8_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_8_key.json @@ -11,10 +11,22 @@ "domain_size": 1048576, "total_tables_len": 0, "public_inputs_locations": [ - [0, 0], - [1, 0], - [2, 0], - [3, 0] + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ] ], "extra_constant_polys_for_selectors": 4, "table_ids_column_idxes": [], @@ -149,22 +161,102 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [6606882135817124908, 870347107746733688, 12589677233751162485, 589161009871845644], - [2653237880188520795, 5593713591941028430, 14924807074602279493, 7403178895756596709], - [4770385125899202728, 16848765286027915692, 7130735721393145418, 13542558858028383026], - [10198382868561538358, 11182212222601267089, 2158487448188796066, 7515784380092212678], - [18043800703311929788, 12605295159363639520, 16963777812872271598, 13934310487890398001], - [17306728193061605292, 6162556196186301425, 15123250614620584121, 7156136428077702076], - [3239169487219227705, 4415189033224694015, 10092040104298268727, 3953865385297495928], - [13842490303827572248, 8581552410557417158, 6306820342544224802, 1525290694317383658], - [16571790197298227277, 273370441868121439, 7446891486292543124, 5407600836394474442], - [11518012136298307119, 15035338047379067034, 11014561672957925556, 9225054298465248935], - [11950255612043468638, 10166628395020495040, 5673010277307553197, 3641423295115612757], - [1072894636907573868, 10523520096472094653, 4897453347544558657, 3772162500249343132], - [17527297802619704973, 16260964196666506939, 7653109999731571152, 15253570761269944834], - [16258769312952303884, 7720171109291562352, 11124452352545828178, 16830247676911180779], - [5288712429506529884, 13145012711898589816, 11490757447230521395, 5486824582454772190], - [16641639521175638360, 5677946044429642761, 12635856058275795326, 12340020456497165526] + [ + 6606882135817124908, + 870347107746733688, + 12589677233751162485, + 589161009871845644 + ], + [ + 2653237880188520795, + 5593713591941028430, + 14924807074602279493, + 7403178895756596709 + ], + [ + 4770385125899202728, + 16848765286027915692, + 7130735721393145418, + 13542558858028383026 + ], + [ + 10198382868561538358, + 11182212222601267089, + 2158487448188796066, + 7515784380092212678 + ], + [ + 18043800703311929788, + 12605295159363639520, + 16963777812872271598, + 13934310487890398001 + ], + [ + 17306728193061605292, + 6162556196186301425, + 15123250614620584121, + 7156136428077702076 + ], + [ + 3239169487219227705, + 4415189033224694015, + 10092040104298268727, + 3953865385297495928 + ], + [ + 13842490303827572248, + 8581552410557417158, + 6306820342544224802, + 1525290694317383658 + ], + [ + 16571790197298227277, + 273370441868121439, + 7446891486292543124, + 5407600836394474442 + ], + [ + 11518012136298307119, + 15035338047379067034, + 11014561672957925556, + 9225054298465248935 + ], + [ + 11950255612043468638, + 10166628395020495040, + 5673010277307553197, + 3641423295115612757 + ], + [ + 1072894636907573868, + 10523520096472094653, + 4897453347544558657, + 3772162500249343132 + ], + [ + 17527297802619704973, + 16260964196666506939, + 7653109999731571152, + 15253570761269944834 + ], + [ + 16258769312952303884, + 7720171109291562352, + 11124452352545828178, + 16830247676911180779 + ], + [ + 5288712429506529884, + 13145012711898589816, + 11490757447230521395, + 5486824582454772190 + ], + [ + 16641639521175638360, + 5677946044429642761, + 12635856058275795326, + 12340020456497165526 + ] ] } -} +} \ No newline at end of file diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_9_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_9_key.json index 6e25abdddcb..88a48a0bf91 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_leaf_9_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_leaf_9_key.json @@ -11,10 +11,22 @@ "domain_size": 1048576, "total_tables_len": 0, "public_inputs_locations": [ - [0, 0], - [1, 0], - [2, 0], - [3, 0] + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ] ], "extra_constant_polys_for_selectors": 4, "table_ids_column_idxes": [], @@ -149,22 +161,102 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [1966688024276265163, 1600999376577297955, 9979283765343242481, 10853158383047279373], - [9617115799973676416, 1436692352837490106, 16621229234254045212, 17649471158808930813], - [10598997254576197179, 6191890180530301291, 485325547092687385, 17866822217569560015], - [17529069959174406385, 1822730242748867421, 10607268541276403219, 10369730414641253572], - [9559948904275293033, 271393452476373483, 10294727560225979037, 13356808215545342022], - [3330505141292591439, 14604912162246460234, 13747490798131143365, 9686392462153294316], - [1308334442155460802, 8411248012498029090, 1727122243552046217, 1891983150748887801], - [13628794098518472387, 9775581327398472118, 10952798350389999267, 3791915693702783252], - [5150729729317744106, 15268081752408833175, 11313693800895322733, 7645258866415024451], - [4492405884498997751, 1462600329700613046, 4494587633368393420, 13835293745083269390], - [16786735218378765255, 13489016634632055711, 780880140016370703, 1632417931049291348], - [15419598237747857050, 17379853454459968259, 1377883698753277247, 17090368996477921986], - [5453156352466670830, 7921752778252981104, 15901693682958424795, 7759079127470880643], - [13945928657949258565, 10630556046992331796, 5947903586431352857, 13970701039664769056], - [11402992940883704805, 14254801701412570920, 16823021910688666954, 16435058721419375579], - [1434897606543124534, 7242596307416400095, 1722748060955112357, 1262887759339605102] + [ + 1966688024276265163, + 1600999376577297955, + 9979283765343242481, + 10853158383047279373 + ], + [ + 9617115799973676416, + 1436692352837490106, + 16621229234254045212, + 17649471158808930813 + ], + [ + 10598997254576197179, + 6191890180530301291, + 485325547092687385, + 17866822217569560015 + ], + [ + 17529069959174406385, + 1822730242748867421, + 10607268541276403219, + 10369730414641253572 + ], + [ + 9559948904275293033, + 271393452476373483, + 10294727560225979037, + 13356808215545342022 + ], + [ + 3330505141292591439, + 14604912162246460234, + 13747490798131143365, + 9686392462153294316 + ], + [ + 1308334442155460802, + 8411248012498029090, + 1727122243552046217, + 1891983150748887801 + ], + [ + 13628794098518472387, + 9775581327398472118, + 10952798350389999267, + 3791915693702783252 + ], + [ + 5150729729317744106, + 15268081752408833175, + 11313693800895322733, + 7645258866415024451 + ], + [ + 4492405884498997751, + 1462600329700613046, + 4494587633368393420, + 13835293745083269390 + ], + [ + 16786735218378765255, + 13489016634632055711, + 780880140016370703, + 1632417931049291348 + ], + [ + 15419598237747857050, + 17379853454459968259, + 1377883698753277247, + 17090368996477921986 + ], + [ + 5453156352466670830, + 7921752778252981104, + 15901693682958424795, + 7759079127470880643 + ], + [ + 13945928657949258565, + 10630556046992331796, + 5947903586431352857, + 13970701039664769056 + ], + [ + 11402992940883704805, + 14254801701412570920, + 16823021910688666954, + 16435058721419375579 + ], + [ + 1434897606543124534, + 7242596307416400095, + 1722748060955112357, + 1262887759339605102 + ] ] } -} +} \ No newline at end of file diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_node_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_node_key.json index 898044175ed..7865e106454 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_node_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_node_key.json @@ -11,10 +11,22 @@ "domain_size": 1048576, "total_tables_len": 0, "public_inputs_locations": [ - [0, 0], - [1, 0], - [2, 0], - [3, 0] + [ + 0, + 0 + ], + [ + 1, + 0 + ], + [ + 2, + 0 + ], + [ + 3, + 0 + ] ], "extra_constant_polys_for_selectors": 4, "table_ids_column_idxes": [], @@ -149,22 +161,102 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [16110944391299715992, 6257581196984129533, 3238325178821009741, 2344850491864189019], - [9070724167014080545, 4270936005334206500, 14011092173278602876, 17233390044312666340], - [15882294806312417165, 4574813182503183418, 15374759504522847393, 12609068726586761599], - [5081359810005150600, 3073725930902770385, 12151383627606620216, 1678712612408922293], - [13389075440637154488, 1394733244174774927, 15897027408886080730, 8756205416909346149], - [9635595243774498130, 12944626865667316474, 11443383015868895087, 11271399114434241688], - [15730316965377191644, 9302195093067483199, 13013113029527355010, 16107136888029757437], - [4376996761649023946, 5151155327098069058, 5052643273518683586, 4214154406154441301], - [14323780220991293990, 8193587898306996901, 5671887774622993207, 9546628649033002185], - [16523271232278987128, 994857983084927437, 14501829109938165419, 9015660151307809950], - [1530238726285436995, 6261885523422263637, 11940153058268689285, 15737357444014615384], - [2670341602838046451, 10669331667080282584, 16656965855764533819, 13339778044433609883], - [17128805815986618686, 18194734266790270296, 5735422502154213482, 10164141197176685232], - [2629176720116777217, 6966722226648521547, 2937669813272776408, 2812827195714811672], - [6178870790111010071, 10834984121929556338, 2836091052290008872, 1311164878771236983], - [7411275786539821863, 3702190765468277039, 18130480549896087952, 5277641488054089382] + [ + 16110944391299715992, + 6257581196984129533, + 3238325178821009741, + 2344850491864189019 + ], + [ + 9070724167014080545, + 4270936005334206500, + 14011092173278602876, + 17233390044312666340 + ], + [ + 15882294806312417165, + 4574813182503183418, + 15374759504522847393, + 12609068726586761599 + ], + [ + 5081359810005150600, + 3073725930902770385, + 12151383627606620216, + 1678712612408922293 + ], + [ + 13389075440637154488, + 1394733244174774927, + 15897027408886080730, + 8756205416909346149 + ], + [ + 9635595243774498130, + 12944626865667316474, + 11443383015868895087, + 11271399114434241688 + ], + [ + 15730316965377191644, + 9302195093067483199, + 13013113029527355010, + 16107136888029757437 + ], + [ + 4376996761649023946, + 5151155327098069058, + 5052643273518683586, + 4214154406154441301 + ], + [ + 14323780220991293990, + 8193587898306996901, + 5671887774622993207, + 9546628649033002185 + ], + [ + 16523271232278987128, + 994857983084927437, + 14501829109938165419, + 9015660151307809950 + ], + [ + 1530238726285436995, + 6261885523422263637, + 11940153058268689285, + 15737357444014615384 + ], + [ + 2670341602838046451, + 10669331667080282584, + 16656965855764533819, + 13339778044433609883 + ], + [ + 17128805815986618686, + 18194734266790270296, + 5735422502154213482, + 10164141197176685232 + ], + [ + 2629176720116777217, + 6966722226648521547, + 2937669813272776408, + 2812827195714811672 + ], + [ + 6178870790111010071, + 10834984121929556338, + 2836091052290008872, + 1311164878771236983 + ], + [ + 7411275786539821863, + 3702190765468277039, + 18130480549896087952, + 5277641488054089382 + ] ] } -} +} \ No newline at end of file diff --git a/prover/vk_setup_data_generator_server_fri/data/verification_scheduler_key.json b/prover/vk_setup_data_generator_server_fri/data/verification_scheduler_key.json index 47aeb8dbf4f..f73530a2ca1 100644 --- a/prover/vk_setup_data_generator_server_fri/data/verification_scheduler_key.json +++ b/prover/vk_setup_data_generator_server_fri/data/verification_scheduler_key.json @@ -17,13 +17,27 @@ "domain_size": 1048576, "total_tables_len": 132096, "public_inputs_locations": [ - [0, 993345], - [1, 993345], - [2, 993345], - [3, 993345] + [ + 0, + 993345 + ], + [ + 1, + 993345 + ], + [ + 2, + 993345 + ], + [ + 3, + 993345 + ] ], "extra_constant_polys_for_selectors": 4, - "table_ids_column_idxes": [8], + "table_ids_column_idxes": [ + 8 + ], "quotient_degree": 8, "selectors_placement": { "Fork": { @@ -155,22 +169,102 @@ "cap_size": 16 }, "setup_merkle_tree_cap": [ - [15230555879575926816, 8670948681878777794, 767116401361787080, 13808751382541908272], - [1220486015450063297, 9567900108378427313, 18210974256257044632, 18338726330920132716], - [7568154221767192295, 11691578057855133612, 9987210827513697170, 17019942866370544662], - [14102673551475852761, 3839757807646647049, 8317169401280108378, 14477318175428765566], - [10669246787368115713, 11986124114638697341, 373240888095551057, 10600874540100090281], - [1967433817606548880, 1252531621216687635, 14092128528722989126, 15316007954882781751], - [5731133612849813361, 9439573956187051534, 15220234372923263193, 9871593147214385018], - [5432497552013782457, 6217935098775351854, 10788625265296640732, 7626134139872594266], - [16209439837876908945, 16958705495955599782, 2620710932184338631, 13207816187542048405], - [11540918781414391435, 13215620469361541671, 7261198944216226328, 14101141177393020403], - [10951103916546600353, 16291916249083597787, 8020395928888095904, 14831509381332343931], - [14614496581821229034, 570029684825245175, 11368483572681932607, 17857699424461379920], - [10549396205597068517, 16251363364669954894, 5619914240250798106, 15384760685177493623], - [6443594760777705854, 4350415958090847717, 7924647710631862693, 1595589969968983394], - [1575322136978699734, 1714883637605030004, 1403876268493429570, 5816075577953274504], - [1910730620955478970, 10199274156501303143, 8240588740333284151, 7977626984796160665] + [ + 15230555879575926816, + 8670948681878777794, + 767116401361787080, + 13808751382541908272 + ], + [ + 1220486015450063297, + 9567900108378427313, + 18210974256257044632, + 18338726330920132716 + ], + [ + 7568154221767192295, + 11691578057855133612, + 9987210827513697170, + 17019942866370544662 + ], + [ + 14102673551475852761, + 3839757807646647049, + 8317169401280108378, + 14477318175428765566 + ], + [ + 10669246787368115713, + 11986124114638697341, + 373240888095551057, + 10600874540100090281 + ], + [ + 1967433817606548880, + 1252531621216687635, + 14092128528722989126, + 15316007954882781751 + ], + [ + 5731133612849813361, + 9439573956187051534, + 15220234372923263193, + 9871593147214385018 + ], + [ + 5432497552013782457, + 6217935098775351854, + 10788625265296640732, + 7626134139872594266 + ], + [ + 16209439837876908945, + 16958705495955599782, + 2620710932184338631, + 13207816187542048405 + ], + [ + 11540918781414391435, + 13215620469361541671, + 7261198944216226328, + 14101141177393020403 + ], + [ + 10951103916546600353, + 16291916249083597787, + 8020395928888095904, + 14831509381332343931 + ], + [ + 14614496581821229034, + 570029684825245175, + 11368483572681932607, + 17857699424461379920 + ], + [ + 10549396205597068517, + 16251363364669954894, + 5619914240250798106, + 15384760685177493623 + ], + [ + 6443594760777705854, + 4350415958090847717, + 7924647710631862693, + 1595589969968983394 + ], + [ + 1575322136978699734, + 1714883637605030004, + 1403876268493429570, + 5816075577953274504 + ], + [ + 1910730620955478970, + 10199274156501303143, + 8240588740333284151, + 7977626984796160665 + ] ] } -} +} \ No newline at end of file diff --git a/renovate.json b/renovate.json index d98e5239274..055bc342580 100644 --- a/renovate.json +++ b/renovate.json @@ -1,6 +1,11 @@ { "enabled": false, - "extends": ["config:base", "helpers:pinGitHubActionDigests"], - "enabledManagers": ["github-actions"], + "extends": [ + "config:base", + "helpers:pinGitHubActionDigests" + ], + "enabledManagers": [ + "github-actions" + ], "prCreation": "immediate" } diff --git a/sdk/zksync-rs/src/ethereum/DepositERC20GasLimit.json b/sdk/zksync-rs/src/ethereum/DepositERC20GasLimit.json index 8116e4410a5..57864f93317 100644 --- a/sdk/zksync-rs/src/ethereum/DepositERC20GasLimit.json +++ b/sdk/zksync-rs/src/ethereum/DepositERC20GasLimit.json @@ -1,42 +1,42 @@ { - "0x0000000000095413afc295d19edeb1ad7b71c952": 140000, - "0xeb4c2781e4eba804ce9a9803c67d0893436bb27d": 160000, - "0xbbbbca6a901c926f240b89eacb641d8aec7aeafd": 140000, - "0xb64ef51c888972c908cfacf59b47c1afbc0ab8ac": 140000, - "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984": 150000, - "0x9ba00d6856a4edf4665bca2c2309936572473b7e": 270000, - "0x8daebade922df735c38c80c7ebd708af50815faa": 140000, - "0x0d8775f648430679a709e98d2b0cb6250d2887ef": 140000, - "0xdac17f958d2ee523a2206206994597c13d831ec7": 140000, - "0x6de037ef9ad2725eb40118bb1702ebb27e4aeb24": 150000, - "0x056fd409e1d7a124bd7017459dfea2f387b6d5cd": 180000, - "0x0f5d2fb29fb7d3cfee444a200298f468908cc942": 140000, - "0x514910771af9ca656af840dff83e8264ecf986ca": 140000, - "0x1985365e9f78359a9b6ad760e32412f4a445e862": 180000, - "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599": 140000, - "0xe41d2489571d322189246dafa5ebde1f4699f498": 140000, - "0x6b175474e89094c44da98b954eedeac495271d0f": 140000, - "0xaaaebe6fe48e54f431b0c390cfaf0b017d09d42d": 150000, - "0x2b591e99afe9f32eaa6214f7b7629768c40eeb39": 140000, - "0x65ece136b89ebaa72a7f7aa815674946e44ca3f9": 140000, - "0x0000000000085d4780b73119b644ae5ecd22b376": 150000, - "0xdb25f211ab05b1c97d595516f45794528a807ad8": 180000, - "0x408e41876cccdc0f92210600ef50372656052a38": 140000, - "0x15a2b3cfafd696e1c783fe99eed168b78a3a371e": 160000, - "0x38e4adb44ef08f22f5b5b76a8f0c2d0dcbe7dca1": 160000, - "0x3108ccfd96816f9e663baa0e8c5951d229e8c6da": 140000, - "0x56d811088235f11c8920698a204a5010a788f4b3": 240000, - "0x57ab1ec28d129707052df4df418d58a2d46d5f51": 220000, - "0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2": 140000, - "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48": 150000, - "0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f": 200000, - "0x744d70fdbe2ba4cf95131626614a1763df805b9e": 230000, - "0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e": 140000, - "0x4c7065bca76fe44afb0d16c2441b1e6e163354e2": 250000, - "0xdd974d5c2e2928dea5f71b9825b8b646686bd200": 140000, - "0x80fb784b7ed66730e8b1dbd9820afd29931aab03": 140000, - "0xd56dac73a4d6766464b38ec6d91eb45ce7457c44": 140000, - "0x4fabb145d64652a948d72533023f6e7a623c7c53": 150000, - "0x38a2fdc11f526ddd5a607c1f251c065f40fbf2f7": 140000, - "0x7dd9c5cba05e151c895fde1cf355c9a1d5da6429": 140000 + "0x0000000000095413afc295d19edeb1ad7b71c952": 140000, + "0xeb4c2781e4eba804ce9a9803c67d0893436bb27d": 160000, + "0xbbbbca6a901c926f240b89eacb641d8aec7aeafd": 140000, + "0xb64ef51c888972c908cfacf59b47c1afbc0ab8ac": 140000, + "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984": 150000, + "0x9ba00d6856a4edf4665bca2c2309936572473b7e": 270000, + "0x8daebade922df735c38c80c7ebd708af50815faa": 140000, + "0x0d8775f648430679a709e98d2b0cb6250d2887ef": 140000, + "0xdac17f958d2ee523a2206206994597c13d831ec7": 140000, + "0x6de037ef9ad2725eb40118bb1702ebb27e4aeb24": 150000, + "0x056fd409e1d7a124bd7017459dfea2f387b6d5cd": 180000, + "0x0f5d2fb29fb7d3cfee444a200298f468908cc942": 140000, + "0x514910771af9ca656af840dff83e8264ecf986ca": 140000, + "0x1985365e9f78359a9b6ad760e32412f4a445e862": 180000, + "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599": 140000, + "0xe41d2489571d322189246dafa5ebde1f4699f498": 140000, + "0x6b175474e89094c44da98b954eedeac495271d0f": 140000, + "0xaaaebe6fe48e54f431b0c390cfaf0b017d09d42d": 150000, + "0x2b591e99afe9f32eaa6214f7b7629768c40eeb39": 140000, + "0x65ece136b89ebaa72a7f7aa815674946e44ca3f9": 140000, + "0x0000000000085d4780b73119b644ae5ecd22b376": 150000, + "0xdb25f211ab05b1c97d595516f45794528a807ad8": 180000, + "0x408e41876cccdc0f92210600ef50372656052a38": 140000, + "0x15a2b3cfafd696e1c783fe99eed168b78a3a371e": 160000, + "0x38e4adb44ef08f22f5b5b76a8f0c2d0dcbe7dca1": 160000, + "0x3108ccfd96816f9e663baa0e8c5951d229e8c6da": 140000, + "0x56d811088235f11c8920698a204a5010a788f4b3": 240000, + "0x57ab1ec28d129707052df4df418d58a2d46d5f51": 220000, + "0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2": 140000, + "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48": 150000, + "0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f": 200000, + "0x744d70fdbe2ba4cf95131626614a1763df805b9e": 230000, + "0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e": 140000, + "0x4c7065bca76fe44afb0d16c2441b1e6e163354e2": 250000, + "0xdd974d5c2e2928dea5f71b9825b8b646686bd200": 140000, + "0x80fb784b7ed66730e8b1dbd9820afd29931aab03": 140000, + "0xd56dac73a4d6766464b38ec6d91eb45ce7457c44": 140000, + "0x4fabb145d64652a948d72533023f6e7a623c7c53": 150000, + "0x38a2fdc11f526ddd5a607c1f251c065f40fbf2f7": 140000, + "0x7dd9c5cba05e151c895fde1cf355c9a1d5da6429": 140000 } diff --git a/sdk/zksync-web3.js/abi/IERC1271.json b/sdk/zksync-web3.js/abi/IERC1271.json index c7b4b514a4a..5e153118a2a 100644 --- a/sdk/zksync-web3.js/abi/IERC1271.json +++ b/sdk/zksync-web3.js/abi/IERC1271.json @@ -1,28 +1,28 @@ { - "abi": [ - { - "inputs": [ + "abi": [ { - "internalType": "bytes32", - "name": "hash", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "signature", - "type": "bytes" - } - ], - "name": "isValidSignature", - "outputs": [ - { - "internalType": "bytes4", - "name": "magicValue", - "type": "bytes4" + "inputs": [ + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "isValidSignature", + "outputs": [ + { + "internalType": "bytes4", + "name": "magicValue", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function" } - ], - "stateMutability": "view", - "type": "function" - } - ] -} + ] +} \ No newline at end of file diff --git a/sdk/zksync-web3.js/tsconfig.json b/sdk/zksync-web3.js/tsconfig.json index e319b616776..322b2cd47e0 100644 --- a/sdk/zksync-web3.js/tsconfig.json +++ b/sdk/zksync-web3.js/tsconfig.json @@ -12,5 +12,7 @@ "noImplicitOverride": true }, - "files": ["./src/index.ts"] + "files": [ + "./src/index.ts" + ] } From 2639834d590b07f00996444ca874aa0603f98cd6 Mon Sep 17 00:00:00 2001 From: Bence Haromi Date: Wed, 25 Oct 2023 13:36:17 +0100 Subject: [PATCH 046/108] Revert "fmt: json, yaml extensions added to prettier" This reverts commit f802bf370c0d0205ffc1f51f4b867f7e672ae795. --- etc/prettier-config/json.js | 6 ------ etc/prettier-config/yaml.js | 4 ---- infrastructure/zk/src/fmt.ts | 2 +- 3 files changed, 1 insertion(+), 11 deletions(-) delete mode 100644 etc/prettier-config/json.js delete mode 100644 etc/prettier-config/yaml.js diff --git a/etc/prettier-config/json.js b/etc/prettier-config/json.js deleted file mode 100644 index 3098dcb47d9..00000000000 --- a/etc/prettier-config/json.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - "tabWidth": 2, - "printWidth": 120, - "bracketSpacing": true - }; - \ No newline at end of file diff --git a/etc/prettier-config/yaml.js b/etc/prettier-config/yaml.js deleted file mode 100644 index 2b9a2d0eb13..00000000000 --- a/etc/prettier-config/yaml.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - "tabWidth": 2, - "printWidth": 120 -}; diff --git a/infrastructure/zk/src/fmt.ts b/infrastructure/zk/src/fmt.ts index 9abc38e4151..4bb46dba760 100644 --- a/infrastructure/zk/src/fmt.ts +++ b/infrastructure/zk/src/fmt.ts @@ -1,7 +1,7 @@ import { Command } from 'commander'; import * as utils from './utils'; -const EXTENSIONS = ['js', 'json', 'md', 'sol', 'ts', 'yaml']; +const EXTENSIONS = ['ts', 'md', 'sol', 'js']; const CONFIG_PATH = 'etc/prettier-config'; export async function prettier(extension: string, check: boolean = false) { From 574cde7a1fffa6fcf02c7f53cefde4bba7c8df87 Mon Sep 17 00:00:00 2001 From: Lyova Potyomkin Date: Wed, 25 Oct 2023 19:49:50 +0300 Subject: [PATCH 047/108] Fix state_keeper tests --- core/lib/zksync_core/src/eth_watch/tests.rs | 2 +- core/lib/zksync_core/src/state_keeper/tests/mod.rs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/core/lib/zksync_core/src/eth_watch/tests.rs b/core/lib/zksync_core/src/eth_watch/tests.rs index 69dc15699fa..01fb83b98c0 100644 --- a/core/lib/zksync_core/src/eth_watch/tests.rs +++ b/core/lib/zksync_core/src/eth_watch/tests.rs @@ -5,7 +5,7 @@ use std::sync::Arc; use tokio::sync::RwLock; use db_test_macro::db_test; -use zksync_contracts::{governance_contract, zksync_contract}; +use zksync_contracts::zksync_contract; use zksync_dal::{ConnectionPool, StorageProcessor}; use zksync_types::protocol_version::{ProtocolUpgradeTx, ProtocolUpgradeTxCommonData}; use zksync_types::web3::types::{Address, BlockNumber}; diff --git a/core/lib/zksync_core/src/state_keeper/tests/mod.rs b/core/lib/zksync_core/src/state_keeper/tests/mod.rs index 7e4b389db03..d00875677c5 100644 --- a/core/lib/zksync_core/src/state_keeper/tests/mod.rs +++ b/core/lib/zksync_core/src/state_keeper/tests/mod.rs @@ -12,7 +12,7 @@ use multivm::interface::{ CurrentExecutionState, ExecutionResult, FinishedL1Batch, L1BatchEnv, L2BlockEnv, Refunds, SystemEnv, TxExecutionMode, VmExecutionResultAndLogs, VmExecutionStatistics, }; -use multivm::vm_latest::constants::BLOCK_GAS_LIMIT; +use multivm::vm_latest::{constants::BLOCK_GAS_LIMIT, VmExecutionLogs}; use zksync_config::configs::chain::StateKeeperConfig; use zksync_contracts::{BaseSystemContracts, BaseSystemContractsHashes}; use zksync_system_constants::ZKPORTER_IS_AVAILABLE; @@ -23,7 +23,7 @@ use zksync_types::{ fee::Fee, l2::L2Tx, transaction_request::PaymasterParams, - tx::tx_execution_info::{ExecutionMetrics, VmExecutionLogs}, + tx::tx_execution_info::ExecutionMetrics, Address, L1BatchNumber, L2ChainId, LogQuery, MiniblockNumber, Nonce, ProtocolVersionId, StorageLogQuery, StorageLogQueryType, Timestamp, Transaction, H256, U256, }; From f071cffaeac4dbb16680341e4ce8fb90d7ce3dbc Mon Sep 17 00:00:00 2001 From: Lyova Potyomkin Date: Wed, 25 Oct 2023 21:50:28 +0300 Subject: [PATCH 048/108] Fix eth_watch unit tests --- core/lib/types/src/eth_sender.rs | 16 +- core/lib/types/src/protocol_version.rs | 53 +++- .../src/eth_sender/eth_tx_aggregator.rs | 2 - .../eth_watch/event_processors/upgrades.rs | 286 ++++++++++++++++-- core/lib/zksync_core/src/eth_watch/tests.rs | 73 +---- 5 files changed, 327 insertions(+), 103 deletions(-) diff --git a/core/lib/types/src/eth_sender.rs b/core/lib/types/src/eth_sender.rs index 3873da17c86..847662eaeaa 100644 --- a/core/lib/types/src/eth_sender.rs +++ b/core/lib/types/src/eth_sender.rs @@ -1,7 +1,7 @@ use crate::aggregated_operations::AggregatedActionType; use crate::{Address, Nonce, H256}; -#[derive(Debug, Clone)] +#[derive(Clone)] pub struct EthTx { pub id: u32, pub nonce: Nonce, @@ -12,6 +12,20 @@ pub struct EthTx { pub predicted_gas_cost: u64, } +impl std::fmt::Debug for EthTx { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + // Do not print raw_tx + f.debug_struct("EthTx") + .field("id", &self.id) + .field("nonce", &self.nonce) + .field("contract_address", &self.contract_address) + .field("tx_type", &self.tx_type) + .field("created_at_timestamp", &self.created_at_timestamp) + .field("predicted_gas_cost", &self.predicted_gas_cost) + .finish() + } +} + #[derive(Clone, Debug)] pub struct TxHistory { pub id: u32, diff --git a/core/lib/types/src/protocol_version.rs b/core/lib/types/src/protocol_version.rs index e63357a75c2..a7b7f45d57a 100644 --- a/core/lib/types/src/protocol_version.rs +++ b/core/lib/types/src/protocol_version.rs @@ -205,10 +205,10 @@ pub struct ProtocolUpgrade { pub tx: Option, } -impl TryFrom for ProtocolUpgrade { +impl TryFrom for ProtocolUpgrade { type Error = crate::ethabi::Error; - fn try_from(call: Call) -> Result { + fn try_from(event: Log) -> Result { let facet_cut_param_type = ParamType::Tuple(vec![ ParamType::Address, ParamType::Uint(8), @@ -220,7 +220,10 @@ impl TryFrom for ProtocolUpgrade { ParamType::Address, ParamType::Bytes, ]); - let mut decoded = decode(&[diamond_cut_data_param_type], &call.data[4..])?; + let mut decoded = decode( + &[diamond_cut_data_param_type, ParamType::FixedBytes(32)], + &event.data.0, + )?; let init_calldata = match decoded.remove(0) { Token::Tuple(tokens) => tokens[2].clone().into_bytes().unwrap(), @@ -341,6 +344,14 @@ impl TryFrom for ProtocolUpgrade { let reserved_dynamic = transaction.remove(0).into_bytes().unwrap(); assert_eq!(reserved_dynamic.len(), 0); + let eth_hash = event + .transaction_hash + .expect("Event transaction hash is missing"); + let eth_block = event + .block_number + .expect("Event block number is missing") + .as_u64(); + let common_data = ProtocolUpgradeTxCommonData { canonical_tx_hash, sender, @@ -350,8 +361,8 @@ impl TryFrom for ProtocolUpgrade { gas_limit, max_fee_per_gas, gas_per_pubdata_limit, - eth_hash: call.eth_hash, - eth_block: call.eth_block, + eth_hash, + eth_block, }; let factory_deps = factory_deps @@ -425,6 +436,38 @@ impl TryFrom for ProtocolUpgrade { } } +impl TryFrom for ProtocolUpgrade { + type Error = crate::ethabi::Error; + + fn try_from(call: Call) -> Result { + // Reuses `ProtocolUpgrade::try_from`. + // `ProtocolUpgrade::try_from` only uses 3 log fields: `data`, `block_number`, `transaction_hash`. Others can be filled with dummy values. + // We build data as `call.data` without first 4 bytes which are for selector + // and append it with `bytes32(0)` for compatibility with old event data. + let data = call + .data + .into_iter() + .skip(4) + .chain(encode(&[Token::FixedBytes(H256::zero().0.to_vec())])) + .collect::>() + .into(); + let log = Log { + address: Default::default(), + topics: Default::default(), + data, + block_hash: Default::default(), + block_number: Some(call.eth_block.into()), + transaction_hash: Some(call.eth_hash), + transaction_index: Default::default(), + log_index: Default::default(), + transaction_log_index: Default::default(), + log_type: Default::default(), + removed: Default::default(), + }; + ProtocolUpgrade::try_from(log) + } +} + impl TryFrom for GovernanceOperation { type Error = crate::ethabi::Error; diff --git a/core/lib/zksync_core/src/eth_sender/eth_tx_aggregator.rs b/core/lib/zksync_core/src/eth_sender/eth_tx_aggregator.rs index aa8eac99d99..b4a2aab6c92 100644 --- a/core/lib/zksync_core/src/eth_sender/eth_tx_aggregator.rs +++ b/core/lib/zksync_core/src/eth_sender/eth_tx_aggregator.rs @@ -309,7 +309,6 @@ impl EthTxAggregator { // Legacy verifier returns the full verification key; // New verifier returns the hash of the verification key if let Some(get_vk) = &self.functions.get_verification_key { - tracing::debug!("Calling get_verification_key"); let vk = eth_client .call_contract_function( &get_vk.name, @@ -324,7 +323,6 @@ impl EthTxAggregator { Ok(l1_vk_commitment(vk)) } else { let get_vk_hash = self.functions.verification_key_hash.as_ref(); - tracing::debug!("Calling verificationKeyHash"); let vk_hash = eth_client .call_contract_function( &get_vk_hash.unwrap().name, diff --git a/core/lib/zksync_core/src/eth_watch/event_processors/upgrades.rs b/core/lib/zksync_core/src/eth_watch/event_processors/upgrades.rs index 2c5a493a17e..a9c27b564ea 100644 --- a/core/lib/zksync_core/src/eth_watch/event_processors/upgrades.rs +++ b/core/lib/zksync_core/src/eth_watch/event_processors/upgrades.rs @@ -3,8 +3,8 @@ use std::time::Instant; use zksync_contracts::{governance_contract, zksync_contract}; use zksync_dal::StorageProcessor; use zksync_types::{ - protocol_version::GovernanceOperation, web3::types::Log, Address, ProtocolUpgrade, - ProtocolVersionId, H256, + ethabi::Contract, protocol_version::GovernanceOperation, web3::types::Log, Address, + ProtocolUpgrade, ProtocolVersionId, H256, }; use crate::eth_watch::{ @@ -27,9 +27,9 @@ impl UpgradesEventProcessor { Self { diamond_proxy_address, last_seen_version_id, - upgrade_proposal_signature: governance_contract() - .event("TransparentOperationScheduled") - .expect("TransparentOperationScheduled event is missing in abi") + upgrade_proposal_signature: old_zksync_contract() + .event("ProposeTransparentUpgrade") + .expect("ProposeTransparentUpgrade event is missing in abi") .signature(), execute_upgrade_short_signature: zksync_contract() .function("executeUpgrade") @@ -52,29 +52,15 @@ impl EventProcessor for UpgradesEventProcessor { .into_iter() .filter(|event| event.topics[0] == self.upgrade_proposal_signature) { - let governance_operation = GovernanceOperation::try_from(event) + let upgrade = ProtocolUpgrade::try_from(event) .map_err(|err| Error::LogParse(format!("{:?}", err)))?; - // Some calls can target other contracts than Diamond proxy, skip them. - for call in governance_operation - .calls - .into_iter() - .filter(|call| call.target == self.diamond_proxy_address) - { - if call.data.len() < 4 || &call.data[..4] != &self.execute_upgrade_short_signature { - continue; - } - - let upgrade = ProtocolUpgrade::try_from(call) - .map_err(|err| Error::LogParse(format!("{:?}", err)))?; - - // Scheduler VK is not present in proposal event. It is hardcoded in verifier contract. - let scheduler_vk_hash = if let Some(address) = upgrade.verifier_address { - Some(client.scheduler_vk_hash(address).await?) - } else { - None - }; - upgrades.push((upgrade, scheduler_vk_hash)); - } + // Scheduler VK is not present in proposal event. It is hardcoded in verifier contract. + let scheduler_vk_hash = if let Some(address) = upgrade.verifier_address { + Some(client.scheduler_vk_hash(address).await?) + } else { + None + }; + upgrades.push((upgrade, scheduler_vk_hash)); } if upgrades.is_empty() { @@ -118,3 +104,249 @@ impl EventProcessor for UpgradesEventProcessor { self.upgrade_proposal_signature } } + +pub fn old_zksync_contract() -> Contract { + let json = r#"[ + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "components": [ + { + "internalType": "address", + "name": "facet", + "type": "address" + }, + { + "internalType": "enum Diamond.Action", + "name": "action", + "type": "uint8" + }, + { + "internalType": "bool", + "name": "isFreezable", + "type": "bool" + }, + { + "internalType": "bytes4[]", + "name": "selectors", + "type": "bytes4[]" + } + ], + "internalType": "struct Diamond.FacetCut[]", + "name": "facetCuts", + "type": "tuple[]" + }, + { + "internalType": "address", + "name": "initAddress", + "type": "address" + }, + { + "internalType": "bytes", + "name": "initCalldata", + "type": "bytes" + } + ], + "indexed": false, + "internalType": "struct Diamond.DiamondCutData", + "name": "diamondCut", + "type": "tuple" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "proposalSalt", + "type": "bytes32" + } + ], + "name": "ProposeTransparentUpgrade", + "type": "event" + }, + { + "inputs": [ + { + "components": [ + { + "components": [ + { + "internalType": "address", + "name": "facet", + "type": "address" + }, + { + "internalType": "enum Diamond.Action", + "name": "action", + "type": "uint8" + }, + { + "internalType": "bool", + "name": "isFreezable", + "type": "bool" + }, + { + "internalType": "bytes4[]", + "name": "selectors", + "type": "bytes4[]" + } + ], + "internalType": "struct Diamond.FacetCut[]", + "name": "facetCuts", + "type": "tuple[]" + }, + { + "internalType": "address", + "name": "initAddress", + "type": "address" + }, + { + "internalType": "bytes", + "name": "initCalldata", + "type": "bytes" + } + ], + "internalType": "struct Diamond.DiamondCutData", + "name": "_diamondCut", + "type": "tuple" + }, + { + "internalType": "bytes32", + "name": "_proposalSalt", + "type": "bytes32" + } + ], + "name": "executeUpgrade", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "txId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "txHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "expirationTimestamp", + "type": "uint64" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "txType", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "from", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "to", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "gasLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "gasPerPubdataByteLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxFeePerGas", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxPriorityFeePerGas", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "paymaster", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256[4]", + "name": "reserved", + "type": "uint256[4]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + }, + { + "internalType": "uint256[]", + "name": "factoryDeps", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "paymasterInput", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "reservedDynamic", + "type": "bytes" + } + ], + "indexed": false, + "internalType": "struct IMailbox.L2CanonicalTransaction", + "name": "transaction", + "type": "tuple" + }, + { + "indexed": false, + "internalType": "bytes[]", + "name": "factoryDeps", + "type": "bytes[]" + } + ], + "name": "NewPriorityRequest", + "type": "event" + } + ]"#; + serde_json::from_str(json).unwrap() +} diff --git a/core/lib/zksync_core/src/eth_watch/tests.rs b/core/lib/zksync_core/src/eth_watch/tests.rs index 01fb83b98c0..4b2b7f2dcd4 100644 --- a/core/lib/zksync_core/src/eth_watch/tests.rs +++ b/core/lib/zksync_core/src/eth_watch/tests.rs @@ -5,7 +5,7 @@ use std::sync::Arc; use tokio::sync::RwLock; use db_test_macro::db_test; -use zksync_contracts::zksync_contract; +use zksync_contracts::{governance_contract, zksync_contract}; use zksync_dal::{ConnectionPool, StorageProcessor}; use zksync_types::protocol_version::{ProtocolUpgradeTx, ProtocolUpgradeTxCommonData}; use zksync_types::web3::types::{Address, BlockNumber}; @@ -18,7 +18,9 @@ use zksync_types::{ }; use super::client::Error; -use crate::eth_watch::{client::EthClient, EthWatch}; +use crate::eth_watch::{ + client::EthClient, event_processors::upgrades::old_zksync_contract, EthWatch, +}; struct FakeEthClientData { transactions: HashMap>, @@ -585,7 +587,7 @@ fn upgrade_into_diamond_proxy_log(upgrade: ProtocolUpgrade, eth_block: u64) -> L let data = encode(&[diamond_cut, Token::FixedBytes(vec![0u8; 32])]); Log { address: Address::repeat_byte(0x1), - topics: vec![zksync_contract() + topics: vec![old_zksync_contract() .event("ProposeTransparentUpgrade") .expect("ProposeTransparentUpgrade event is missing in abi") .signature()], @@ -770,68 +772,3 @@ async fn setup_db(connection_pool: &ConnectionPool) { }) .await; } - -fn governance_contract() -> Contract { - let json = r#"[ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "_id", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "delay", - "type": "uint256" - }, - { - "components": [ - { - "components": [ - { - "internalType": "address", - "name": "target", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "internalType": "struct IGovernance.Call[]", - "name": "calls", - "type": "tuple[]" - }, - { - "internalType": "bytes32", - "name": "predecessor", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "salt", - "type": "bytes32" - } - ], - "indexed": false, - "internalType": "struct IGovernance.Operation", - "name": "_operation", - "type": "tuple" - } - ], - "name": "TransparentOperationScheduled", - "type": "event" - } - ]"#; - serde_json::from_str(json).unwrap() -} From 37fc6bda608b7d689ef597617154d642c041fccb Mon Sep 17 00:00:00 2001 From: Lyova Potyomkin Date: Thu, 26 Oct 2023 15:57:31 +0300 Subject: [PATCH 049/108] Fix empty system logs --- core/lib/multivm/src/versions/vm_latest/vm.rs | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/core/lib/multivm/src/versions/vm_latest/vm.rs b/core/lib/multivm/src/versions/vm_latest/vm.rs index 8ae4df9cd99..9871b6303b2 100644 --- a/core/lib/multivm/src/versions/vm_latest/vm.rs +++ b/core/lib/multivm/src/versions/vm_latest/vm.rs @@ -1,5 +1,5 @@ use zksync_state::{StoragePtr, WriteStorage}; -use zksync_types::Transaction; +use zksync_types::{event::extract_l2tol1logs_from_l1_messenger, Transaction}; use zksync_utils::bytecode::CompressedBytecodeInfo; use crate::vm_latest::old_vm::events::merge_events; @@ -82,12 +82,14 @@ impl Vm { /// This method should be used only after the batch execution. /// Otherwise it can panic. pub fn get_current_execution_state(&self) -> CurrentExecutionState { - let (_full_history, raw_events, l1_messages) = self.state.event_sink.flatten(); - let events = merge_events(raw_events) + let (deduplicated_events_logs, raw_events, l1_messages) = self.state.event_sink.flatten(); + let events: Vec<_> = merge_events(raw_events) .into_iter() .map(|e| e.into_vm_event(self.batch_env.number)) .collect(); - let l2_to_l1_logs = l1_messages.into_iter().map(|log| log.into()).collect(); + + let user_l2_to_l1_logs = extract_l2tol1logs_from_l1_messenger(&events); + let system_logs = l1_messages.into_iter().map(|log| log.into()).collect(); let total_log_queries = self.state.event_sink.get_log_queries() + self .state @@ -100,11 +102,14 @@ impl Vm { events, storage_log_queries: self.state.storage.get_final_log_queries(), used_contract_hashes: self.get_used_contracts(), - system_logs: vec![], - user_l2_to_l1_logs: l2_to_l1_logs, + user_l2_to_l1_logs: user_l2_to_l1_logs + .into_iter() + .map(|log| log.into()) + .collect(), + system_logs, total_log_queries, cycles_used: self.state.local_state.monotonic_cycle_counter, - deduplicated_events_logs: vec![], + deduplicated_events_logs, storage_refunds: self.state.storage.returned_refunds.inner().clone(), } } From 12ffbf504d881f89fce4a076cba056de9ad9f5af Mon Sep 17 00:00:00 2001 From: koloz Date: Thu, 26 Oct 2023 09:26:44 -0400 Subject: [PATCH 050/108] updated storage oracle to calculate pubdata bytes correctly --- .../src/versions/vm_latest/oracles/storage.rs | 30 +++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/core/lib/multivm/src/versions/vm_latest/oracles/storage.rs b/core/lib/multivm/src/versions/vm_latest/oracles/storage.rs index 8e79cd1d49e..e091be58460 100644 --- a/core/lib/multivm/src/versions/vm_latest/oracles/storage.rs +++ b/core/lib/multivm/src/versions/vm_latest/oracles/storage.rs @@ -453,8 +453,34 @@ fn get_pubdata_price_bytes(initial_value: U256, final_value: U256, is_initial: b compress_with_best_strategy(initial_value, final_value).len() as u32; if is_initial { - zk_evm_1_3_3::zkevm_opcode_defs::system_params::INITIAL_STORAGE_WRITE_PUBDATA_BYTES as u32 + (BYTES_PER_DERIVED_KEY as u32) + compressed_value_size } else { - zk_evm_1_3_3::zkevm_opcode_defs::system_params::REPEATED_STORAGE_WRITE_PUBDATA_BYTES as u32 + (BYTES_PER_ENUMERATION_INDEX as u32) + compressed_value_size + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_get_pubdata_price_bytes() { + let initial_value = U256::default(); + let final_value = U256::from(92122); + let is_initial = true; + + let compression_len = 4; + + let initial_bytes_price = get_pubdata_price_bytes(initial_value, final_value, is_initial); + let repeated_bytes_price = get_pubdata_price_bytes(initial_value, final_value, !is_initial); + + assert_eq!( + initial_bytes_price, + (compression_len + BYTES_PER_DERIVED_KEY as usize) as u32 + ); + assert_eq!( + repeated_bytes_price, + (compression_len + BYTES_PER_ENUMERATION_INDEX as usize) as u32 + ); } } From f7ac2de51e8d885dfac7cc4fbd4aa29336b65136 Mon Sep 17 00:00:00 2001 From: koloz Date: Thu, 26 Oct 2023 09:54:47 -0400 Subject: [PATCH 051/108] resolved merge conflicts --- core/lib/dal/sqlx-data.json | 9439 +++++++++-------- core/lib/types/src/commitment.rs | 3 +- core/lib/zksync_core/src/eth_sender/tests.rs | 1 - core/lib/zksync_core/src/eth_watch/tests.rs | 1 - core/lib/zksync_core/src/genesis.rs | 1 - .../src/state_keeper/io/seal_logic.rs | 3 +- .../zksync_core/src/state_keeper/tests/mod.rs | 1 - 7 files changed, 4882 insertions(+), 4567 deletions(-) diff --git a/core/lib/dal/sqlx-data.json b/core/lib/dal/sqlx-data.json index 86bd36b4b37..57d9a6dfd2c 100644 --- a/core/lib/dal/sqlx-data.json +++ b/core/lib/dal/sqlx-data.json @@ -118,408 +118,140 @@ }, "query": "\n UPDATE node_aggregation_witness_jobs_fri\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now(),\n picked_by = $2\n WHERE id = (\n SELECT id\n FROM node_aggregation_witness_jobs_fri\n WHERE status = 'queued'\n AND protocol_version = ANY($1)\n ORDER BY l1_batch_number ASC, depth ASC, id ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING node_aggregation_witness_jobs_fri.*\n " }, - "010dd1924b74c8580865cf7485e91ffd5ea96e5a175faed466b870ae1ba6a89f": { + "01a21fe42c5c0ec0f848739235b8175b62b0ffe503b823c128dd620fec047784": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Text", + "Int4", + "Text" + ] + } + }, + "query": "UPDATE gpu_prover_queue_fri SET instance_status = 'available', updated_at = now() WHERE instance_host = $1::text::inet AND instance_port = $2 AND instance_status = 'full' AND zone = $3\n " + }, + "01ebdc5b524e85033fb06d9166475f365643f744492e59ff12f10b419dd6d485": { "describe": { "columns": [ { - "name": "number", + "name": "bytecode_hash", "ordinal": 0, - "type_info": "Int8" + "type_info": "Bytea" + } + ], + "nullable": [ + false + ], + "parameters": { + "Left": [ + "Int8" + ] + } + }, + "query": "SELECT bytecode_hash FROM factory_deps WHERE miniblock_number > $1" + }, + "03a34f0fd82bed22f14c5b36554bb958d407e9724fa5ea5123edc3c6607e545c": { + "describe": { + "columns": [ + { + "name": "block_hash?", + "ordinal": 0, + "type_info": "Bytea" }, { - "name": "timestamp", + "name": "address!", "ordinal": 1, - "type_info": "Int8" + "type_info": "Bytea" }, { - "name": "is_finished", + "name": "topic1!", "ordinal": 2, - "type_info": "Bool" + "type_info": "Bytea" }, { - "name": "l1_tx_count", + "name": "topic2!", "ordinal": 3, - "type_info": "Int4" + "type_info": "Bytea" }, { - "name": "l2_tx_count", + "name": "topic3!", "ordinal": 4, - "type_info": "Int4" + "type_info": "Bytea" }, { - "name": "fee_account_address", + "name": "topic4!", "ordinal": 5, "type_info": "Bytea" }, { - "name": "bloom", + "name": "value!", "ordinal": 6, "type_info": "Bytea" }, { - "name": "priority_ops_onchain_data", + "name": "miniblock_number!", "ordinal": 7, - "type_info": "ByteaArray" + "type_info": "Int8" }, { - "name": "hash", + "name": "l1_batch_number?", "ordinal": 8, - "type_info": "Bytea" + "type_info": "Int8" }, { - "name": "parent_hash", + "name": "tx_hash!", "ordinal": 9, "type_info": "Bytea" }, { - "name": "commitment", + "name": "tx_index_in_block!", "ordinal": 10, - "type_info": "Bytea" - }, - { - "name": "compressed_write_logs", - "ordinal": 11, - "type_info": "Bytea" - }, - { - "name": "compressed_contracts", - "ordinal": 12, - "type_info": "Bytea" - }, - { - "name": "eth_prove_tx_id", - "ordinal": 13, - "type_info": "Int4" - }, - { - "name": "eth_commit_tx_id", - "ordinal": 14, - "type_info": "Int4" - }, - { - "name": "eth_execute_tx_id", - "ordinal": 15, "type_info": "Int4" }, { - "name": "merkle_root_hash", - "ordinal": 16, - "type_info": "Bytea" - }, - { - "name": "l2_to_l1_logs", - "ordinal": 17, - "type_info": "ByteaArray" - }, - { - "name": "l2_to_l1_messages", - "ordinal": 18, - "type_info": "ByteaArray" - }, - { - "name": "used_contract_hashes", - "ordinal": 19, - "type_info": "Jsonb" - }, - { - "name": "compressed_initial_writes", - "ordinal": 20, - "type_info": "Bytea" - }, - { - "name": "compressed_repeated_writes", - "ordinal": 21, - "type_info": "Bytea" - }, - { - "name": "l2_l1_compressed_messages", - "ordinal": 22, - "type_info": "Bytea" - }, - { - "name": "l2_l1_merkle_root", - "ordinal": 23, - "type_info": "Bytea" - }, - { - "name": "l1_gas_price", - "ordinal": 24, - "type_info": "Int8" - }, - { - "name": "l2_fair_gas_price", - "ordinal": 25, - "type_info": "Int8" - }, - { - "name": "rollup_last_leaf_index", - "ordinal": 26, - "type_info": "Int8" - }, - { - "name": "zkporter_is_available", - "ordinal": 27, - "type_info": "Bool" - }, - { - "name": "bootloader_code_hash", - "ordinal": 28, - "type_info": "Bytea" - }, - { - "name": "default_aa_code_hash", - "ordinal": 29, - "type_info": "Bytea" - }, - { - "name": "base_fee_per_gas", - "ordinal": 30, - "type_info": "Numeric" - }, - { - "name": "aux_data_hash", - "ordinal": 31, - "type_info": "Bytea" - }, - { - "name": "pass_through_data_hash", - "ordinal": 32, - "type_info": "Bytea" - }, - { - "name": "meta_parameters_hash", - "ordinal": 33, - "type_info": "Bytea" - }, - { - "name": "protocol_version", - "ordinal": 34, + "name": "event_index_in_block!", + "ordinal": 11, "type_info": "Int4" }, { - "name": "compressed_state_diffs", - "ordinal": 35, - "type_info": "Bytea" - }, - { - "name": "gas_per_pubdata_byte_in_block", - "ordinal": 36, + "name": "event_index_in_tx!", + "ordinal": 12, "type_info": "Int4" - }, - { - "name": "gas_per_pubdata_limit", - "ordinal": 37, - "type_info": "Int8" - }, - { - "name": "skip_proof", - "ordinal": 38, - "type_info": "Bool" - }, - { - "name": "system_logs", - "ordinal": 39, - "type_info": "ByteaArray" - }, - { - "name": "events_queue_commitment", - "ordinal": 40, - "type_info": "Bytea" - }, - { - "name": "bootloader_initial_content_commitment", - "ordinal": 41, - "type_info": "Bytea" } ], "nullable": [ - false, - false, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true, - true, - true, - true, - true, - false, - false, - false, - true, true, true, true, - false, - false, - true, - true, true, true, - false, true, true, true, true, true, true, - false, - false, - false, true, true ], "parameters": { "Left": [ - "Int8", - "Int8", "Int8" ] } }, - "query": "SELECT number, timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, rollup_last_leaf_index, zkporter_is_available, bootloader_code_hash, default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, meta_parameters_hash, protocol_version, compressed_state_diffs, gas_per_pubdata_byte_in_block, gas_per_pubdata_limit, skip_proof, system_logs, events_queue_commitment, bootloader_initial_content_commitment FROM l1_batches LEFT JOIN commitments ON commitments.l1_batch_number = l1_batches.number WHERE number BETWEEN $1 AND $2 ORDER BY number LIMIT $3" + "query": "\n WITH events_select AS (\n SELECT\n address, topic1, topic2, topic3, topic4, value,\n miniblock_number, tx_hash, tx_index_in_block,\n event_index_in_block, event_index_in_tx\n FROM events\n WHERE miniblock_number > $1\n ORDER BY miniblock_number ASC, event_index_in_block ASC\n )\n SELECT miniblocks.hash as \"block_hash?\",\n address as \"address!\", topic1 as \"topic1!\", topic2 as \"topic2!\", topic3 as \"topic3!\", topic4 as \"topic4!\", value as \"value!\",\n miniblock_number as \"miniblock_number!\", miniblocks.l1_batch_number as \"l1_batch_number?\", tx_hash as \"tx_hash!\",\n tx_index_in_block as \"tx_index_in_block!\", event_index_in_block as \"event_index_in_block!\", event_index_in_tx as \"event_index_in_tx!\"\n FROM events_select\n INNER JOIN miniblocks ON events_select.miniblock_number = miniblocks.number\n ORDER BY miniblock_number ASC, event_index_in_block ASC\n " }, - "01a21fe42c5c0ec0f848739235b8175b62b0ffe503b823c128dd620fec047784": { + "073582051133075adfc51a18d15639129dd00628aa4994b602843ac979ad4419": { "describe": { "columns": [], "nullable": [], "parameters": { "Left": [ - "Text", - "Int4", - "Text" - ] - } - }, - "query": "UPDATE gpu_prover_queue_fri SET instance_status = 'available', updated_at = now() WHERE instance_host = $1::text::inet AND instance_port = $2 AND instance_status = 'full' AND zone = $3\n " - }, - "01ebdc5b524e85033fb06d9166475f365643f744492e59ff12f10b419dd6d485": { - "describe": { - "columns": [ - { - "name": "bytecode_hash", - "ordinal": 0, - "type_info": "Bytea" - } - ], - "nullable": [ - false - ], - "parameters": { - "Left": [ - "Int8" - ] - } - }, - "query": "SELECT bytecode_hash FROM factory_deps WHERE miniblock_number > $1" - }, - "03a34f0fd82bed22f14c5b36554bb958d407e9724fa5ea5123edc3c6607e545c": { - "describe": { - "columns": [ - { - "name": "block_hash?", - "ordinal": 0, - "type_info": "Bytea" - }, - { - "name": "address!", - "ordinal": 1, - "type_info": "Bytea" - }, - { - "name": "topic1!", - "ordinal": 2, - "type_info": "Bytea" - }, - { - "name": "topic2!", - "ordinal": 3, - "type_info": "Bytea" - }, - { - "name": "topic3!", - "ordinal": 4, - "type_info": "Bytea" - }, - { - "name": "topic4!", - "ordinal": 5, - "type_info": "Bytea" - }, - { - "name": "value!", - "ordinal": 6, - "type_info": "Bytea" - }, - { - "name": "miniblock_number!", - "ordinal": 7, - "type_info": "Int8" - }, - { - "name": "l1_batch_number?", - "ordinal": 8, - "type_info": "Int8" - }, - { - "name": "tx_hash!", - "ordinal": 9, - "type_info": "Bytea" - }, - { - "name": "tx_index_in_block!", - "ordinal": 10, - "type_info": "Int4" - }, - { - "name": "event_index_in_block!", - "ordinal": 11, - "type_info": "Int4" - }, - { - "name": "event_index_in_tx!", - "ordinal": 12, - "type_info": "Int4" - } - ], - "nullable": [ - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true, - true - ], - "parameters": { - "Left": [ - "Int8" - ] - } - }, - "query": "\n WITH events_select AS (\n SELECT\n address, topic1, topic2, topic3, topic4, value,\n miniblock_number, tx_hash, tx_index_in_block,\n event_index_in_block, event_index_in_tx\n FROM events\n WHERE miniblock_number > $1\n ORDER BY miniblock_number ASC, event_index_in_block ASC\n )\n SELECT miniblocks.hash as \"block_hash?\",\n address as \"address!\", topic1 as \"topic1!\", topic2 as \"topic2!\", topic3 as \"topic3!\", topic4 as \"topic4!\", value as \"value!\",\n miniblock_number as \"miniblock_number!\", miniblocks.l1_batch_number as \"l1_batch_number?\", tx_hash as \"tx_hash!\",\n tx_index_in_block as \"tx_index_in_block!\", event_index_in_block as \"event_index_in_block!\", event_index_in_tx as \"event_index_in_tx!\"\n FROM events_select\n INNER JOIN miniblocks ON events_select.miniblock_number = miniblocks.number\n ORDER BY miniblock_number ASC, event_index_in_block ASC\n " - }, - "073582051133075adfc51a18d15639129dd00628aa4994b602843ac979ad4419": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Int8", - "Bytea", + "Int8", + "Bytea", "Text", "Int4" ] @@ -613,218 +345,242 @@ }, "query": "SELECT MAX(number) as \"number\" FROM l1_batches WHERE is_finished = TRUE" }, - "0dc2a26e350b15dc2ee03ae43bda0ed2a759597566eb786c49555f2fcae3884a": { + "0e001ef507253b4fd3a87e379c8f2e63fa41250b1a396d81697de2b7ea71215e": { + "describe": { + "columns": [ + { + "name": "count!", + "ordinal": 0, + "type_info": "Int8" + } + ], + "nullable": [ + null + ], + "parameters": { + "Left": [ + "Int8", + "Bytea", + "Bytea", + "Bytea", + "Bytea" + ] + } + }, + "query": "SELECT COUNT(*) as \"count!\" FROM l1_batches WHERE number = $1 AND hash = $2 AND merkle_root_hash = $3 AND parent_hash = $4 AND l2_l1_merkle_root = $5" + }, + "0ee31e6e2ec60f427d8dec719ec0ba03ef75bc610e878ae32b0bf61c4c2c1366": { "describe": { "columns": [ { - "name": "number", + "name": "id", "ordinal": 0, "type_info": "Int8" }, { - "name": "timestamp", + "name": "instance_host", "ordinal": 1, - "type_info": "Int8" + "type_info": "Inet" }, { - "name": "is_finished", + "name": "instance_port", "ordinal": 2, - "type_info": "Bool" + "type_info": "Int4" }, { - "name": "l1_tx_count", + "name": "instance_status", "ordinal": 3, - "type_info": "Int4" + "type_info": "Text" }, { - "name": "l2_tx_count", + "name": "specialized_prover_group_id", "ordinal": 4, - "type_info": "Int4" + "type_info": "Int2" }, { - "name": "fee_account_address", + "name": "zone", "ordinal": 5, - "type_info": "Bytea" + "type_info": "Text" }, { - "name": "bloom", + "name": "created_at", "ordinal": 6, - "type_info": "Bytea" + "type_info": "Timestamp" }, { - "name": "priority_ops_onchain_data", + "name": "updated_at", "ordinal": 7, - "type_info": "ByteaArray" + "type_info": "Timestamp" }, { - "name": "hash", + "name": "processing_started_at", "ordinal": 8, - "type_info": "Bytea" - }, - { - "name": "parent_hash", - "ordinal": 9, - "type_info": "Bytea" - }, - { - "name": "commitment", - "ordinal": 10, - "type_info": "Bytea" - }, - { - "name": "compressed_write_logs", - "ordinal": 11, - "type_info": "Bytea" - }, + "type_info": "Timestamp" + } + ], + "nullable": [ + false, + false, + false, + false, + false, + true, + false, + false, + true + ], + "parameters": { + "Left": [ + "Interval", + "Int2", + "Text" + ] + } + }, + "query": "UPDATE gpu_prover_queue_fri SET instance_status = 'reserved', updated_at = now(), processing_started_at = now() WHERE id in ( SELECT id FROM gpu_prover_queue_fri WHERE specialized_prover_group_id=$2 AND zone=$3 AND ( instance_status = 'available' OR (instance_status = 'reserved' AND processing_started_at < now() - $1::interval) ) ORDER BY updated_at ASC LIMIT 1 FOR UPDATE SKIP LOCKED ) RETURNING gpu_prover_queue_fri.*\n " + }, + "0f5897b5e0109535caa3d49f899c65e5080511d49305558b59b185c34227aa18": { + "describe": { + "columns": [ { - "name": "compressed_contracts", - "ordinal": 12, - "type_info": "Bytea" - }, + "name": "nonce!", + "ordinal": 0, + "type_info": "Int8" + } + ], + "nullable": [ + true + ], + "parameters": { + "Left": [ + "Bytea", + "Int8" + ] + } + }, + "query": "SELECT nonce as \"nonce!\" FROM transactions WHERE initiator_address = $1 AND nonce >= $2 AND is_priority = FALSE AND (miniblock_number IS NOT NULL OR error IS NULL) ORDER BY nonce" + }, + "0f8a603899280c015b033c4160bc064865103e9d6d63a369f07a8e5d859a7b14": { + "describe": { + "columns": [ { - "name": "eth_prove_tx_id", - "ordinal": 13, - "type_info": "Int4" - }, - { - "name": "eth_commit_tx_id", - "ordinal": 14, - "type_info": "Int4" - }, - { - "name": "eth_execute_tx_id", - "ordinal": 15, - "type_info": "Int4" - }, - { - "name": "merkle_root_hash", - "ordinal": 16, - "type_info": "Bytea" - }, - { - "name": "l2_to_l1_logs", - "ordinal": 17, - "type_info": "ByteaArray" - }, - { - "name": "l2_to_l1_messages", - "ordinal": 18, - "type_info": "ByteaArray" - }, + "name": "timestamp", + "ordinal": 0, + "type_info": "Int8" + } + ], + "nullable": [ + false + ], + "parameters": { + "Left": [ + "Int8" + ] + } + }, + "query": "SELECT timestamp FROM miniblocks WHERE number = $1" + }, + "0fd885074c624bea478ec0a24a499cf1278773cdba92550439da5d3b70cbf38c": { + "describe": { + "columns": [ { - "name": "used_contract_hashes", - "ordinal": 19, - "type_info": "Jsonb" + "name": "count!", + "ordinal": 0, + "type_info": "Int8" }, { - "name": "compressed_initial_writes", - "ordinal": 20, - "type_info": "Bytea" - }, + "name": "status!", + "ordinal": 1, + "type_info": "Text" + } + ], + "nullable": [ + null, + false + ], + "parameters": { + "Left": [] + } + }, + "query": "\n SELECT COUNT(*) as \"count!\", status as \"status!\"\n FROM prover_jobs\n GROUP BY status\n " + }, + "100ede607d40d8d07000fcdc40705c806e8229323e0e6dfb7507691838963ccf": { + "describe": { + "columns": [ { - "name": "compressed_repeated_writes", - "ordinal": 21, - "type_info": "Bytea" + "name": "l1_batch_number", + "ordinal": 0, + "type_info": "Int8" }, { - "name": "l2_l1_compressed_messages", - "ordinal": 22, + "name": "basic_circuits", + "ordinal": 1, "type_info": "Bytea" }, { - "name": "l2_l1_merkle_root", - "ordinal": 23, + "name": "basic_circuits_inputs", + "ordinal": 2, "type_info": "Bytea" }, { - "name": "l1_gas_price", - "ordinal": 24, - "type_info": "Int8" - }, - { - "name": "l2_fair_gas_price", - "ordinal": 25, - "type_info": "Int8" - }, - { - "name": "rollup_last_leaf_index", - "ordinal": 26, - "type_info": "Int8" - }, - { - "name": "zkporter_is_available", - "ordinal": 27, - "type_info": "Bool" - }, - { - "name": "bootloader_code_hash", - "ordinal": 28, - "type_info": "Bytea" + "name": "number_of_basic_circuits", + "ordinal": 3, + "type_info": "Int4" }, { - "name": "default_aa_code_hash", - "ordinal": 29, - "type_info": "Bytea" + "name": "status", + "ordinal": 4, + "type_info": "Text" }, { - "name": "base_fee_per_gas", - "ordinal": 30, - "type_info": "Numeric" + "name": "processing_started_at", + "ordinal": 5, + "type_info": "Timestamp" }, { - "name": "aux_data_hash", - "ordinal": 31, - "type_info": "Bytea" + "name": "time_taken", + "ordinal": 6, + "type_info": "Time" }, { - "name": "pass_through_data_hash", - "ordinal": 32, - "type_info": "Bytea" + "name": "error", + "ordinal": 7, + "type_info": "Text" }, { - "name": "meta_parameters_hash", - "ordinal": 33, - "type_info": "Bytea" + "name": "created_at", + "ordinal": 8, + "type_info": "Timestamp" }, { - "name": "skip_proof", - "ordinal": 34, - "type_info": "Bool" + "name": "updated_at", + "ordinal": 9, + "type_info": "Timestamp" }, { - "name": "gas_per_pubdata_byte_in_block", - "ordinal": 35, + "name": "attempts", + "ordinal": 10, "type_info": "Int4" }, { - "name": "gas_per_pubdata_limit", - "ordinal": 36, - "type_info": "Int8" + "name": "basic_circuits_blob_url", + "ordinal": 11, + "type_info": "Text" }, { - "name": "system_logs", - "ordinal": 37, - "type_info": "ByteaArray" + "name": "basic_circuits_inputs_blob_url", + "ordinal": 12, + "type_info": "Text" }, { - "name": "compressed_state_diffs", - "ordinal": 38, - "type_info": "Bytea" + "name": "is_blob_cleaned", + "ordinal": 13, + "type_info": "Bool" }, { "name": "protocol_version", - "ordinal": 39, + "ordinal": 14, "type_info": "Int4" - }, - { - "name": "events_queue_commitment", - "ordinal": 40, - "type_info": "Bytea" - }, - { - "name": "bootloader_initial_content_commitment", - "ordinal": 41, - "type_info": "Bytea" } ], "nullable": [ @@ -833,345 +589,54 @@ false, false, false, - false, - false, - false, - true, - true, - true, - true, - true, - true, - true, - true, - true, - false, - false, - false, - true, true, true, true, false, false, - true, - true, - true, - true, false, true, true, - true, - false, - true, false, - false, - true, - true, - true, true ], "parameters": { "Left": [ + "Interval", + "Int4", "Int8", - "Int8" + "Int4Array" ] } }, - "query": "SELECT number, timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, rollup_last_leaf_index, zkporter_is_available, bootloader_code_hash, default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, meta_parameters_hash, skip_proof, gas_per_pubdata_byte_in_block, gas_per_pubdata_limit, system_logs, compressed_state_diffs, protocol_version, events_queue_commitment, bootloader_initial_content_commitment FROM (SELECT l1_batches.*, row_number() OVER (ORDER BY number ASC) AS row_number FROM l1_batches WHERE eth_commit_tx_id IS NOT NULL AND l1_batches.skip_proof = TRUE AND l1_batches.number > $1 ORDER BY number LIMIT $2) inn LEFT JOIN commitments ON commitments.l1_batch_number = inn.number WHERE number - row_number = $1" + "query": "\n UPDATE leaf_aggregation_witness_jobs\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now()\n WHERE l1_batch_number = (\n SELECT l1_batch_number\n FROM leaf_aggregation_witness_jobs\n WHERE l1_batch_number <= $3\n AND\n ( status = 'queued'\n OR (status = 'in_progress' AND processing_started_at < now() - $1::interval)\n OR (status = 'failed' AND attempts < $2)\n )\n AND protocol_version = ANY($4)\n ORDER BY l1_batch_number ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING leaf_aggregation_witness_jobs.*\n " }, - "0e001ef507253b4fd3a87e379c8f2e63fa41250b1a396d81697de2b7ea71215e": { + "13e5f6a2a73eaa979229611ffdbed86d6e5e1bad0c645d39b56fdc47f5c17971": { "describe": { "columns": [ { - "name": "count!", + "name": "hashed_key", "ordinal": 0, - "type_info": "Int8" + "type_info": "Bytea" } ], "nullable": [ - null + false ], "parameters": { "Left": [ "Int8", - "Bytea", - "Bytea", - "Bytea", - "Bytea" + "Int8" ] } }, - "query": "SELECT COUNT(*) as \"count!\" FROM l1_batches WHERE number = $1 AND hash = $2 AND merkle_root_hash = $3 AND parent_hash = $4 AND l2_l1_merkle_root = $5" + "query": "SELECT DISTINCT hashed_key FROM storage_logs WHERE miniblock_number BETWEEN $1 and $2" }, - "0ee31e6e2ec60f427d8dec719ec0ba03ef75bc610e878ae32b0bf61c4c2c1366": { + "13f9c910b12ede287fe5ee753c9a3bf87a06216a320a58170608b9c81dc14b14": { "describe": { "columns": [ { - "name": "id", - "ordinal": 0, - "type_info": "Int8" - }, - { - "name": "instance_host", - "ordinal": 1, - "type_info": "Inet" - }, - { - "name": "instance_port", - "ordinal": 2, - "type_info": "Int4" - }, - { - "name": "instance_status", - "ordinal": 3, - "type_info": "Text" - }, - { - "name": "specialized_prover_group_id", - "ordinal": 4, - "type_info": "Int2" - }, - { - "name": "zone", - "ordinal": 5, - "type_info": "Text" - }, - { - "name": "created_at", - "ordinal": 6, - "type_info": "Timestamp" - }, - { - "name": "updated_at", - "ordinal": 7, - "type_info": "Timestamp" - }, - { - "name": "processing_started_at", - "ordinal": 8, - "type_info": "Timestamp" - } - ], - "nullable": [ - false, - false, - false, - false, - false, - true, - false, - false, - true - ], - "parameters": { - "Left": [ - "Interval", - "Int2", - "Text" - ] - } - }, - "query": "UPDATE gpu_prover_queue_fri SET instance_status = 'reserved', updated_at = now(), processing_started_at = now() WHERE id in ( SELECT id FROM gpu_prover_queue_fri WHERE specialized_prover_group_id=$2 AND zone=$3 AND ( instance_status = 'available' OR (instance_status = 'reserved' AND processing_started_at < now() - $1::interval) ) ORDER BY updated_at ASC LIMIT 1 FOR UPDATE SKIP LOCKED ) RETURNING gpu_prover_queue_fri.*\n " - }, - "0f5897b5e0109535caa3d49f899c65e5080511d49305558b59b185c34227aa18": { - "describe": { - "columns": [ - { - "name": "nonce!", - "ordinal": 0, - "type_info": "Int8" - } - ], - "nullable": [ - true - ], - "parameters": { - "Left": [ - "Bytea", - "Int8" - ] - } - }, - "query": "SELECT nonce as \"nonce!\" FROM transactions WHERE initiator_address = $1 AND nonce >= $2 AND is_priority = FALSE AND (miniblock_number IS NOT NULL OR error IS NULL) ORDER BY nonce" - }, - "0f8a603899280c015b033c4160bc064865103e9d6d63a369f07a8e5d859a7b14": { - "describe": { - "columns": [ - { - "name": "timestamp", - "ordinal": 0, - "type_info": "Int8" - } - ], - "nullable": [ - false - ], - "parameters": { - "Left": [ - "Int8" - ] - } - }, - "query": "SELECT timestamp FROM miniblocks WHERE number = $1" - }, - "0fd885074c624bea478ec0a24a499cf1278773cdba92550439da5d3b70cbf38c": { - "describe": { - "columns": [ - { - "name": "count!", - "ordinal": 0, - "type_info": "Int8" - }, - { - "name": "status!", - "ordinal": 1, - "type_info": "Text" - } - ], - "nullable": [ - null, - false - ], - "parameters": { - "Left": [] - } - }, - "query": "\n SELECT COUNT(*) as \"count!\", status as \"status!\"\n FROM prover_jobs\n GROUP BY status\n " - }, - "100ede607d40d8d07000fcdc40705c806e8229323e0e6dfb7507691838963ccf": { - "describe": { - "columns": [ - { - "name": "l1_batch_number", - "ordinal": 0, - "type_info": "Int8" - }, - { - "name": "basic_circuits", - "ordinal": 1, - "type_info": "Bytea" - }, - { - "name": "basic_circuits_inputs", - "ordinal": 2, - "type_info": "Bytea" - }, - { - "name": "number_of_basic_circuits", - "ordinal": 3, - "type_info": "Int4" - }, - { - "name": "status", - "ordinal": 4, - "type_info": "Text" - }, - { - "name": "processing_started_at", - "ordinal": 5, - "type_info": "Timestamp" - }, - { - "name": "time_taken", - "ordinal": 6, - "type_info": "Time" - }, - { - "name": "error", - "ordinal": 7, - "type_info": "Text" - }, - { - "name": "created_at", - "ordinal": 8, - "type_info": "Timestamp" - }, - { - "name": "updated_at", - "ordinal": 9, - "type_info": "Timestamp" - }, - { - "name": "attempts", - "ordinal": 10, - "type_info": "Int4" - }, - { - "name": "basic_circuits_blob_url", - "ordinal": 11, - "type_info": "Text" - }, - { - "name": "basic_circuits_inputs_blob_url", - "ordinal": 12, - "type_info": "Text" - }, - { - "name": "is_blob_cleaned", - "ordinal": 13, - "type_info": "Bool" - }, - { - "name": "protocol_version", - "ordinal": 14, - "type_info": "Int4" - } - ], - "nullable": [ - false, - false, - false, - false, - false, - true, - true, - true, - false, - false, - false, - true, - true, - false, - true - ], - "parameters": { - "Left": [ - "Interval", - "Int4", - "Int8", - "Int4Array" - ] - } - }, - "query": "\n UPDATE leaf_aggregation_witness_jobs\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now()\n WHERE l1_batch_number = (\n SELECT l1_batch_number\n FROM leaf_aggregation_witness_jobs\n WHERE l1_batch_number <= $3\n AND\n ( status = 'queued'\n OR (status = 'in_progress' AND processing_started_at < now() - $1::interval)\n OR (status = 'failed' AND attempts < $2)\n )\n AND protocol_version = ANY($4)\n ORDER BY l1_batch_number ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING leaf_aggregation_witness_jobs.*\n " - }, - "13e5f6a2a73eaa979229611ffdbed86d6e5e1bad0c645d39b56fdc47f5c17971": { - "describe": { - "columns": [ - { - "name": "hashed_key", - "ordinal": 0, - "type_info": "Bytea" - } - ], - "nullable": [ - false - ], - "parameters": { - "Left": [ - "Int8", - "Int8" - ] - } - }, - "query": "SELECT DISTINCT hashed_key FROM storage_logs WHERE miniblock_number BETWEEN $1 and $2" - }, - "13f9c910b12ede287fe5ee753c9a3bf87a06216a320a58170608b9c81dc14b14": { - "describe": { - "columns": [ - { - "name": "tx_hash", + "name": "tx_hash", "ordinal": 0, "type_info": "Text" } @@ -1618,345 +1083,241 @@ }, "query": "\n UPDATE witness_inputs_fri SET status =$1, updated_at = now()\n WHERE l1_batch_number = $2\n " }, - "1d3e9cd259fb70a2bc81e8344576c3fb27b47ad6cdb6751d2a9b8c8d342b7a75": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Text", - "Int8" - ] - } - }, - "query": "\n UPDATE prover_jobs\n SET status = $1, updated_at = now()\n WHERE id = $2\n " - }, - "1dbe99ed32b361936c2a829a99a92ac792a02c8a304d23b140804844a7b0f857": { + "1d1f5198cbb0b9cd70019a9b386212de294075c00ebac4dbd39fda5397dbb07c": { "describe": { "columns": [ { - "name": "l1_batch_number", + "name": "number", "ordinal": 0, "type_info": "Int8" }, { - "name": "circuit_id", + "name": "timestamp", "ordinal": 1, - "type_info": "Int2" + "type_info": "Int8" }, { - "name": "depth", - "ordinal": 2, - "type_info": "Int4" - } - ], - "nullable": [ - false, - false, - false - ], - "parameters": { - "Left": [] - } - }, - "query": "\n UPDATE node_aggregation_witness_jobs_fri\n SET status='queued'\n WHERE (l1_batch_number, circuit_id, depth) IN\n (SELECT prover_jobs_fri.l1_batch_number, prover_jobs_fri.circuit_id, prover_jobs_fri.depth\n FROM prover_jobs_fri\n JOIN node_aggregation_witness_jobs_fri nawj ON\n prover_jobs_fri.l1_batch_number = nawj.l1_batch_number\n AND prover_jobs_fri.circuit_id = nawj.circuit_id\n AND prover_jobs_fri.depth = nawj.depth\n WHERE nawj.status = 'waiting_for_proofs'\n AND prover_jobs_fri.status = 'successful'\n AND prover_jobs_fri.aggregation_round = 1\n AND prover_jobs_fri.depth = 0\n GROUP BY prover_jobs_fri.l1_batch_number, prover_jobs_fri.circuit_id, prover_jobs_fri.depth, nawj.number_of_dependent_jobs\n HAVING COUNT(*) = nawj.number_of_dependent_jobs)\n RETURNING l1_batch_number, circuit_id, depth;\n " - }, - "1e68306cbd83eb6b5de59fb8f638c8f3252732b9074e2455f7b5aedf6fdc886f": { - "describe": { - "columns": [ - { - "name": "count!", - "ordinal": 0, - "type_info": "Int8" - }, - { - "name": "circuit_id!", - "ordinal": 1, - "type_info": "Int2" - }, - { - "name": "aggregation_round!", + "name": "is_finished", "ordinal": 2, - "type_info": "Int2" + "type_info": "Bool" }, { - "name": "status!", + "name": "l1_tx_count", "ordinal": 3, - "type_info": "Text" - } - ], - "nullable": [ - null, - false, - false, - false - ], - "parameters": { - "Left": [] - } - }, - "query": "\n SELECT COUNT(*) as \"count!\", circuit_id as \"circuit_id!\", aggregation_round as \"aggregation_round!\", status as \"status!\"\n FROM prover_jobs_fri\n GROUP BY circuit_id, aggregation_round, status\n " - }, - "1ed353a16e8d0abaf426e5c235b20a79c727c08bc23fb1708a833a6930131691": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Int8", - "Text" - ] - } - }, - "query": "INSERT INTO proof_compression_jobs_fri(l1_batch_number, status, created_at, updated_at) VALUES ($1, $2, now(), now()) ON CONFLICT (l1_batch_number) DO NOTHING" - }, - "1eede5c2169aee5a767b3b6b829f53721c0c353956ccec31a75226a65325ae46": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [] - } - }, - "query": "UPDATE transactions SET in_mempool = FALSE WHERE in_mempool = TRUE" - }, - "1f3e41f4ac5b1f6e735f1c422c0098ed534d9e8fe84e98b3234e893e8a2c5085": { - "describe": { - "columns": [ - { - "name": "id", - "ordinal": 0, "type_info": "Int4" - } - ], - "nullable": [ - false - ], - "parameters": { - "Left": [ - "Text" - ] - } - }, - "query": "SELECT eth_txs.id FROM eth_txs_history JOIN eth_txs\n ON eth_txs.confirmed_eth_tx_history_id = eth_txs_history.id\n WHERE eth_txs_history.tx_hash = $1" - }, - "1faf6552c221c75b7232b55210c0c37be76a57ec9dc94584b6ccb562e8b182f2": { - "describe": { - "columns": [ - { - "name": "id", - "ordinal": 0, - "type_info": "Int8" - }, - { - "name": "l1_batch_number", - "ordinal": 1, - "type_info": "Int8" - }, - { - "name": "circuit_type", - "ordinal": 2, - "type_info": "Text" - }, - { - "name": "prover_input", - "ordinal": 3, - "type_info": "Bytea" }, { - "name": "status", + "name": "l2_tx_count", "ordinal": 4, - "type_info": "Text" + "type_info": "Int4" }, { - "name": "error", + "name": "fee_account_address", "ordinal": 5, - "type_info": "Text" + "type_info": "Bytea" }, { - "name": "processing_started_at", + "name": "bloom", "ordinal": 6, - "type_info": "Timestamp" + "type_info": "Bytea" }, { - "name": "created_at", + "name": "priority_ops_onchain_data", "ordinal": 7, - "type_info": "Timestamp" + "type_info": "ByteaArray" }, { - "name": "updated_at", + "name": "hash", "ordinal": 8, - "type_info": "Timestamp" + "type_info": "Bytea" }, { - "name": "time_taken", + "name": "parent_hash", "ordinal": 9, - "type_info": "Time" + "type_info": "Bytea" }, { - "name": "aggregation_round", + "name": "commitment", "ordinal": 10, - "type_info": "Int4" + "type_info": "Bytea" }, { - "name": "result", + "name": "compressed_write_logs", "ordinal": 11, "type_info": "Bytea" }, { - "name": "sequence_number", + "name": "compressed_contracts", "ordinal": 12, - "type_info": "Int4" + "type_info": "Bytea" }, { - "name": "attempts", + "name": "eth_prove_tx_id", "ordinal": 13, "type_info": "Int4" }, { - "name": "circuit_input_blob_url", + "name": "eth_commit_tx_id", "ordinal": 14, - "type_info": "Text" + "type_info": "Int4" }, { - "name": "proccesed_by", + "name": "eth_execute_tx_id", "ordinal": 15, - "type_info": "Text" + "type_info": "Int4" }, { - "name": "is_blob_cleaned", + "name": "merkle_root_hash", "ordinal": 16, - "type_info": "Bool" + "type_info": "Bytea" }, { - "name": "protocol_version", + "name": "l2_to_l1_logs", "ordinal": 17, - "type_info": "Int4" - } - ], - "nullable": [ - false, - false, - false, - false, - false, - true, - true, - false, - false, - false, - false, - true, - false, - false, - true, - true, - false, - true - ], - "parameters": { - "Left": [ - "Int8" - ] - } - }, - "query": "SELECT * from prover_jobs where id=$1" - }, - "20b22fd457417e9a72f5941887448f9a11b97b449db4759da0b9d368ce93996b": { - "describe": { - "columns": [ + "type_info": "ByteaArray" + }, { - "name": "recursion_scheduler_level_vk_hash", - "ordinal": 0, + "name": "l2_to_l1_messages", + "ordinal": 18, + "type_info": "ByteaArray" + }, + { + "name": "used_contract_hashes", + "ordinal": 19, + "type_info": "Jsonb" + }, + { + "name": "compressed_initial_writes", + "ordinal": 20, "type_info": "Bytea" }, { - "name": "recursion_node_level_vk_hash", - "ordinal": 1, + "name": "compressed_repeated_writes", + "ordinal": 21, "type_info": "Bytea" }, { - "name": "recursion_leaf_level_vk_hash", - "ordinal": 2, + "name": "l2_l1_compressed_messages", + "ordinal": 22, "type_info": "Bytea" }, { - "name": "recursion_circuits_set_vks_hash", - "ordinal": 3, + "name": "l2_l1_merkle_root", + "ordinal": 23, "type_info": "Bytea" - } - ], - "nullable": [ - false, - false, - false, - false - ], - "parameters": { - "Left": [ - "Int4" - ] - } - }, - "query": "SELECT recursion_scheduler_level_vk_hash, recursion_node_level_vk_hash, recursion_leaf_level_vk_hash, recursion_circuits_set_vks_hash\n FROM protocol_versions\n WHERE id = $1\n " - }, - "22b57675a726d9cfeb82a60ba50c36cab1548d197ea56a7658d3f005df07c60b": { - "describe": { - "columns": [ + }, { - "name": "op_id", - "ordinal": 0, + "name": "l1_gas_price", + "ordinal": 24, "type_info": "Int8" - } - ], - "nullable": [ - null - ], - "parameters": { - "Left": [] - } - }, - "query": "SELECT MAX(priority_op_id) as \"op_id\" from transactions where is_priority = true AND miniblock_number IS NOT NULL" - }, - "22e50b6def0365ddf979b64c3c943e2a3f8e5a1abcf72e61a00a82780d2d364e": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Int8", - "Text", - "Text" - ] - } - }, - "query": "INSERT INTO proof_compression_jobs_fri(l1_batch_number, fri_proof_blob_url, status, created_at, updated_at) VALUES ($1, $2, $3, now(), now()) ON CONFLICT (l1_batch_number) DO NOTHING" - }, - "2397c1a050d358b596c9881c379bf823e267c03172f72c42da84cc0c04cc9d93": { - "describe": { - "columns": [ + }, { - "name": "miniblock_number!", - "ordinal": 0, + "name": "l2_fair_gas_price", + "ordinal": 25, "type_info": "Int8" }, { - "name": "hash", - "ordinal": 1, + "name": "rollup_last_leaf_index", + "ordinal": 26, + "type_info": "Int8" + }, + { + "name": "zkporter_is_available", + "ordinal": 27, + "type_info": "Bool" + }, + { + "name": "bootloader_code_hash", + "ordinal": 28, "type_info": "Bytea" }, { - "name": "index_in_block!", - "ordinal": 2, - "type_info": "Int4" + "name": "default_aa_code_hash", + "ordinal": 29, + "type_info": "Bytea" }, { - "name": "l1_batch_tx_index!", - "ordinal": 3, + "name": "base_fee_per_gas", + "ordinal": 30, + "type_info": "Numeric" + }, + { + "name": "aux_data_hash", + "ordinal": 31, + "type_info": "Bytea" + }, + { + "name": "pass_through_data_hash", + "ordinal": 32, + "type_info": "Bytea" + }, + { + "name": "meta_parameters_hash", + "ordinal": 33, + "type_info": "Bytea" + }, + { + "name": "protocol_version", + "ordinal": 34, "type_info": "Int4" + }, + { + "name": "compressed_state_diffs", + "ordinal": 35, + "type_info": "Bytea" + }, + { + "name": "system_logs", + "ordinal": 36, + "type_info": "ByteaArray" + }, + { + "name": "events_queue_commitment", + "ordinal": 37, + "type_info": "Bytea" + }, + { + "name": "bootloader_initial_content_commitment", + "ordinal": 38, + "type_info": "Bytea" } ], "nullable": [ + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + true, + true, + true, + true, + false, + false, + true, + true, + true, + true, + false, + true, + true, + true, + true, true, false, true, @@ -1968,23 +1329,9 @@ ] } }, - "query": "\n SELECT miniblock_number as \"miniblock_number!\",\n hash, index_in_block as \"index_in_block!\", l1_batch_tx_index as \"l1_batch_tx_index!\"\n FROM transactions\n WHERE l1_batch_number = $1\n ORDER BY miniblock_number, index_in_block\n " - }, - "23c154c243f27912320ea0d68bc7bb372517010fb8c5737621cadd7b408afe8d": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Text", - "Text", - "Int8" - ] - } - }, - "query": "UPDATE proof_compression_jobs_fri SET status =$1, error= $2, updated_at = now() WHERE l1_batch_number = $3" + "query": "SELECT number, timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, rollup_last_leaf_index, zkporter_is_available, bootloader_code_hash, default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, meta_parameters_hash, protocol_version, compressed_state_diffs, system_logs, events_queue_commitment, bootloader_initial_content_commitment FROM l1_batches LEFT JOIN commitments ON commitments.l1_batch_number = l1_batches.number WHERE eth_commit_tx_id IS NOT NULL AND eth_prove_tx_id IS NULL ORDER BY number LIMIT $1" }, - "2424f0ab2b156e953841107cfc0ccd76519d13c62fdcd5fd6b39e3503d6ec82c": { + "1d3e9cd259fb70a2bc81e8344576c3fb27b47ad6cdb6751d2a9b8c8d342b7a75": { "describe": { "columns": [], "nullable": [], @@ -1995,149 +1342,209 @@ ] } }, - "query": "\n UPDATE scheduler_witness_jobs_fri\n SET status ='failed', error= $1, updated_at = now()\n WHERE l1_batch_number = $2\n " + "query": "\n UPDATE prover_jobs\n SET status = $1, updated_at = now()\n WHERE id = $2\n " }, - "249d8c0334a8a1a4ff993f72f5245dc55c60773732bfe7596dc5f05f34c15131": { + "1dbe99ed32b361936c2a829a99a92ac792a02c8a304d23b140804844a7b0f857": { "describe": { "columns": [ { - "name": "id", + "name": "l1_batch_number", "ordinal": 0, + "type_info": "Int8" + }, + { + "name": "circuit_id", + "ordinal": 1, + "type_info": "Int2" + }, + { + "name": "depth", + "ordinal": 2, "type_info": "Int4" } ], "nullable": [ + false, + false, false ], "parameters": { - "Left": [ - "Text" - ] + "Left": [] } }, - "query": "INSERT INTO eth_txs (raw_tx, nonce, tx_type, contract_address, predicted_gas_cost, created_at, updated_at)\n VALUES ('\\x00', 0, $1, '', 0, now(), now())\n RETURNING id" + "query": "\n UPDATE node_aggregation_witness_jobs_fri\n SET status='queued'\n WHERE (l1_batch_number, circuit_id, depth) IN\n (SELECT prover_jobs_fri.l1_batch_number, prover_jobs_fri.circuit_id, prover_jobs_fri.depth\n FROM prover_jobs_fri\n JOIN node_aggregation_witness_jobs_fri nawj ON\n prover_jobs_fri.l1_batch_number = nawj.l1_batch_number\n AND prover_jobs_fri.circuit_id = nawj.circuit_id\n AND prover_jobs_fri.depth = nawj.depth\n WHERE nawj.status = 'waiting_for_proofs'\n AND prover_jobs_fri.status = 'successful'\n AND prover_jobs_fri.aggregation_round = 1\n AND prover_jobs_fri.depth = 0\n GROUP BY prover_jobs_fri.l1_batch_number, prover_jobs_fri.circuit_id, prover_jobs_fri.depth, nawj.number_of_dependent_jobs\n HAVING COUNT(*) = nawj.number_of_dependent_jobs)\n RETURNING l1_batch_number, circuit_id, depth;\n " }, - "252c1398bf08802e9dc038f7c9d95cc9d56cbf760d7de5a48f014478850daede": { + "1e68306cbd83eb6b5de59fb8f638c8f3252732b9074e2455f7b5aedf6fdc886f": { "describe": { "columns": [ { - "name": "l1_batch_number", + "name": "count!", "ordinal": 0, "type_info": "Int8" }, { - "name": "scheduler_witness_blob_url", + "name": "circuit_id!", "ordinal": 1, - "type_info": "Text" + "type_info": "Int2" }, { - "name": "final_node_aggregations_blob_url", + "name": "aggregation_round!", "ordinal": 2, + "type_info": "Int2" + }, + { + "name": "status!", + "ordinal": 3, "type_info": "Text" } ], "nullable": [ + null, false, - true, - true + false, + false ], + "parameters": { + "Left": [] + } + }, + "query": "\n SELECT COUNT(*) as \"count!\", circuit_id as \"circuit_id!\", aggregation_round as \"aggregation_round!\", status as \"status!\"\n FROM prover_jobs_fri\n GROUP BY circuit_id, aggregation_round, status\n " + }, + "1ed353a16e8d0abaf426e5c235b20a79c727c08bc23fb1708a833a6930131691": { + "describe": { + "columns": [], + "nullable": [], "parameters": { "Left": [ - "Int8" + "Int8", + "Text" ] } }, - "query": "\n SELECT l1_batch_number, scheduler_witness_blob_url, final_node_aggregations_blob_url FROM scheduler_witness_jobs\n WHERE status='successful' AND is_blob_cleaned=FALSE\n AND updated_at < NOW() - INTERVAL '30 days'\n AND scheduler_witness_blob_url is NOT NULL\n AND final_node_aggregations_blob_url is NOT NULL\n LIMIT $1;\n " + "query": "INSERT INTO proof_compression_jobs_fri(l1_batch_number, status, created_at, updated_at) VALUES ($1, $2, now(), now()) ON CONFLICT (l1_batch_number) DO NOTHING" }, - "269f3ac58705d65f775a6c84a62b9c0726beef51eb633937fa2a75b80c6d7fbc": { + "1eede5c2169aee5a767b3b6b829f53721c0c353956ccec31a75226a65325ae46": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [] + } + }, + "query": "UPDATE transactions SET in_mempool = FALSE WHERE in_mempool = TRUE" + }, + "1f3e41f4ac5b1f6e735f1c422c0098ed534d9e8fe84e98b3234e893e8a2c5085": { "describe": { "columns": [ { - "name": "hash", + "name": "id", "ordinal": 0, - "type_info": "Bytea" - }, - { - "name": "number", - "ordinal": 1, - "type_info": "Int8" - }, - { - "name": "timestamp", - "ordinal": 2, - "type_info": "Int8" + "type_info": "Int4" } ], "nullable": [ - false, - false, false ], "parameters": { "Left": [ - "Int8" + "Text" ] } }, - "query": "SELECT hash, number, timestamp FROM miniblocks WHERE number > $1 ORDER BY number ASC" + "query": "SELECT eth_txs.id FROM eth_txs_history JOIN eth_txs\n ON eth_txs.confirmed_eth_tx_history_id = eth_txs_history.id\n WHERE eth_txs_history.tx_hash = $1" }, - "26ac14152ade97892cd78d37884523187a5619093887b5e6564c3a80741b9d94": { + "1faf6552c221c75b7232b55210c0c37be76a57ec9dc94584b6ccb562e8b182f2": { "describe": { "columns": [ { "name": "id", "ordinal": 0, - "type_info": "Int4" + "type_info": "Int8" }, { - "name": "timestamp", + "name": "l1_batch_number", "ordinal": 1, "type_info": "Int8" }, { - "name": "recursion_scheduler_level_vk_hash", + "name": "circuit_type", "ordinal": 2, - "type_info": "Bytea" + "type_info": "Text" }, { - "name": "recursion_node_level_vk_hash", + "name": "prover_input", "ordinal": 3, "type_info": "Bytea" }, { - "name": "recursion_leaf_level_vk_hash", + "name": "status", "ordinal": 4, - "type_info": "Bytea" + "type_info": "Text" }, { - "name": "recursion_circuits_set_vks_hash", + "name": "error", "ordinal": 5, - "type_info": "Bytea" + "type_info": "Text" }, { - "name": "bootloader_code_hash", + "name": "processing_started_at", "ordinal": 6, - "type_info": "Bytea" + "type_info": "Timestamp" }, { - "name": "default_account_code_hash", + "name": "created_at", "ordinal": 7, - "type_info": "Bytea" + "type_info": "Timestamp" }, { - "name": "verifier_address", + "name": "updated_at", "ordinal": 8, - "type_info": "Bytea" + "type_info": "Timestamp" }, { - "name": "upgrade_tx_hash", + "name": "time_taken", "ordinal": 9, - "type_info": "Bytea" + "type_info": "Time" }, { - "name": "created_at", + "name": "aggregation_round", "ordinal": 10, - "type_info": "Timestamp" + "type_info": "Int4" + }, + { + "name": "result", + "ordinal": 11, + "type_info": "Bytea" + }, + { + "name": "sequence_number", + "ordinal": 12, + "type_info": "Int4" + }, + { + "name": "attempts", + "ordinal": 13, + "type_info": "Int4" + }, + { + "name": "circuit_input_blob_url", + "ordinal": 14, + "type_info": "Text" + }, + { + "name": "proccesed_by", + "ordinal": 15, + "type_info": "Text" + }, + { + "name": "is_blob_cleaned", + "ordinal": 16, + "type_info": "Bool" + }, + { + "name": "protocol_version", + "ordinal": 17, + "type_info": "Int4" } ], "nullable": [ @@ -2146,131 +1553,127 @@ false, false, false, + true, + true, false, false, false, false, true, - false + false, + false, + true, + true, + false, + true ], "parameters": { "Left": [ - "Int4" + "Int8" ] } }, - "query": "SELECT * FROM protocol_versions WHERE id = $1" + "query": "SELECT * from prover_jobs where id=$1" }, - "297d6517ec5f050e8d8fe4878e4ff330b4b10af4d60de86e8a25e2cd70e0363b": { + "20b22fd457417e9a72f5941887448f9a11b97b449db4759da0b9d368ce93996b": { "describe": { "columns": [ { - "name": "verification_info", + "name": "recursion_scheduler_level_vk_hash", "ordinal": 0, - "type_info": "Jsonb" + "type_info": "Bytea" + }, + { + "name": "recursion_node_level_vk_hash", + "ordinal": 1, + "type_info": "Bytea" + }, + { + "name": "recursion_leaf_level_vk_hash", + "ordinal": 2, + "type_info": "Bytea" + }, + { + "name": "recursion_circuits_set_vks_hash", + "ordinal": 3, + "type_info": "Bytea" } ], "nullable": [ - true + false, + false, + false, + false ], "parameters": { "Left": [ - "Bytea" + "Int4" ] } }, - "query": "SELECT verification_info FROM contracts_verification_info WHERE address = $1" + "query": "SELECT recursion_scheduler_level_vk_hash, recursion_node_level_vk_hash, recursion_leaf_level_vk_hash, recursion_circuits_set_vks_hash\n FROM protocol_versions\n WHERE id = $1\n " }, - "2985ea2bf34a94573103654c00a49d2a946afe5d552ac1c2a2d055eb9d6f2cf1": { + "22b57675a726d9cfeb82a60ba50c36cab1548d197ea56a7658d3f005df07c60b": { + "describe": { + "columns": [ + { + "name": "op_id", + "ordinal": 0, + "type_info": "Int8" + } + ], + "nullable": [ + null + ], + "parameters": { + "Left": [] + } + }, + "query": "SELECT MAX(priority_op_id) as \"op_id\" from transactions where is_priority = true AND miniblock_number IS NOT NULL" + }, + "22e50b6def0365ddf979b64c3c943e2a3f8e5a1abcf72e61a00a82780d2d364e": { "describe": { "columns": [], "nullable": [], "parameters": { "Left": [ - "Time", - "Int8" + "Int8", + "Text", + "Text" ] } }, - "query": "\n UPDATE node_aggregation_witness_jobs_fri\n SET status = 'successful', updated_at = now(), time_taken = $1\n WHERE id = $2\n " + "query": "INSERT INTO proof_compression_jobs_fri(l1_batch_number, fri_proof_blob_url, status, created_at, updated_at) VALUES ($1, $2, $3, now(), now()) ON CONFLICT (l1_batch_number) DO NOTHING" }, - "2a38561e789af470d6ef1a905143f2d8d102b4ff23cebe97586681da9e4084a9": { + "2397c1a050d358b596c9881c379bf823e267c03172f72c42da84cc0c04cc9d93": { "describe": { "columns": [ { - "name": "number", + "name": "miniblock_number!", "ordinal": 0, "type_info": "Int8" }, - { - "name": "timestamp", - "ordinal": 1, - "type_info": "Int8" - }, { "name": "hash", - "ordinal": 2, + "ordinal": 1, "type_info": "Bytea" }, { - "name": "l1_tx_count", - "ordinal": 3, - "type_info": "Int4" - }, - { - "name": "l2_tx_count", - "ordinal": 4, + "name": "index_in_block!", + "ordinal": 2, "type_info": "Int4" }, { - "name": "base_fee_per_gas", - "ordinal": 5, - "type_info": "Numeric" - }, - { - "name": "l1_gas_price", - "ordinal": 6, - "type_info": "Int8" - }, - { - "name": "l2_fair_gas_price", - "ordinal": 7, - "type_info": "Int8" - }, - { - "name": "bootloader_code_hash", - "ordinal": 8, - "type_info": "Bytea" - }, - { - "name": "default_aa_code_hash", - "ordinal": 9, - "type_info": "Bytea" - }, - { - "name": "protocol_version", - "ordinal": 10, + "name": "l1_batch_tx_index!", + "ordinal": 3, "type_info": "Int4" - }, - { - "name": "virtual_blocks", - "ordinal": 11, - "type_info": "Int8" } ], "nullable": [ - false, - false, - false, - false, - false, - false, - false, - false, - true, true, + false, true, - false + true ], "parameters": { "Left": [ @@ -2278,15 +1681,42 @@ ] } }, - "query": "SELECT number, timestamp, hash, l1_tx_count, l2_tx_count, base_fee_per_gas, l1_gas_price, l2_fair_gas_price, bootloader_code_hash, default_aa_code_hash, protocol_version, virtual_blocks\n FROM miniblocks WHERE number = $1" + "query": "\n SELECT miniblock_number as \"miniblock_number!\",\n hash, index_in_block as \"index_in_block!\", l1_batch_tx_index as \"l1_batch_tx_index!\"\n FROM transactions\n WHERE l1_batch_number = $1\n ORDER BY miniblock_number, index_in_block\n " }, - "2a98f1b149045f25d2830c0b4ffaaa400b4c572eb3842add22e8540f44943711": { + "23c154c243f27912320ea0d68bc7bb372517010fb8c5737621cadd7b408afe8d": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Text", + "Text", + "Int8" + ] + } + }, + "query": "UPDATE proof_compression_jobs_fri SET status =$1, error= $2, updated_at = now() WHERE l1_batch_number = $3" + }, + "2424f0ab2b156e953841107cfc0ccd76519d13c62fdcd5fd6b39e3503d6ec82c": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Text", + "Int8" + ] + } + }, + "query": "\n UPDATE scheduler_witness_jobs_fri\n SET status ='failed', error= $1, updated_at = now()\n WHERE l1_batch_number = $2\n " + }, + "249d8c0334a8a1a4ff993f72f5245dc55c60773732bfe7596dc5f05f34c15131": { "describe": { "columns": [ { "name": "id", "ordinal": 0, - "type_info": "Int8" + "type_info": "Int4" } ], "nullable": [ @@ -2294,58 +1724,133 @@ ], "parameters": { "Left": [ - "Int8", - "Int2" + "Text" ] } }, - "query": "SELECT id from prover_jobs_fri WHERE l1_batch_number = $1 AND status = 'successful' AND aggregation_round = $2" + "query": "INSERT INTO eth_txs (raw_tx, nonce, tx_type, contract_address, predicted_gas_cost, created_at, updated_at)\n VALUES ('\\x00', 0, $1, '', 0, now(), now())\n RETURNING id" }, - "2adfdba6fa2b6b967ba03ae6f930e7f3ea851f678d30df699ced27b2dbb01c2a": { + "252c1398bf08802e9dc038f7c9d95cc9d56cbf760d7de5a48f014478850daede": { "describe": { "columns": [ { - "name": "number", + "name": "l1_batch_number", "ordinal": 0, "type_info": "Int8" + }, + { + "name": "scheduler_witness_blob_url", + "ordinal": 1, + "type_info": "Text" + }, + { + "name": "final_node_aggregations_blob_url", + "ordinal": 2, + "type_info": "Text" } ], "nullable": [ - false + false, + true, + true ], "parameters": { - "Left": [] + "Left": [ + "Int8" + ] } }, - "query": "SELECT number FROM l1_batches LEFT JOIN eth_txs_history as execute_tx ON (l1_batches.eth_execute_tx_id = execute_tx.eth_tx_id) WHERE execute_tx.confirmed_at IS NOT NULL ORDER BY number DESC LIMIT 1" + "query": "\n SELECT l1_batch_number, scheduler_witness_blob_url, final_node_aggregations_blob_url FROM scheduler_witness_jobs\n WHERE status='successful' AND is_blob_cleaned=FALSE\n AND updated_at < NOW() - INTERVAL '30 days'\n AND scheduler_witness_blob_url is NOT NULL\n AND final_node_aggregations_blob_url is NOT NULL\n LIMIT $1;\n " }, - "2b22e7d15adf069c8e68954059b83f71a71350f3325b4280840c4be7e54a319f": { + "269f3ac58705d65f775a6c84a62b9c0726beef51eb633937fa2a75b80c6d7fbc": { "describe": { "columns": [ { - "name": "l1_address", + "name": "hash", "ordinal": 0, "type_info": "Bytea" }, { - "name": "l2_address", + "name": "number", "ordinal": 1, - "type_info": "Bytea" + "type_info": "Int8" }, { - "name": "name", + "name": "timestamp", "ordinal": 2, - "type_info": "Varchar" + "type_info": "Int8" + } + ], + "nullable": [ + false, + false, + false + ], + "parameters": { + "Left": [ + "Int8" + ] + } + }, + "query": "SELECT hash, number, timestamp FROM miniblocks WHERE number > $1 ORDER BY number ASC" + }, + "26ac14152ade97892cd78d37884523187a5619093887b5e6564c3a80741b9d94": { + "describe": { + "columns": [ + { + "name": "id", + "ordinal": 0, + "type_info": "Int4" }, { - "name": "symbol", + "name": "timestamp", + "ordinal": 1, + "type_info": "Int8" + }, + { + "name": "recursion_scheduler_level_vk_hash", + "ordinal": 2, + "type_info": "Bytea" + }, + { + "name": "recursion_node_level_vk_hash", "ordinal": 3, - "type_info": "Varchar" + "type_info": "Bytea" }, { - "name": "decimals", + "name": "recursion_leaf_level_vk_hash", "ordinal": 4, - "type_info": "Int4" + "type_info": "Bytea" + }, + { + "name": "recursion_circuits_set_vks_hash", + "ordinal": 5, + "type_info": "Bytea" + }, + { + "name": "bootloader_code_hash", + "ordinal": 6, + "type_info": "Bytea" + }, + { + "name": "default_account_code_hash", + "ordinal": 7, + "type_info": "Bytea" + }, + { + "name": "verifier_address", + "ordinal": 8, + "type_info": "Bytea" + }, + { + "name": "upgrade_tx_hash", + "ordinal": 9, + "type_info": "Bytea" + }, + { + "name": "created_at", + "ordinal": 10, + "type_info": "Timestamp" } ], "nullable": [ @@ -2353,138 +1858,346 @@ false, false, false, + false, + false, + false, + false, + false, + true, false ], "parameters": { - "Left": [] + "Left": [ + "Int4" + ] } }, - "query": "SELECT l1_address, l2_address, name, symbol, decimals FROM tokens\n WHERE well_known = true\n ORDER BY symbol" + "query": "SELECT * FROM protocol_versions WHERE id = $1" }, - "2b76ca7059810f691a2d7d053e7e62e06de13e7ddb7747e39335bb10c45534e9": { + "297d6517ec5f050e8d8fe4878e4ff330b4b10af4d60de86e8a25e2cd70e0363b": { "describe": { "columns": [ { - "name": "l1_batch_number", + "name": "verification_info", "ordinal": 0, - "type_info": "Int8" - }, - { - "name": "circuit_id", - "ordinal": 1, - "type_info": "Int2" + "type_info": "Jsonb" } ], "nullable": [ - false, - false + true ], "parameters": { - "Left": [] + "Left": [ + "Bytea" + ] } }, - "query": "\n UPDATE leaf_aggregation_witness_jobs_fri\n SET status='queued'\n WHERE (l1_batch_number, circuit_id) IN\n (SELECT prover_jobs_fri.l1_batch_number, prover_jobs_fri.circuit_id\n FROM prover_jobs_fri\n JOIN leaf_aggregation_witness_jobs_fri lawj ON\n prover_jobs_fri.l1_batch_number = lawj.l1_batch_number\n AND prover_jobs_fri.circuit_id = lawj.circuit_id\n WHERE lawj.status = 'waiting_for_proofs'\n AND prover_jobs_fri.status = 'successful'\n AND prover_jobs_fri.aggregation_round = 0\n GROUP BY prover_jobs_fri.l1_batch_number, prover_jobs_fri.circuit_id, lawj.number_of_basic_circuits\n HAVING COUNT(*) = lawj.number_of_basic_circuits)\n RETURNING l1_batch_number, circuit_id;\n " + "query": "SELECT verification_info FROM contracts_verification_info WHERE address = $1" }, - "2c136284610f728ddba3e255d7dc573b10e4baf9151de194b7d8e0dc40c40602": { + "2985ea2bf34a94573103654c00a49d2a946afe5d552ac1c2a2d055eb9d6f2cf1": { "describe": { "columns": [], "nullable": [], "parameters": { "Left": [ - "Bytea", - "Jsonb" + "Time", + "Int8" ] } }, - "query": "INSERT INTO transaction_traces (tx_hash, trace, created_at, updated_at) VALUES ($1, $2, now(), now())" + "query": "\n UPDATE node_aggregation_witness_jobs_fri\n SET status = 'successful', updated_at = now(), time_taken = $1\n WHERE id = $2\n " }, - "2c4178a125ddc46a36f7548c840e481e85738502c56566d1eef84feef2161b2e": { + "2a38561e789af470d6ef1a905143f2d8d102b4ff23cebe97586681da9e4084a9": { "describe": { "columns": [ { - "name": "hash", + "name": "number", "ordinal": 0, - "type_info": "Bytea" + "type_info": "Int8" }, { - "name": "is_priority", + "name": "timestamp", "ordinal": 1, - "type_info": "Bool" + "type_info": "Int8" }, { - "name": "full_fee", + "name": "hash", "ordinal": 2, - "type_info": "Numeric" + "type_info": "Bytea" }, { - "name": "layer_2_tip_fee", + "name": "l1_tx_count", "ordinal": 3, - "type_info": "Numeric" + "type_info": "Int4" }, { - "name": "initiator_address", + "name": "l2_tx_count", "ordinal": 4, - "type_info": "Bytea" + "type_info": "Int4" }, { - "name": "nonce", + "name": "base_fee_per_gas", "ordinal": 5, - "type_info": "Int8" + "type_info": "Numeric" }, { - "name": "signature", + "name": "l1_gas_price", "ordinal": 6, - "type_info": "Bytea" + "type_info": "Int8" }, { - "name": "input", + "name": "l2_fair_gas_price", "ordinal": 7, - "type_info": "Bytea" + "type_info": "Int8" }, { - "name": "data", + "name": "bootloader_code_hash", "ordinal": 8, - "type_info": "Jsonb" + "type_info": "Bytea" }, { - "name": "received_at", + "name": "default_aa_code_hash", "ordinal": 9, - "type_info": "Timestamp" + "type_info": "Bytea" }, { - "name": "priority_op_id", + "name": "protocol_version", "ordinal": 10, - "type_info": "Int8" + "type_info": "Int4" }, { - "name": "l1_batch_number", + "name": "virtual_blocks", "ordinal": 11, "type_info": "Int8" - }, + } + ], + "nullable": [ + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + false + ], + "parameters": { + "Left": [ + "Int8" + ] + } + }, + "query": "SELECT number, timestamp, hash, l1_tx_count, l2_tx_count, base_fee_per_gas, l1_gas_price, l2_fair_gas_price, bootloader_code_hash, default_aa_code_hash, protocol_version, virtual_blocks\n FROM miniblocks WHERE number = $1" + }, + "2a98f1b149045f25d2830c0b4ffaaa400b4c572eb3842add22e8540f44943711": { + "describe": { + "columns": [ { - "name": "index_in_block", - "ordinal": 12, - "type_info": "Int4" - }, + "name": "id", + "ordinal": 0, + "type_info": "Int8" + } + ], + "nullable": [ + false + ], + "parameters": { + "Left": [ + "Int8", + "Int2" + ] + } + }, + "query": "SELECT id from prover_jobs_fri WHERE l1_batch_number = $1 AND status = 'successful' AND aggregation_round = $2" + }, + "2adfdba6fa2b6b967ba03ae6f930e7f3ea851f678d30df699ced27b2dbb01c2a": { + "describe": { + "columns": [ { - "name": "error", - "ordinal": 13, - "type_info": "Varchar" - }, + "name": "number", + "ordinal": 0, + "type_info": "Int8" + } + ], + "nullable": [ + false + ], + "parameters": { + "Left": [] + } + }, + "query": "SELECT number FROM l1_batches LEFT JOIN eth_txs_history as execute_tx ON (l1_batches.eth_execute_tx_id = execute_tx.eth_tx_id) WHERE execute_tx.confirmed_at IS NOT NULL ORDER BY number DESC LIMIT 1" + }, + "2b22e7d15adf069c8e68954059b83f71a71350f3325b4280840c4be7e54a319f": { + "describe": { + "columns": [ { - "name": "gas_limit", - "ordinal": 14, - "type_info": "Numeric" + "name": "l1_address", + "ordinal": 0, + "type_info": "Bytea" }, { - "name": "gas_per_storage_limit", - "ordinal": 15, - "type_info": "Numeric" + "name": "l2_address", + "ordinal": 1, + "type_info": "Bytea" }, { - "name": "gas_per_pubdata_limit", - "ordinal": 16, - "type_info": "Numeric" + "name": "name", + "ordinal": 2, + "type_info": "Varchar" + }, + { + "name": "symbol", + "ordinal": 3, + "type_info": "Varchar" + }, + { + "name": "decimals", + "ordinal": 4, + "type_info": "Int4" + } + ], + "nullable": [ + false, + false, + false, + false, + false + ], + "parameters": { + "Left": [] + } + }, + "query": "SELECT l1_address, l2_address, name, symbol, decimals FROM tokens\n WHERE well_known = true\n ORDER BY symbol" + }, + "2b76ca7059810f691a2d7d053e7e62e06de13e7ddb7747e39335bb10c45534e9": { + "describe": { + "columns": [ + { + "name": "l1_batch_number", + "ordinal": 0, + "type_info": "Int8" + }, + { + "name": "circuit_id", + "ordinal": 1, + "type_info": "Int2" + } + ], + "nullable": [ + false, + false + ], + "parameters": { + "Left": [] + } + }, + "query": "\n UPDATE leaf_aggregation_witness_jobs_fri\n SET status='queued'\n WHERE (l1_batch_number, circuit_id) IN\n (SELECT prover_jobs_fri.l1_batch_number, prover_jobs_fri.circuit_id\n FROM prover_jobs_fri\n JOIN leaf_aggregation_witness_jobs_fri lawj ON\n prover_jobs_fri.l1_batch_number = lawj.l1_batch_number\n AND prover_jobs_fri.circuit_id = lawj.circuit_id\n WHERE lawj.status = 'waiting_for_proofs'\n AND prover_jobs_fri.status = 'successful'\n AND prover_jobs_fri.aggregation_round = 0\n GROUP BY prover_jobs_fri.l1_batch_number, prover_jobs_fri.circuit_id, lawj.number_of_basic_circuits\n HAVING COUNT(*) = lawj.number_of_basic_circuits)\n RETURNING l1_batch_number, circuit_id;\n " + }, + "2c136284610f728ddba3e255d7dc573b10e4baf9151de194b7d8e0dc40c40602": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Bytea", + "Jsonb" + ] + } + }, + "query": "INSERT INTO transaction_traces (tx_hash, trace, created_at, updated_at) VALUES ($1, $2, now(), now())" + }, + "2c4178a125ddc46a36f7548c840e481e85738502c56566d1eef84feef2161b2e": { + "describe": { + "columns": [ + { + "name": "hash", + "ordinal": 0, + "type_info": "Bytea" + }, + { + "name": "is_priority", + "ordinal": 1, + "type_info": "Bool" + }, + { + "name": "full_fee", + "ordinal": 2, + "type_info": "Numeric" + }, + { + "name": "layer_2_tip_fee", + "ordinal": 3, + "type_info": "Numeric" + }, + { + "name": "initiator_address", + "ordinal": 4, + "type_info": "Bytea" + }, + { + "name": "nonce", + "ordinal": 5, + "type_info": "Int8" + }, + { + "name": "signature", + "ordinal": 6, + "type_info": "Bytea" + }, + { + "name": "input", + "ordinal": 7, + "type_info": "Bytea" + }, + { + "name": "data", + "ordinal": 8, + "type_info": "Jsonb" + }, + { + "name": "received_at", + "ordinal": 9, + "type_info": "Timestamp" + }, + { + "name": "priority_op_id", + "ordinal": 10, + "type_info": "Int8" + }, + { + "name": "l1_batch_number", + "ordinal": 11, + "type_info": "Int8" + }, + { + "name": "index_in_block", + "ordinal": 12, + "type_info": "Int4" + }, + { + "name": "error", + "ordinal": 13, + "type_info": "Varchar" + }, + { + "name": "gas_limit", + "ordinal": 14, + "type_info": "Numeric" + }, + { + "name": "gas_per_storage_limit", + "ordinal": 15, + "type_info": "Numeric" + }, + { + "name": "gas_per_pubdata_limit", + "ordinal": 16, + "type_info": "Numeric" }, { "name": "tx_format", @@ -3378,419 +3091,153 @@ }, "query": "\n UPDATE transactions\n SET \n l1_batch_number = $3,\n l1_batch_tx_index = data_table.l1_batch_tx_index,\n updated_at = now()\n FROM\n (SELECT\n UNNEST($1::int[]) AS l1_batch_tx_index,\n UNNEST($2::bytea[]) AS hash\n ) AS data_table\n WHERE transactions.hash=data_table.hash \n " }, - "3ca30aa12fa9a72bf73f5baa8e0d326684ad687370ec6f615dce56df57ebdce4": { + "3d41f05e1d5c5a74e0605e66fe08e09f14b8bf0269e5dcde518aa08db92a3ea0": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Int8" + ] + } + }, + "query": "DELETE FROM events WHERE miniblock_number > $1" + }, + "3e982e4863eef38069e755e3f20602ef9eaae859d23d86c3f230ddea8805aea7": { "describe": { "columns": [ { - "name": "number", + "name": "index", "ordinal": 0, "type_info": "Int8" - }, + } + ], + "nullable": [ + false + ], + "parameters": { + "Left": [ + "Bytea" + ] + } + }, + "query": "SELECT index FROM initial_writes WHERE hashed_key = $1" + }, + "3f6332706376ef4cadda96498872429b6ed28eca5402b03b1aa3b77b8262bccd": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Text" + ] + } + }, + "query": "DELETE FROM compiler_versions WHERE compiler = $1" + }, + "3f671298a05f3f69a8ffb2e36d5ae79c544145fc1c289dd9e0c060dca3ec6e21": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "ByteaArray", + "ByteaArray" + ] + } + }, + "query": "UPDATE storage SET value = u.value FROM UNNEST($1::bytea[], $2::bytea[]) AS u(key, value) WHERE u.key = hashed_key" + }, + "400bb5f012b95f5b327a65bf8a55e61a9e41a8040f546d75b9b8aa6be45e78d5": { + "describe": { + "columns": [ { - "name": "timestamp", - "ordinal": 1, + "name": "number", + "ordinal": 0, "type_info": "Int8" }, - { - "name": "is_finished", - "ordinal": 2, - "type_info": "Bool" - }, - { - "name": "l1_tx_count", - "ordinal": 3, - "type_info": "Int4" - }, - { - "name": "l2_tx_count", - "ordinal": 4, - "type_info": "Int4" - }, - { - "name": "fee_account_address", - "ordinal": 5, - "type_info": "Bytea" - }, - { - "name": "bloom", - "ordinal": 6, - "type_info": "Bytea" - }, - { - "name": "priority_ops_onchain_data", - "ordinal": 7, - "type_info": "ByteaArray" - }, { "name": "hash", - "ordinal": 8, - "type_info": "Bytea" - }, - { - "name": "parent_hash", - "ordinal": 9, - "type_info": "Bytea" - }, - { - "name": "commitment", - "ordinal": 10, - "type_info": "Bytea" - }, - { - "name": "compressed_write_logs", - "ordinal": 11, - "type_info": "Bytea" - }, - { - "name": "compressed_contracts", - "ordinal": 12, - "type_info": "Bytea" - }, - { - "name": "eth_prove_tx_id", - "ordinal": 13, - "type_info": "Int4" - }, - { - "name": "eth_commit_tx_id", - "ordinal": 14, - "type_info": "Int4" - }, - { - "name": "eth_execute_tx_id", - "ordinal": 15, - "type_info": "Int4" - }, - { - "name": "merkle_root_hash", - "ordinal": 16, - "type_info": "Bytea" - }, - { - "name": "l2_to_l1_logs", - "ordinal": 17, - "type_info": "ByteaArray" - }, - { - "name": "l2_to_l1_messages", - "ordinal": 18, - "type_info": "ByteaArray" - }, - { - "name": "used_contract_hashes", - "ordinal": 19, - "type_info": "Jsonb" - }, - { - "name": "compressed_initial_writes", - "ordinal": 20, - "type_info": "Bytea" - }, - { - "name": "compressed_repeated_writes", - "ordinal": 21, - "type_info": "Bytea" - }, - { - "name": "l2_l1_compressed_messages", - "ordinal": 22, - "type_info": "Bytea" - }, - { - "name": "l2_l1_merkle_root", - "ordinal": 23, - "type_info": "Bytea" - }, - { - "name": "l1_gas_price", - "ordinal": 24, - "type_info": "Int8" - }, - { - "name": "l2_fair_gas_price", - "ordinal": 25, - "type_info": "Int8" - }, - { - "name": "rollup_last_leaf_index", - "ordinal": 26, - "type_info": "Int8" - }, - { - "name": "zkporter_is_available", - "ordinal": 27, - "type_info": "Bool" - }, - { - "name": "bootloader_code_hash", - "ordinal": 28, - "type_info": "Bytea" - }, - { - "name": "default_aa_code_hash", - "ordinal": 29, - "type_info": "Bytea" - }, - { - "name": "base_fee_per_gas", - "ordinal": 30, - "type_info": "Numeric" - }, - { - "name": "aux_data_hash", - "ordinal": 31, - "type_info": "Bytea" - }, - { - "name": "pass_through_data_hash", - "ordinal": 32, - "type_info": "Bytea" - }, - { - "name": "meta_parameters_hash", - "ordinal": 33, - "type_info": "Bytea" - }, - { - "name": "protocol_version", - "ordinal": 34, - "type_info": "Int4" - }, - { - "name": "compressed_state_diffs", - "ordinal": 35, - "type_info": "Bytea" - }, - { - "name": "gas_per_pubdata_byte_in_block", - "ordinal": 36, - "type_info": "Int4" - }, - { - "name": "gas_per_pubdata_limit", - "ordinal": 37, - "type_info": "Int8" - }, - { - "name": "skip_proof", - "ordinal": 38, - "type_info": "Bool" - }, - { - "name": "system_logs", - "ordinal": 39, - "type_info": "ByteaArray" - }, - { - "name": "events_queue_commitment", - "ordinal": 40, - "type_info": "Bytea" - }, - { - "name": "bootloader_initial_content_commitment", - "ordinal": 41, + "ordinal": 1, "type_info": "Bytea" } ], "nullable": [ false, - false, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true, - true, - true, - true, - true, - false, - false, - false, - true, - true, - true, - true, - false, - false, - true, - true, - true, - true, - false, - true, - true, - true, - true, - true, - true, - false, - false, - false, - true, - true + false ], "parameters": { "Left": [ + "Int4", "Int8" ] } }, - "query": "SELECT number, timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, rollup_last_leaf_index, zkporter_is_available, bootloader_code_hash, default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, meta_parameters_hash, protocol_version, compressed_state_diffs, gas_per_pubdata_byte_in_block, gas_per_pubdata_limit, skip_proof, system_logs, events_queue_commitment, bootloader_initial_content_commitment FROM l1_batches LEFT JOIN commitments ON commitments.l1_batch_number = l1_batches.number WHERE eth_prove_tx_id IS NOT NULL AND eth_execute_tx_id IS NULL ORDER BY number LIMIT $1" + "query": "SELECT number, hash FROM miniblocks WHERE protocol_version = $1 ORDER BY number DESC LIMIT $2" }, - "3d41f05e1d5c5a74e0605e66fe08e09f14b8bf0269e5dcde518aa08db92a3ea0": { + "4029dd84cde963ed8541426a659b10ccdbacbf4392664e34bfc29737aa630b28": { "describe": { "columns": [], "nullable": [], "parameters": { "Left": [ - "Int8" - ] - } - }, - "query": "DELETE FROM events WHERE miniblock_number > $1" - }, - "3e982e4863eef38069e755e3f20602ef9eaae859d23d86c3f230ddea8805aea7": { - "describe": { - "columns": [ - { - "name": "index", - "ordinal": 0, - "type_info": "Int8" - } - ], - "nullable": [ - false - ], - "parameters": { - "Left": [ - "Bytea" + "Int8", + "Int4", + "Int4", + "Int8", + "Bool", + "Bytea", + "ByteaArray", + "ByteaArray", + "Bytea", + "ByteaArray", + "Int8", + "Int8", + "Int8", + "Jsonb", + "Jsonb", + "Numeric", + "Int8", + "Int8", + "Bytea", + "Bytea", + "Int4", + "ByteaArray", + "Int8Array" ] } }, - "query": "SELECT index FROM initial_writes WHERE hashed_key = $1" + "query": "INSERT INTO l1_batches (number, l1_tx_count, l2_tx_count, timestamp, is_finished, fee_account_address, l2_to_l1_logs, l2_to_l1_messages, bloom, priority_ops_onchain_data, predicted_commit_gas_cost, predicted_prove_gas_cost, predicted_execute_gas_cost, initial_bootloader_heap_content, used_contract_hashes, base_fee_per_gas, l1_gas_price, l2_fair_gas_price, bootloader_code_hash, default_aa_code_hash, protocol_version, system_logs, storage_refunds, created_at, updated_at ) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21, $22, $23, now(), now())" }, - "3f6332706376ef4cadda96498872429b6ed28eca5402b03b1aa3b77b8262bccd": { + "40a86f39a74ab22bdcd8b40446ea063c68bfb3e930e3150212474a657e82b38f": { "describe": { "columns": [], "nullable": [], "parameters": { "Left": [ + "Int8", "Text" ] } }, - "query": "DELETE FROM compiler_versions WHERE compiler = $1" + "query": "\n UPDATE scheduler_witness_jobs\n SET final_node_aggregations_blob_url = $2,\n status = 'waiting_for_proofs',\n updated_at = now()\n WHERE l1_batch_number = $1 AND status != 'queued'\n " }, - "3f671298a05f3f69a8ffb2e36d5ae79c544145fc1c289dd9e0c060dca3ec6e21": { + "433d5da4d72150cf2c1e1007ee3ff51edfa51924f4b662b8cf382f06e60fd228": { "describe": { "columns": [], "nullable": [], "parameters": { "Left": [ - "ByteaArray", - "ByteaArray" + "Int4", + "Int8", + "Text", + "Text" ] } }, - "query": "UPDATE storage SET value = u.value FROM UNNEST($1::bytea[], $2::bytea[]) AS u(key, value) WHERE u.key = hashed_key" + "query": "\n UPDATE node_aggregation_witness_jobs\n SET number_of_leaf_circuits = $1,\n leaf_layer_subqueues_blob_url = $3,\n aggregation_outputs_blob_url = $4,\n status = 'waiting_for_proofs',\n updated_at = now()\n WHERE l1_batch_number = $2 AND status != 'queued'\n " }, - "400bb5f012b95f5b327a65bf8a55e61a9e41a8040f546d75b9b8aa6be45e78d5": { - "describe": { - "columns": [ - { - "name": "number", - "ordinal": 0, - "type_info": "Int8" - }, - { - "name": "hash", - "ordinal": 1, - "type_info": "Bytea" - } - ], - "nullable": [ - false, - false - ], - "parameters": { - "Left": [ - "Int4", - "Int8" - ] - } - }, - "query": "SELECT number, hash FROM miniblocks WHERE protocol_version = $1 ORDER BY number DESC LIMIT $2" - }, - "4029dd84cde963ed8541426a659b10ccdbacbf4392664e34bfc29737aa630b28": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Int8", - "Int4", - "Int4", - "Int8", - "Bool", - "Bytea", - "ByteaArray", - "ByteaArray", - "Bytea", - "ByteaArray", - "Int8", - "Int8", - "Int8", - "Jsonb", - "Jsonb", - "Numeric", - "Int8", - "Int8", - "Bytea", - "Bytea", - "Int4", - "ByteaArray", - "Int8Array" - ] - } - }, - "query": "INSERT INTO l1_batches (number, l1_tx_count, l2_tx_count, timestamp, is_finished, fee_account_address, l2_to_l1_logs, l2_to_l1_messages, bloom, priority_ops_onchain_data, predicted_commit_gas_cost, predicted_prove_gas_cost, predicted_execute_gas_cost, initial_bootloader_heap_content, used_contract_hashes, base_fee_per_gas, l1_gas_price, l2_fair_gas_price, bootloader_code_hash, default_aa_code_hash, protocol_version, system_logs, storage_refunds, created_at, updated_at ) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21, $22, $23, now(), now())" - }, - "40a86f39a74ab22bdcd8b40446ea063c68bfb3e930e3150212474a657e82b38f": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Int8", - "Text" - ] - } - }, - "query": "\n UPDATE scheduler_witness_jobs\n SET final_node_aggregations_blob_url = $2,\n status = 'waiting_for_proofs',\n updated_at = now()\n WHERE l1_batch_number = $1 AND status != 'queued'\n " - }, - "433d5da4d72150cf2c1e1007ee3ff51edfa51924f4b662b8cf382f06e60fd228": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Int4", - "Int8", - "Text", - "Text" - ] - } - }, - "query": "\n UPDATE node_aggregation_witness_jobs\n SET number_of_leaf_circuits = $1,\n leaf_layer_subqueues_blob_url = $3,\n aggregation_outputs_blob_url = $4,\n status = 'waiting_for_proofs',\n updated_at = now()\n WHERE l1_batch_number = $2 AND status != 'queued'\n " - }, - "43b5082ff7673ee3a8e8f3fafa64667fac4f7f5c8bd26a21ead6b4ba0f8fd17b": { + "43b5082ff7673ee3a8e8f3fafa64667fac4f7f5c8bd26a21ead6b4ba0f8fd17b": { "describe": { "columns": [ { @@ -4651,6 +4098,26 @@ }, "query": "SELECT MAX(l1_batch_number) FROM witness_inputs WHERE merkel_tree_paths_blob_url IS NOT NULL" }, + "5a2f35f3b0135ab88451ea141e97b1160ea1b4cf495b6700b5d178a43499e0d8": { + "describe": { + "columns": [ + { + "name": "fee_account_address", + "ordinal": 0, + "type_info": "Bytea" + } + ], + "nullable": [ + false + ], + "parameters": { + "Left": [ + "Int8" + ] + } + }, + "query": "SELECT fee_account_address FROM l1_batches WHERE number = $1" + }, "5a31eab41a980cc82ad3609610d377a185ce38bd654ee93766c119aa6cae1040": { "describe": { "columns": [ @@ -5108,262 +4575,539 @@ }, "query": "\n UPDATE prover_jobs_fri\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now(),\n picked_by = $4\n WHERE id = (\n SELECT id\n FROM prover_jobs_fri\n WHERE status = 'queued'\n AND (circuit_id, aggregation_round) IN (\n SELECT * FROM UNNEST($1::smallint[], $2::smallint[])\n )\n AND protocol_version = ANY($3)\n ORDER BY aggregation_round DESC, l1_batch_number ASC, id ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING prover_jobs_fri.id, prover_jobs_fri.l1_batch_number, prover_jobs_fri.circuit_id,\n prover_jobs_fri.aggregation_round, prover_jobs_fri.sequence_number, prover_jobs_fri.depth,\n prover_jobs_fri.is_node_final_proof\n " }, - "665112c83ed7f126f94d1c47408de3495ee6431970e334d94ae75f853496eb48": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Text", - "Int8" - ] - } - }, - "query": "\n UPDATE node_aggregation_witness_jobs_fri\n SET status ='failed', error= $1, updated_at = now()\n WHERE id = $2\n " - }, - "67a47f1e7d5f8dafcef94bea3f268b4baec1888c6ef11c92ab66480ecdcb9aef": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Time", - "Bytea", - "Text", - "Int8" - ] - } - }, - "query": "\n UPDATE prover_jobs\n SET status = 'successful', updated_at = now(), time_taken = $1, result = $2, proccesed_by = $3\n WHERE id = $4\n " - }, - "67ecdc69e39e689f1f23f867d31e6b8c47e9c041e18cbd84a2ad6482a9be4e74": { - "describe": { - "columns": [ - { - "name": "l2_to_l1_logs", - "ordinal": 0, - "type_info": "ByteaArray" - } - ], - "nullable": [ - false - ], - "parameters": { - "Left": [ - "Int8" - ] - } - }, - "query": "SELECT l2_to_l1_logs FROM l1_batches WHERE number = $1" - }, - "67efc7ea5bd3821d8325759ed8357190f6122dd2ae503a57faf15d8b749a4361": { - "describe": { - "columns": [ - { - "name": "l1_batch_number", - "ordinal": 0, - "type_info": "Int8" - } - ], - "nullable": [ - false - ], - "parameters": { - "Left": [] - } - }, - "query": "\n UPDATE leaf_aggregation_witness_jobs\n SET status='queued'\n WHERE l1_batch_number IN\n (SELECT prover_jobs.l1_batch_number\n FROM prover_jobs\n JOIN leaf_aggregation_witness_jobs lawj ON prover_jobs.l1_batch_number = lawj.l1_batch_number\n WHERE lawj.status = 'waiting_for_proofs'\n AND prover_jobs.status = 'successful'\n AND prover_jobs.aggregation_round = 0\n GROUP BY prover_jobs.l1_batch_number, lawj.number_of_basic_circuits\n HAVING COUNT(*) = lawj.number_of_basic_circuits)\n RETURNING l1_batch_number;\n " - }, - "68a9ba78f60674bc047e4af6eb2a379725da047f2e6c06bce96a33852565cc95": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Int8", - "Bytea", - "Bytea" - ] - } - }, - "query": "INSERT INTO commitments (l1_batch_number, events_queue_commitment, bootloader_initial_content_commitment) VALUES ($1, $2, $3) ON CONFLICT (l1_batch_number) DO UPDATE SET events_queue_commitment = $2, bootloader_initial_content_commitment = $3" - }, - "697835cdd5be1b99a0f332c4c8f3245e317b0282b46e55f15e728a7642382b25": { + "65a31949cd7f8890e9448d26a0efee852ddf59bfbbc858b51fba10048d47d27b": { "describe": { "columns": [ { - "name": "id", + "name": "number", "ordinal": 0, "type_info": "Int8" }, { - "name": "l1_batch_number", + "name": "timestamp", "ordinal": 1, "type_info": "Int8" }, { - "name": "circuit_id", + "name": "is_finished", "ordinal": 2, - "type_info": "Int2" + "type_info": "Bool" }, { - "name": "aggregation_round", + "name": "l1_tx_count", "ordinal": 3, - "type_info": "Int2" + "type_info": "Int4" }, { - "name": "sequence_number", + "name": "l2_tx_count", "ordinal": 4, "type_info": "Int4" }, { - "name": "depth", + "name": "fee_account_address", "ordinal": 5, - "type_info": "Int4" + "type_info": "Bytea" }, { - "name": "is_node_final_proof", + "name": "bloom", "ordinal": 6, - "type_info": "Bool" - } - ], - "nullable": [ - false, - false, - false, - false, - false, - false, - false - ], - "parameters": { - "Left": [ - "Time", - "Text", - "Int8" - ] - } - }, - "query": "\n UPDATE prover_jobs_fri\n SET status = 'successful', updated_at = now(), time_taken = $1, proof_blob_url=$2\n WHERE id = $3\n RETURNING prover_jobs_fri.id, prover_jobs_fri.l1_batch_number, prover_jobs_fri.circuit_id,\n prover_jobs_fri.aggregation_round, prover_jobs_fri.sequence_number, prover_jobs_fri.depth,\n prover_jobs_fri.is_node_final_proof\n " - }, - "6a282084b02cddd8646e984a729b689bdb758e07096fc8cf60f68c6ec5bd6a9c": { - "describe": { - "columns": [ + "type_info": "Bytea" + }, { - "name": "max?", - "ordinal": 0, - "type_info": "Int4" - } - ], - "nullable": [ - null - ], - "parameters": { - "Left": [] - } - }, - "query": "SELECT MAX(id) as \"max?\" FROM protocol_versions" - }, - "6a3af113a71bffa445d4a729e24fbc2be90bfffbdd072c74f9ca58669b7e5f80": { - "describe": { - "columns": [ + "name": "priority_ops_onchain_data", + "ordinal": 7, + "type_info": "ByteaArray" + }, { - "name": "id", - "ordinal": 0, + "name": "hash", + "ordinal": 8, + "type_info": "Bytea" + }, + { + "name": "parent_hash", + "ordinal": 9, + "type_info": "Bytea" + }, + { + "name": "commitment", + "ordinal": 10, + "type_info": "Bytea" + }, + { + "name": "compressed_write_logs", + "ordinal": 11, + "type_info": "Bytea" + }, + { + "name": "compressed_contracts", + "ordinal": 12, + "type_info": "Bytea" + }, + { + "name": "eth_prove_tx_id", + "ordinal": 13, "type_info": "Int4" - } - ], - "nullable": [ - false - ], - "parameters": { - "Left": [ - "Bytea", - "Bytea", - "Bytea", - "Bytea" - ] - } - }, - "query": "SELECT id FROM prover_fri_protocol_versions WHERE recursion_circuits_set_vks_hash = $1 AND recursion_leaf_level_vk_hash = $2 AND recursion_node_level_vk_hash = $3 AND recursion_scheduler_level_vk_hash = $4 " - }, - "6ac39e83e446e70a2875624db78a05e56eb35f46e11d0f2fbb2165cda56fbacd": { - "describe": { - "columns": [ + }, { - "name": "bytecode", - "ordinal": 0, + "name": "eth_commit_tx_id", + "ordinal": 14, + "type_info": "Int4" + }, + { + "name": "eth_execute_tx_id", + "ordinal": 15, + "type_info": "Int4" + }, + { + "name": "merkle_root_hash", + "ordinal": 16, "type_info": "Bytea" }, { - "name": "data?", - "ordinal": 1, + "name": "l2_to_l1_logs", + "ordinal": 17, + "type_info": "ByteaArray" + }, + { + "name": "l2_to_l1_messages", + "ordinal": 18, + "type_info": "ByteaArray" + }, + { + "name": "used_contract_hashes", + "ordinal": 19, "type_info": "Jsonb" }, { - "name": "contract_address?", - "ordinal": 2, + "name": "compressed_initial_writes", + "ordinal": 20, + "type_info": "Bytea" + }, + { + "name": "compressed_repeated_writes", + "ordinal": 21, + "type_info": "Bytea" + }, + { + "name": "l2_l1_compressed_messages", + "ordinal": 22, + "type_info": "Bytea" + }, + { + "name": "l2_l1_merkle_root", + "ordinal": 23, + "type_info": "Bytea" + }, + { + "name": "l1_gas_price", + "ordinal": 24, + "type_info": "Int8" + }, + { + "name": "l2_fair_gas_price", + "ordinal": 25, + "type_info": "Int8" + }, + { + "name": "rollup_last_leaf_index", + "ordinal": 26, + "type_info": "Int8" + }, + { + "name": "zkporter_is_available", + "ordinal": 27, + "type_info": "Bool" + }, + { + "name": "bootloader_code_hash", + "ordinal": 28, + "type_info": "Bytea" + }, + { + "name": "default_aa_code_hash", + "ordinal": 29, + "type_info": "Bytea" + }, + { + "name": "base_fee_per_gas", + "ordinal": 30, + "type_info": "Numeric" + }, + { + "name": "aux_data_hash", + "ordinal": 31, + "type_info": "Bytea" + }, + { + "name": "pass_through_data_hash", + "ordinal": 32, + "type_info": "Bytea" + }, + { + "name": "meta_parameters_hash", + "ordinal": 33, + "type_info": "Bytea" + }, + { + "name": "system_logs", + "ordinal": 34, + "type_info": "ByteaArray" + }, + { + "name": "compressed_state_diffs", + "ordinal": 35, + "type_info": "Bytea" + }, + { + "name": "protocol_version", + "ordinal": 36, + "type_info": "Int4" + }, + { + "name": "events_queue_commitment", + "ordinal": 37, + "type_info": "Bytea" + }, + { + "name": "bootloader_initial_content_commitment", + "ordinal": 38, "type_info": "Bytea" } ], "nullable": [ false, false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + true, + true, + true, + true, + false, + false, + true, + true, + true, + true, + false, + true, + true, + true, + false, + true, + true, + true, true ], "parameters": { "Left": [ - "Bytea", - "Bytea" + "Int8", + "Int8" ] } }, - "query": "\n SELECT factory_deps.bytecode, transactions.data as \"data?\", transactions.contract_address as \"contract_address?\"\n FROM (\n SELECT * FROM storage_logs\n WHERE storage_logs.hashed_key = $1\n ORDER BY miniblock_number DESC, operation_number DESC\n LIMIT 1\n ) storage_logs\n JOIN factory_deps ON factory_deps.bytecode_hash = storage_logs.value\n LEFT JOIN transactions ON transactions.hash = storage_logs.tx_hash\n WHERE storage_logs.value != $2\n " + "query": "SELECT number, timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, rollup_last_leaf_index, zkporter_is_available, bootloader_code_hash, default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, meta_parameters_hash, system_logs, compressed_state_diffs, protocol_version, events_queue_commitment, bootloader_initial_content_commitment FROM (SELECT l1_batches.*, row_number() OVER (ORDER BY number ASC) AS row_number FROM l1_batches WHERE eth_commit_tx_id IS NOT NULL AND l1_batches.skip_proof = TRUE AND l1_batches.number > $1 ORDER BY number LIMIT $2) inn LEFT JOIN commitments ON commitments.l1_batch_number = inn.number WHERE number - row_number = $1" }, - "6b53e5cb619c9649d28ae33df6a43e6984e2d9320f894f3d04156a2d1235bb60": { + "65e2cdb70ccef97d886fb53d1bb298875e13b0ffe7b744ac5dd86433f0929eb0": { "describe": { - "columns": [ - { - "name": "hash", - "ordinal": 0, - "type_info": "Bytea" - } - ], - "nullable": [ - false - ], + "columns": [], + "nullable": [], "parameters": { "Left": [ + { + "Custom": { + "kind": { + "Enum": [ + "Queued", + "ManuallySkipped", + "InProgress", + "Successful", + "Failed" + ] + }, + "name": "basic_witness_input_producer_job_status" + } + }, "Int8", + "Time", + "Text" + ] + } + }, + "query": "UPDATE basic_witness_input_producer_jobs SET status = $1, updated_at = now(), time_taken = $3, input_blob_url = $4 WHERE l1_batch_number = $2" + }, + "665112c83ed7f126f94d1c47408de3495ee6431970e334d94ae75f853496eb48": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Text", "Int8" ] } }, - "query": "SELECT hash FROM miniblocks WHERE number BETWEEN $1 AND $2 ORDER BY number" + "query": "\n UPDATE node_aggregation_witness_jobs_fri\n SET status ='failed', error= $1, updated_at = now()\n WHERE id = $2\n " }, - "6c0915ed87e6d0fdf83cb24a51cc277e366bea0ba8821c048092d2a0aadb2771": { + "67a47f1e7d5f8dafcef94bea3f268b4baec1888c6ef11c92ab66480ecdcb9aef": { "describe": { "columns": [], "nullable": [], "parameters": { "Left": [ - "Int8", - "Int8", - "Bytea", - "Int4", - "Int4", - "Numeric", - "Int8", - "Int8", - "Int8", - "Bytea", + "Time", "Bytea", - "Int4", + "Text", "Int8" ] } }, - "query": "INSERT INTO miniblocks ( number, timestamp, hash, l1_tx_count, l2_tx_count, base_fee_per_gas, l1_gas_price, l2_fair_gas_price, gas_per_pubdata_limit, bootloader_code_hash, default_aa_code_hash, protocol_version, virtual_blocks, created_at, updated_at ) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, now(), now())" + "query": "\n UPDATE prover_jobs\n SET status = 'successful', updated_at = now(), time_taken = $1, result = $2, proccesed_by = $3\n WHERE id = $4\n " + }, + "67ecdc69e39e689f1f23f867d31e6b8c47e9c041e18cbd84a2ad6482a9be4e74": { + "describe": { + "columns": [ + { + "name": "l2_to_l1_logs", + "ordinal": 0, + "type_info": "ByteaArray" + } + ], + "nullable": [ + false + ], + "parameters": { + "Left": [ + "Int8" + ] + } + }, + "query": "SELECT l2_to_l1_logs FROM l1_batches WHERE number = $1" + }, + "67efc7ea5bd3821d8325759ed8357190f6122dd2ae503a57faf15d8b749a4361": { + "describe": { + "columns": [ + { + "name": "l1_batch_number", + "ordinal": 0, + "type_info": "Int8" + } + ], + "nullable": [ + false + ], + "parameters": { + "Left": [] + } + }, + "query": "\n UPDATE leaf_aggregation_witness_jobs\n SET status='queued'\n WHERE l1_batch_number IN\n (SELECT prover_jobs.l1_batch_number\n FROM prover_jobs\n JOIN leaf_aggregation_witness_jobs lawj ON prover_jobs.l1_batch_number = lawj.l1_batch_number\n WHERE lawj.status = 'waiting_for_proofs'\n AND prover_jobs.status = 'successful'\n AND prover_jobs.aggregation_round = 0\n GROUP BY prover_jobs.l1_batch_number, lawj.number_of_basic_circuits\n HAVING COUNT(*) = lawj.number_of_basic_circuits)\n RETURNING l1_batch_number;\n " + }, + "68a9ba78f60674bc047e4af6eb2a379725da047f2e6c06bce96a33852565cc95": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Int8", + "Bytea", + "Bytea" + ] + } + }, + "query": "INSERT INTO commitments (l1_batch_number, events_queue_commitment, bootloader_initial_content_commitment) VALUES ($1, $2, $3) ON CONFLICT (l1_batch_number) DO UPDATE SET events_queue_commitment = $2, bootloader_initial_content_commitment = $3" + }, + "697835cdd5be1b99a0f332c4c8f3245e317b0282b46e55f15e728a7642382b25": { + "describe": { + "columns": [ + { + "name": "id", + "ordinal": 0, + "type_info": "Int8" + }, + { + "name": "l1_batch_number", + "ordinal": 1, + "type_info": "Int8" + }, + { + "name": "circuit_id", + "ordinal": 2, + "type_info": "Int2" + }, + { + "name": "aggregation_round", + "ordinal": 3, + "type_info": "Int2" + }, + { + "name": "sequence_number", + "ordinal": 4, + "type_info": "Int4" + }, + { + "name": "depth", + "ordinal": 5, + "type_info": "Int4" + }, + { + "name": "is_node_final_proof", + "ordinal": 6, + "type_info": "Bool" + } + ], + "nullable": [ + false, + false, + false, + false, + false, + false, + false + ], + "parameters": { + "Left": [ + "Time", + "Text", + "Int8" + ] + } + }, + "query": "\n UPDATE prover_jobs_fri\n SET status = 'successful', updated_at = now(), time_taken = $1, proof_blob_url=$2\n WHERE id = $3\n RETURNING prover_jobs_fri.id, prover_jobs_fri.l1_batch_number, prover_jobs_fri.circuit_id,\n prover_jobs_fri.aggregation_round, prover_jobs_fri.sequence_number, prover_jobs_fri.depth,\n prover_jobs_fri.is_node_final_proof\n " + }, + "6a282084b02cddd8646e984a729b689bdb758e07096fc8cf60f68c6ec5bd6a9c": { + "describe": { + "columns": [ + { + "name": "max?", + "ordinal": 0, + "type_info": "Int4" + } + ], + "nullable": [ + null + ], + "parameters": { + "Left": [] + } + }, + "query": "SELECT MAX(id) as \"max?\" FROM protocol_versions" + }, + "6a3af113a71bffa445d4a729e24fbc2be90bfffbdd072c74f9ca58669b7e5f80": { + "describe": { + "columns": [ + { + "name": "id", + "ordinal": 0, + "type_info": "Int4" + } + ], + "nullable": [ + false + ], + "parameters": { + "Left": [ + "Bytea", + "Bytea", + "Bytea", + "Bytea" + ] + } + }, + "query": "SELECT id FROM prover_fri_protocol_versions WHERE recursion_circuits_set_vks_hash = $1 AND recursion_leaf_level_vk_hash = $2 AND recursion_node_level_vk_hash = $3 AND recursion_scheduler_level_vk_hash = $4 " + }, + "6ac39e83e446e70a2875624db78a05e56eb35f46e11d0f2fbb2165cda56fbacd": { + "describe": { + "columns": [ + { + "name": "bytecode", + "ordinal": 0, + "type_info": "Bytea" + }, + { + "name": "data?", + "ordinal": 1, + "type_info": "Jsonb" + }, + { + "name": "contract_address?", + "ordinal": 2, + "type_info": "Bytea" + } + ], + "nullable": [ + false, + false, + true + ], + "parameters": { + "Left": [ + "Bytea", + "Bytea" + ] + } + }, + "query": "\n SELECT factory_deps.bytecode, transactions.data as \"data?\", transactions.contract_address as \"contract_address?\"\n FROM (\n SELECT * FROM storage_logs\n WHERE storage_logs.hashed_key = $1\n ORDER BY miniblock_number DESC, operation_number DESC\n LIMIT 1\n ) storage_logs\n JOIN factory_deps ON factory_deps.bytecode_hash = storage_logs.value\n LEFT JOIN transactions ON transactions.hash = storage_logs.tx_hash\n WHERE storage_logs.value != $2\n " + }, + "6b53e5cb619c9649d28ae33df6a43e6984e2d9320f894f3d04156a2d1235bb60": { + "describe": { + "columns": [ + { + "name": "hash", + "ordinal": 0, + "type_info": "Bytea" + } + ], + "nullable": [ + false + ], + "parameters": { + "Left": [ + "Int8", + "Int8" + ] + } + }, + "query": "SELECT hash FROM miniblocks WHERE number BETWEEN $1 AND $2 ORDER BY number" + }, + "6c0915ed87e6d0fdf83cb24a51cc277e366bea0ba8821c048092d2a0aadb2771": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Int8", + "Int8", + "Bytea", + "Int4", + "Int4", + "Numeric", + "Int8", + "Int8", + "Int8", + "Bytea", + "Bytea", + "Int4", + "Int8" + ] + } + }, + "query": "INSERT INTO miniblocks ( number, timestamp, hash, l1_tx_count, l2_tx_count, base_fee_per_gas, l1_gas_price, l2_fair_gas_price, gas_per_pubdata_limit, bootloader_code_hash, default_aa_code_hash, protocol_version, virtual_blocks, created_at, updated_at ) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, now(), now())" }, "6ffd22b0590341c38ce3957dccdb5a4edf47fb558bc64e4df08897a0c72dbf23": { "describe": { @@ -6111,20 +5855,266 @@ }, "query": "SELECT l1_batch_number, status FROM proof_compression_jobs_fri\n WHERE l1_batch_number = ( SELECT MIN(l1_batch_number) FROM proof_compression_jobs_fri WHERE status = $1 OR status = $2\n )" }, - "85c52cb09c73499507144e3a684c3230c2c71eb4f8ddef43e67fbd33de2747c8": { + "85ac7fb2c4175d662c8f466e722d28b0eadcd2f252a788e366dbd05eac547b93": { "describe": { "columns": [ { - "name": "timestamp", + "name": "number", "ordinal": 0, "type_info": "Int8" }, { - "name": "hash", + "name": "timestamp", "ordinal": 1, + "type_info": "Int8" + }, + { + "name": "is_finished", + "ordinal": 2, + "type_info": "Bool" + }, + { + "name": "l1_tx_count", + "ordinal": 3, + "type_info": "Int4" + }, + { + "name": "l2_tx_count", + "ordinal": 4, + "type_info": "Int4" + }, + { + "name": "fee_account_address", + "ordinal": 5, "type_info": "Bytea" - } - ], + }, + { + "name": "bloom", + "ordinal": 6, + "type_info": "Bytea" + }, + { + "name": "priority_ops_onchain_data", + "ordinal": 7, + "type_info": "ByteaArray" + }, + { + "name": "hash", + "ordinal": 8, + "type_info": "Bytea" + }, + { + "name": "parent_hash", + "ordinal": 9, + "type_info": "Bytea" + }, + { + "name": "commitment", + "ordinal": 10, + "type_info": "Bytea" + }, + { + "name": "compressed_write_logs", + "ordinal": 11, + "type_info": "Bytea" + }, + { + "name": "compressed_contracts", + "ordinal": 12, + "type_info": "Bytea" + }, + { + "name": "eth_prove_tx_id", + "ordinal": 13, + "type_info": "Int4" + }, + { + "name": "eth_commit_tx_id", + "ordinal": 14, + "type_info": "Int4" + }, + { + "name": "eth_execute_tx_id", + "ordinal": 15, + "type_info": "Int4" + }, + { + "name": "merkle_root_hash", + "ordinal": 16, + "type_info": "Bytea" + }, + { + "name": "l2_to_l1_logs", + "ordinal": 17, + "type_info": "ByteaArray" + }, + { + "name": "l2_to_l1_messages", + "ordinal": 18, + "type_info": "ByteaArray" + }, + { + "name": "used_contract_hashes", + "ordinal": 19, + "type_info": "Jsonb" + }, + { + "name": "compressed_initial_writes", + "ordinal": 20, + "type_info": "Bytea" + }, + { + "name": "compressed_repeated_writes", + "ordinal": 21, + "type_info": "Bytea" + }, + { + "name": "l2_l1_compressed_messages", + "ordinal": 22, + "type_info": "Bytea" + }, + { + "name": "l2_l1_merkle_root", + "ordinal": 23, + "type_info": "Bytea" + }, + { + "name": "l1_gas_price", + "ordinal": 24, + "type_info": "Int8" + }, + { + "name": "l2_fair_gas_price", + "ordinal": 25, + "type_info": "Int8" + }, + { + "name": "rollup_last_leaf_index", + "ordinal": 26, + "type_info": "Int8" + }, + { + "name": "zkporter_is_available", + "ordinal": 27, + "type_info": "Bool" + }, + { + "name": "bootloader_code_hash", + "ordinal": 28, + "type_info": "Bytea" + }, + { + "name": "default_aa_code_hash", + "ordinal": 29, + "type_info": "Bytea" + }, + { + "name": "base_fee_per_gas", + "ordinal": 30, + "type_info": "Numeric" + }, + { + "name": "aux_data_hash", + "ordinal": 31, + "type_info": "Bytea" + }, + { + "name": "pass_through_data_hash", + "ordinal": 32, + "type_info": "Bytea" + }, + { + "name": "meta_parameters_hash", + "ordinal": 33, + "type_info": "Bytea" + }, + { + "name": "protocol_version", + "ordinal": 34, + "type_info": "Int4" + }, + { + "name": "compressed_state_diffs", + "ordinal": 35, + "type_info": "Bytea" + }, + { + "name": "system_logs", + "ordinal": 36, + "type_info": "ByteaArray" + }, + { + "name": "events_queue_commitment", + "ordinal": 37, + "type_info": "Bytea" + }, + { + "name": "bootloader_initial_content_commitment", + "ordinal": 38, + "type_info": "Bytea" + } + ], + "nullable": [ + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + true, + true, + true, + true, + false, + false, + true, + true, + true, + true, + false, + true, + true, + true, + true, + true, + false, + true, + true + ], + "parameters": { + "Left": [] + } + }, + "query": "SELECT number, timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, rollup_last_leaf_index, zkporter_is_available, bootloader_code_hash, default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, meta_parameters_hash, protocol_version, compressed_state_diffs, system_logs, events_queue_commitment, bootloader_initial_content_commitment\n FROM l1_batches LEFT JOIN commitments ON commitments.l1_batch_number = l1_batches.number WHERE number = 0 OR eth_commit_tx_id IS NOT NULL AND commitment IS NOT NULL ORDER BY number DESC LIMIT 1" + }, + "85c52cb09c73499507144e3a684c3230c2c71eb4f8ddef43e67fbd33de2747c8": { + "describe": { + "columns": [ + { + "name": "timestamp", + "ordinal": 0, + "type_info": "Int8" + }, + { + "name": "hash", + "ordinal": 1, + "type_info": "Bytea" + } + ], "nullable": [ false, true @@ -6562,311 +6552,203 @@ }, "query": "SELECT l1_address FROM tokens WHERE well_known = false" }, - "9008367aad7877f269b765c4d0772d0f60689fcde6987c620fe5749a259a8db7": { + "8ff84e800faad1a10eedf537195d37a74a68d8020f286444824d6ccac6727003": { "describe": { "columns": [ { - "name": "id", + "name": "number", "ordinal": 0, - "type_info": "Int4" - } - ], - "nullable": [ - false - ], - "parameters": { - "Left": [ - "Int4", - "Int8", - "Int8", - "Text", - "Bytea" - ] - } - }, - "query": "INSERT INTO eth_txs_history\n (eth_tx_id, base_fee_per_gas, priority_fee_per_gas, tx_hash, signed_raw_tx, created_at, updated_at)\n VALUES ($1, $2, $3, $4, $5, now(), now())\n ON CONFLICT (tx_hash) DO NOTHING\n RETURNING id" - }, - "91db60cc4f98ebcaef1435342607da0a86fe16e20a696cb81a569772d5d5ae88": { - "describe": { - "columns": [ + "type_info": "Int8" + }, { - "name": "value", - "ordinal": 0, - "type_info": "Bytea" - } - ], - "nullable": [ - false - ], - "parameters": { - "Left": [ - "Bytea", - "Int8" - ] - } - }, - "query": "\n SELECT value\n FROM storage_logs\n WHERE storage_logs.hashed_key = $1 AND storage_logs.miniblock_number <= $2\n ORDER BY storage_logs.miniblock_number DESC, storage_logs.operation_number DESC\n LIMIT 1\n " - }, - "957ceda740ffb36740acf1e3fbacf76a2ea7422dd9d76a38d745113359e4b7a6": { - "describe": { - "columns": [ - { - "name": "protocol_version", - "ordinal": 0, - "type_info": "Int4" - } - ], - "nullable": [ - true - ], - "parameters": { - "Left": [ - "Int8" - ] - } - }, - "query": "SELECT protocol_version FROM l1_batches WHERE number = $1" - }, - "95ce099fde99c57a930ed3d44f74a90d632b831360210ec7fe21b33bed1a4582": { - "describe": { - "columns": [ - { - "name": "id", - "ordinal": 0, - "type_info": "Int4" - }, - { - "name": "nonce", + "name": "timestamp", "ordinal": 1, "type_info": "Int8" }, { - "name": "raw_tx", + "name": "is_finished", "ordinal": 2, - "type_info": "Bytea" + "type_info": "Bool" }, { - "name": "contract_address", + "name": "l1_tx_count", "ordinal": 3, - "type_info": "Text" + "type_info": "Int4" }, { - "name": "tx_type", + "name": "l2_tx_count", "ordinal": 4, - "type_info": "Text" + "type_info": "Int4" }, { - "name": "gas_used", + "name": "fee_account_address", "ordinal": 5, - "type_info": "Int8" + "type_info": "Bytea" }, { - "name": "created_at", + "name": "bloom", "ordinal": 6, - "type_info": "Timestamp" + "type_info": "Bytea" }, { - "name": "updated_at", + "name": "priority_ops_onchain_data", "ordinal": 7, - "type_info": "Timestamp" + "type_info": "ByteaArray" }, { - "name": "has_failed", + "name": "hash", "ordinal": 8, - "type_info": "Bool" + "type_info": "Bytea" }, { - "name": "sent_at_block", + "name": "parent_hash", "ordinal": 9, - "type_info": "Int4" + "type_info": "Bytea" }, { - "name": "confirmed_eth_tx_history_id", + "name": "commitment", "ordinal": 10, - "type_info": "Int4" + "type_info": "Bytea" }, { - "name": "predicted_gas_cost", + "name": "compressed_write_logs", "ordinal": 11, - "type_info": "Int8" - } - ], - "nullable": [ - false, - false, - false, - false, - false, - true, - false, - false, - false, - true, - true, - false - ], - "parameters": { - "Left": [ - "Bytea", - "Int8", - "Text", - "Text", - "Int8" - ] - } - }, - "query": "INSERT INTO eth_txs (raw_tx, nonce, tx_type, contract_address, predicted_gas_cost, created_at, updated_at)\n VALUES ($1, $2, $3, $4, $5, now(), now())\n RETURNING *" - }, - "95e0e783794ac55ab20b30366f037c313fb0d17e93d3e6ec60667ef1b4da30d5": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Int8Array" - ] - } - }, - "query": "\n UPDATE prover_jobs\n SET is_blob_cleaned=TRUE\n WHERE id = ANY($1);\n " - }, - "96b1cd2bb6861064b633d597a4a09d279dbc7bcd7a810a7270da3d7941af0fff": { - "describe": { - "columns": [ - { - "name": "count!", - "ordinal": 0, - "type_info": "Int8" - } - ], - "nullable": [ - null - ], - "parameters": { - "Left": [ - "Bytea", - "Bytea" - ] - } - }, - "query": "SELECT COUNT(*) as \"count!\" FROM (SELECT * FROM storage_logs WHERE storage_logs.hashed_key = $1 ORDER BY storage_logs.miniblock_number DESC, storage_logs.operation_number DESC LIMIT 1) sl WHERE sl.value != $2" - }, - "96f6d06a49646f93ba1918080ef1efba868d506c6b51ede981e610f1b57bf88b": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "ByteaArray" - ] - } - }, - "query": "DELETE FROM storage WHERE hashed_key = ANY($1)" - }, - "987fcbbd716648c7c368462643f13d8001d5c6d197add90613ae21d21fdef79b": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Text", - "Int8" - ] - } - }, - "query": "UPDATE prover_jobs_fri SET status = $1, updated_at = now() WHERE id = $2" - }, - "9970bb69f5ca9ab9f103e1547eb40c1d4f5dd3a540ff6f1b9724821350c9501a": { - "describe": { - "columns": [ - { - "name": "id", - "ordinal": 0, - "type_info": "Int8" + "type_info": "Bytea" }, { - "name": "l1_batch_number", - "ordinal": 1, - "type_info": "Int8" + "name": "compressed_contracts", + "ordinal": 12, + "type_info": "Bytea" }, { - "name": "circuit_type", - "ordinal": 2, - "type_info": "Text" + "name": "eth_prove_tx_id", + "ordinal": 13, + "type_info": "Int4" }, { - "name": "prover_input", - "ordinal": 3, - "type_info": "Bytea" + "name": "eth_commit_tx_id", + "ordinal": 14, + "type_info": "Int4" }, { - "name": "status", - "ordinal": 4, - "type_info": "Text" + "name": "eth_execute_tx_id", + "ordinal": 15, + "type_info": "Int4" }, { - "name": "error", - "ordinal": 5, - "type_info": "Text" + "name": "merkle_root_hash", + "ordinal": 16, + "type_info": "Bytea" }, { - "name": "processing_started_at", - "ordinal": 6, - "type_info": "Timestamp" + "name": "l2_to_l1_logs", + "ordinal": 17, + "type_info": "ByteaArray" }, { - "name": "created_at", - "ordinal": 7, - "type_info": "Timestamp" + "name": "l2_to_l1_messages", + "ordinal": 18, + "type_info": "ByteaArray" }, { - "name": "updated_at", - "ordinal": 8, - "type_info": "Timestamp" + "name": "used_contract_hashes", + "ordinal": 19, + "type_info": "Jsonb" }, { - "name": "time_taken", - "ordinal": 9, - "type_info": "Time" + "name": "compressed_initial_writes", + "ordinal": 20, + "type_info": "Bytea" }, { - "name": "aggregation_round", - "ordinal": 10, - "type_info": "Int4" + "name": "compressed_repeated_writes", + "ordinal": 21, + "type_info": "Bytea" }, { - "name": "result", - "ordinal": 11, + "name": "l2_l1_compressed_messages", + "ordinal": 22, "type_info": "Bytea" }, { - "name": "sequence_number", - "ordinal": 12, - "type_info": "Int4" + "name": "l2_l1_merkle_root", + "ordinal": 23, + "type_info": "Bytea" }, { - "name": "attempts", - "ordinal": 13, - "type_info": "Int4" + "name": "l1_gas_price", + "ordinal": 24, + "type_info": "Int8" }, { - "name": "circuit_input_blob_url", - "ordinal": 14, - "type_info": "Text" + "name": "l2_fair_gas_price", + "ordinal": 25, + "type_info": "Int8" }, { - "name": "proccesed_by", - "ordinal": 15, - "type_info": "Text" + "name": "rollup_last_leaf_index", + "ordinal": 26, + "type_info": "Int8" }, { - "name": "is_blob_cleaned", - "ordinal": 16, + "name": "zkporter_is_available", + "ordinal": 27, "type_info": "Bool" }, + { + "name": "bootloader_code_hash", + "ordinal": 28, + "type_info": "Bytea" + }, + { + "name": "default_aa_code_hash", + "ordinal": 29, + "type_info": "Bytea" + }, + { + "name": "base_fee_per_gas", + "ordinal": 30, + "type_info": "Numeric" + }, + { + "name": "aux_data_hash", + "ordinal": 31, + "type_info": "Bytea" + }, + { + "name": "pass_through_data_hash", + "ordinal": 32, + "type_info": "Bytea" + }, + { + "name": "meta_parameters_hash", + "ordinal": 33, + "type_info": "Bytea" + }, { "name": "protocol_version", - "ordinal": 17, + "ordinal": 34, "type_info": "Int4" + }, + { + "name": "compressed_state_diffs", + "ordinal": 35, + "type_info": "Bytea" + }, + { + "name": "system_logs", + "ordinal": 36, + "type_info": "ByteaArray" + }, + { + "name": "events_queue_commitment", + "ordinal": 37, + "type_info": "Bytea" + }, + { + "name": "bootloader_initial_content_commitment", + "ordinal": 38, + "type_info": "Bytea" } ], "nullable": [ @@ -6875,82 +6757,56 @@ false, false, false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, true, true, false, false, false, - false, + true, + true, + true, true, false, false, true, true, + true, + true, + false, + true, + true, + true, + true, + true, false, + true, true ], "parameters": { "Left": [ - "Int4Array" - ] - } - }, - "query": "\n UPDATE prover_jobs\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now()\n WHERE id = (\n SELECT id\n FROM prover_jobs\n WHERE status = 'queued'\n AND protocol_version = ANY($1)\n ORDER BY aggregation_round DESC, l1_batch_number ASC, id ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING prover_jobs.*\n " - }, - "99d331d233d357302ab0cc7e3269ef9e414f0c3111785212660f471e3b4f6a04": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "ByteaArray", - "Int4Array", - "ByteaArray", - "ByteaArray", - "NumericArray", - "NumericArray", - "NumericArray", - "NumericArray", - "Int4Array", - "Int4Array", - "VarcharArray", - "NumericArray", - "JsonbArray", - "ByteaArray", - "JsonbArray", - "Int8Array", - "NumericArray", - "ByteaArray", - "ByteaArray", - "ByteaArray", "Int8" ] } }, - "query": "\n UPDATE transactions\n SET \n hash = data_table.hash,\n signature = data_table.signature,\n gas_limit = data_table.gas_limit,\n max_fee_per_gas = data_table.max_fee_per_gas,\n max_priority_fee_per_gas = data_table.max_priority_fee_per_gas,\n gas_per_pubdata_limit = data_table.gas_per_pubdata_limit,\n input = data_table.input,\n data = data_table.data,\n tx_format = data_table.tx_format,\n miniblock_number = $21,\n index_in_block = data_table.index_in_block,\n error = NULLIF(data_table.error, ''),\n effective_gas_price = data_table.effective_gas_price,\n execution_info = data_table.new_execution_info,\n refunded_gas = data_table.refunded_gas,\n value = data_table.value,\n contract_address = data_table.contract_address,\n paymaster = data_table.paymaster,\n paymaster_input = data_table.paymaster_input,\n in_mempool = FALSE,\n updated_at = now()\n FROM\n (\n SELECT data_table_temp.* FROM (\n SELECT\n UNNEST($1::bytea[]) AS initiator_address,\n UNNEST($2::int[]) AS nonce,\n UNNEST($3::bytea[]) AS hash,\n UNNEST($4::bytea[]) AS signature,\n UNNEST($5::numeric[]) AS gas_limit,\n UNNEST($6::numeric[]) AS max_fee_per_gas,\n UNNEST($7::numeric[]) AS max_priority_fee_per_gas,\n UNNEST($8::numeric[]) AS gas_per_pubdata_limit,\n UNNEST($9::int[]) AS tx_format,\n UNNEST($10::integer[]) AS index_in_block,\n UNNEST($11::varchar[]) AS error,\n UNNEST($12::numeric[]) AS effective_gas_price,\n UNNEST($13::jsonb[]) AS new_execution_info,\n UNNEST($14::bytea[]) AS input,\n UNNEST($15::jsonb[]) AS data,\n UNNEST($16::bigint[]) as refunded_gas,\n UNNEST($17::numeric[]) as value,\n UNNEST($18::bytea[]) as contract_address,\n UNNEST($19::bytea[]) as paymaster,\n UNNEST($20::bytea[]) as paymaster_input\n ) AS data_table_temp\n JOIN transactions ON transactions.initiator_address = data_table_temp.initiator_address\n AND transactions.nonce = data_table_temp.nonce\n ORDER BY transactions.hash\n ) AS data_table\n WHERE transactions.initiator_address=data_table.initiator_address\n AND transactions.nonce=data_table.nonce\n " - }, - "9aaf98668f384f634860c4acf793ff47be08975e5d09061cc26fd53dea249c55": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Int8", - "Bytea", - "Text", - "Int4" - ] - } - }, - "query": "\n INSERT INTO scheduler_witness_jobs\n (l1_batch_number, scheduler_witness, scheduler_witness_blob_url, protocol_version, status, created_at, updated_at)\n VALUES ($1, $2, $3, $4, 'waiting_for_artifacts', now(), now())\n " + "query": "SELECT number, timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, rollup_last_leaf_index, zkporter_is_available, bootloader_code_hash, default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, meta_parameters_hash, protocol_version, compressed_state_diffs, system_logs, events_queue_commitment, bootloader_initial_content_commitment FROM l1_batches LEFT JOIN commitments ON commitments.l1_batch_number = l1_batches.number WHERE eth_prove_tx_id IS NOT NULL AND eth_execute_tx_id IS NULL ORDER BY number LIMIT $1" }, - "9b4d87f7d7cabe0d61f10d26bb856cce3dc7f36f521efbb6992d98937e5a91ba": { + "9008367aad7877f269b765c4d0772d0f60689fcde6987c620fe5749a259a8db7": { "describe": { "columns": [ { "name": "id", "ordinal": 0, - "type_info": "Int8" + "type_info": "Int4" } ], "nullable": [ @@ -6958,247 +6814,239 @@ ], "parameters": { "Left": [ - "Bytea", - "Text", - "Text", - "Text", - "Text", - "Bool", - "Text", - "Bytea", - "Bool" - ] - } - }, - "query": "\n INSERT INTO contract_verification_requests (\n contract_address,\n source_code,\n contract_name,\n zk_compiler_version,\n compiler_version,\n optimization_used,\n optimizer_mode,\n constructor_arguments,\n is_system,\n status,\n created_at,\n updated_at\n )\n VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, 'queued', now(), now())\n RETURNING id\n " - }, - "9b70e9039cdc1a8c8baf9220a9d42a9b1b209ce73f74cccb9e313bcacdc3daf3": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Int8", - "Text", - "Int4", - "Bytea", "Int4", - "Text", - "Int4" - ] - } - }, - "query": "\n INSERT INTO prover_jobs (l1_batch_number, circuit_type, sequence_number, prover_input, aggregation_round, circuit_input_blob_url, protocol_version, status, created_at, updated_at)\n VALUES ($1, $2, $3, $4, $5, $6, $7, 'queued', now(), now())\n ON CONFLICT(l1_batch_number, aggregation_round, sequence_number) DO NOTHING\n " - }, - "9bf32ea710825c1f0560a7eaa89f8f097ad196755ba82d98a729a2b0d34e1aca": { - "describe": { - "columns": [ - { - "name": "successful_limit!", - "ordinal": 0, - "type_info": "Int8" - }, - { - "name": "queued_limit!", - "ordinal": 1, - "type_info": "Int8" - }, - { - "name": "max_block!", - "ordinal": 2, - "type_info": "Int8" - } - ], - "nullable": [ - null, - null, - null - ], - "parameters": { - "Left": [] - } - }, - "query": "\n SELECT\n (SELECT l1_batch_number\n FROM prover_jobs\n WHERE status NOT IN ('successful', 'skipped')\n ORDER BY l1_batch_number\n LIMIT 1) as \"successful_limit!\",\n \n (SELECT l1_batch_number\n FROM prover_jobs\n WHERE status <> 'queued'\n ORDER BY l1_batch_number DESC\n LIMIT 1) as \"queued_limit!\",\n\n (SELECT MAX(l1_batch_number) as \"max!\" FROM prover_jobs) as \"max_block!\"\n " - }, - "9d28c1be3bda0c4fb37567d4a56730e801f48fbb2abad42ea894ebd8ee40412d": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ "Int8", - "Int2", + "Int8", "Text", - "Int2", - "Int4", - "Int4", - "Bool", - "Int4" + "Bytea" ] } }, - "query": "\n INSERT INTO prover_jobs_fri (l1_batch_number, circuit_id, circuit_blob_url, aggregation_round, sequence_number, depth, is_node_final_proof, protocol_version, status, created_at, updated_at)\n VALUES ($1, $2, $3, $4, $5, $6, $7, $8, 'queued', now(), now())\n ON CONFLICT(l1_batch_number, aggregation_round, circuit_id, depth, sequence_number)\n DO UPDATE SET updated_at=now()\n " + "query": "INSERT INTO eth_txs_history\n (eth_tx_id, base_fee_per_gas, priority_fee_per_gas, tx_hash, signed_raw_tx, created_at, updated_at)\n VALUES ($1, $2, $3, $4, $5, now(), now())\n ON CONFLICT (tx_hash) DO NOTHING\n RETURNING id" }, - "9feee3fd267dc4e58185aeae7cab798c03eefa69470e4b98716615cecf6c012a": { + "9051cc1a715e152afdd0c19739c76666b1a9b134e17601ef9fdf3dec5d2fc561": { "describe": { "columns": [ { - "name": "id", + "name": "number", "ordinal": 0, "type_info": "Int8" }, { - "name": "contract_address", + "name": "timestamp", "ordinal": 1, - "type_info": "Bytea" + "type_info": "Int8" }, { - "name": "source_code", + "name": "is_finished", "ordinal": 2, - "type_info": "Text" + "type_info": "Bool" }, { - "name": "contract_name", + "name": "l1_tx_count", "ordinal": 3, - "type_info": "Text" + "type_info": "Int4" }, { - "name": "zk_compiler_version", + "name": "l2_tx_count", "ordinal": 4, - "type_info": "Text" + "type_info": "Int4" }, { - "name": "compiler_version", + "name": "fee_account_address", "ordinal": 5, - "type_info": "Text" + "type_info": "Bytea" }, { - "name": "optimization_used", + "name": "bloom", "ordinal": 6, - "type_info": "Bool" + "type_info": "Bytea" }, { - "name": "optimizer_mode", + "name": "priority_ops_onchain_data", "ordinal": 7, - "type_info": "Text" + "type_info": "ByteaArray" }, { - "name": "constructor_arguments", + "name": "hash", "ordinal": 8, "type_info": "Bytea" }, { - "name": "is_system", + "name": "parent_hash", "ordinal": 9, - "type_info": "Bool" - } - ], - "nullable": [ - false, - false, - false, - false, - false, - false, - false, - true, - false, - false - ], - "parameters": { - "Left": [ - "Interval" - ] - } - }, - "query": "UPDATE contract_verification_requests\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now()\n WHERE id = (\n SELECT id FROM contract_verification_requests\n WHERE status = 'queued' OR (status = 'in_progress' AND processing_started_at < now() - $1::interval)\n ORDER BY created_at\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING id, contract_address, source_code, contract_name, zk_compiler_version, compiler_version, optimization_used,\n optimizer_mode, constructor_arguments, is_system\n " - }, - "a074cd2c23434a8e801c2c0b42e63f1657765aceabd6d8a50ef2d2299bba99ab": { - "describe": { - "columns": [ + "type_info": "Bytea" + }, { - "name": "id", - "ordinal": 0, - "type_info": "Int8" + "name": "commitment", + "ordinal": 10, + "type_info": "Bytea" }, { - "name": "l1_batch_number", - "ordinal": 1, - "type_info": "Int8" + "name": "compressed_write_logs", + "ordinal": 11, + "type_info": "Bytea" }, { - "name": "circuit_id", - "ordinal": 2, - "type_info": "Int2" + "name": "compressed_contracts", + "ordinal": 12, + "type_info": "Bytea" }, { - "name": "closed_form_inputs_blob_url", - "ordinal": 3, - "type_info": "Text" + "name": "eth_prove_tx_id", + "ordinal": 13, + "type_info": "Int4" }, { - "name": "attempts", - "ordinal": 4, - "type_info": "Int2" + "name": "eth_commit_tx_id", + "ordinal": 14, + "type_info": "Int4" }, { - "name": "status", - "ordinal": 5, - "type_info": "Text" + "name": "eth_execute_tx_id", + "ordinal": 15, + "type_info": "Int4" }, { - "name": "error", - "ordinal": 6, - "type_info": "Text" + "name": "merkle_root_hash", + "ordinal": 16, + "type_info": "Bytea" }, { - "name": "created_at", - "ordinal": 7, - "type_info": "Timestamp" + "name": "l2_to_l1_logs", + "ordinal": 17, + "type_info": "ByteaArray" }, { - "name": "updated_at", - "ordinal": 8, - "type_info": "Timestamp" + "name": "l2_to_l1_messages", + "ordinal": 18, + "type_info": "ByteaArray" }, { - "name": "processing_started_at", - "ordinal": 9, - "type_info": "Timestamp" + "name": "used_contract_hashes", + "ordinal": 19, + "type_info": "Jsonb" }, { - "name": "time_taken", - "ordinal": 10, - "type_info": "Time" + "name": "compressed_initial_writes", + "ordinal": 20, + "type_info": "Bytea" }, { - "name": "is_blob_cleaned", - "ordinal": 11, + "name": "compressed_repeated_writes", + "ordinal": 21, + "type_info": "Bytea" + }, + { + "name": "l2_l1_compressed_messages", + "ordinal": 22, + "type_info": "Bytea" + }, + { + "name": "l2_l1_merkle_root", + "ordinal": 23, + "type_info": "Bytea" + }, + { + "name": "l1_gas_price", + "ordinal": 24, + "type_info": "Int8" + }, + { + "name": "l2_fair_gas_price", + "ordinal": 25, + "type_info": "Int8" + }, + { + "name": "rollup_last_leaf_index", + "ordinal": 26, + "type_info": "Int8" + }, + { + "name": "zkporter_is_available", + "ordinal": 27, "type_info": "Bool" }, { - "name": "number_of_basic_circuits", - "ordinal": 12, - "type_info": "Int4" + "name": "bootloader_code_hash", + "ordinal": 28, + "type_info": "Bytea" + }, + { + "name": "default_aa_code_hash", + "ordinal": 29, + "type_info": "Bytea" + }, + { + "name": "base_fee_per_gas", + "ordinal": 30, + "type_info": "Numeric" + }, + { + "name": "aux_data_hash", + "ordinal": 31, + "type_info": "Bytea" + }, + { + "name": "pass_through_data_hash", + "ordinal": 32, + "type_info": "Bytea" + }, + { + "name": "meta_parameters_hash", + "ordinal": 33, + "type_info": "Bytea" }, { "name": "protocol_version", - "ordinal": 13, + "ordinal": 34, "type_info": "Int4" }, { - "name": "picked_by", - "ordinal": 14, - "type_info": "Text" + "name": "compressed_state_diffs", + "ordinal": 35, + "type_info": "Bytea" + }, + { + "name": "system_logs", + "ordinal": 36, + "type_info": "ByteaArray" + }, + { + "name": "events_queue_commitment", + "ordinal": 37, + "type_info": "Bytea" + }, + { + "name": "bootloader_initial_content_commitment", + "ordinal": 38, + "type_info": "Bytea" } ], "nullable": [ false, false, false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + true, true, false, false, + false, + true, + true, + true, true, false, false, @@ -7206,121 +7054,244 @@ true, true, true, + false, + true, + true, + true, + true, + true, + false, true, true ], "parameters": { "Left": [ - "Int4Array", - "Text" + "Int8", + "Int8", + "Int8" ] } }, - "query": "\n UPDATE leaf_aggregation_witness_jobs_fri\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now(),\n picked_by = $2\n WHERE id = (\n SELECT id\n FROM leaf_aggregation_witness_jobs_fri\n WHERE status = 'queued'\n AND protocol_version = ANY($1)\n ORDER BY l1_batch_number ASC, id ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING leaf_aggregation_witness_jobs_fri.*\n " + "query": "SELECT number, timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, rollup_last_leaf_index, zkporter_is_available, bootloader_code_hash, default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, meta_parameters_hash, protocol_version, compressed_state_diffs, system_logs, events_queue_commitment, bootloader_initial_content_commitment FROM l1_batches LEFT JOIN commitments ON commitments.l1_batch_number = l1_batches.number WHERE number BETWEEN $1 AND $2 ORDER BY number LIMIT $3" }, - "a19b7137403c5cdf1be5f5122ce4d297ed661fa8bdb3bc91f8a81fe9da47469e": { + "91db60cc4f98ebcaef1435342607da0a86fe16e20a696cb81a569772d5d5ae88": { "describe": { "columns": [ { - "name": "upgrade_tx_hash", + "name": "value", "ordinal": 0, "type_info": "Bytea" } ], "nullable": [ - true + false ], "parameters": { "Left": [ - "Int4" - ] - } - }, - "query": "\n SELECT upgrade_tx_hash FROM protocol_versions\n WHERE id = $1\n " - }, - "a1a6b52403c1db35c8d83d0a512ac453ecd54b34ec516027d540ee1890b40291": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Int4", "Bytea", - "Bytea", - "Bytea", - "Bytea" + "Int8" ] } }, - "query": "INSERT INTO prover_fri_protocol_versions (id, recursion_scheduler_level_vk_hash, recursion_node_level_vk_hash, recursion_leaf_level_vk_hash, recursion_circuits_set_vks_hash, created_at) VALUES ($1, $2, $3, $4, $5, now()) ON CONFLICT(id) DO NOTHING" + "query": "\n SELECT value\n FROM storage_logs\n WHERE storage_logs.hashed_key = $1 AND storage_logs.miniblock_number <= $2\n ORDER BY storage_logs.miniblock_number DESC, storage_logs.operation_number DESC\n LIMIT 1\n " }, - "a39f760d2cd879a78112e57d8611d7099802b03b7cc4933cafb4c47e133ad543": { + "93e9e761f41bc67a91702cefdd8245c15f64aa5ebe550581418aeba8b70632e9": { "describe": { "columns": [ { - "name": "address", + "name": "number", "ordinal": 0, - "type_info": "Bytea" + "type_info": "Int8" }, { - "name": "topic1", + "name": "timestamp", "ordinal": 1, - "type_info": "Bytea" + "type_info": "Int8" }, { - "name": "topic2", + "name": "is_finished", "ordinal": 2, - "type_info": "Bytea" + "type_info": "Bool" }, { - "name": "topic3", + "name": "l1_tx_count", "ordinal": 3, - "type_info": "Bytea" + "type_info": "Int4" }, { - "name": "topic4", + "name": "l2_tx_count", "ordinal": 4, - "type_info": "Bytea" + "type_info": "Int4" }, { - "name": "value", + "name": "fee_account_address", "ordinal": 5, "type_info": "Bytea" }, { - "name": "block_hash", + "name": "bloom", "ordinal": 6, "type_info": "Bytea" }, { - "name": "l1_batch_number?", + "name": "priority_ops_onchain_data", "ordinal": 7, - "type_info": "Int8" + "type_info": "ByteaArray" }, { - "name": "miniblock_number", + "name": "hash", "ordinal": 8, - "type_info": "Int8" + "type_info": "Bytea" }, { - "name": "tx_hash", + "name": "parent_hash", "ordinal": 9, "type_info": "Bytea" }, { - "name": "tx_index_in_block", + "name": "commitment", "ordinal": 10, - "type_info": "Int4" + "type_info": "Bytea" }, { - "name": "event_index_in_block", + "name": "compressed_write_logs", "ordinal": 11, - "type_info": "Int4" + "type_info": "Bytea" }, { - "name": "event_index_in_tx", + "name": "compressed_contracts", "ordinal": 12, + "type_info": "Bytea" + }, + { + "name": "eth_prove_tx_id", + "ordinal": 13, + "type_info": "Int4" + }, + { + "name": "eth_commit_tx_id", + "ordinal": 14, + "type_info": "Int4" + }, + { + "name": "eth_execute_tx_id", + "ordinal": 15, + "type_info": "Int4" + }, + { + "name": "merkle_root_hash", + "ordinal": 16, + "type_info": "Bytea" + }, + { + "name": "l2_to_l1_logs", + "ordinal": 17, + "type_info": "ByteaArray" + }, + { + "name": "l2_to_l1_messages", + "ordinal": 18, + "type_info": "ByteaArray" + }, + { + "name": "used_contract_hashes", + "ordinal": 19, + "type_info": "Jsonb" + }, + { + "name": "compressed_initial_writes", + "ordinal": 20, + "type_info": "Bytea" + }, + { + "name": "compressed_repeated_writes", + "ordinal": 21, + "type_info": "Bytea" + }, + { + "name": "l2_l1_compressed_messages", + "ordinal": 22, + "type_info": "Bytea" + }, + { + "name": "l2_l1_merkle_root", + "ordinal": 23, + "type_info": "Bytea" + }, + { + "name": "l1_gas_price", + "ordinal": 24, + "type_info": "Int8" + }, + { + "name": "l2_fair_gas_price", + "ordinal": 25, + "type_info": "Int8" + }, + { + "name": "rollup_last_leaf_index", + "ordinal": 26, + "type_info": "Int8" + }, + { + "name": "zkporter_is_available", + "ordinal": 27, + "type_info": "Bool" + }, + { + "name": "bootloader_code_hash", + "ordinal": 28, + "type_info": "Bytea" + }, + { + "name": "default_aa_code_hash", + "ordinal": 29, + "type_info": "Bytea" + }, + { + "name": "base_fee_per_gas", + "ordinal": 30, + "type_info": "Numeric" + }, + { + "name": "aux_data_hash", + "ordinal": 31, + "type_info": "Bytea" + }, + { + "name": "pass_through_data_hash", + "ordinal": 32, + "type_info": "Bytea" + }, + { + "name": "meta_parameters_hash", + "ordinal": 33, + "type_info": "Bytea" + }, + { + "name": "protocol_version", + "ordinal": 34, "type_info": "Int4" + }, + { + "name": "compressed_state_diffs", + "ordinal": 35, + "type_info": "Bytea" + }, + { + "name": "system_logs", + "ordinal": 36, + "type_info": "ByteaArray" + }, + { + "name": "events_queue_commitment", + "ordinal": 37, + "type_info": "Bytea" + }, + { + "name": "bootloader_initial_content_commitment", + "ordinal": 38, + "type_info": "Bytea" } ], "nullable": [ @@ -7330,160 +7301,76 @@ false, false, false, - null, - null, false, false, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + true, + true, + true, + true, false, false, - false + true, + true, + true, + true, + false, + true, + true, + true, + true, + true, + false, + true, + true ], "parameters": { "Left": [ - "Bytea" - ] - } - }, - "query": "\n SELECT\n address, topic1, topic2, topic3, topic4, value,\n Null::bytea as \"block_hash\", Null::bigint as \"l1_batch_number?\",\n miniblock_number, tx_hash, tx_index_in_block,\n event_index_in_block, event_index_in_tx\n FROM events\n WHERE tx_hash = $1\n ORDER BY miniblock_number ASC, event_index_in_block ASC\n " - }, - "a3d526a5a341618e9784fc81626143a3174709483a527879254ff8e28f210ac3": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ + "Bytea", + "Bytea", "Int4", - "Int8", - "Int8" - ] - } - }, - "query": "UPDATE l1_batches SET eth_execute_tx_id = $1, updated_at = now() WHERE number BETWEEN $2 AND $3" - }, - "a42626c162a0600b9c7d22dd0d7997fa70cc95296ecc185ff9ae2e03593b07bf": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ "Int8" ] } }, - "query": "\n UPDATE scheduler_witness_jobs_fri\n SET status='queued'\n WHERE l1_batch_number = $1\n AND status != 'successful'\n AND status != 'in_progress'\n " + "query": "SELECT number, l1_batches.timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, rollup_last_leaf_index, zkporter_is_available, l1_batches.bootloader_code_hash, l1_batches.default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, meta_parameters_hash, protocol_version, compressed_state_diffs, system_logs, events_queue_commitment, bootloader_initial_content_commitment FROM l1_batches LEFT JOIN commitments ON commitments.l1_batch_number = l1_batches.number JOIN protocol_versions ON protocol_versions.id = l1_batches.protocol_version WHERE eth_commit_tx_id IS NULL AND number != 0 AND protocol_versions.bootloader_code_hash = $1 AND protocol_versions.default_account_code_hash = $2 AND commitment IS NOT NULL AND (protocol_versions.id = $3 OR protocol_versions.upgrade_tx_hash IS NULL) AND events_queue_commitment IS NOT NULL AND bootloader_initial_content_commitment IS NOT NULL\n ORDER BY number LIMIT $4" }, - "a4a14eb42b9acca3f93c67e5760ba700c333b5e9a38c132a3060a94c988e7f13": { + "957ceda740ffb36740acf1e3fbacf76a2ea7422dd9d76a38d745113359e4b7a6": { "describe": { "columns": [ { - "name": "hash", + "name": "protocol_version", "ordinal": 0, - "type_info": "Bytea" - }, - { - "name": "received_at", - "ordinal": 1, - "type_info": "Timestamp" + "type_info": "Int4" } ], "nullable": [ - false, - false + true ], "parameters": { "Left": [ - "Timestamp", "Int8" ] } }, - "query": "SELECT transactions.hash, transactions.received_at FROM transactions LEFT JOIN miniblocks ON miniblocks.number = miniblock_number WHERE received_at > $1 ORDER BY received_at ASC LIMIT $2" - }, - "a5115658f3a53462a9570fd6676f1931604d1c17a9a2b5f1475519006aaf03ba": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Int8", - "Text" - ] - } - }, - "query": "INSERT INTO proof_generation_details (l1_batch_number, status, proof_gen_data_blob_url, created_at, updated_at) VALUES ($1, 'ready_to_be_proven', $2, now(), now()) ON CONFLICT (l1_batch_number) DO NOTHING" + "query": "SELECT protocol_version FROM l1_batches WHERE number = $1" }, - "a7abde5a53248d6e63aa998acac521194231bbe08140c9c4efa548c4f3ae17fa": { + "95ce099fde99c57a930ed3d44f74a90d632b831360210ec7fe21b33bed1a4582": { "describe": { "columns": [ { - "name": "max?", - "ordinal": 0, - "type_info": "Int4" - } - ], - "nullable": [ - null - ], - "parameters": { - "Left": [ - "Int8" - ] - } - }, - "query": "SELECT MAX(operation_number) as \"max?\" FROM storage_logs WHERE miniblock_number = $1" - }, - "a9b1a31def214f8b1441dc3ab720bd270f3991c9f1c7528256276e176d532163": { - "describe": { - "columns": [ - { - "name": "l1_batch_number", - "ordinal": 0, - "type_info": "Int8" - } - ], - "nullable": [ - false - ], - "parameters": { - "Left": [ - "Bytea" - ] - } - }, - "query": "SELECT l1_batch_number FROM initial_writes WHERE hashed_key = $1" - }, - "a9d96d6774af2637173d471f02995652cd4c131c05fdcb3d0e1644bcd1aa1809": { - "describe": { - "columns": [ - { - "name": "proof", - "ordinal": 0, - "type_info": "Bytea" - }, - { - "name": "aggregation_result_coords", - "ordinal": 1, - "type_info": "Bytea" - } - ], - "nullable": [ - true, - true - ], - "parameters": { - "Left": [ - "Int8", - "Int8" - ] - } - }, - "query": "SELECT prover_jobs.result as proof, scheduler_witness_jobs.aggregation_result_coords\n FROM prover_jobs\n INNER JOIN scheduler_witness_jobs\n ON prover_jobs.l1_batch_number = scheduler_witness_jobs.l1_batch_number\n WHERE prover_jobs.l1_batch_number >= $1 AND prover_jobs.l1_batch_number <= $2\n AND prover_jobs.aggregation_round = 3\n AND prover_jobs.status = 'successful'\n " - }, - "aa1534f03679fd2d1d9e7c1da1f94cc0e2ec5fc3a0e1ac7137147533eacf0aaf": { - "describe": { - "columns": [ - { - "name": "id", + "name": "id", "ordinal": 0, "type_info": "Int4" }, @@ -7559,32 +7446,33 @@ ], "parameters": { "Left": [ + "Bytea", + "Int8", + "Text", + "Text", "Int8" ] } }, - "query": "SELECT * FROM eth_txs \n WHERE id > (SELECT COALESCE(MAX(eth_tx_id), 0) FROM eth_txs_history)\n ORDER BY id\n LIMIT $1\n " + "query": "INSERT INTO eth_txs (raw_tx, nonce, tx_type, contract_address, predicted_gas_cost, created_at, updated_at)\n VALUES ($1, $2, $3, $4, $5, now(), now())\n RETURNING *" }, - "aa279ce3351b30788711be6c65cb99cb14304ac38f8fed6d332237ffafc7c86b": { + "95e0e783794ac55ab20b30366f037c313fb0d17e93d3e6ec60667ef1b4da30d5": { "describe": { "columns": [], "nullable": [], "parameters": { "Left": [ - "Text", - "Time", - "Text", - "Int8" + "Int8Array" ] } }, - "query": "UPDATE proof_compression_jobs_fri SET status = $1, updated_at = now(), time_taken = $2, l1_proof_blob_url = $3WHERE l1_batch_number = $4" + "query": "\n UPDATE prover_jobs\n SET is_blob_cleaned=TRUE\n WHERE id = ANY($1);\n " }, - "aa7ae476aed5979227887891e9be995924588aa10ccba7424d6ce58f811eaa02": { + "96b1cd2bb6861064b633d597a4a09d279dbc7bcd7a810a7270da3d7941af0fff": { "describe": { "columns": [ { - "name": "number!", + "name": "count!", "ordinal": 0, "type_info": "Int8" } @@ -7593,262 +7481,223 @@ null ], "parameters": { - "Left": [] - } - }, - "query": "SELECT COALESCE(MAX(number), 0) AS \"number!\" FROM l1_batches WHERE eth_prove_tx_id IS NOT NULL" - }, - "aacaeff95b9a2988167dde78200d7139ba99edfa30dbcd8a7a57f72efc676477": { - "describe": { - "columns": [ - { - "name": "number", - "ordinal": 0, - "type_info": "Int8" - } - ], - "nullable": [ - false - ], - "parameters": { - "Left": [] + "Left": [ + "Bytea", + "Bytea" + ] } }, - "query": "SELECT number FROM l1_batches LEFT JOIN eth_txs_history AS commit_tx ON (l1_batches.eth_commit_tx_id = commit_tx.eth_tx_id) WHERE commit_tx.confirmed_at IS NOT NULL ORDER BY number DESC LIMIT 1" + "query": "SELECT COUNT(*) as \"count!\" FROM (SELECT * FROM storage_logs WHERE storage_logs.hashed_key = $1 ORDER BY storage_logs.miniblock_number DESC, storage_logs.operation_number DESC LIMIT 1) sl WHERE sl.value != $2" }, - "ac35fb205c83d82d78983f4c9b47f56d3c91fbb2c95046555c7d60a9a2ebb446": { + "96f6d06a49646f93ba1918080ef1efba868d506c6b51ede981e610f1b57bf88b": { "describe": { "columns": [], "nullable": [], "parameters": { "Left": [ - "ByteaArray", - "Int8Array", - "Int8" + "ByteaArray" ] } }, - "query": "INSERT INTO initial_writes (hashed_key, index, l1_batch_number, created_at, updated_at) SELECT u.hashed_key, u.index, $3, now(), now() FROM UNNEST($1::bytea[], $2::bigint[]) AS u(hashed_key, index)" + "query": "DELETE FROM storage WHERE hashed_key = ANY($1)" }, - "ad11ec3e628ae6c64ac160d8dd689b2f64033f620e17a31469788b3ce4968ad3": { + "97d81c27885fda4390ebc9789c6169cb94a449f583f7819ec74286fb0d9f81d5": { "describe": { "columns": [ { - "name": "id", + "name": "number", "ordinal": 0, - "type_info": "Int4" + "type_info": "Int8" }, { - "name": "eth_tx_id", + "name": "timestamp", "ordinal": 1, - "type_info": "Int4" + "type_info": "Int8" }, { - "name": "tx_hash", + "name": "is_finished", "ordinal": 2, - "type_info": "Text" + "type_info": "Bool" }, { - "name": "created_at", + "name": "l1_tx_count", "ordinal": 3, - "type_info": "Timestamp" + "type_info": "Int4" }, { - "name": "updated_at", + "name": "l2_tx_count", "ordinal": 4, - "type_info": "Timestamp" + "type_info": "Int4" }, { - "name": "base_fee_per_gas", + "name": "fee_account_address", "ordinal": 5, - "type_info": "Int8" + "type_info": "Bytea" }, { - "name": "priority_fee_per_gas", + "name": "bloom", "ordinal": 6, - "type_info": "Int8" + "type_info": "Bytea" }, { - "name": "confirmed_at", + "name": "priority_ops_onchain_data", "ordinal": 7, - "type_info": "Timestamp" + "type_info": "ByteaArray" }, { - "name": "signed_raw_tx", + "name": "hash", "ordinal": 8, "type_info": "Bytea" }, { - "name": "sent_at_block", + "name": "parent_hash", "ordinal": 9, - "type_info": "Int4" + "type_info": "Bytea" }, { - "name": "sent_at", + "name": "commitment", "ordinal": 10, - "type_info": "Timestamp" - } - ], - "nullable": [ - false, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true - ], - "parameters": { - "Left": [ - "Int4" - ] - } - }, - "query": "SELECT * FROM eth_txs_history WHERE eth_tx_id = $1 ORDER BY created_at DESC LIMIT 1" - }, - "ad4f74aa6f131df0243f4fa500ade1b98aa335bd71ed417b02361e2c697e60f8": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Bytea", - "Int8" - ] - } - }, - "query": "\n UPDATE scheduler_witness_jobs\n SET aggregation_result_coords = $1,\n updated_at = now()\n WHERE l1_batch_number = $2\n " - }, - "ae072f51b65d0b5212264be9a34027922e5aedef7e4741517ad8104bf5aa79e9": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Int8" - ] - } - }, - "query": "DELETE FROM factory_deps WHERE miniblock_number > $1" - }, - "aea4e8d1b018836973d252df943a2c1988dd5f3ffc629064b87d25af8cdb8638": { - "describe": { - "columns": [ + "type_info": "Bytea" + }, { - "name": "l1_batch_number", - "ordinal": 0, - "type_info": "Int8" + "name": "compressed_write_logs", + "ordinal": 11, + "type_info": "Bytea" }, { - "name": "l1_batch_tx_index", - "ordinal": 1, + "name": "compressed_contracts", + "ordinal": 12, + "type_info": "Bytea" + }, + { + "name": "eth_prove_tx_id", + "ordinal": 13, "type_info": "Int4" - } - ], - "nullable": [ - true, - true - ], - "parameters": { - "Left": [ - "Bytea" - ] - } - }, - "query": "SELECT l1_batch_number, l1_batch_tx_index FROM transactions WHERE hash = $1" - }, - "af22ad34bde12b8d25eb85da9939d12b7bed6407d732b868eeaf2916568c8646": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Time", - "Int8" - ] - } - }, - "query": "\n UPDATE scheduler_witness_jobs_fri\n SET status = 'successful', updated_at = now(), time_taken = $1\n WHERE l1_batch_number = $2\n " - }, - "af75db6b7e42b73ce62b28a7281e1bfa181ee0c80a85d7d8078831db5dcdb699": { - "describe": { - "columns": [ + }, { - "name": "l1_block_number", - "ordinal": 0, + "name": "eth_commit_tx_id", + "ordinal": 14, "type_info": "Int4" - } - ], - "nullable": [ - true - ], - "parameters": { - "Left": [] - } - }, - "query": "SELECT l1_block_number FROM transactions\n WHERE priority_op_id IS NOT NULL\n ORDER BY priority_op_id DESC\n LIMIT 1" - }, - "b1478907214ad20dddd4f3846fba4b0ddf1fff63ddb3b95c8999635e77c8b863": { - "describe": { - "columns": [ + }, { - "name": "id", - "ordinal": 0, + "name": "eth_execute_tx_id", + "ordinal": 15, "type_info": "Int4" }, { - "name": "eth_tx_id", - "ordinal": 1, - "type_info": "Int4" + "name": "merkle_root_hash", + "ordinal": 16, + "type_info": "Bytea" }, { - "name": "tx_hash", - "ordinal": 2, - "type_info": "Text" + "name": "l2_to_l1_logs", + "ordinal": 17, + "type_info": "ByteaArray" }, { - "name": "created_at", - "ordinal": 3, - "type_info": "Timestamp" + "name": "l2_to_l1_messages", + "ordinal": 18, + "type_info": "ByteaArray" }, { - "name": "updated_at", - "ordinal": 4, - "type_info": "Timestamp" + "name": "used_contract_hashes", + "ordinal": 19, + "type_info": "Jsonb" }, { - "name": "base_fee_per_gas", - "ordinal": 5, + "name": "compressed_initial_writes", + "ordinal": 20, + "type_info": "Bytea" + }, + { + "name": "compressed_repeated_writes", + "ordinal": 21, + "type_info": "Bytea" + }, + { + "name": "l2_l1_compressed_messages", + "ordinal": 22, + "type_info": "Bytea" + }, + { + "name": "l2_l1_merkle_root", + "ordinal": 23, + "type_info": "Bytea" + }, + { + "name": "l1_gas_price", + "ordinal": 24, "type_info": "Int8" }, { - "name": "priority_fee_per_gas", - "ordinal": 6, + "name": "l2_fair_gas_price", + "ordinal": 25, "type_info": "Int8" }, { - "name": "confirmed_at", - "ordinal": 7, - "type_info": "Timestamp" + "name": "rollup_last_leaf_index", + "ordinal": 26, + "type_info": "Int8" }, { - "name": "signed_raw_tx", - "ordinal": 8, + "name": "zkporter_is_available", + "ordinal": 27, + "type_info": "Bool" + }, + { + "name": "bootloader_code_hash", + "ordinal": 28, "type_info": "Bytea" }, { - "name": "sent_at_block", - "ordinal": 9, + "name": "default_aa_code_hash", + "ordinal": 29, + "type_info": "Bytea" + }, + { + "name": "base_fee_per_gas", + "ordinal": 30, + "type_info": "Numeric" + }, + { + "name": "aux_data_hash", + "ordinal": 31, + "type_info": "Bytea" + }, + { + "name": "pass_through_data_hash", + "ordinal": 32, + "type_info": "Bytea" + }, + { + "name": "meta_parameters_hash", + "ordinal": 33, + "type_info": "Bytea" + }, + { + "name": "protocol_version", + "ordinal": 34, "type_info": "Int4" }, { - "name": "sent_at", - "ordinal": 10, - "type_info": "Timestamp" + "name": "system_logs", + "ordinal": 35, + "type_info": "ByteaArray" + }, + { + "name": "compressed_state_diffs", + "ordinal": 36, + "type_info": "Bytea" + }, + { + "name": "events_queue_commitment", + "ordinal": 37, + "type_info": "Bytea" + }, + { + "name": "bootloader_initial_content_commitment", + "ordinal": 38, + "type_info": "Bytea" } ], "nullable": [ @@ -7859,20 +7708,48 @@ false, false, false, + false, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + true, + true, + true, + true, + false, + false, + true, + true, + true, + true, + false, + true, true, true, true, + false, + true, + true, true ], "parameters": { "Left": [ - "Int4" + "Int8" ] } }, - "query": "SELECT * FROM eth_txs_history WHERE eth_tx_id = $1 ORDER BY created_at DESC" + "query": "SELECT number, timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, rollup_last_leaf_index, zkporter_is_available, bootloader_code_hash, default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, meta_parameters_hash, protocol_version, system_logs, compressed_state_diffs, events_queue_commitment, bootloader_initial_content_commitment FROM l1_batches LEFT JOIN commitments ON commitments.l1_batch_number = l1_batches.number WHERE number = $1" }, - "b14997f84d11d7eea89168383195c5579eed1c57bb2b416a749e2863ae6594a5": { + "987fcbbd716648c7c368462643f13d8001d5c6d197add90613ae21d21fdef79b": { "describe": { "columns": [], "nullable": [], @@ -7883,313 +7760,100 @@ ] } }, - "query": "\n UPDATE leaf_aggregation_witness_jobs_fri\n SET status ='failed', error= $1, updated_at = now()\n WHERE id = $2\n " - }, - "b14d9a82e6b0a4174dde61642d3abc001cd8cb80d988eb81a685255e3ce920de": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Int8Array", - "ByteaArray" - ] - } - }, - "query": "UPDATE miniblocks SET hash = u.hash FROM UNNEST($1::bigint[], $2::bytea[]) AS u(number, hash) WHERE miniblocks.number = u.number\n " + "query": "UPDATE prover_jobs_fri SET status = $1, updated_at = now() WHERE id = $2" }, - "b479b7d3334f8d4566c294a44e2adb282fbc66a87be5c248c65211c2a8a07db0": { + "9970bb69f5ca9ab9f103e1547eb40c1d4f5dd3a540ff6f1b9724821350c9501a": { "describe": { "columns": [ { - "name": "number", + "name": "id", "ordinal": 0, "type_info": "Int8" }, { - "name": "hash", + "name": "l1_batch_number", "ordinal": 1, - "type_info": "Bytea" - } - ], - "nullable": [ - false, - false - ], - "parameters": { - "Left": [ - "Int8", - "Int8" - ] - } - }, - "query": "SELECT number, hash FROM miniblocks WHERE number > $1 ORDER BY number ASC LIMIT $2" - }, - "b4c576db7c762103dc6700ded458e996d2e9ef670d7b58b181dbfab02fa426ce": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Bytea", - "Bytea", - "Numeric", - "Numeric", - "Numeric", - "Jsonb", - "Int8", - "Numeric", - "Numeric", - "Bytea", - "Int4", - "Numeric", - "Bytea", - "Bytea", - "Int4", - "Numeric", - "Bytea", - "Timestamp" - ] - } - }, - "query": "\n INSERT INTO transactions\n (\n hash,\n is_priority,\n initiator_address,\n\n gas_limit,\n max_fee_per_gas,\n gas_per_pubdata_limit,\n\n data,\n priority_op_id,\n full_fee,\n layer_2_tip_fee,\n contract_address,\n l1_block_number,\n value,\n\n paymaster,\n paymaster_input,\n tx_format,\n\n l1_tx_mint,\n l1_tx_refund_recipient,\n\n received_at,\n created_at,\n updated_at\n )\n VALUES\n (\n $1, TRUE, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12,\n $13, $14, $15, $16, $17, $18, now(), now()\n )\n ON CONFLICT (hash) DO NOTHING\n " - }, - "b4da918ee3b36b56d95c8834edebe65eb48ebb8270fa1e6ccf73ad354fd71134": { - "describe": { - "columns": [ + "type_info": "Int8" + }, { - "name": "l1_address", - "ordinal": 0, - "type_info": "Bytea" + "name": "circuit_type", + "ordinal": 2, + "type_info": "Text" }, { - "name": "l2_address", - "ordinal": 1, + "name": "prover_input", + "ordinal": 3, "type_info": "Bytea" - } - ], - "nullable": [ - false, - false - ], - "parameters": { - "Left": [] - } - }, - "query": "SELECT l1_address, l2_address FROM tokens WHERE well_known = true" - }, - "b63887af3f30048e054165f228de78385600c15ca772bff990ede75495856541": { - "describe": { - "columns": [ - { - "name": "number", - "ordinal": 0, - "type_info": "Int8" - }, - { - "name": "timestamp", - "ordinal": 1, - "type_info": "Int8" }, { - "name": "is_finished", - "ordinal": 2, - "type_info": "Bool" - }, - { - "name": "l1_tx_count", - "ordinal": 3, - "type_info": "Int4" - }, - { - "name": "l2_tx_count", + "name": "status", "ordinal": 4, - "type_info": "Int4" + "type_info": "Text" }, { - "name": "fee_account_address", + "name": "error", "ordinal": 5, - "type_info": "Bytea" + "type_info": "Text" }, { - "name": "bloom", + "name": "processing_started_at", "ordinal": 6, - "type_info": "Bytea" + "type_info": "Timestamp" }, { - "name": "priority_ops_onchain_data", + "name": "created_at", "ordinal": 7, - "type_info": "ByteaArray" + "type_info": "Timestamp" }, { - "name": "hash", + "name": "updated_at", "ordinal": 8, - "type_info": "Bytea" + "type_info": "Timestamp" }, { - "name": "parent_hash", + "name": "time_taken", "ordinal": 9, - "type_info": "Bytea" + "type_info": "Time" }, { - "name": "commitment", + "name": "aggregation_round", "ordinal": 10, - "type_info": "Bytea" + "type_info": "Int4" }, { - "name": "compressed_write_logs", + "name": "result", "ordinal": 11, "type_info": "Bytea" }, { - "name": "compressed_contracts", + "name": "sequence_number", "ordinal": 12, - "type_info": "Bytea" + "type_info": "Int4" }, { - "name": "eth_prove_tx_id", + "name": "attempts", "ordinal": 13, "type_info": "Int4" }, { - "name": "eth_commit_tx_id", + "name": "circuit_input_blob_url", "ordinal": 14, - "type_info": "Int4" + "type_info": "Text" }, { - "name": "eth_execute_tx_id", + "name": "proccesed_by", "ordinal": 15, - "type_info": "Int4" + "type_info": "Text" }, { - "name": "merkle_root_hash", + "name": "is_blob_cleaned", "ordinal": 16, - "type_info": "Bytea" - }, - { - "name": "l2_to_l1_logs", - "ordinal": 17, - "type_info": "ByteaArray" - }, - { - "name": "l2_to_l1_messages", - "ordinal": 18, - "type_info": "ByteaArray" - }, - { - "name": "used_contract_hashes", - "ordinal": 19, - "type_info": "Jsonb" - }, - { - "name": "compressed_initial_writes", - "ordinal": 20, - "type_info": "Bytea" - }, - { - "name": "compressed_repeated_writes", - "ordinal": 21, - "type_info": "Bytea" - }, - { - "name": "l2_l1_compressed_messages", - "ordinal": 22, - "type_info": "Bytea" - }, - { - "name": "l2_l1_merkle_root", - "ordinal": 23, - "type_info": "Bytea" - }, - { - "name": "l1_gas_price", - "ordinal": 24, - "type_info": "Int8" - }, - { - "name": "l2_fair_gas_price", - "ordinal": 25, - "type_info": "Int8" - }, - { - "name": "rollup_last_leaf_index", - "ordinal": 26, - "type_info": "Int8" - }, - { - "name": "zkporter_is_available", - "ordinal": 27, "type_info": "Bool" }, - { - "name": "bootloader_code_hash", - "ordinal": 28, - "type_info": "Bytea" - }, - { - "name": "default_aa_code_hash", - "ordinal": 29, - "type_info": "Bytea" - }, - { - "name": "base_fee_per_gas", - "ordinal": 30, - "type_info": "Numeric" - }, - { - "name": "aux_data_hash", - "ordinal": 31, - "type_info": "Bytea" - }, - { - "name": "pass_through_data_hash", - "ordinal": 32, - "type_info": "Bytea" - }, - { - "name": "meta_parameters_hash", - "ordinal": 33, - "type_info": "Bytea" - }, { "name": "protocol_version", - "ordinal": 34, - "type_info": "Int4" - }, - { - "name": "compressed_state_diffs", - "ordinal": 35, - "type_info": "Bytea" - }, - { - "name": "gas_per_pubdata_byte_in_block", - "ordinal": 36, + "ordinal": 17, "type_info": "Int4" - }, - { - "name": "gas_per_pubdata_limit", - "ordinal": 37, - "type_info": "Int8" - }, - { - "name": "skip_proof", - "ordinal": 38, - "type_info": "Bool" - }, - { - "name": "system_logs", - "ordinal": 39, - "type_info": "ByteaArray" - }, - { - "name": "events_queue_commitment", - "ordinal": 40, - "type_info": "Bytea" - }, - { - "name": "bootloader_initial_content_commitment", - "ordinal": 41, - "type_info": "Bytea" } ], "nullable": [ @@ -8198,153 +7862,171 @@ false, false, false, - false, - false, - false, true, true, - true, - true, - true, - true, - true, - true, - true, - false, false, false, - true, - true, - true, - true, false, false, true, - true, - true, - true, false, - true, - true, - true, - true, + false, true, true, false, - false, - false, - true, true ], "parameters": { - "Left": [] + "Left": [ + "Int4Array" + ] } }, - "query": "SELECT number, timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, rollup_last_leaf_index, zkporter_is_available, bootloader_code_hash, default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, meta_parameters_hash, protocol_version, compressed_state_diffs, gas_per_pubdata_byte_in_block, gas_per_pubdata_limit, skip_proof, system_logs, events_queue_commitment, bootloader_initial_content_commitment\n FROM l1_batches LEFT JOIN commitments ON commitments.l1_batch_number = l1_batches.number WHERE number = 0 OR eth_commit_tx_id IS NOT NULL AND commitment IS NOT NULL ORDER BY number DESC LIMIT 1" + "query": "\n UPDATE prover_jobs\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now()\n WHERE id = (\n SELECT id\n FROM prover_jobs\n WHERE status = 'queued'\n AND protocol_version = ANY($1)\n ORDER BY aggregation_round DESC, l1_batch_number ASC, id ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING prover_jobs.*\n " }, - "b6c8e0827b2389a14433c031332962495311562ae9652ae7e9409a4bf48dc55b": { + "99d331d233d357302ab0cc7e3269ef9e414f0c3111785212660f471e3b4f6a04": { "describe": { - "columns": [ - { - "name": "id", - "ordinal": 0, - "type_info": "Int4" - }, - { - "name": "nonce", - "ordinal": 1, - "type_info": "Int8" - }, - { - "name": "raw_tx", - "ordinal": 2, - "type_info": "Bytea" - }, - { - "name": "contract_address", - "ordinal": 3, - "type_info": "Text" - }, - { - "name": "tx_type", - "ordinal": 4, - "type_info": "Text" - }, - { - "name": "gas_used", - "ordinal": 5, - "type_info": "Int8" - }, - { - "name": "created_at", - "ordinal": 6, - "type_info": "Timestamp" - }, - { - "name": "updated_at", - "ordinal": 7, - "type_info": "Timestamp" - }, + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "ByteaArray", + "Int4Array", + "ByteaArray", + "ByteaArray", + "NumericArray", + "NumericArray", + "NumericArray", + "NumericArray", + "Int4Array", + "Int4Array", + "VarcharArray", + "NumericArray", + "JsonbArray", + "ByteaArray", + "JsonbArray", + "Int8Array", + "NumericArray", + "ByteaArray", + "ByteaArray", + "ByteaArray", + "Int8" + ] + } + }, + "query": "\n UPDATE transactions\n SET \n hash = data_table.hash,\n signature = data_table.signature,\n gas_limit = data_table.gas_limit,\n max_fee_per_gas = data_table.max_fee_per_gas,\n max_priority_fee_per_gas = data_table.max_priority_fee_per_gas,\n gas_per_pubdata_limit = data_table.gas_per_pubdata_limit,\n input = data_table.input,\n data = data_table.data,\n tx_format = data_table.tx_format,\n miniblock_number = $21,\n index_in_block = data_table.index_in_block,\n error = NULLIF(data_table.error, ''),\n effective_gas_price = data_table.effective_gas_price,\n execution_info = data_table.new_execution_info,\n refunded_gas = data_table.refunded_gas,\n value = data_table.value,\n contract_address = data_table.contract_address,\n paymaster = data_table.paymaster,\n paymaster_input = data_table.paymaster_input,\n in_mempool = FALSE,\n updated_at = now()\n FROM\n (\n SELECT data_table_temp.* FROM (\n SELECT\n UNNEST($1::bytea[]) AS initiator_address,\n UNNEST($2::int[]) AS nonce,\n UNNEST($3::bytea[]) AS hash,\n UNNEST($4::bytea[]) AS signature,\n UNNEST($5::numeric[]) AS gas_limit,\n UNNEST($6::numeric[]) AS max_fee_per_gas,\n UNNEST($7::numeric[]) AS max_priority_fee_per_gas,\n UNNEST($8::numeric[]) AS gas_per_pubdata_limit,\n UNNEST($9::int[]) AS tx_format,\n UNNEST($10::integer[]) AS index_in_block,\n UNNEST($11::varchar[]) AS error,\n UNNEST($12::numeric[]) AS effective_gas_price,\n UNNEST($13::jsonb[]) AS new_execution_info,\n UNNEST($14::bytea[]) AS input,\n UNNEST($15::jsonb[]) AS data,\n UNNEST($16::bigint[]) as refunded_gas,\n UNNEST($17::numeric[]) as value,\n UNNEST($18::bytea[]) as contract_address,\n UNNEST($19::bytea[]) as paymaster,\n UNNEST($20::bytea[]) as paymaster_input\n ) AS data_table_temp\n JOIN transactions ON transactions.initiator_address = data_table_temp.initiator_address\n AND transactions.nonce = data_table_temp.nonce\n ORDER BY transactions.hash\n ) AS data_table\n WHERE transactions.initiator_address=data_table.initiator_address\n AND transactions.nonce=data_table.nonce\n " + }, + "9aaf98668f384f634860c4acf793ff47be08975e5d09061cc26fd53dea249c55": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Int8", + "Bytea", + "Text", + "Int4" + ] + } + }, + "query": "\n INSERT INTO scheduler_witness_jobs\n (l1_batch_number, scheduler_witness, scheduler_witness_blob_url, protocol_version, status, created_at, updated_at)\n VALUES ($1, $2, $3, $4, 'waiting_for_artifacts', now(), now())\n " + }, + "9b4d87f7d7cabe0d61f10d26bb856cce3dc7f36f521efbb6992d98937e5a91ba": { + "describe": { + "columns": [ { - "name": "has_failed", - "ordinal": 8, - "type_info": "Bool" - }, + "name": "id", + "ordinal": 0, + "type_info": "Int8" + } + ], + "nullable": [ + false + ], + "parameters": { + "Left": [ + "Bytea", + "Text", + "Text", + "Text", + "Text", + "Bool", + "Text", + "Bytea", + "Bool" + ] + } + }, + "query": "\n INSERT INTO contract_verification_requests (\n contract_address,\n source_code,\n contract_name,\n zk_compiler_version,\n compiler_version,\n optimization_used,\n optimizer_mode,\n constructor_arguments,\n is_system,\n status,\n created_at,\n updated_at\n )\n VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, 'queued', now(), now())\n RETURNING id\n " + }, + "9b70e9039cdc1a8c8baf9220a9d42a9b1b209ce73f74cccb9e313bcacdc3daf3": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Int8", + "Text", + "Int4", + "Bytea", + "Int4", + "Text", + "Int4" + ] + } + }, + "query": "\n INSERT INTO prover_jobs (l1_batch_number, circuit_type, sequence_number, prover_input, aggregation_round, circuit_input_blob_url, protocol_version, status, created_at, updated_at)\n VALUES ($1, $2, $3, $4, $5, $6, $7, 'queued', now(), now())\n ON CONFLICT(l1_batch_number, aggregation_round, sequence_number) DO NOTHING\n " + }, + "9bf32ea710825c1f0560a7eaa89f8f097ad196755ba82d98a729a2b0d34e1aca": { + "describe": { + "columns": [ { - "name": "sent_at_block", - "ordinal": 9, - "type_info": "Int4" + "name": "successful_limit!", + "ordinal": 0, + "type_info": "Int8" }, { - "name": "confirmed_eth_tx_history_id", - "ordinal": 10, - "type_info": "Int4" + "name": "queued_limit!", + "ordinal": 1, + "type_info": "Int8" }, { - "name": "predicted_gas_cost", - "ordinal": 11, + "name": "max_block!", + "ordinal": 2, "type_info": "Int8" } ], "nullable": [ - false, - false, - false, - false, - false, - true, - false, - false, - false, - true, - true, - false + null, + null, + null ], "parameters": { "Left": [] } }, - "query": "SELECT * FROM eth_txs WHERE confirmed_eth_tx_history_id IS NULL \n AND id <= (SELECT COALESCE(MAX(eth_tx_id), 0) FROM eth_txs_history WHERE sent_at_block IS NOT NULL)\n ORDER BY id" + "query": "\n SELECT\n (SELECT l1_batch_number\n FROM prover_jobs\n WHERE status NOT IN ('successful', 'skipped')\n ORDER BY l1_batch_number\n LIMIT 1) as \"successful_limit!\",\n \n (SELECT l1_batch_number\n FROM prover_jobs\n WHERE status <> 'queued'\n ORDER BY l1_batch_number DESC\n LIMIT 1) as \"queued_limit!\",\n\n (SELECT MAX(l1_batch_number) as \"max!\" FROM prover_jobs) as \"max_block!\"\n " }, - "b6f9874059c57e5e59f3021936437e9ff71a68065dfc19c295d806d7a9aafc93": { + "9d28c1be3bda0c4fb37567d4a56730e801f48fbb2abad42ea894ebd8ee40412d": { "describe": { "columns": [], "nullable": [], "parameters": { "Left": [ - "Int4", "Int8", - "Bytea", - "Bytea", - "Bytea", - "Bytea", - "Bytea" + "Int2", + "Text", + "Int2", + "Int4", + "Int4", + "Bool", + "Int4" ] } }, - "query": "INSERT INTO prover_protocol_versions\n (id, timestamp, recursion_scheduler_level_vk_hash, recursion_node_level_vk_hash,\n recursion_leaf_level_vk_hash, recursion_circuits_set_vks_hash, verifier_address, created_at)\n VALUES ($1, $2, $3, $4, $5, $6, $7, now())\n " + "query": "\n INSERT INTO prover_jobs_fri (l1_batch_number, circuit_id, circuit_blob_url, aggregation_round, sequence_number, depth, is_node_final_proof, protocol_version, status, created_at, updated_at)\n VALUES ($1, $2, $3, $4, $5, $6, $7, $8, 'queued', now(), now())\n ON CONFLICT(l1_batch_number, aggregation_round, circuit_id, depth, sequence_number)\n DO UPDATE SET updated_at=now()\n " }, - "b79f02c8663c6b99d0aa46b430de32103afa0333e8293cf8661cfc1c3f9fc12e": { + "9feee3fd267dc4e58185aeae7cab798c03eefa69470e4b98716615cecf6c012a": { "describe": { "columns": [ { @@ -8411,12 +8093,14 @@ false ], "parameters": { - "Left": [] + "Left": [ + "Interval" + ] } }, - "query": "SELECT id, contract_address, source_code, contract_name, zk_compiler_version, compiler_version, optimization_used,\n optimizer_mode, constructor_arguments, is_system\n FROM contract_verification_requests\n WHERE status = 'successful'\n ORDER BY id" + "query": "UPDATE contract_verification_requests\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now()\n WHERE id = (\n SELECT id FROM contract_verification_requests\n WHERE status = 'queued' OR (status = 'in_progress' AND processing_started_at < now() - $1::interval)\n ORDER BY created_at\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING id, contract_address, source_code, contract_name, zk_compiler_version, compiler_version, optimization_used,\n optimizer_mode, constructor_arguments, is_system\n " }, - "b7ab3aeee71e87c7469428ec411b410d81282ff6fed63fe5cda0e81a330d2ac5": { + "a074cd2c23434a8e801c2c0b42e63f1657765aceabd6d8a50ef2d2299bba99ab": { "describe": { "columns": [ { @@ -8425,418 +8109,461 @@ "type_info": "Int8" }, { - "name": "status", + "name": "l1_batch_number", "ordinal": 1, + "type_info": "Int8" + }, + { + "name": "circuit_id", + "ordinal": 2, + "type_info": "Int2" + }, + { + "name": "closed_form_inputs_blob_url", + "ordinal": 3, "type_info": "Text" }, { "name": "attempts", - "ordinal": 2, + "ordinal": 4, "type_info": "Int2" + }, + { + "name": "status", + "ordinal": 5, + "type_info": "Text" + }, + { + "name": "error", + "ordinal": 6, + "type_info": "Text" + }, + { + "name": "created_at", + "ordinal": 7, + "type_info": "Timestamp" + }, + { + "name": "updated_at", + "ordinal": 8, + "type_info": "Timestamp" + }, + { + "name": "processing_started_at", + "ordinal": 9, + "type_info": "Timestamp" + }, + { + "name": "time_taken", + "ordinal": 10, + "type_info": "Time" + }, + { + "name": "is_blob_cleaned", + "ordinal": 11, + "type_info": "Bool" + }, + { + "name": "number_of_basic_circuits", + "ordinal": 12, + "type_info": "Int4" + }, + { + "name": "protocol_version", + "ordinal": 13, + "type_info": "Int4" + }, + { + "name": "picked_by", + "ordinal": 14, + "type_info": "Text" } ], "nullable": [ false, false, - false + false, + true, + false, + false, + true, + false, + false, + true, + true, + true, + true, + true, + true ], "parameters": { "Left": [ - "Interval", - "Int2" + "Int4Array", + "Text" ] } }, - "query": "\n UPDATE leaf_aggregation_witness_jobs_fri\n SET status = 'queued', attempts = attempts + 1, updated_at = now(), processing_started_at = now()\n WHERE (status = 'in_progress' AND processing_started_at <= now() - $1::interval AND attempts < $2)\n OR (status = 'failed' AND attempts < $2)\n RETURNING id, status, attempts\n " + "query": "\n UPDATE leaf_aggregation_witness_jobs_fri\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now(),\n picked_by = $2\n WHERE id = (\n SELECT id\n FROM leaf_aggregation_witness_jobs_fri\n WHERE status = 'queued'\n AND protocol_version = ANY($1)\n ORDER BY l1_batch_number ASC, id ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING leaf_aggregation_witness_jobs_fri.*\n " }, - "b7d3b30bff2ed9aabcdaed89ebfd1f0303b70c6d5483ff9183475bb232a04f21": { + "a0aa877e052e63b1c3df6fc4432eeb44f7f3930f624e66b034baa1c5d0f8bb30": { "describe": { - "columns": [ - { - "name": "l1_batch_number", - "ordinal": 0, - "type_info": "Int8" - }, - { - "name": "status", - "ordinal": 1, - "type_info": "Text" - }, - { - "name": "attempts", - "ordinal": 2, - "type_info": "Int2" - } - ], - "nullable": [ - false, - false, - false - ], - "parameters": { - "Left": [ - "Interval", - "Int2" - ] - } - }, - "query": "\n UPDATE witness_inputs_fri\n SET status = 'queued', attempts = attempts + 1, updated_at = now(), processing_started_at = now()\n WHERE (status = 'in_progress' AND processing_started_at <= now() - $1::interval AND attempts < $2)\n OR (status = 'in_gpu_proof' AND processing_started_at <= now() - $1::interval AND attempts < $2)\n OR (status = 'failed' AND attempts < $2)\n RETURNING l1_batch_number, status, attempts\n " - }, - "b944df7af612ec911170a43be846eb2f6e27163b0d3983672de2b8d5d60af640": { - "describe": { - "columns": [ - { - "name": "l1_batch_number", - "ordinal": 0, - "type_info": "Int8" - } - ], - "nullable": [ - false - ], - "parameters": { - "Left": [ - "Interval" - ] - } - }, - "query": "UPDATE proof_generation_details SET status = 'picked_by_prover', updated_at = now(), prover_taken_at = now() WHERE l1_batch_number = ( SELECT l1_batch_number FROM proof_generation_details WHERE status = 'ready_to_be_proven' OR (status = 'picked_by_prover' AND prover_taken_at < now() - $1::interval) ORDER BY l1_batch_number ASC LIMIT 1 FOR UPDATE SKIP LOCKED ) RETURNING proof_generation_details.l1_batch_number" - }, - "bc4433cdfa499830fe6a6a95759c9fbe343ac25b371c7fa980bfd1b0afc86629": { - "describe": { - "columns": [ - { - "name": "l1_batch_number", - "ordinal": 0, - "type_info": "Int8" - } - ], - "nullable": [ - false - ], - "parameters": { - "Left": [ - "Text", - "Text", - "Text" - ] - } - }, - "query": "UPDATE proof_compression_jobs_fri SET status = $1, attempts = attempts + 1, updated_at = now(), processing_started_at = now(), picked_by = $3 WHERE l1_batch_number = ( SELECT l1_batch_number FROM proof_compression_jobs_fri WHERE status = $2 ORDER BY l1_batch_number ASC LIMIT 1 FOR UPDATE SKIP LOCKED ) RETURNING proof_compression_jobs_fri.l1_batch_number" - }, - "be824de76050461afe29dfd229e524bdf113eab3ca24208782c200531db1c940": { - "describe": { - "columns": [ - { - "name": "id", - "ordinal": 0, - "type_info": "Int8" - } - ], - "nullable": [ - false - ], + "columns": [], + "nullable": [], "parameters": { "Left": [ "Int8", - "Int2", - "Int2", - "Int4" + { + "Custom": { + "kind": { + "Enum": [ + "Queued", + "ManuallySkipped", + "InProgress", + "Successful", + "Failed" + ] + }, + "name": "basic_witness_input_producer_job_status" + } + } ] } }, - "query": "\n SELECT id from prover_jobs_fri\n WHERE l1_batch_number = $1\n AND circuit_id = $2\n AND aggregation_round = $3\n AND depth = $4\n AND status = 'successful'\n ORDER BY sequence_number ASC;\n " + "query": "INSERT INTO basic_witness_input_producer_jobs (l1_batch_number, status, created_at, updated_at) VALUES ($1, $2, now(), now()) ON CONFLICT (l1_batch_number) DO NOTHING" }, - "bef58e581dd0b658350dcdc15ebf7cf350cf088b60c916a15889e31ee7534907": { + "a19b7137403c5cdf1be5f5122ce4d297ed661fa8bdb3bc91f8a81fe9da47469e": { "describe": { "columns": [ { - "name": "bytecode", + "name": "upgrade_tx_hash", "ordinal": 0, "type_info": "Bytea" - }, - { - "name": "bytecode_hash", - "ordinal": 1, - "type_info": "Bytea" } ], "nullable": [ - false, - false + true ], "parameters": { "Left": [ - "ByteaArray" + "Int4" ] } }, - "query": "SELECT bytecode, bytecode_hash FROM factory_deps WHERE bytecode_hash = ANY($1)" + "query": "\n SELECT upgrade_tx_hash FROM protocol_versions\n WHERE id = $1\n " }, - "c178e1574d2a16cb90bcc5d5333a4f8dd2a69e0c12b4e7e108a8dcc6000669a5": { + "a1a6b52403c1db35c8d83d0a512ac453ecd54b34ec516027d540ee1890b40291": { "describe": { - "columns": [ - { - "name": "protocol_version", - "ordinal": 0, - "type_info": "Int4" - } - ], - "nullable": [ - true - ], + "columns": [], + "nullable": [], "parameters": { "Left": [ - "Int8" + "Int4", + "Bytea", + "Bytea", + "Bytea", + "Bytea" ] } }, - "query": "SELECT protocol_version FROM miniblocks WHERE number = $1" + "query": "INSERT INTO prover_fri_protocol_versions (id, recursion_scheduler_level_vk_hash, recursion_node_level_vk_hash, recursion_leaf_level_vk_hash, recursion_circuits_set_vks_hash, created_at) VALUES ($1, $2, $3, $4, $5, now()) ON CONFLICT(id) DO NOTHING" }, - "c1e5f85be88ef0b6ab81daf8dec2011797086a7ec5aeaffe5665ebf9584bf84a": { + "a39f760d2cd879a78112e57d8611d7099802b03b7cc4933cafb4c47e133ad543": { "describe": { "columns": [ { - "name": "l1_batch_number", + "name": "address", "ordinal": 0, - "type_info": "Int8" + "type_info": "Bytea" }, { - "name": "scheduler_partial_input_blob_url", + "name": "topic1", "ordinal": 1, - "type_info": "Text" + "type_info": "Bytea" }, { - "name": "status", + "name": "topic2", "ordinal": 2, - "type_info": "Text" + "type_info": "Bytea" }, { - "name": "processing_started_at", + "name": "topic3", "ordinal": 3, - "type_info": "Timestamp" + "type_info": "Bytea" }, { - "name": "time_taken", + "name": "topic4", "ordinal": 4, - "type_info": "Time" + "type_info": "Bytea" }, { - "name": "error", + "name": "value", "ordinal": 5, - "type_info": "Text" + "type_info": "Bytea" }, { - "name": "created_at", + "name": "block_hash", "ordinal": 6, - "type_info": "Timestamp" + "type_info": "Bytea" }, { - "name": "updated_at", + "name": "l1_batch_number?", "ordinal": 7, - "type_info": "Timestamp" + "type_info": "Int8" }, { - "name": "attempts", + "name": "miniblock_number", "ordinal": 8, - "type_info": "Int2" + "type_info": "Int8" }, { - "name": "protocol_version", + "name": "tx_hash", "ordinal": 9, - "type_info": "Int4" + "type_info": "Bytea" }, { - "name": "picked_by", + "name": "tx_index_in_block", "ordinal": 10, - "type_info": "Text" + "type_info": "Int4" + }, + { + "name": "event_index_in_block", + "ordinal": 11, + "type_info": "Int4" + }, + { + "name": "event_index_in_tx", + "ordinal": 12, + "type_info": "Int4" } ], "nullable": [ false, false, false, - true, - true, - true, false, false, false, - true, - true + null, + null, + false, + false, + false, + false, + false ], "parameters": { "Left": [ - "Int4Array", - "Text" + "Bytea" ] } }, - "query": "\n UPDATE scheduler_witness_jobs_fri\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now(),\n picked_by = $2\n WHERE l1_batch_number = (\n SELECT l1_batch_number\n FROM scheduler_witness_jobs_fri\n WHERE status = 'queued'\n AND protocol_version = ANY($1)\n ORDER BY l1_batch_number ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING scheduler_witness_jobs_fri.*\n " + "query": "\n SELECT\n address, topic1, topic2, topic3, topic4, value,\n Null::bytea as \"block_hash\", Null::bigint as \"l1_batch_number?\",\n miniblock_number, tx_hash, tx_index_in_block,\n event_index_in_block, event_index_in_tx\n FROM events\n WHERE tx_hash = $1\n ORDER BY miniblock_number ASC, event_index_in_block ASC\n " }, - "c2cf96a9eb6893c5ba7d9e5418d9f24084ccd87980cb6ee05de1b3bde5c654bd": { + "a3d526a5a341618e9784fc81626143a3174709483a527879254ff8e28f210ac3": { "describe": { "columns": [], "nullable": [], "parameters": { "Left": [ - "ByteaArray", - "ByteaArray" + "Int4", + "Int8", + "Int8" ] } }, - "query": "\n INSERT INTO call_traces (tx_hash, call_trace)\n SELECT u.tx_hash, u.call_trace\n FROM UNNEST($1::bytea[], $2::bytea[])\n AS u(tx_hash, call_trace)\n " + "query": "UPDATE l1_batches SET eth_execute_tx_id = $1, updated_at = now() WHERE number BETWEEN $2 AND $3" }, - "c3724d96ed4e1c31dd575b911b254ed5a4af4d5b6ad1243c812b37ebde0f6090": { + "a42626c162a0600b9c7d22dd0d7997fa70cc95296ecc185ff9ae2e03593b07bf": { "describe": { - "columns": [ - { - "name": "storage_refunds", - "ordinal": 0, - "type_info": "Int8Array" - } - ], - "nullable": [ - true - ], + "columns": [], + "nullable": [], "parameters": { "Left": [ "Int8" ] } }, - "query": "SELECT storage_refunds FROM l1_batches WHERE number = $1" + "query": "\n UPDATE scheduler_witness_jobs_fri\n SET status='queued'\n WHERE l1_batch_number = $1\n AND status != 'successful'\n AND status != 'in_progress'\n " }, - "c49a6925e9462cc85a6e1cc850f2e147e0a5d990efed56f27792698e6cf9ff0c": { + "a4a14eb42b9acca3f93c67e5760ba700c333b5e9a38c132a3060a94c988e7f13": { "describe": { "columns": [ { - "name": "l1_batch_number", + "name": "hash", "ordinal": 0, - "type_info": "Int8" + "type_info": "Bytea" }, { - "name": "status", + "name": "received_at", "ordinal": 1, - "type_info": "Text" - }, - { - "name": "attempts", - "ordinal": 2, - "type_info": "Int2" + "type_info": "Timestamp" } ], "nullable": [ - false, false, false ], "parameters": { "Left": [ - "Interval", - "Int2" + "Timestamp", + "Int8" ] } }, - "query": "\n UPDATE scheduler_witness_jobs_fri\n SET status = 'queued', attempts = attempts + 1, updated_at = now(), processing_started_at = now()\n WHERE (status = 'in_progress' AND processing_started_at <= now() - $1::interval AND attempts < $2)\n OR (status = 'failed' AND attempts < $2)\n RETURNING l1_batch_number, status, attempts\n " + "query": "SELECT transactions.hash, transactions.received_at FROM transactions LEFT JOIN miniblocks ON miniblocks.number = miniblock_number WHERE received_at > $1 ORDER BY received_at ASC LIMIT $2" }, - "c59d052f89ddfc3d2c07be84d6d9837adfbe2cefb10d01e09d31aa5e3364e281": { + "a4f240188c1447f5b6dcef33dfcc9d00b105f62a6b4c3949a825bea979954160": { "describe": { - "columns": [ - { - "name": "number", - "ordinal": 0, - "type_info": "Int8" - }, - { - "name": "l1_tx_count", - "ordinal": 1, - "type_info": "Int4" - }, - { - "name": "l2_tx_count", - "ordinal": 2, + "columns": [], + "nullable": [], + "parameters": { + "Left": [] + } + }, + "query": "DELETE FROM basic_witness_input_producer_jobs" + }, + "a5115658f3a53462a9570fd6676f1931604d1c17a9a2b5f1475519006aaf03ba": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Int8", + "Text" + ] + } + }, + "query": "INSERT INTO proof_generation_details (l1_batch_number, status, proof_gen_data_blob_url, created_at, updated_at) VALUES ($1, 'ready_to_be_proven', $2, now(), now()) ON CONFLICT (l1_batch_number) DO NOTHING" + }, + "a7abde5a53248d6e63aa998acac521194231bbe08140c9c4efa548c4f3ae17fa": { + "describe": { + "columns": [ + { + "name": "max?", + "ordinal": 0, "type_info": "Int4" - }, + } + ], + "nullable": [ + null + ], + "parameters": { + "Left": [ + "Int8" + ] + } + }, + "query": "SELECT MAX(operation_number) as \"max?\" FROM storage_logs WHERE miniblock_number = $1" + }, + "a9b1a31def214f8b1441dc3ab720bd270f3991c9f1c7528256276e176d532163": { + "describe": { + "columns": [ { - "name": "timestamp", - "ordinal": 3, + "name": "l1_batch_number", + "ordinal": 0, "type_info": "Int8" - }, + } + ], + "nullable": [ + false + ], + "parameters": { + "Left": [ + "Bytea" + ] + } + }, + "query": "SELECT l1_batch_number FROM initial_writes WHERE hashed_key = $1" + }, + "a9d96d6774af2637173d471f02995652cd4c131c05fdcb3d0e1644bcd1aa1809": { + "describe": { + "columns": [ { - "name": "is_finished", - "ordinal": 4, - "type_info": "Bool" + "name": "proof", + "ordinal": 0, + "type_info": "Bytea" }, { - "name": "fee_account_address", - "ordinal": 5, + "name": "aggregation_result_coords", + "ordinal": 1, "type_info": "Bytea" - }, + } + ], + "nullable": [ + true, + true + ], + "parameters": { + "Left": [ + "Int8", + "Int8" + ] + } + }, + "query": "SELECT prover_jobs.result as proof, scheduler_witness_jobs.aggregation_result_coords\n FROM prover_jobs\n INNER JOIN scheduler_witness_jobs\n ON prover_jobs.l1_batch_number = scheduler_witness_jobs.l1_batch_number\n WHERE prover_jobs.l1_batch_number >= $1 AND prover_jobs.l1_batch_number <= $2\n AND prover_jobs.aggregation_round = 3\n AND prover_jobs.status = 'successful'\n " + }, + "aa1534f03679fd2d1d9e7c1da1f94cc0e2ec5fc3a0e1ac7137147533eacf0aaf": { + "describe": { + "columns": [ { - "name": "l2_to_l1_logs", - "ordinal": 6, - "type_info": "ByteaArray" + "name": "id", + "ordinal": 0, + "type_info": "Int4" }, { - "name": "l2_to_l1_messages", - "ordinal": 7, - "type_info": "ByteaArray" + "name": "nonce", + "ordinal": 1, + "type_info": "Int8" }, { - "name": "bloom", - "ordinal": 8, + "name": "raw_tx", + "ordinal": 2, "type_info": "Bytea" }, { - "name": "priority_ops_onchain_data", - "ordinal": 9, - "type_info": "ByteaArray" - }, - { - "name": "used_contract_hashes", - "ordinal": 10, - "type_info": "Jsonb" + "name": "contract_address", + "ordinal": 3, + "type_info": "Text" }, { - "name": "base_fee_per_gas", - "ordinal": 11, - "type_info": "Numeric" + "name": "tx_type", + "ordinal": 4, + "type_info": "Text" }, { - "name": "l1_gas_price", - "ordinal": 12, + "name": "gas_used", + "ordinal": 5, "type_info": "Int8" }, { - "name": "l2_fair_gas_price", - "ordinal": 13, - "type_info": "Int8" + "name": "created_at", + "ordinal": 6, + "type_info": "Timestamp" }, { - "name": "bootloader_code_hash", - "ordinal": 14, - "type_info": "Bytea" + "name": "updated_at", + "ordinal": 7, + "type_info": "Timestamp" }, { - "name": "default_aa_code_hash", - "ordinal": 15, - "type_info": "Bytea" + "name": "has_failed", + "ordinal": 8, + "type_info": "Bool" }, { - "name": "protocol_version", - "ordinal": 16, + "name": "sent_at_block", + "ordinal": 9, "type_info": "Int4" }, { - "name": "compressed_state_diffs", - "ordinal": 17, - "type_info": "Bytea" + "name": "confirmed_eth_tx_history_id", + "ordinal": 10, + "type_info": "Int4" }, { - "name": "system_logs", - "ordinal": 18, - "type_info": "ByteaArray" + "name": "predicted_gas_cost", + "ordinal": 11, + "type_info": "Int8" } ], "nullable": [ @@ -8845,19 +8572,12 @@ false, false, false, - false, - false, - false, - false, - false, - false, + true, false, false, false, true, true, - true, - true, false ], "parameters": { @@ -8866,27 +8586,74 @@ ] } }, - "query": "SELECT number, l1_tx_count, l2_tx_count, timestamp, is_finished, fee_account_address, l2_to_l1_logs, l2_to_l1_messages, bloom, priority_ops_onchain_data, used_contract_hashes, base_fee_per_gas, l1_gas_price, l2_fair_gas_price, bootloader_code_hash, default_aa_code_hash, protocol_version, compressed_state_diffs, system_logs FROM l1_batches WHERE number = $1" + "query": "SELECT * FROM eth_txs \n WHERE id > (SELECT COALESCE(MAX(eth_tx_id), 0) FROM eth_txs_history)\n ORDER BY id\n LIMIT $1\n " }, - "c604ee1dd86ac154d67ddb339da5f65ca849887d6a1068623e874f9df00cfdd1": { + "aa279ce3351b30788711be6c65cb99cb14304ac38f8fed6d332237ffafc7c86b": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Text", + "Time", + "Text", + "Int8" + ] + } + }, + "query": "UPDATE proof_compression_jobs_fri SET status = $1, updated_at = now(), time_taken = $2, l1_proof_blob_url = $3WHERE l1_batch_number = $4" + }, + "aa7ae476aed5979227887891e9be995924588aa10ccba7424d6ce58f811eaa02": { + "describe": { + "columns": [ + { + "name": "number!", + "ordinal": 0, + "type_info": "Int8" + } + ], + "nullable": [ + null + ], + "parameters": { + "Left": [] + } + }, + "query": "SELECT COALESCE(MAX(number), 0) AS \"number!\" FROM l1_batches WHERE eth_prove_tx_id IS NOT NULL" + }, + "aacaeff95b9a2988167dde78200d7139ba99edfa30dbcd8a7a57f72efc676477": { + "describe": { + "columns": [ + { + "name": "number", + "ordinal": 0, + "type_info": "Int8" + } + ], + "nullable": [ + false + ], + "parameters": { + "Left": [] + } + }, + "query": "SELECT number FROM l1_batches LEFT JOIN eth_txs_history AS commit_tx ON (l1_batches.eth_commit_tx_id = commit_tx.eth_tx_id) WHERE commit_tx.confirmed_at IS NOT NULL ORDER BY number DESC LIMIT 1" + }, + "ac35fb205c83d82d78983f4c9b47f56d3c91fbb2c95046555c7d60a9a2ebb446": { "describe": { "columns": [], "nullable": [], "parameters": { "Left": [ - "Int8", "ByteaArray", - "Int4Array", - "VarcharArray", - "JsonbArray", "Int8Array", - "NumericArray" + "Int8" ] } }, - "query": "\n UPDATE transactions\n SET\n miniblock_number = $1,\n index_in_block = data_table.index_in_block,\n error = NULLIF(data_table.error, ''),\n in_mempool=FALSE,\n execution_info = execution_info || data_table.new_execution_info,\n refunded_gas = data_table.refunded_gas,\n effective_gas_price = data_table.effective_gas_price,\n updated_at = now()\n FROM\n (\n SELECT\n UNNEST($2::bytea[]) AS hash,\n UNNEST($3::integer[]) AS index_in_block,\n UNNEST($4::varchar[]) AS error,\n UNNEST($5::jsonb[]) AS new_execution_info,\n UNNEST($6::bigint[]) as refunded_gas,\n UNNEST($7::numeric[]) as effective_gas_price\n ) AS data_table\n WHERE transactions.hash = data_table.hash\n " + "query": "INSERT INTO initial_writes (hashed_key, index, l1_batch_number, created_at, updated_at) SELECT u.hashed_key, u.index, $3, now(), now() FROM UNNEST($1::bytea[], $2::bigint[]) AS u(hashed_key, index)" }, - "c6109267f85f38edcd53f361cf2654f43fa45928e39324cfab8389453b4e7031": { + "ad11ec3e628ae6c64ac160d8dd689b2f64033f620e17a31469788b3ce4968ad3": { "describe": { "columns": [ { @@ -8905,318 +8672,326 @@ "type_info": "Text" }, { - "name": "base_fee_per_gas", + "name": "created_at", "ordinal": 3, - "type_info": "Int8" + "type_info": "Timestamp" }, { - "name": "priority_fee_per_gas", + "name": "updated_at", "ordinal": 4, - "type_info": "Int8" + "type_info": "Timestamp" }, { - "name": "signed_raw_tx", + "name": "base_fee_per_gas", "ordinal": 5, - "type_info": "Bytea" + "type_info": "Int8" }, { - "name": "nonce", + "name": "priority_fee_per_gas", "ordinal": 6, "type_info": "Int8" - } - ], - "nullable": [ - false, - false, - false, - false, - false, - true, - false - ], - "parameters": { - "Left": [] - } - }, - "query": "\n SELECT \n eth_txs_history.id,\n eth_txs_history.eth_tx_id,\n eth_txs_history.tx_hash,\n eth_txs_history.base_fee_per_gas,\n eth_txs_history.priority_fee_per_gas,\n eth_txs_history.signed_raw_tx,\n eth_txs.nonce\n FROM eth_txs_history \n JOIN eth_txs ON eth_txs.id = eth_txs_history.eth_tx_id \n WHERE eth_txs_history.sent_at_block IS NULL AND eth_txs.confirmed_eth_tx_history_id IS NULL\n ORDER BY eth_txs_history.id DESC" - }, - "c66b0e0867a1a634f984645ca576a6502b51b67aa0be2dae98e0e2adeb450963": { - "describe": { - "columns": [ + }, { - "name": "id", - "ordinal": 0, - "type_info": "Int8" + "name": "confirmed_at", + "ordinal": 7, + "type_info": "Timestamp" }, { - "name": "status", - "ordinal": 1, - "type_info": "Text" + "name": "signed_raw_tx", + "ordinal": 8, + "type_info": "Bytea" }, { - "name": "attempts", - "ordinal": 2, + "name": "sent_at_block", + "ordinal": 9, "type_info": "Int4" + }, + { + "name": "sent_at", + "ordinal": 10, + "type_info": "Timestamp" } ], "nullable": [ false, false, - false + false, + false, + false, + false, + false, + true, + true, + true, + true ], "parameters": { "Left": [ - "Interval", "Int4" ] } }, - "query": "\n UPDATE prover_jobs\n SET status = 'queued', attempts = attempts + 1, updated_at = now(), processing_started_at = now()\n WHERE (status = 'in_progress' AND processing_started_at <= now() - $1::interval AND attempts < $2)\n OR (status = 'in_gpu_proof' AND processing_started_at <= now() - $1::interval AND attempts < $2)\n OR (status = 'failed' AND attempts < $2)\n RETURNING id, status, attempts\n " - }, - "c6aadc4ec78e30f5775f7a9f866ad02984b78de3e3d1f34c144a4057ff44ea6a": { - "describe": { - "columns": [ - { - "name": "count", - "ordinal": 0, - "type_info": "Int8" - } - ], - "nullable": [ - null - ], - "parameters": { - "Left": [] - } - }, - "query": "SELECT COUNT(*) FROM eth_txs WHERE has_failed = TRUE" + "query": "SELECT * FROM eth_txs_history WHERE eth_tx_id = $1 ORDER BY created_at DESC LIMIT 1" }, - "c6cdc9ef18fe20ef530b653c0c24c674dd74aef3701bfb5c6db23d649115f1d4": { + "ad4f74aa6f131df0243f4fa500ade1b98aa335bd71ed417b02361e2c697e60f8": { "describe": { "columns": [], "nullable": [], "parameters": { "Left": [ - "Time", + "Bytea", "Int8" ] } }, - "query": "\n UPDATE witness_inputs_fri\n SET status = 'successful', updated_at = now(), time_taken = $1\n WHERE l1_batch_number = $2\n " + "query": "\n UPDATE scheduler_witness_jobs\n SET aggregation_result_coords = $1,\n updated_at = now()\n WHERE l1_batch_number = $2\n " }, - "c766f2ee9e3054ba337873ba5ebb26d4f1a43691664372152e5eb782391f9f68": { + "ae072f51b65d0b5212264be9a34027922e5aedef7e4741517ad8104bf5aa79e9": { "describe": { "columns": [], "nullable": [], "parameters": { "Left": [ - "Int8Array" + "Int8" ] } }, - "query": "\n UPDATE node_aggregation_witness_jobs\n SET is_blob_cleaned=TRUE\n WHERE l1_batch_number = ANY($1);\n " + "query": "DELETE FROM factory_deps WHERE miniblock_number > $1" }, - "c8125b30eb64eebfa4500dc623972bf8771a83b218bd18a51e633d4cf4bf8eb3": { + "aea4e8d1b018836973d252df943a2c1988dd5f3ffc629064b87d25af8cdb8638": { "describe": { "columns": [ { - "name": "bytecode", + "name": "l1_batch_number", "ordinal": 0, - "type_info": "Bytea" + "type_info": "Int8" + }, + { + "name": "l1_batch_tx_index", + "ordinal": 1, + "type_info": "Int4" } ], "nullable": [ - false + true, + true ], "parameters": { "Left": [ - "Bytea", - "Int8", "Bytea" ] } }, - "query": "\n SELECT bytecode FROM (\n SELECT * FROM storage_logs\n WHERE\n storage_logs.hashed_key = $1 AND\n storage_logs.miniblock_number <= $2\n ORDER BY\n storage_logs.miniblock_number DESC, storage_logs.operation_number DESC\n LIMIT 1\n ) t\n JOIN factory_deps ON value = factory_deps.bytecode_hash\n WHERE value != $3\n " + "query": "SELECT l1_batch_number, l1_batch_tx_index FROM transactions WHERE hash = $1" }, - "c849561f88c775f2cce4d59387916793ba1623a8a714b415375477e090d86bd3": { + "af22ad34bde12b8d25eb85da9939d12b7bed6407d732b868eeaf2916568c8646": { "describe": { "columns": [], "nullable": [], "parameters": { "Left": [ - "Int8", - "Int4", - "Int4" + "Time", + "Int8" ] } }, - "query": "UPDATE eth_txs\n SET gas_used = $1, confirmed_eth_tx_history_id = $2\n WHERE id = $3" + "query": "\n UPDATE scheduler_witness_jobs_fri\n SET status = 'successful', updated_at = now(), time_taken = $1\n WHERE l1_batch_number = $2\n " }, - "c881cd7018a9f714cdc3388936e363d49bd6ae52467d382d2f2250ab4f11acf9": { + "af75db6b7e42b73ce62b28a7281e1bfa181ee0c80a85d7d8078831db5dcdb699": { "describe": { "columns": [ { - "name": "address", + "name": "l1_block_number", "ordinal": 0, - "type_info": "Bytea" - }, - { - "name": "key", - "ordinal": 1, - "type_info": "Bytea" + "type_info": "Int4" } ], "nullable": [ - false, - false + true ], "parameters": { - "Left": [ - "Int8" - ] + "Left": [] } }, - "query": "SELECT address, key FROM protective_reads WHERE l1_batch_number = $1" + "query": "SELECT l1_block_number FROM transactions\n WHERE priority_op_id IS NOT NULL\n ORDER BY priority_op_id DESC\n LIMIT 1" }, - "c891770305cb3aba4021738e60567d977eac54435c871b5178de7c3c96d2f721": { + "b1478907214ad20dddd4f3846fba4b0ddf1fff63ddb3b95c8999635e77c8b863": { "describe": { "columns": [ { - "name": "usd_price", + "name": "id", "ordinal": 0, - "type_info": "Numeric" + "type_info": "Int4" }, { - "name": "usd_price_updated_at", + "name": "eth_tx_id", "ordinal": 1, + "type_info": "Int4" + }, + { + "name": "tx_hash", + "ordinal": 2, + "type_info": "Text" + }, + { + "name": "created_at", + "ordinal": 3, + "type_info": "Timestamp" + }, + { + "name": "updated_at", + "ordinal": 4, + "type_info": "Timestamp" + }, + { + "name": "base_fee_per_gas", + "ordinal": 5, + "type_info": "Int8" + }, + { + "name": "priority_fee_per_gas", + "ordinal": 6, + "type_info": "Int8" + }, + { + "name": "confirmed_at", + "ordinal": 7, + "type_info": "Timestamp" + }, + { + "name": "signed_raw_tx", + "ordinal": 8, + "type_info": "Bytea" + }, + { + "name": "sent_at_block", + "ordinal": 9, + "type_info": "Int4" + }, + { + "name": "sent_at", + "ordinal": 10, "type_info": "Timestamp" } ], "nullable": [ + false, + false, + false, + false, + false, + false, + false, + true, + true, true, true ], "parameters": { "Left": [ - "Bytea" + "Int4" ] } }, - "query": "SELECT usd_price, usd_price_updated_at FROM tokens WHERE l2_address = $1" + "query": "SELECT * FROM eth_txs_history WHERE eth_tx_id = $1 ORDER BY created_at DESC" }, - "c92a84c15a8641f73417a03de99a0fb7e07fd0da7b376e65b3ed61209e55a5fa": { + "b14997f84d11d7eea89168383195c5579eed1c57bb2b416a749e2863ae6594a5": { "describe": { "columns": [], "nullable": [], "parameters": { "Left": [ - "Int8Array" + "Text", + "Int8" ] } }, - "query": "UPDATE witness_inputs SET is_blob_cleaned = TRUE WHERE l1_batch_number = ANY($1)" + "query": "\n UPDATE leaf_aggregation_witness_jobs_fri\n SET status ='failed', error= $1, updated_at = now()\n WHERE id = $2\n " }, - "ca8fa3521dab5ee985a837572e8625bd5b26bf79f58950698218b28110c29d1f": { + "b14d9a82e6b0a4174dde61642d3abc001cd8cb80d988eb81a685255e3ce920de": { "describe": { "columns": [], "nullable": [], "parameters": { "Left": [ - "Text", - "Int4", - "Int4", - "Int2", - "Text", - "Text", - "Int2" + "Int8Array", + "ByteaArray" ] } }, - "query": "\n INSERT INTO gpu_prover_queue (instance_host, instance_port, queue_capacity, queue_free_slots, instance_status, specialized_prover_group_id, region, zone, num_gpu, created_at, updated_at)\n VALUES (cast($1::text as inet), $2, $3, $3, 'available', $4, $5, $6, $7, now(), now())\n ON CONFLICT(instance_host, instance_port, region, zone)\n DO UPDATE SET instance_status='available', queue_capacity=$3, queue_free_slots=$3, specialized_prover_group_id=$4, region=$5, zone=$6, num_gpu=$7, updated_at=now()" + "query": "UPDATE miniblocks SET hash = u.hash FROM UNNEST($1::bigint[], $2::bytea[]) AS u(number, hash) WHERE miniblocks.number = u.number\n " }, - "cc20350af9e837ae6b6160be65f88e6b675f62e207252f91f2ce7dcaaddb12b1": { + "b479b7d3334f8d4566c294a44e2adb282fbc66a87be5c248c65211c2a8a07db0": { "describe": { - "columns": [], - "nullable": [], + "columns": [ + { + "name": "number", + "ordinal": 0, + "type_info": "Int8" + }, + { + "name": "hash", + "ordinal": 1, + "type_info": "Bytea" + } + ], + "nullable": [ + false, + false + ], "parameters": { "Left": [ - "Int4", "Int8", - "Bytea", - "Bytea", - "Bytea", - "Bytea", - "Bytea", - "Bytea", - "Bytea", - "Bytea" + "Int8" ] } }, - "query": "INSERT INTO protocol_versions (id, timestamp, recursion_scheduler_level_vk_hash, recursion_node_level_vk_hash, recursion_leaf_level_vk_hash, recursion_circuits_set_vks_hash, bootloader_code_hash, default_account_code_hash, verifier_address, upgrade_tx_hash, created_at) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, now())" + "query": "SELECT number, hash FROM miniblocks WHERE number > $1 ORDER BY number ASC LIMIT $2" }, - "ce3666b149f7fc62a68139a8efb83ed149c7deace17b8968817941763e45a147": { + "b4c576db7c762103dc6700ded458e996d2e9ef670d7b58b181dbfab02fa426ce": { "describe": { "columns": [], "nullable": [], "parameters": { "Left": [ "Bytea", + "Bytea", + "Numeric", + "Numeric", + "Numeric", + "Jsonb", "Int8", - "Bytea" - ] - } - }, - "query": "\n DELETE FROM tokens \n WHERE l2_address IN\n (\n SELECT substring(key, 12, 20) FROM storage_logs \n WHERE storage_logs.address = $1 AND miniblock_number > $2 AND NOT EXISTS (\n SELECT 1 FROM storage_logs as s\n WHERE\n s.hashed_key = storage_logs.hashed_key AND\n (s.miniblock_number, s.operation_number) >= (storage_logs.miniblock_number, storage_logs.operation_number) AND\n s.value = $3\n )\n )\n " - }, - "cea77fbe02853a7a9b1f7b5ddf2957cb23212ae5ef0f889834d796c35b583542": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Int8" - ] - } - }, - "query": "DELETE FROM miniblocks WHERE number > $1" - }, - "cf9a49dd3ef67b3515e411fd0daadd667af9a4451390b3ef47fe9f902ee9f4e2": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Int8", - "Text", - "Jsonb", - "Text" + "Numeric", + "Numeric", + "Bytea", + "Int4", + "Numeric", + "Bytea", + "Bytea", + "Int4", + "Numeric", + "Bytea", + "Timestamp" ] } }, - "query": "\n UPDATE contract_verification_requests\n SET status = 'failed', updated_at = now(), error = $2, compilation_errors = $3, panic_message = $4\n WHERE id = $1\n " + "query": "\n INSERT INTO transactions\n (\n hash,\n is_priority,\n initiator_address,\n\n gas_limit,\n max_fee_per_gas,\n gas_per_pubdata_limit,\n\n data,\n priority_op_id,\n full_fee,\n layer_2_tip_fee,\n contract_address,\n l1_block_number,\n value,\n\n paymaster,\n paymaster_input,\n tx_format,\n\n l1_tx_mint,\n l1_tx_refund_recipient,\n\n received_at,\n created_at,\n updated_at\n )\n VALUES\n (\n $1, TRUE, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12,\n $13, $14, $15, $16, $17, $18, now(), now()\n )\n ON CONFLICT (hash) DO NOTHING\n " }, - "cfd2ce8eb6997b7609090b4400e1bc42db577fdd3758248be69d3b5d9d132bf1": { + "b4da918ee3b36b56d95c8834edebe65eb48ebb8270fa1e6ccf73ad354fd71134": { "describe": { "columns": [ { - "name": "count!", + "name": "l1_address", "ordinal": 0, - "type_info": "Int8" + "type_info": "Bytea" }, { - "name": "circuit_type!", + "name": "l2_address", "ordinal": 1, - "type_info": "Text" - }, - { - "name": "status!", - "ordinal": 2, - "type_info": "Text" + "type_info": "Bytea" } ], "nullable": [ - null, false, false ], @@ -9224,44 +8999,111 @@ "Left": [] } }, - "query": "\n SELECT COUNT(*) as \"count!\", circuit_type as \"circuit_type!\", status as \"status!\"\n FROM prover_jobs\n WHERE status <> 'skipped' and status <> 'successful' \n GROUP BY circuit_type, status\n " + "query": "SELECT l1_address, l2_address FROM tokens WHERE well_known = true" }, - "d0ff67e7c59684a0e4409726544cf850dbdbb36d038ebbc6a1c5bf0e76b0358c": { + "b6c8e0827b2389a14433c031332962495311562ae9652ae7e9409a4bf48dc55b": { "describe": { "columns": [ { - "name": "count!", + "name": "id", "ordinal": 0, + "type_info": "Int4" + }, + { + "name": "nonce", + "ordinal": 1, + "type_info": "Int8" + }, + { + "name": "raw_tx", + "ordinal": 2, + "type_info": "Bytea" + }, + { + "name": "contract_address", + "ordinal": 3, + "type_info": "Text" + }, + { + "name": "tx_type", + "ordinal": 4, + "type_info": "Text" + }, + { + "name": "gas_used", + "ordinal": 5, + "type_info": "Int8" + }, + { + "name": "created_at", + "ordinal": 6, + "type_info": "Timestamp" + }, + { + "name": "updated_at", + "ordinal": 7, + "type_info": "Timestamp" + }, + { + "name": "has_failed", + "ordinal": 8, + "type_info": "Bool" + }, + { + "name": "sent_at_block", + "ordinal": 9, + "type_info": "Int4" + }, + { + "name": "confirmed_eth_tx_history_id", + "ordinal": 10, + "type_info": "Int4" + }, + { + "name": "predicted_gas_cost", + "ordinal": 11, "type_info": "Int8" } ], "nullable": [ - null + false, + false, + false, + false, + false, + true, + false, + false, + false, + true, + true, + false ], "parameters": { "Left": [] } }, - "query": "SELECT COUNT(*) as \"count!\" FROM l1_batches" + "query": "SELECT * FROM eth_txs WHERE confirmed_eth_tx_history_id IS NULL \n AND id <= (SELECT COALESCE(MAX(eth_tx_id), 0) FROM eth_txs_history WHERE sent_at_block IS NOT NULL)\n ORDER BY id" }, - "d11ff84327058721c3c36bc3371c3139f41e2a2255f64bbc5108c1876848d8bb": { + "b6f9874059c57e5e59f3021936437e9ff71a68065dfc19c295d806d7a9aafc93": { "describe": { "columns": [], "nullable": [], "parameters": { "Left": [ - "Text", - "Text", - "Int4", "Int4", - "Text", - "Text" + "Int8", + "Bytea", + "Bytea", + "Bytea", + "Bytea", + "Bytea" ] } }, - "query": "\n UPDATE gpu_prover_queue\n SET instance_status = $1, updated_at = now(), queue_free_slots = $4\n WHERE instance_host = $2::text::inet\n AND instance_port = $3\n AND region = $5\n AND zone = $6\n " + "query": "INSERT INTO prover_protocol_versions\n (id, timestamp, recursion_scheduler_level_vk_hash, recursion_node_level_vk_hash,\n recursion_leaf_level_vk_hash, recursion_circuits_set_vks_hash, verifier_address, created_at)\n VALUES ($1, $2, $3, $4, $5, $6, $7, now())\n " }, - "d12724ae2bda6214b68e19dc290281907383926abf5ad471eef89529908b2673": { + "b79f02c8663c6b99d0aa46b430de32103afa0333e8293cf8661cfc1c3f9fc12e": { "describe": { "columns": [ { @@ -9270,34 +9112,49 @@ "type_info": "Int8" }, { - "name": "l1_batch_number", + "name": "contract_address", "ordinal": 1, - "type_info": "Int8" + "type_info": "Bytea" }, { - "name": "circuit_id", + "name": "source_code", "ordinal": 2, - "type_info": "Int2" + "type_info": "Text" }, { - "name": "aggregation_round", + "name": "contract_name", "ordinal": 3, - "type_info": "Int2" + "type_info": "Text" }, { - "name": "sequence_number", + "name": "zk_compiler_version", "ordinal": 4, - "type_info": "Int4" + "type_info": "Text" }, { - "name": "depth", + "name": "compiler_version", "ordinal": 5, - "type_info": "Int4" + "type_info": "Text" }, { - "name": "is_node_final_proof", + "name": "optimization_used", "ordinal": 6, "type_info": "Bool" + }, + { + "name": "optimizer_mode", + "ordinal": 7, + "type_info": "Text" + }, + { + "name": "constructor_arguments", + "ordinal": 8, + "type_info": "Bytea" + }, + { + "name": "is_system", + "ordinal": 9, + "type_info": "Bool" } ], "nullable": [ @@ -9307,34 +9164,34 @@ false, false, false, + false, + true, + false, false ], "parameters": { - "Left": [ - "Int4Array", - "Text" - ] + "Left": [] } }, - "query": "\n UPDATE prover_jobs_fri\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now(),\n picked_by = $2\n WHERE id = (\n SELECT id\n FROM prover_jobs_fri\n WHERE status = 'queued'\n AND protocol_version = ANY($1)\n ORDER BY aggregation_round DESC, l1_batch_number ASC, id ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING prover_jobs_fri.id, prover_jobs_fri.l1_batch_number, prover_jobs_fri.circuit_id,\n prover_jobs_fri.aggregation_round, prover_jobs_fri.sequence_number, prover_jobs_fri.depth,\n prover_jobs_fri.is_node_final_proof\n " + "query": "SELECT id, contract_address, source_code, contract_name, zk_compiler_version, compiler_version, optimization_used,\n optimizer_mode, constructor_arguments, is_system\n FROM contract_verification_requests\n WHERE status = 'successful'\n ORDER BY id" }, - "d1c82bd0b3c010569937ad7600760fa0c3aca7c9585bbf9598a5c0515b431b26": { + "b7ab3aeee71e87c7469428ec411b410d81282ff6fed63fe5cda0e81a330d2ac5": { "describe": { "columns": [ { - "name": "hashed_key", + "name": "id", "ordinal": 0, - "type_info": "Bytea" + "type_info": "Int8" }, { - "name": "l1_batch_number", + "name": "status", "ordinal": 1, - "type_info": "Int8" + "type_info": "Text" }, { - "name": "index", + "name": "attempts", "ordinal": 2, - "type_info": "Int8" + "type_info": "Int2" } ], "nullable": [ @@ -9344,34 +9201,53 @@ ], "parameters": { "Left": [ - "ByteaArray" + "Interval", + "Int2" ] } }, - "query": "SELECT hashed_key, l1_batch_number, index FROM initial_writes WHERE hashed_key = ANY($1::bytea[])" + "query": "\n UPDATE leaf_aggregation_witness_jobs_fri\n SET status = 'queued', attempts = attempts + 1, updated_at = now(), processing_started_at = now()\n WHERE (status = 'in_progress' AND processing_started_at <= now() - $1::interval AND attempts < $2)\n OR (status = 'failed' AND attempts < $2)\n RETURNING id, status, attempts\n " }, - "d6709f3ce8f08f988e10a0e0fb5c06db9488834a85066babaf3d56cf212b4ea0": { + "b7d3b30bff2ed9aabcdaed89ebfd1f0303b70c6d5483ff9183475bb232a04f21": { "describe": { - "columns": [], - "nullable": [], + "columns": [ + { + "name": "l1_batch_number", + "ordinal": 0, + "type_info": "Int8" + }, + { + "name": "status", + "ordinal": 1, + "type_info": "Text" + }, + { + "name": "attempts", + "ordinal": 2, + "type_info": "Int2" + } + ], + "nullable": [ + false, + false, + false + ], "parameters": { "Left": [ - "Bytea", - "Varchar", - "Varchar", - "Int4" + "Interval", + "Int2" ] } }, - "query": "UPDATE tokens SET token_list_name = $2, token_list_symbol = $3,\n token_list_decimals = $4, well_known = true, updated_at = now()\n WHERE l1_address = $1\n " + "query": "\n UPDATE witness_inputs_fri\n SET status = 'queued', attempts = attempts + 1, updated_at = now(), processing_started_at = now()\n WHERE (status = 'in_progress' AND processing_started_at <= now() - $1::interval AND attempts < $2)\n OR (status = 'in_gpu_proof' AND processing_started_at <= now() - $1::interval AND attempts < $2)\n OR (status = 'failed' AND attempts < $2)\n RETURNING l1_batch_number, status, attempts\n " }, - "d7060880fe56fd99af7b7ed3f4c7fb9d0858cee30f44c5197821aae83c6c9666": { + "b944df7af612ec911170a43be846eb2f6e27163b0d3983672de2b8d5d60af640": { "describe": { "columns": [ { - "name": "id", + "name": "l1_batch_number", "ordinal": 0, - "type_info": "Int4" + "type_info": "Int8" } ], "nullable": [ @@ -9379,103 +9255,39 @@ ], "parameters": { "Left": [ - "Bytea", - "Bytea", - "Bytea", - "Bytea" - ] - } - }, - "query": "\n SELECT id\n FROM prover_protocol_versions\n WHERE recursion_circuits_set_vks_hash = $1\n AND recursion_leaf_level_vk_hash = $2\n AND recursion_node_level_vk_hash = $3\n AND recursion_scheduler_level_vk_hash = $4\n " - }, - "d8515595d34dca53e50bbd4ed396f6208e33f596195a5ed02fba9e8364ceb33c": { - "describe": { - "columns": [ - { - "name": "bytecode", - "ordinal": 0, - "type_info": "Bytea" - } - ], - "nullable": [ - false - ], - "parameters": { - "Left": [ - "Bytea" - ] - } - }, - "query": "SELECT bytecode FROM factory_deps WHERE bytecode_hash = $1" - }, - "d8e0bb1a349523077356be101808340eab078979390af7d26c71489b5f303d1b": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Int8" + "Interval" ] } }, - "query": "UPDATE l1_batches SET skip_proof = TRUE WHERE number = $1" - }, - "dc16d0fac093a52480b66dfcb5976fb01e6629e8c982c265f2af1d5000090572": { - "describe": { - "columns": [ - { - "name": "count", - "ordinal": 0, - "type_info": "Int8" - } - ], - "nullable": [ - null - ], - "parameters": { - "Left": [] - } - }, - "query": "SELECT COUNT(miniblocks.number) FROM miniblocks WHERE l1_batch_number IS NULL" + "query": "UPDATE proof_generation_details SET status = 'picked_by_prover', updated_at = now(), prover_taken_at = now() WHERE l1_batch_number = ( SELECT l1_batch_number FROM proof_generation_details WHERE status = 'ready_to_be_proven' OR (status = 'picked_by_prover' AND prover_taken_at < now() - $1::interval) ORDER BY l1_batch_number ASC LIMIT 1 FOR UPDATE SKIP LOCKED ) RETURNING proof_generation_details.l1_batch_number" }, - "dc751a25528a272bac17416f782fce3d0aee44b1ae25be0220718b356fda02e8": { + "bc4433cdfa499830fe6a6a95759c9fbe343ac25b371c7fa980bfd1b0afc86629": { "describe": { "columns": [ { - "name": "id", + "name": "l1_batch_number", "ordinal": 0, "type_info": "Int8" - }, - { - "name": "status", - "ordinal": 1, - "type_info": "Text" - }, - { - "name": "attempts", - "ordinal": 2, - "type_info": "Int2" } ], "nullable": [ - false, - false, false ], "parameters": { "Left": [ - "Interval", - "Int2" + "Text", + "Text", + "Text" ] } }, - "query": "\n UPDATE node_aggregation_witness_jobs_fri\n SET status = 'queued', attempts = attempts + 1, updated_at = now(), processing_started_at = now()\n WHERE (status = 'in_progress' AND processing_started_at <= now() - $1::interval AND attempts < $2)\n OR (status = 'failed' AND attempts < $2)\n RETURNING id, status, attempts\n " + "query": "UPDATE proof_compression_jobs_fri SET status = $1, attempts = attempts + 1, updated_at = now(), processing_started_at = now(), picked_by = $3 WHERE l1_batch_number = ( SELECT l1_batch_number FROM proof_compression_jobs_fri WHERE status = $2 ORDER BY l1_batch_number ASC LIMIT 1 FOR UPDATE SKIP LOCKED ) RETURNING proof_compression_jobs_fri.l1_batch_number" }, - "dd330bc075a163974c59ec55ecfddd769d05801963b3e0e840e7f11e7bc6d3e9": { + "be824de76050461afe29dfd229e524bdf113eab3ca24208782c200531db1c940": { "describe": { "columns": [ { - "name": "l1_batch_number", + "name": "id", "ordinal": 0, "type_info": "Int8" } @@ -9485,86 +9297,42 @@ ], "parameters": { "Left": [ - "Int8" - ] - } - }, - "query": "SELECT l1_batch_number FROM witness_inputs WHERE length(merkle_tree_paths) <> 0 ORDER BY l1_batch_number DESC LIMIT $1" - }, - "dd8aa1c9d4dcea22c9a13cca5ae45e951cf963b0608046b88be40309d7379ec2": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Varchar", - "Bytea" + "Int8", + "Int2", + "Int2", + "Int4" ] } }, - "query": "UPDATE transactions\n SET error = $1, updated_at = now()\n WHERE hash = $2" - }, - "dd8f0bbabcd646457a9174a590c79a45d4f744624a74f79017eacbab6b4f9b0a": { - "describe": { - "columns": [ - { - "name": "id", - "ordinal": 0, - "type_info": "Int4" - } - ], - "nullable": [ - false - ], - "parameters": { - "Left": [] - } - }, - "query": "SELECT id FROM protocol_versions" + "query": "\n SELECT id from prover_jobs_fri\n WHERE l1_batch_number = $1\n AND circuit_id = $2\n AND aggregation_round = $3\n AND depth = $4\n AND status = 'successful'\n ORDER BY sequence_number ASC;\n " }, - "ddb3b38be2b6038b63288961f46ba7d3bb7250caff1146e13c5ee77b6a994ffc": { + "bef58e581dd0b658350dcdc15ebf7cf350cf088b60c916a15889e31ee7534907": { "describe": { "columns": [ { - "name": "circuit_type", + "name": "bytecode", "ordinal": 0, - "type_info": "Text" + "type_info": "Bytea" }, { - "name": "result", + "name": "bytecode_hash", "ordinal": 1, "type_info": "Bytea" } ], "nullable": [ false, - true + false ], "parameters": { "Left": [ - "Int8", - "Int4" - ] - } - }, - "query": "\n SELECT circuit_type, result from prover_jobs\n WHERE l1_batch_number = $1 AND status = 'successful' AND aggregation_round = $2\n ORDER BY sequence_number ASC;\n " - }, - "ddd8b105f5e5cf9db40b14ea47e4ba2b3875f89280019464be34f51605833f1b": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Text", - "Text", - "Int4", - "Text" + "ByteaArray" ] } }, - "query": "UPDATE gpu_prover_queue_fri SET instance_status = $1, updated_at = now() WHERE instance_host = $2::text::inet AND instance_port = $3 AND zone = $4\n " + "query": "SELECT bytecode, bytecode_hash FROM factory_deps WHERE bytecode_hash = ANY($1)" }, - "de960625b0fa0b766aacab74473fcd0332a3f7dc356648452a6a63189a8b7cc3": { + "c178e1574d2a16cb90bcc5d5333a4f8dd2a69e0c12b4e7e108a8dcc6000669a5": { "describe": { "columns": [ { @@ -9582,25 +9350,9 @@ ] } }, - "query": "SELECT protocol_version FROM witness_inputs_fri WHERE l1_batch_number = $1" - }, - "deaf3789ac968e299fe0e5a7f1c72494af8ecd664da9c901ec9c0c5e7c29bb65": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "ByteaArray", - "ByteaArray", - "ByteaArray", - "ByteaArray", - "ByteaArray" - ] - } - }, - "query": "INSERT INTO storage (hashed_key, address, key, value, tx_hash, created_at, updated_at) SELECT u.hashed_key, u.address, u.key, u.value, u.tx_hash, now(), now() FROM UNNEST ($1::bytea[], $2::bytea[], $3::bytea[], $4::bytea[], $5::bytea[]) AS u(hashed_key, address, key, value, tx_hash) ON CONFLICT (hashed_key) DO UPDATE SET tx_hash = excluded.tx_hash, value = excluded.value, updated_at = now()" + "query": "SELECT protocol_version FROM miniblocks WHERE number = $1" }, - "df857ee85c600bd90687b2ed91517d91a5dc4de3cd6c15c34119ca52a3321828": { + "c1e5f85be88ef0b6ab81daf8dec2011797086a7ec5aeaffe5665ebf9584bf84a": { "describe": { "columns": [ { @@ -9609,855 +9361,1333 @@ "type_info": "Int8" }, { - "name": "merkle_tree_paths", + "name": "scheduler_partial_input_blob_url", "ordinal": 1, - "type_info": "Bytea" + "type_info": "Text" }, { - "name": "created_at", + "name": "status", "ordinal": 2, - "type_info": "Timestamp" + "type_info": "Text" }, { - "name": "updated_at", + "name": "processing_started_at", "ordinal": 3, "type_info": "Timestamp" }, { - "name": "status", + "name": "time_taken", "ordinal": 4, - "type_info": "Text" + "type_info": "Time" }, { - "name": "time_taken", + "name": "error", "ordinal": 5, - "type_info": "Time" + "type_info": "Text" }, { - "name": "processing_started_at", + "name": "created_at", "ordinal": 6, "type_info": "Timestamp" }, { - "name": "error", + "name": "updated_at", "ordinal": 7, - "type_info": "Varchar" + "type_info": "Timestamp" }, { "name": "attempts", "ordinal": 8, - "type_info": "Int4" + "type_info": "Int2" }, { - "name": "merkel_tree_paths_blob_url", + "name": "protocol_version", "ordinal": 9, - "type_info": "Text" + "type_info": "Int4" }, { - "name": "is_blob_cleaned", + "name": "picked_by", "ordinal": 10, - "type_info": "Bool" - }, - { - "name": "protocol_version", - "ordinal": 11, - "type_info": "Int4" + "type_info": "Text" } ], "nullable": [ - false, - true, - false, false, false, false, true, true, - false, true, false, + false, + false, + true, true ], "parameters": { "Left": [ - "Interval", - "Int4", - "Int8", - "Int4Array" + "Int4Array", + "Text" ] } }, - "query": "\n UPDATE witness_inputs\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now()\n WHERE l1_batch_number = (\n SELECT l1_batch_number\n FROM witness_inputs\n WHERE l1_batch_number <= $3\n AND\n ( status = 'queued'\n OR (status = 'in_progress' AND processing_started_at < now() - $1::interval)\n OR (status = 'failed' AND attempts < $2)\n )\n AND protocol_version = ANY($4)\n ORDER BY l1_batch_number ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING witness_inputs.*\n " + "query": "\n UPDATE scheduler_witness_jobs_fri\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now(),\n picked_by = $2\n WHERE l1_batch_number = (\n SELECT l1_batch_number\n FROM scheduler_witness_jobs_fri\n WHERE status = 'queued'\n AND protocol_version = ANY($1)\n ORDER BY l1_batch_number ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING scheduler_witness_jobs_fri.*\n " }, - "e03756d19dfdf4cdffa81154e690dc7c36024dad5363e0c5440606a5a50eef53": { + "c2cf96a9eb6893c5ba7d9e5418d9f24084ccd87980cb6ee05de1b3bde5c654bd": { "describe": { "columns": [], "nullable": [], "parameters": { "Left": [ - "Bytea", - "Bytea", - "Bytea", - "Bytea", - "Bytea", - "Bytea", - "Bytea", - "Bool", - "Bytea", - "Int8", - "Bytea", - "Bytea", - "Bytea", - "Bytea", - "Int8" + "ByteaArray", + "ByteaArray" ] } }, - "query": "UPDATE l1_batches SET hash = $1, merkle_root_hash = $2, commitment = $3, compressed_repeated_writes = $4, compressed_initial_writes = $5, l2_l1_compressed_messages = $6, l2_l1_merkle_root = $7, zkporter_is_available = $8, parent_hash = $9, rollup_last_leaf_index = $10, aux_data_hash = $11, pass_through_data_hash = $12, meta_parameters_hash = $13, compressed_state_diffs = $14, updated_at = now() WHERE number = $15 AND hash IS NULL" + "query": "\n INSERT INTO call_traces (tx_hash, call_trace)\n SELECT u.tx_hash, u.call_trace\n FROM UNNEST($1::bytea[], $2::bytea[])\n AS u(tx_hash, call_trace)\n " }, - "e05a8c74653afc78c892ddfd08e60ab040d2b2f7c4b5ee110988eac2dd0dd90d": { + "c3724d96ed4e1c31dd575b911b254ed5a4af4d5b6ad1243c812b37ebde0f6090": { "describe": { "columns": [ { - "name": "timestamp", + "name": "storage_refunds", "ordinal": 0, - "type_info": "Int8" - }, - { - "name": "virtual_blocks", - "ordinal": 1, - "type_info": "Int8" + "type_info": "Int8Array" } ], "nullable": [ - false, - false + true ], "parameters": { "Left": [ - "Int8", "Int8" ] } }, - "query": "SELECT timestamp, virtual_blocks FROM miniblocks WHERE number BETWEEN $1 AND $2 ORDER BY number" + "query": "SELECT storage_refunds FROM l1_batches WHERE number = $1" }, - "e29d263f33257a37f391907b7ff588f416a0350b606f16f4779fa1d3bf4be08b": { + "c49a6925e9462cc85a6e1cc850f2e147e0a5d990efed56f27792698e6cf9ff0c": { "describe": { "columns": [ { - "name": "id", + "name": "l1_batch_number", "ordinal": 0, - "type_info": "Int4" + "type_info": "Int8" }, { - "name": "eth_tx_id", + "name": "status", "ordinal": 1, - "type_info": "Int4" - } - ], - "nullable": [ - false, - false - ], - "parameters": { - "Left": [ - "Text" - ] - } - }, - "query": "UPDATE eth_txs_history\n SET updated_at = now(), confirmed_at = now()\n WHERE tx_hash = $1\n RETURNING id, eth_tx_id" - }, - "e409b39a5e62a3a4ec5d3b6aae4935c13b93129a22ffe6a0b68b5ade1f6082c8": { - "describe": { - "columns": [ - { - "name": "number", - "ordinal": 0, - "type_info": "Int8" + "type_info": "Text" }, { - "name": "hash", - "ordinal": 1, - "type_info": "Bytea" + "name": "attempts", + "ordinal": 2, + "type_info": "Int2" } ], "nullable": [ + false, false, false ], "parameters": { "Left": [ - "Int8", - "Int4", - "Int8" - ] - } - }, - "query": "SELECT number, hash FROM miniblocks WHERE number >= $1 and protocol_version = $2 ORDER BY number LIMIT $3" - }, - "e626aa2efb6ba875a12f2b4e37b0ba8052810e73fa5e2d3280f747f7b89b956f": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Text", - "Int8" - ] - } - }, - "query": "UPDATE proof_generation_details SET status='generated', proof_blob_url = $1, updated_at = now() WHERE l1_batch_number = $2" - }, - "e900682a160af90d532da47a1222fc1d7c9962ee8996dbd9b9bb63f13820cf2b": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "ByteaArray" - ] - } - }, - "query": "DELETE FROM transactions WHERE in_mempool = TRUE AND initiator_address = ANY($1)" - }, - "e90688187953eb3c8f5ff4b25c4a6b838e6717c720643b441dece5079b441fc2": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [] - } - }, - "query": "DELETE FROM eth_txs WHERE id >=\n (SELECT MIN(id) FROM eth_txs WHERE has_failed = TRUE)" - }, - "e9b03a0d79eb40a67eab9bdaac8447fc17922bea89bcc6a89eb8eadf147835fe": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Int8", - "Text", - "Int4" + "Interval", + "Int2" ] } }, - "query": "\n INSERT INTO scheduler_witness_jobs_fri\n (l1_batch_number, scheduler_partial_input_blob_url, protocol_version, status, created_at, updated_at)\n VALUES ($1, $2, $3, 'waiting_for_proofs', now(), now())\n ON CONFLICT(l1_batch_number)\n DO UPDATE SET updated_at=now()\n " + "query": "\n UPDATE scheduler_witness_jobs_fri\n SET status = 'queued', attempts = attempts + 1, updated_at = now(), processing_started_at = now()\n WHERE (status = 'in_progress' AND processing_started_at <= now() - $1::interval AND attempts < $2)\n OR (status = 'failed' AND attempts < $2)\n RETURNING l1_batch_number, status, attempts\n " }, - "ea17481cab38d370e06e7cf8598daa39faf4414152456aab89695e3133477d3e": { + "c59d052f89ddfc3d2c07be84d6d9837adfbe2cefb10d01e09d31aa5e3364e281": { "describe": { "columns": [ { - "name": "hash", + "name": "number", "ordinal": 0, - "type_info": "Bytea" + "type_info": "Int8" }, { - "name": "is_priority", + "name": "l1_tx_count", "ordinal": 1, - "type_info": "Bool" + "type_info": "Int4" }, { - "name": "full_fee", + "name": "l2_tx_count", "ordinal": 2, - "type_info": "Numeric" + "type_info": "Int4" }, { - "name": "layer_2_tip_fee", + "name": "timestamp", "ordinal": 3, - "type_info": "Numeric" + "type_info": "Int8" }, { - "name": "initiator_address", + "name": "is_finished", "ordinal": 4, - "type_info": "Bytea" + "type_info": "Bool" }, { - "name": "nonce", + "name": "fee_account_address", "ordinal": 5, - "type_info": "Int8" + "type_info": "Bytea" }, { - "name": "signature", + "name": "l2_to_l1_logs", "ordinal": 6, - "type_info": "Bytea" + "type_info": "ByteaArray" }, { - "name": "input", + "name": "l2_to_l1_messages", "ordinal": 7, - "type_info": "Bytea" + "type_info": "ByteaArray" }, { - "name": "data", + "name": "bloom", "ordinal": 8, - "type_info": "Jsonb" + "type_info": "Bytea" }, { - "name": "received_at", + "name": "priority_ops_onchain_data", "ordinal": 9, - "type_info": "Timestamp" + "type_info": "ByteaArray" }, { - "name": "priority_op_id", + "name": "used_contract_hashes", "ordinal": 10, - "type_info": "Int8" + "type_info": "Jsonb" }, { - "name": "l1_batch_number", + "name": "base_fee_per_gas", "ordinal": 11, - "type_info": "Int8" + "type_info": "Numeric" }, { - "name": "index_in_block", + "name": "l1_gas_price", "ordinal": 12, - "type_info": "Int4" + "type_info": "Int8" }, { - "name": "error", + "name": "l2_fair_gas_price", "ordinal": 13, - "type_info": "Varchar" + "type_info": "Int8" }, { - "name": "gas_limit", + "name": "bootloader_code_hash", "ordinal": 14, - "type_info": "Numeric" + "type_info": "Bytea" }, { - "name": "gas_per_storage_limit", + "name": "default_aa_code_hash", "ordinal": 15, - "type_info": "Numeric" + "type_info": "Bytea" }, { - "name": "gas_per_pubdata_limit", + "name": "protocol_version", "ordinal": 16, - "type_info": "Numeric" + "type_info": "Int4" }, { - "name": "tx_format", + "name": "compressed_state_diffs", "ordinal": 17, - "type_info": "Int4" + "type_info": "Bytea" }, { - "name": "created_at", + "name": "system_logs", "ordinal": 18, - "type_info": "Timestamp" + "type_info": "ByteaArray" + } + ], + "nullable": [ + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + false + ], + "parameters": { + "Left": [ + "Int8" + ] + } + }, + "query": "SELECT number, l1_tx_count, l2_tx_count, timestamp, is_finished, fee_account_address, l2_to_l1_logs, l2_to_l1_messages, bloom, priority_ops_onchain_data, used_contract_hashes, base_fee_per_gas, l1_gas_price, l2_fair_gas_price, bootloader_code_hash, default_aa_code_hash, protocol_version, compressed_state_diffs, system_logs FROM l1_batches WHERE number = $1" + }, + "c604ee1dd86ac154d67ddb339da5f65ca849887d6a1068623e874f9df00cfdd1": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Int8", + "ByteaArray", + "Int4Array", + "VarcharArray", + "JsonbArray", + "Int8Array", + "NumericArray" + ] + } + }, + "query": "\n UPDATE transactions\n SET\n miniblock_number = $1,\n index_in_block = data_table.index_in_block,\n error = NULLIF(data_table.error, ''),\n in_mempool=FALSE,\n execution_info = execution_info || data_table.new_execution_info,\n refunded_gas = data_table.refunded_gas,\n effective_gas_price = data_table.effective_gas_price,\n updated_at = now()\n FROM\n (\n SELECT\n UNNEST($2::bytea[]) AS hash,\n UNNEST($3::integer[]) AS index_in_block,\n UNNEST($4::varchar[]) AS error,\n UNNEST($5::jsonb[]) AS new_execution_info,\n UNNEST($6::bigint[]) as refunded_gas,\n UNNEST($7::numeric[]) as effective_gas_price\n ) AS data_table\n WHERE transactions.hash = data_table.hash\n " + }, + "c6109267f85f38edcd53f361cf2654f43fa45928e39324cfab8389453b4e7031": { + "describe": { + "columns": [ + { + "name": "id", + "ordinal": 0, + "type_info": "Int4" }, { - "name": "updated_at", - "ordinal": 19, - "type_info": "Timestamp" + "name": "eth_tx_id", + "ordinal": 1, + "type_info": "Int4" }, { - "name": "execution_info", - "ordinal": 20, - "type_info": "Jsonb" + "name": "tx_hash", + "ordinal": 2, + "type_info": "Text" }, { - "name": "contract_address", - "ordinal": 21, - "type_info": "Bytea" + "name": "base_fee_per_gas", + "ordinal": 3, + "type_info": "Int8" }, { - "name": "in_mempool", - "ordinal": 22, - "type_info": "Bool" - }, - { - "name": "l1_block_number", - "ordinal": 23, - "type_info": "Int4" - }, - { - "name": "value", - "ordinal": 24, - "type_info": "Numeric" - }, - { - "name": "paymaster", - "ordinal": 25, - "type_info": "Bytea" + "name": "priority_fee_per_gas", + "ordinal": 4, + "type_info": "Int8" }, { - "name": "paymaster_input", - "ordinal": 26, + "name": "signed_raw_tx", + "ordinal": 5, "type_info": "Bytea" }, { - "name": "max_fee_per_gas", - "ordinal": 27, - "type_info": "Numeric" - }, - { - "name": "max_priority_fee_per_gas", - "ordinal": 28, - "type_info": "Numeric" - }, - { - "name": "effective_gas_price", - "ordinal": 29, - "type_info": "Numeric" - }, - { - "name": "miniblock_number", - "ordinal": 30, + "name": "nonce", + "ordinal": 6, "type_info": "Int8" - }, - { - "name": "l1_batch_tx_index", - "ordinal": 31, - "type_info": "Int4" - }, + } + ], + "nullable": [ + false, + false, + false, + false, + false, + true, + false + ], + "parameters": { + "Left": [] + } + }, + "query": "\n SELECT \n eth_txs_history.id,\n eth_txs_history.eth_tx_id,\n eth_txs_history.tx_hash,\n eth_txs_history.base_fee_per_gas,\n eth_txs_history.priority_fee_per_gas,\n eth_txs_history.signed_raw_tx,\n eth_txs.nonce\n FROM eth_txs_history \n JOIN eth_txs ON eth_txs.id = eth_txs_history.eth_tx_id \n WHERE eth_txs_history.sent_at_block IS NULL AND eth_txs.confirmed_eth_tx_history_id IS NULL\n ORDER BY eth_txs_history.id DESC" + }, + "c66b0e0867a1a634f984645ca576a6502b51b67aa0be2dae98e0e2adeb450963": { + "describe": { + "columns": [ { - "name": "refunded_gas", - "ordinal": 32, + "name": "id", + "ordinal": 0, "type_info": "Int8" }, { - "name": "l1_tx_mint", - "ordinal": 33, - "type_info": "Numeric" - }, - { - "name": "l1_tx_refund_recipient", - "ordinal": 34, - "type_info": "Bytea" + "name": "status", + "ordinal": 1, + "type_info": "Text" }, { - "name": "upgrade_id", - "ordinal": 35, + "name": "attempts", + "ordinal": 2, "type_info": "Int4" } ], "nullable": [ false, false, - true, - true, - false, - true, - true, - true, - false, - false, - true, - true, - true, - true, - true, - true, - true, - true, - false, - false, - false, - true, - false, - true, - false, - false, - false, - true, - true, - true, - true, - true, - false, - true, - true, - true + false ], "parameters": { "Left": [ - "Bytea" + "Interval", + "Int4" ] } }, - "query": "\n SELECT * FROM transactions\n WHERE hash = $1\n " + "query": "\n UPDATE prover_jobs\n SET status = 'queued', attempts = attempts + 1, updated_at = now(), processing_started_at = now()\n WHERE (status = 'in_progress' AND processing_started_at <= now() - $1::interval AND attempts < $2)\n OR (status = 'in_gpu_proof' AND processing_started_at <= now() - $1::interval AND attempts < $2)\n OR (status = 'failed' AND attempts < $2)\n RETURNING id, status, attempts\n " }, - "eb95c3daeffd23d35d4e047e3bb8dc44e93492a6d41cf0fd1624d3ea4a2267c9": { + "c6aadc4ec78e30f5775f7a9f866ad02984b78de3e3d1f34c144a4057ff44ea6a": { + "describe": { + "columns": [ + { + "name": "count", + "ordinal": 0, + "type_info": "Int8" + } + ], + "nullable": [ + null + ], + "parameters": { + "Left": [] + } + }, + "query": "SELECT COUNT(*) FROM eth_txs WHERE has_failed = TRUE" + }, + "c6cdc9ef18fe20ef530b653c0c24c674dd74aef3701bfb5c6db23d649115f1d4": { "describe": { "columns": [], "nullable": [], "parameters": { "Left": [ - "Int8", + "Time", "Int8" ] } }, - "query": "UPDATE l1_batches SET predicted_commit_gas_cost = $2, updated_at = now() WHERE number = $1" + "query": "\n UPDATE witness_inputs_fri\n SET status = 'successful', updated_at = now(), time_taken = $1\n WHERE l1_batch_number = $2\n " + }, + "c766f2ee9e3054ba337873ba5ebb26d4f1a43691664372152e5eb782391f9f68": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Int8Array" + ] + } + }, + "query": "\n UPDATE node_aggregation_witness_jobs\n SET is_blob_cleaned=TRUE\n WHERE l1_batch_number = ANY($1);\n " }, - "ebaf755d802edf69578fedf1633000b2a9de4a7d4aa52c7b6910c961ba8dcdd1": { + "c8125b30eb64eebfa4500dc623972bf8771a83b218bd18a51e633d4cf4bf8eb3": { "describe": { "columns": [ { - "name": "number", + "name": "bytecode", "ordinal": 0, - "type_info": "Int8" - }, - { - "name": "timestamp", - "ordinal": 1, - "type_info": "Int8" - }, - { - "name": "is_finished", - "ordinal": 2, - "type_info": "Bool" - }, - { - "name": "l1_tx_count", - "ordinal": 3, - "type_info": "Int4" - }, - { - "name": "l2_tx_count", - "ordinal": 4, - "type_info": "Int4" - }, + "type_info": "Bytea" + } + ], + "nullable": [ + false + ], + "parameters": { + "Left": [ + "Bytea", + "Int8", + "Bytea" + ] + } + }, + "query": "\n SELECT bytecode FROM (\n SELECT * FROM storage_logs\n WHERE\n storage_logs.hashed_key = $1 AND\n storage_logs.miniblock_number <= $2\n ORDER BY\n storage_logs.miniblock_number DESC, storage_logs.operation_number DESC\n LIMIT 1\n ) t\n JOIN factory_deps ON value = factory_deps.bytecode_hash\n WHERE value != $3\n " + }, + "c849561f88c775f2cce4d59387916793ba1623a8a714b415375477e090d86bd3": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Int8", + "Int4", + "Int4" + ] + } + }, + "query": "UPDATE eth_txs\n SET gas_used = $1, confirmed_eth_tx_history_id = $2\n WHERE id = $3" + }, + "c881cd7018a9f714cdc3388936e363d49bd6ae52467d382d2f2250ab4f11acf9": { + "describe": { + "columns": [ { - "name": "fee_account_address", - "ordinal": 5, + "name": "address", + "ordinal": 0, "type_info": "Bytea" }, { - "name": "bloom", - "ordinal": 6, + "name": "key", + "ordinal": 1, "type_info": "Bytea" - }, + } + ], + "nullable": [ + false, + false + ], + "parameters": { + "Left": [ + "Int8" + ] + } + }, + "query": "SELECT address, key FROM protective_reads WHERE l1_batch_number = $1" + }, + "c891770305cb3aba4021738e60567d977eac54435c871b5178de7c3c96d2f721": { + "describe": { + "columns": [ { - "name": "priority_ops_onchain_data", - "ordinal": 7, - "type_info": "ByteaArray" + "name": "usd_price", + "ordinal": 0, + "type_info": "Numeric" }, { - "name": "hash", - "ordinal": 8, - "type_info": "Bytea" - }, + "name": "usd_price_updated_at", + "ordinal": 1, + "type_info": "Timestamp" + } + ], + "nullable": [ + true, + true + ], + "parameters": { + "Left": [ + "Bytea" + ] + } + }, + "query": "SELECT usd_price, usd_price_updated_at FROM tokens WHERE l2_address = $1" + }, + "c92a84c15a8641f73417a03de99a0fb7e07fd0da7b376e65b3ed61209e55a5fa": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Int8Array" + ] + } + }, + "query": "UPDATE witness_inputs SET is_blob_cleaned = TRUE WHERE l1_batch_number = ANY($1)" + }, + "ca8fa3521dab5ee985a837572e8625bd5b26bf79f58950698218b28110c29d1f": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Text", + "Int4", + "Int4", + "Int2", + "Text", + "Text", + "Int2" + ] + } + }, + "query": "\n INSERT INTO gpu_prover_queue (instance_host, instance_port, queue_capacity, queue_free_slots, instance_status, specialized_prover_group_id, region, zone, num_gpu, created_at, updated_at)\n VALUES (cast($1::text as inet), $2, $3, $3, 'available', $4, $5, $6, $7, now(), now())\n ON CONFLICT(instance_host, instance_port, region, zone)\n DO UPDATE SET instance_status='available', queue_capacity=$3, queue_free_slots=$3, specialized_prover_group_id=$4, region=$5, zone=$6, num_gpu=$7, updated_at=now()" + }, + "cc20350af9e837ae6b6160be65f88e6b675f62e207252f91f2ce7dcaaddb12b1": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Int4", + "Int8", + "Bytea", + "Bytea", + "Bytea", + "Bytea", + "Bytea", + "Bytea", + "Bytea", + "Bytea" + ] + } + }, + "query": "INSERT INTO protocol_versions (id, timestamp, recursion_scheduler_level_vk_hash, recursion_node_level_vk_hash, recursion_leaf_level_vk_hash, recursion_circuits_set_vks_hash, bootloader_code_hash, default_account_code_hash, verifier_address, upgrade_tx_hash, created_at) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, now())" + }, + "ce3666b149f7fc62a68139a8efb83ed149c7deace17b8968817941763e45a147": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Bytea", + "Int8", + "Bytea" + ] + } + }, + "query": "\n DELETE FROM tokens \n WHERE l2_address IN\n (\n SELECT substring(key, 12, 20) FROM storage_logs \n WHERE storage_logs.address = $1 AND miniblock_number > $2 AND NOT EXISTS (\n SELECT 1 FROM storage_logs as s\n WHERE\n s.hashed_key = storage_logs.hashed_key AND\n (s.miniblock_number, s.operation_number) >= (storage_logs.miniblock_number, storage_logs.operation_number) AND\n s.value = $3\n )\n )\n " + }, + "cea77fbe02853a7a9b1f7b5ddf2957cb23212ae5ef0f889834d796c35b583542": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Int8" + ] + } + }, + "query": "DELETE FROM miniblocks WHERE number > $1" + }, + "cf9a49dd3ef67b3515e411fd0daadd667af9a4451390b3ef47fe9f902ee9f4e2": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Int8", + "Text", + "Jsonb", + "Text" + ] + } + }, + "query": "\n UPDATE contract_verification_requests\n SET status = 'failed', updated_at = now(), error = $2, compilation_errors = $3, panic_message = $4\n WHERE id = $1\n " + }, + "cfd2ce8eb6997b7609090b4400e1bc42db577fdd3758248be69d3b5d9d132bf1": { + "describe": { + "columns": [ { - "name": "parent_hash", - "ordinal": 9, - "type_info": "Bytea" + "name": "count!", + "ordinal": 0, + "type_info": "Int8" }, { - "name": "commitment", - "ordinal": 10, - "type_info": "Bytea" + "name": "circuit_type!", + "ordinal": 1, + "type_info": "Text" }, { - "name": "compressed_write_logs", - "ordinal": 11, - "type_info": "Bytea" - }, + "name": "status!", + "ordinal": 2, + "type_info": "Text" + } + ], + "nullable": [ + null, + false, + false + ], + "parameters": { + "Left": [] + } + }, + "query": "\n SELECT COUNT(*) as \"count!\", circuit_type as \"circuit_type!\", status as \"status!\"\n FROM prover_jobs\n WHERE status <> 'skipped' and status <> 'successful' \n GROUP BY circuit_type, status\n " + }, + "d0ff67e7c59684a0e4409726544cf850dbdbb36d038ebbc6a1c5bf0e76b0358c": { + "describe": { + "columns": [ { - "name": "compressed_contracts", - "ordinal": 12, - "type_info": "Bytea" - }, + "name": "count!", + "ordinal": 0, + "type_info": "Int8" + } + ], + "nullable": [ + null + ], + "parameters": { + "Left": [] + } + }, + "query": "SELECT COUNT(*) as \"count!\" FROM l1_batches" + }, + "d11ff84327058721c3c36bc3371c3139f41e2a2255f64bbc5108c1876848d8bb": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Text", + "Text", + "Int4", + "Int4", + "Text", + "Text" + ] + } + }, + "query": "\n UPDATE gpu_prover_queue\n SET instance_status = $1, updated_at = now(), queue_free_slots = $4\n WHERE instance_host = $2::text::inet\n AND instance_port = $3\n AND region = $5\n AND zone = $6\n " + }, + "d12724ae2bda6214b68e19dc290281907383926abf5ad471eef89529908b2673": { + "describe": { + "columns": [ { - "name": "eth_prove_tx_id", - "ordinal": 13, - "type_info": "Int4" + "name": "id", + "ordinal": 0, + "type_info": "Int8" }, { - "name": "eth_commit_tx_id", - "ordinal": 14, - "type_info": "Int4" + "name": "l1_batch_number", + "ordinal": 1, + "type_info": "Int8" }, { - "name": "eth_execute_tx_id", - "ordinal": 15, - "type_info": "Int4" + "name": "circuit_id", + "ordinal": 2, + "type_info": "Int2" }, { - "name": "merkle_root_hash", - "ordinal": 16, - "type_info": "Bytea" + "name": "aggregation_round", + "ordinal": 3, + "type_info": "Int2" }, { - "name": "l2_to_l1_logs", - "ordinal": 17, - "type_info": "ByteaArray" + "name": "sequence_number", + "ordinal": 4, + "type_info": "Int4" }, { - "name": "l2_to_l1_messages", - "ordinal": 18, - "type_info": "ByteaArray" + "name": "depth", + "ordinal": 5, + "type_info": "Int4" }, { - "name": "used_contract_hashes", - "ordinal": 19, - "type_info": "Jsonb" - }, + "name": "is_node_final_proof", + "ordinal": 6, + "type_info": "Bool" + } + ], + "nullable": [ + false, + false, + false, + false, + false, + false, + false + ], + "parameters": { + "Left": [ + "Int4Array", + "Text" + ] + } + }, + "query": "\n UPDATE prover_jobs_fri\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now(),\n picked_by = $2\n WHERE id = (\n SELECT id\n FROM prover_jobs_fri\n WHERE status = 'queued'\n AND protocol_version = ANY($1)\n ORDER BY aggregation_round DESC, l1_batch_number ASC, id ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING prover_jobs_fri.id, prover_jobs_fri.l1_batch_number, prover_jobs_fri.circuit_id,\n prover_jobs_fri.aggregation_round, prover_jobs_fri.sequence_number, prover_jobs_fri.depth,\n prover_jobs_fri.is_node_final_proof\n " + }, + "d1c82bd0b3c010569937ad7600760fa0c3aca7c9585bbf9598a5c0515b431b26": { + "describe": { + "columns": [ { - "name": "compressed_initial_writes", - "ordinal": 20, + "name": "hashed_key", + "ordinal": 0, "type_info": "Bytea" }, { - "name": "compressed_repeated_writes", - "ordinal": 21, - "type_info": "Bytea" + "name": "l1_batch_number", + "ordinal": 1, + "type_info": "Int8" }, { - "name": "l2_l1_compressed_messages", - "ordinal": 22, - "type_info": "Bytea" - }, + "name": "index", + "ordinal": 2, + "type_info": "Int8" + } + ], + "nullable": [ + false, + false, + false + ], + "parameters": { + "Left": [ + "ByteaArray" + ] + } + }, + "query": "SELECT hashed_key, l1_batch_number, index FROM initial_writes WHERE hashed_key = ANY($1::bytea[])" + }, + "d6709f3ce8f08f988e10a0e0fb5c06db9488834a85066babaf3d56cf212b4ea0": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Bytea", + "Varchar", + "Varchar", + "Int4" + ] + } + }, + "query": "UPDATE tokens SET token_list_name = $2, token_list_symbol = $3,\n token_list_decimals = $4, well_known = true, updated_at = now()\n WHERE l1_address = $1\n " + }, + "d7060880fe56fd99af7b7ed3f4c7fb9d0858cee30f44c5197821aae83c6c9666": { + "describe": { + "columns": [ { - "name": "l2_l1_merkle_root", - "ordinal": 23, + "name": "id", + "ordinal": 0, + "type_info": "Int4" + } + ], + "nullable": [ + false + ], + "parameters": { + "Left": [ + "Bytea", + "Bytea", + "Bytea", + "Bytea" + ] + } + }, + "query": "\n SELECT id\n FROM prover_protocol_versions\n WHERE recursion_circuits_set_vks_hash = $1\n AND recursion_leaf_level_vk_hash = $2\n AND recursion_node_level_vk_hash = $3\n AND recursion_scheduler_level_vk_hash = $4\n " + }, + "d8515595d34dca53e50bbd4ed396f6208e33f596195a5ed02fba9e8364ceb33c": { + "describe": { + "columns": [ + { + "name": "bytecode", + "ordinal": 0, "type_info": "Bytea" - }, + } + ], + "nullable": [ + false + ], + "parameters": { + "Left": [ + "Bytea" + ] + } + }, + "query": "SELECT bytecode FROM factory_deps WHERE bytecode_hash = $1" + }, + "d8e0bb1a349523077356be101808340eab078979390af7d26c71489b5f303d1b": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Int8" + ] + } + }, + "query": "UPDATE l1_batches SET skip_proof = TRUE WHERE number = $1" + }, + "dba127c0f3023586217bfb214c5d3749e8e7ec3edc0c99cfd970332e31f81cb7": { + "describe": { + "columns": [ { - "name": "l1_gas_price", - "ordinal": 24, + "name": "virtual_blocks", + "ordinal": 0, "type_info": "Int8" - }, + } + ], + "nullable": [ + false + ], + "parameters": { + "Left": [ + "Int8" + ] + } + }, + "query": "SELECT virtual_blocks FROM miniblocks WHERE number = $1" + }, + "dc16d0fac093a52480b66dfcb5976fb01e6629e8c982c265f2af1d5000090572": { + "describe": { + "columns": [ { - "name": "l2_fair_gas_price", - "ordinal": 25, + "name": "count", + "ordinal": 0, "type_info": "Int8" - }, + } + ], + "nullable": [ + null + ], + "parameters": { + "Left": [] + } + }, + "query": "SELECT COUNT(miniblocks.number) FROM miniblocks WHERE l1_batch_number IS NULL" + }, + "dc751a25528a272bac17416f782fce3d0aee44b1ae25be0220718b356fda02e8": { + "describe": { + "columns": [ { - "name": "rollup_last_leaf_index", - "ordinal": 26, + "name": "id", + "ordinal": 0, "type_info": "Int8" }, { - "name": "zkporter_is_available", - "ordinal": 27, - "type_info": "Bool" + "name": "status", + "ordinal": 1, + "type_info": "Text" }, { - "name": "bootloader_code_hash", - "ordinal": 28, + "name": "attempts", + "ordinal": 2, + "type_info": "Int2" + } + ], + "nullable": [ + false, + false, + false + ], + "parameters": { + "Left": [ + "Interval", + "Int2" + ] + } + }, + "query": "\n UPDATE node_aggregation_witness_jobs_fri\n SET status = 'queued', attempts = attempts + 1, updated_at = now(), processing_started_at = now()\n WHERE (status = 'in_progress' AND processing_started_at <= now() - $1::interval AND attempts < $2)\n OR (status = 'failed' AND attempts < $2)\n RETURNING id, status, attempts\n " + }, + "dd330bc075a163974c59ec55ecfddd769d05801963b3e0e840e7f11e7bc6d3e9": { + "describe": { + "columns": [ + { + "name": "l1_batch_number", + "ordinal": 0, + "type_info": "Int8" + } + ], + "nullable": [ + false + ], + "parameters": { + "Left": [ + "Int8" + ] + } + }, + "query": "SELECT l1_batch_number FROM witness_inputs WHERE length(merkle_tree_paths) <> 0 ORDER BY l1_batch_number DESC LIMIT $1" + }, + "dd8aa1c9d4dcea22c9a13cca5ae45e951cf963b0608046b88be40309d7379ec2": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Varchar", + "Bytea" + ] + } + }, + "query": "UPDATE transactions\n SET error = $1, updated_at = now()\n WHERE hash = $2" + }, + "dd8f0bbabcd646457a9174a590c79a45d4f744624a74f79017eacbab6b4f9b0a": { + "describe": { + "columns": [ + { + "name": "id", + "ordinal": 0, + "type_info": "Int4" + } + ], + "nullable": [ + false + ], + "parameters": { + "Left": [] + } + }, + "query": "SELECT id FROM protocol_versions" + }, + "ddb3b38be2b6038b63288961f46ba7d3bb7250caff1146e13c5ee77b6a994ffc": { + "describe": { + "columns": [ + { + "name": "circuit_type", + "ordinal": 0, + "type_info": "Text" + }, + { + "name": "result", + "ordinal": 1, "type_info": "Bytea" + } + ], + "nullable": [ + false, + true + ], + "parameters": { + "Left": [ + "Int8", + "Int4" + ] + } + }, + "query": "\n SELECT circuit_type, result from prover_jobs\n WHERE l1_batch_number = $1 AND status = 'successful' AND aggregation_round = $2\n ORDER BY sequence_number ASC;\n " + }, + "ddd8b105f5e5cf9db40b14ea47e4ba2b3875f89280019464be34f51605833f1b": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Text", + "Text", + "Int4", + "Text" + ] + } + }, + "query": "UPDATE gpu_prover_queue_fri SET instance_status = $1, updated_at = now() WHERE instance_host = $2::text::inet AND instance_port = $3 AND zone = $4\n " + }, + "de960625b0fa0b766aacab74473fcd0332a3f7dc356648452a6a63189a8b7cc3": { + "describe": { + "columns": [ + { + "name": "protocol_version", + "ordinal": 0, + "type_info": "Int4" + } + ], + "nullable": [ + true + ], + "parameters": { + "Left": [ + "Int8" + ] + } + }, + "query": "SELECT protocol_version FROM witness_inputs_fri WHERE l1_batch_number = $1" + }, + "deaf3789ac968e299fe0e5a7f1c72494af8ecd664da9c901ec9c0c5e7c29bb65": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "ByteaArray", + "ByteaArray", + "ByteaArray", + "ByteaArray", + "ByteaArray" + ] + } + }, + "query": "INSERT INTO storage (hashed_key, address, key, value, tx_hash, created_at, updated_at) SELECT u.hashed_key, u.address, u.key, u.value, u.tx_hash, now(), now() FROM UNNEST ($1::bytea[], $2::bytea[], $3::bytea[], $4::bytea[], $5::bytea[]) AS u(hashed_key, address, key, value, tx_hash) ON CONFLICT (hashed_key) DO UPDATE SET tx_hash = excluded.tx_hash, value = excluded.value, updated_at = now()" + }, + "df857ee85c600bd90687b2ed91517d91a5dc4de3cd6c15c34119ca52a3321828": { + "describe": { + "columns": [ + { + "name": "l1_batch_number", + "ordinal": 0, + "type_info": "Int8" }, { - "name": "default_aa_code_hash", - "ordinal": 29, + "name": "merkle_tree_paths", + "ordinal": 1, "type_info": "Bytea" }, { - "name": "base_fee_per_gas", - "ordinal": 30, - "type_info": "Numeric" + "name": "created_at", + "ordinal": 2, + "type_info": "Timestamp" }, { - "name": "aux_data_hash", - "ordinal": 31, - "type_info": "Bytea" + "name": "updated_at", + "ordinal": 3, + "type_info": "Timestamp" }, { - "name": "pass_through_data_hash", - "ordinal": 32, - "type_info": "Bytea" + "name": "status", + "ordinal": 4, + "type_info": "Text" }, { - "name": "meta_parameters_hash", - "ordinal": 33, - "type_info": "Bytea" + "name": "time_taken", + "ordinal": 5, + "type_info": "Time" }, { - "name": "protocol_version", - "ordinal": 34, - "type_info": "Int4" + "name": "processing_started_at", + "ordinal": 6, + "type_info": "Timestamp" }, { - "name": "compressed_state_diffs", - "ordinal": 35, - "type_info": "Bytea" + "name": "error", + "ordinal": 7, + "type_info": "Varchar" }, { - "name": "gas_per_pubdata_byte_in_block", - "ordinal": 36, + "name": "attempts", + "ordinal": 8, "type_info": "Int4" }, { - "name": "gas_per_pubdata_limit", - "ordinal": 37, - "type_info": "Int8" + "name": "merkel_tree_paths_blob_url", + "ordinal": 9, + "type_info": "Text" }, { - "name": "skip_proof", - "ordinal": 38, + "name": "is_blob_cleaned", + "ordinal": 10, "type_info": "Bool" }, { - "name": "system_logs", - "ordinal": 39, - "type_info": "ByteaArray" - }, - { - "name": "events_queue_commitment", - "ordinal": 40, - "type_info": "Bytea" - }, - { - "name": "bootloader_initial_content_commitment", - "ordinal": 41, - "type_info": "Bytea" + "name": "protocol_version", + "ordinal": 11, + "type_info": "Int4" } ], "nullable": [ false, - false, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true, - true, - true, - true, true, false, false, false, - true, - true, - true, - true, - false, false, true, true, - true, - true, false, true, - true, - true, - true, - true, - true, false, - false, - false, - true, true ], "parameters": { "Left": [ - "Int8" + "Interval", + "Int4", + "Int8", + "Int4Array" ] } }, - "query": "SELECT number, timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, rollup_last_leaf_index, zkporter_is_available, bootloader_code_hash, default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, meta_parameters_hash, protocol_version, compressed_state_diffs, gas_per_pubdata_byte_in_block, gas_per_pubdata_limit, skip_proof, system_logs, events_queue_commitment, bootloader_initial_content_commitment FROM l1_batches LEFT JOIN commitments ON commitments.l1_batch_number = l1_batches.number WHERE eth_commit_tx_id IS NOT NULL AND eth_prove_tx_id IS NULL ORDER BY number LIMIT $1" + "query": "\n UPDATE witness_inputs\n SET status = 'in_progress', attempts = attempts + 1,\n updated_at = now(), processing_started_at = now()\n WHERE l1_batch_number = (\n SELECT l1_batch_number\n FROM witness_inputs\n WHERE l1_batch_number <= $3\n AND\n ( status = 'queued'\n OR (status = 'in_progress' AND processing_started_at < now() - $1::interval)\n OR (status = 'failed' AND attempts < $2)\n )\n AND protocol_version = ANY($4)\n ORDER BY l1_batch_number ASC\n LIMIT 1\n FOR UPDATE\n SKIP LOCKED\n )\n RETURNING witness_inputs.*\n " }, - "ed50c609371b4588964e29f8757c41973706710090a80eb025ec263ce3d019b4": { + "e03756d19dfdf4cdffa81154e690dc7c36024dad5363e0c5440606a5a50eef53": { "describe": { "columns": [], "nullable": [], "parameters": { "Left": [ - "Text", - "Int4", - "Int2", - "Text" + "Bytea", + "Bytea", + "Bytea", + "Bytea", + "Bytea", + "Bytea", + "Bytea", + "Bool", + "Bytea", + "Int8", + "Bytea", + "Bytea", + "Bytea", + "Bytea", + "Int8" ] } }, - "query": "INSERT INTO gpu_prover_queue_fri (instance_host, instance_port, instance_status, specialized_prover_group_id, zone, created_at, updated_at) VALUES (cast($1::text as inet), $2, 'available', $3, $4, now(), now()) ON CONFLICT(instance_host, instance_port, zone) DO UPDATE SET instance_status='available', specialized_prover_group_id=$3, zone=$4, updated_at=now()" + "query": "UPDATE l1_batches SET hash = $1, merkle_root_hash = $2, commitment = $3, compressed_repeated_writes = $4, compressed_initial_writes = $5, l2_l1_compressed_messages = $6, l2_l1_merkle_root = $7, zkporter_is_available = $8, parent_hash = $9, rollup_last_leaf_index = $10, aux_data_hash = $11, pass_through_data_hash = $12, meta_parameters_hash = $13, compressed_state_diffs = $14, updated_at = now() WHERE number = $15 AND hash IS NULL" }, - "eda61fd8012aadc27a2952e96d4238bccb21ec47a17e326a7ae9182d5358d733": { + "e05a8c74653afc78c892ddfd08e60ab040d2b2f7c4b5ee110988eac2dd0dd90d": { "describe": { "columns": [ { "name": "timestamp", "ordinal": 0, "type_info": "Int8" + }, + { + "name": "virtual_blocks", + "ordinal": 1, + "type_info": "Int8" } ], "nullable": [ + false, false ], "parameters": { - "Left": [] + "Left": [ + "Int8", + "Int8" + ] } }, - "query": "SELECT timestamp FROM l1_batches WHERE eth_prove_tx_id IS NULL AND number > 0 ORDER BY number LIMIT 1" + "query": "SELECT timestamp, virtual_blocks FROM miniblocks WHERE number BETWEEN $1 AND $2 ORDER BY number" }, - "edc9e374698c57ba9f65f83f0e1945e4785d8b4bc95f46ed4d16c095e5511709": { + "e29d263f33257a37f391907b7ff588f416a0350b606f16f4779fa1d3bf4be08b": { "describe": { - "columns": [], - "nullable": [], + "columns": [ + { + "name": "id", + "ordinal": 0, + "type_info": "Int4" + }, + { + "name": "eth_tx_id", + "ordinal": 1, + "type_info": "Int4" + } + ], + "nullable": [ + false, + false + ], "parameters": { "Left": [ - "Int8Array" + "Text" ] } }, - "query": "\n UPDATE leaf_aggregation_witness_jobs\n SET is_blob_cleaned=TRUE\n WHERE l1_batch_number = ANY($1);\n " + "query": "UPDATE eth_txs_history\n SET updated_at = now(), confirmed_at = now()\n WHERE tx_hash = $1\n RETURNING id, eth_tx_id" }, - "ee74b42d1a6a52784124751dae6c7eca3fd36f5a3bb26de56efc2b810da7033a": { + "e409b39a5e62a3a4ec5d3b6aae4935c13b93129a22ffe6a0b68b5ade1f6082c8": { "describe": { "columns": [ { - "name": "initial_bootloader_heap_content", + "name": "number", "ordinal": 0, - "type_info": "Jsonb" + "type_info": "Int8" + }, + { + "name": "hash", + "ordinal": 1, + "type_info": "Bytea" } ], "nullable": [ + false, false ], "parameters": { "Left": [ + "Int8", + "Int4", "Int8" ] } }, - "query": "SELECT initial_bootloader_heap_content FROM l1_batches WHERE number = $1" + "query": "SELECT number, hash FROM miniblocks WHERE number >= $1 and protocol_version = $2 ORDER BY number LIMIT $3" }, - "ee7bd820bf35c5c714092494c386eccff25457cff6dc00eb81d9809eaeb95670": { + "e429061bd0f67910ad8676a34f2b89a051a6df3097c8afde81a491c342a10e3a": { "describe": { "columns": [ { - "name": "is_replaced!", + "name": "l1_batch_number", "ordinal": 0, - "type_info": "Bool" + "type_info": "Int8" } ], "nullable": [ - null + false ], "parameters": { "Left": [ - "Bytea", - "Bytea", - "Int8", - "Bytea", - "Numeric", - "Numeric", - "Numeric", - "Numeric", - "Bytea", - "Jsonb", - "Int4", - "Bytea", - "Numeric", - "Bytea", - "Bytea", + { + "Custom": { + "kind": { + "Enum": [ + "Queued", + "ManuallySkipped", + "InProgress", + "Successful", + "Failed" + ] + }, + "name": "basic_witness_input_producer_job_status" + } + }, + { + "Custom": { + "kind": { + "Enum": [ + "Queued", + "ManuallySkipped", + "InProgress", + "Successful", + "Failed" + ] + }, + "name": "basic_witness_input_producer_job_status" + } + }, + { + "Custom": { + "kind": { + "Enum": [ + "Queued", + "ManuallySkipped", + "InProgress", + "Successful", + "Failed" + ] + }, + "name": "basic_witness_input_producer_job_status" + } + }, + "Interval", + "Int2" + ] + } + }, + "query": "UPDATE basic_witness_input_producer_jobs SET status = $1, attempts = attempts + 1, updated_at = now(), processing_started_at = now() WHERE l1_batch_number = ( SELECT l1_batch_number FROM basic_witness_input_producer_jobs WHERE status = $2 OR (status = $1 AND processing_started_at < now() - $4::interval) OR (status = $3 AND attempts < $5) ORDER BY l1_batch_number ASC LIMIT 1 FOR UPDATE SKIP LOCKED ) RETURNING basic_witness_input_producer_jobs.l1_batch_number" + }, + "e626aa2efb6ba875a12f2b4e37b0ba8052810e73fa5e2d3280f747f7b89b956f": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Text", + "Int8" + ] + } + }, + "query": "UPDATE proof_generation_details SET status='generated', proof_blob_url = $1, updated_at = now() WHERE l1_batch_number = $2" + }, + "e900682a160af90d532da47a1222fc1d7c9962ee8996dbd9b9bb63f13820cf2b": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "ByteaArray" + ] + } + }, + "query": "DELETE FROM transactions WHERE in_mempool = TRUE AND initiator_address = ANY($1)" + }, + "e90688187953eb3c8f5ff4b25c4a6b838e6717c720643b441dece5079b441fc2": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [] + } + }, + "query": "DELETE FROM eth_txs WHERE id >=\n (SELECT MIN(id) FROM eth_txs WHERE has_failed = TRUE)" + }, + "e9b03a0d79eb40a67eab9bdaac8447fc17922bea89bcc6a89eb8eadf147835fe": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ "Int8", - "Int4", - "Int4", - "Timestamp" + "Text", + "Int4" ] } }, - "query": "\n INSERT INTO transactions\n (\n hash,\n is_priority,\n initiator_address,\n nonce,\n signature,\n gas_limit,\n max_fee_per_gas,\n max_priority_fee_per_gas,\n gas_per_pubdata_limit,\n input,\n data,\n tx_format,\n contract_address,\n value,\n paymaster,\n paymaster_input,\n execution_info,\n received_at,\n created_at,\n updated_at\n )\n VALUES\n (\n $1, FALSE, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15,\n jsonb_build_object('gas_used', $16::bigint, 'storage_writes', $17::int, 'contracts_used', $18::int),\n $19, now(), now()\n )\n ON CONFLICT\n (initiator_address, nonce)\n DO UPDATE\n SET hash=$1,\n signature=$4,\n gas_limit=$5,\n max_fee_per_gas=$6,\n max_priority_fee_per_gas=$7,\n gas_per_pubdata_limit=$8,\n input=$9,\n data=$10,\n tx_format=$11,\n contract_address=$12,\n value=$13,\n paymaster=$14,\n paymaster_input=$15,\n execution_info=jsonb_build_object('gas_used', $16::bigint, 'storage_writes', $17::int, 'contracts_used', $18::int),\n in_mempool=FALSE,\n received_at=$19,\n created_at=now(),\n updated_at=now(),\n error = NULL\n WHERE transactions.is_priority = FALSE AND transactions.miniblock_number IS NULL\n RETURNING (SELECT hash FROM transactions WHERE transactions.initiator_address = $2 AND transactions.nonce = $3) IS NOT NULL as \"is_replaced!\"\n " + "query": "\n INSERT INTO scheduler_witness_jobs_fri\n (l1_batch_number, scheduler_partial_input_blob_url, protocol_version, status, created_at, updated_at)\n VALUES ($1, $2, $3, 'waiting_for_proofs', now(), now())\n ON CONFLICT(l1_batch_number)\n DO UPDATE SET updated_at=now()\n " }, - "ee87b42383cd6b4f1445e2aa152369fee31a7fea436db8b3b9925a60ac60cd1a": { + "ea17481cab38d370e06e7cf8598daa39faf4414152456aab89695e3133477d3e": { "describe": { "columns": [ { @@ -10681,290 +10911,323 @@ ], "parameters": { "Left": [ + "Bytea" + ] + } + }, + "query": "\n SELECT * FROM transactions\n WHERE hash = $1\n " + }, + "eb95c3daeffd23d35d4e047e3bb8dc44e93492a6d41cf0fd1624d3ea4a2267c9": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Int8", "Int8" ] } }, - "query": "SELECT * FROM transactions WHERE miniblock_number = $1 ORDER BY index_in_block" + "query": "UPDATE l1_batches SET predicted_commit_gas_cost = $2, updated_at = now() WHERE number = $1" }, - "efc83e42f5d0238b8996a5b311746527289a5a002ff659531a076680127e8eb4": { + "ed50c609371b4588964e29f8757c41973706710090a80eb025ec263ce3d019b4": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Text", + "Int4", + "Int2", + "Text" + ] + } + }, + "query": "INSERT INTO gpu_prover_queue_fri (instance_host, instance_port, instance_status, specialized_prover_group_id, zone, created_at, updated_at) VALUES (cast($1::text as inet), $2, 'available', $3, $4, now(), now()) ON CONFLICT(instance_host, instance_port, zone) DO UPDATE SET instance_status='available', specialized_prover_group_id=$3, zone=$4, updated_at=now()" + }, + "eda61fd8012aadc27a2952e96d4238bccb21ec47a17e326a7ae9182d5358d733": { "describe": { "columns": [ { - "name": "hash", + "name": "timestamp", "ordinal": 0, - "type_info": "Bytea" + "type_info": "Int8" } ], "nullable": [ - true + false ], + "parameters": { + "Left": [] + } + }, + "query": "SELECT timestamp FROM l1_batches WHERE eth_prove_tx_id IS NULL AND number > 0 ORDER BY number LIMIT 1" + }, + "edc9e374698c57ba9f65f83f0e1945e4785d8b4bc95f46ed4d16c095e5511709": { + "describe": { + "columns": [], + "nullable": [], "parameters": { "Left": [ - "Int8" + "Int8Array" ] } }, - "query": "SELECT hash FROM l1_batches WHERE number = $1" + "query": "\n UPDATE leaf_aggregation_witness_jobs\n SET is_blob_cleaned=TRUE\n WHERE l1_batch_number = ANY($1);\n " }, - "f0c83c517fdf9696a0acf288f061bd00a993e0b2379b667738b6876e2f588043": { + "ee74b42d1a6a52784124751dae6c7eca3fd36f5a3bb26de56efc2b810da7033a": { "describe": { "columns": [ { - "name": "l1_batch_number", + "name": "initial_bootloader_heap_content", "ordinal": 0, - "type_info": "Int8" + "type_info": "Jsonb" } ], "nullable": [ false ], "parameters": { - "Left": [] + "Left": [ + "Int8" + ] } }, - "query": "\n UPDATE node_aggregation_witness_jobs\n SET status='queued'\n WHERE l1_batch_number IN\n (SELECT prover_jobs.l1_batch_number\n FROM prover_jobs\n JOIN node_aggregation_witness_jobs nawj ON prover_jobs.l1_batch_number = nawj.l1_batch_number\n WHERE nawj.status = 'waiting_for_proofs'\n AND prover_jobs.status = 'successful'\n AND prover_jobs.aggregation_round = 1\n GROUP BY prover_jobs.l1_batch_number, nawj.number_of_leaf_circuits\n HAVING COUNT(*) = nawj.number_of_leaf_circuits)\n RETURNING l1_batch_number;\n " + "query": "SELECT initial_bootloader_heap_content FROM l1_batches WHERE number = $1" }, - "f1defa140e20b9c250d3212602dc259c0a35598c2e69d1c42746a8fab6dd8d3e": { + "ee7bd820bf35c5c714092494c386eccff25457cff6dc00eb81d9809eaeb95670": { "describe": { - "columns": [], - "nullable": [], + "columns": [ + { + "name": "is_replaced!", + "ordinal": 0, + "type_info": "Bool" + } + ], + "nullable": [ + null + ], "parameters": { "Left": [ - "Text", + "Bytea", + "Bytea", + "Int8", + "Bytea", + "Numeric", + "Numeric", + "Numeric", + "Numeric", + "Bytea", + "Jsonb", + "Int4", + "Bytea", + "Numeric", + "Bytea", + "Bytea", + "Int8", "Int4", "Int4", - "Text", - "Text" + "Timestamp" ] } }, - "query": "\n UPDATE gpu_prover_queue\n SET instance_status = 'available', updated_at = now(), queue_free_slots = $3\n WHERE instance_host = $1::text::inet\n AND instance_port = $2\n AND instance_status = 'full'\n AND region = $4\n AND zone = $5\n " + "query": "\n INSERT INTO transactions\n (\n hash,\n is_priority,\n initiator_address,\n nonce,\n signature,\n gas_limit,\n max_fee_per_gas,\n max_priority_fee_per_gas,\n gas_per_pubdata_limit,\n input,\n data,\n tx_format,\n contract_address,\n value,\n paymaster,\n paymaster_input,\n execution_info,\n received_at,\n created_at,\n updated_at\n )\n VALUES\n (\n $1, FALSE, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15,\n jsonb_build_object('gas_used', $16::bigint, 'storage_writes', $17::int, 'contracts_used', $18::int),\n $19, now(), now()\n )\n ON CONFLICT\n (initiator_address, nonce)\n DO UPDATE\n SET hash=$1,\n signature=$4,\n gas_limit=$5,\n max_fee_per_gas=$6,\n max_priority_fee_per_gas=$7,\n gas_per_pubdata_limit=$8,\n input=$9,\n data=$10,\n tx_format=$11,\n contract_address=$12,\n value=$13,\n paymaster=$14,\n paymaster_input=$15,\n execution_info=jsonb_build_object('gas_used', $16::bigint, 'storage_writes', $17::int, 'contracts_used', $18::int),\n in_mempool=FALSE,\n received_at=$19,\n created_at=now(),\n updated_at=now(),\n error = NULL\n WHERE transactions.is_priority = FALSE AND transactions.miniblock_number IS NULL\n RETURNING (SELECT hash FROM transactions WHERE transactions.initiator_address = $2 AND transactions.nonce = $3) IS NOT NULL as \"is_replaced!\"\n " }, - "f4201e87c41568955a829ce1487917bc07cfe35987f7b3a971e4e4e465a4f859": { + "ee87b42383cd6b4f1445e2aa152369fee31a7fea436db8b3b9925a60ac60cd1a": { "describe": { "columns": [ { - "name": "number", + "name": "hash", "ordinal": 0, - "type_info": "Int8" + "type_info": "Bytea" }, { - "name": "timestamp", + "name": "is_priority", "ordinal": 1, - "type_info": "Int8" + "type_info": "Bool" }, { - "name": "is_finished", + "name": "full_fee", "ordinal": 2, - "type_info": "Bool" + "type_info": "Numeric" }, { - "name": "l1_tx_count", + "name": "layer_2_tip_fee", "ordinal": 3, - "type_info": "Int4" + "type_info": "Numeric" }, { - "name": "l2_tx_count", + "name": "initiator_address", "ordinal": 4, - "type_info": "Int4" + "type_info": "Bytea" }, { - "name": "fee_account_address", + "name": "nonce", "ordinal": 5, - "type_info": "Bytea" + "type_info": "Int8" }, { - "name": "bloom", + "name": "signature", "ordinal": 6, "type_info": "Bytea" }, { - "name": "priority_ops_onchain_data", + "name": "input", "ordinal": 7, - "type_info": "ByteaArray" + "type_info": "Bytea" }, { - "name": "hash", + "name": "data", "ordinal": 8, - "type_info": "Bytea" + "type_info": "Jsonb" }, { - "name": "parent_hash", + "name": "received_at", "ordinal": 9, - "type_info": "Bytea" + "type_info": "Timestamp" }, { - "name": "commitment", + "name": "priority_op_id", "ordinal": 10, - "type_info": "Bytea" + "type_info": "Int8" }, { - "name": "compressed_write_logs", + "name": "l1_batch_number", "ordinal": 11, - "type_info": "Bytea" + "type_info": "Int8" }, { - "name": "compressed_contracts", + "name": "index_in_block", "ordinal": 12, - "type_info": "Bytea" + "type_info": "Int4" }, { - "name": "eth_prove_tx_id", + "name": "error", "ordinal": 13, - "type_info": "Int4" + "type_info": "Varchar" }, { - "name": "eth_commit_tx_id", + "name": "gas_limit", "ordinal": 14, - "type_info": "Int4" + "type_info": "Numeric" }, { - "name": "eth_execute_tx_id", + "name": "gas_per_storage_limit", "ordinal": 15, - "type_info": "Int4" + "type_info": "Numeric" }, { - "name": "merkle_root_hash", + "name": "gas_per_pubdata_limit", "ordinal": 16, - "type_info": "Bytea" + "type_info": "Numeric" }, { - "name": "l2_to_l1_logs", + "name": "tx_format", "ordinal": 17, - "type_info": "ByteaArray" + "type_info": "Int4" }, { - "name": "l2_to_l1_messages", + "name": "created_at", "ordinal": 18, - "type_info": "ByteaArray" + "type_info": "Timestamp" }, { - "name": "used_contract_hashes", + "name": "updated_at", "ordinal": 19, - "type_info": "Jsonb" + "type_info": "Timestamp" }, { - "name": "compressed_initial_writes", + "name": "execution_info", "ordinal": 20, - "type_info": "Bytea" + "type_info": "Jsonb" }, { - "name": "compressed_repeated_writes", + "name": "contract_address", "ordinal": 21, "type_info": "Bytea" }, { - "name": "l2_l1_compressed_messages", + "name": "in_mempool", "ordinal": 22, - "type_info": "Bytea" + "type_info": "Bool" }, { - "name": "l2_l1_merkle_root", + "name": "l1_block_number", "ordinal": 23, - "type_info": "Bytea" + "type_info": "Int4" }, { - "name": "l1_gas_price", + "name": "value", "ordinal": 24, - "type_info": "Int8" + "type_info": "Numeric" }, { - "name": "l2_fair_gas_price", + "name": "paymaster", "ordinal": 25, - "type_info": "Int8" + "type_info": "Bytea" }, { - "name": "rollup_last_leaf_index", + "name": "paymaster_input", "ordinal": 26, - "type_info": "Int8" + "type_info": "Bytea" }, { - "name": "zkporter_is_available", + "name": "max_fee_per_gas", "ordinal": 27, - "type_info": "Bool" + "type_info": "Numeric" }, { - "name": "bootloader_code_hash", + "name": "max_priority_fee_per_gas", "ordinal": 28, - "type_info": "Bytea" + "type_info": "Numeric" }, { - "name": "default_aa_code_hash", + "name": "effective_gas_price", "ordinal": 29, - "type_info": "Bytea" + "type_info": "Numeric" }, { - "name": "base_fee_per_gas", + "name": "miniblock_number", "ordinal": 30, - "type_info": "Numeric" + "type_info": "Int8" }, { - "name": "aux_data_hash", + "name": "l1_batch_tx_index", "ordinal": 31, - "type_info": "Bytea" - }, - { - "name": "pass_through_data_hash", - "ordinal": 32, - "type_info": "Bytea" - }, - { - "name": "meta_parameters_hash", - "ordinal": 33, - "type_info": "Bytea" - }, - { - "name": "protocol_version", - "ordinal": 34, - "type_info": "Int4" - }, - { - "name": "compressed_state_diffs", - "ordinal": 35, - "type_info": "Bytea" - }, - { - "name": "gas_per_pubdata_byte_in_block", - "ordinal": 36, "type_info": "Int4" }, { - "name": "gas_per_pubdata_limit", - "ordinal": 37, + "name": "refunded_gas", + "ordinal": 32, "type_info": "Int8" }, { - "name": "skip_proof", - "ordinal": 38, - "type_info": "Bool" - }, - { - "name": "system_logs", - "ordinal": 39, - "type_info": "ByteaArray" + "name": "l1_tx_mint", + "ordinal": 33, + "type_info": "Numeric" }, { - "name": "events_queue_commitment", - "ordinal": 40, + "name": "l1_tx_refund_recipient", + "ordinal": 34, "type_info": "Bytea" }, { - "name": "bootloader_initial_content_commitment", - "ordinal": 41, - "type_info": "Bytea" + "name": "upgrade_id", + "ordinal": 35, + "type_info": "Int4" } ], "nullable": [ false, false, + true, + true, false, + true, + true, + true, false, false, - false, - false, - false, - true, true, true, true, @@ -10977,62 +11240,40 @@ false, false, true, - true, - true, + false, true, false, false, - true, - true, - true, - true, false, true, true, true, true, true, - true, - false, - false, false, true, + true, true ], "parameters": { "Left": [ - "Bytea", - "Bytea", - "Int4", "Int8" ] } }, - "query": "SELECT number, l1_batches.timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, rollup_last_leaf_index, zkporter_is_available, l1_batches.bootloader_code_hash, l1_batches.default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, meta_parameters_hash, protocol_version, compressed_state_diffs, gas_per_pubdata_byte_in_block, gas_per_pubdata_limit, skip_proof, system_logs, events_queue_commitment, bootloader_initial_content_commitment FROM l1_batches LEFT JOIN commitments ON commitments.l1_batch_number = l1_batches.number JOIN protocol_versions ON protocol_versions.id = l1_batches.protocol_version WHERE eth_commit_tx_id IS NULL AND number != 0 AND protocol_versions.bootloader_code_hash = $1 AND protocol_versions.default_account_code_hash = $2 AND commitment IS NOT NULL AND (protocol_versions.id = $3 OR protocol_versions.upgrade_tx_hash IS NULL) AND events_queue_commitment IS NOT NULL AND bootloader_initial_content_commitment IS NOT NULL\n ORDER BY number LIMIT $4" + "query": "SELECT * FROM transactions WHERE miniblock_number = $1 ORDER BY index_in_block" }, - "f5e3c4b23fa0d0686b400b64c42cf78b2219f0cbcf1c9240b77e4132513e36ef": { + "efc83e42f5d0238b8996a5b311746527289a5a002ff659531a076680127e8eb4": { "describe": { "columns": [ { - "name": "address", + "name": "hash", "ordinal": 0, "type_info": "Bytea" - }, - { - "name": "key", - "ordinal": 1, - "type_info": "Bytea" - }, - { - "name": "value", - "ordinal": 2, - "type_info": "Bytea" } ], "nullable": [ - false, - false, - false + true ], "parameters": { "Left": [ @@ -11040,212 +11281,224 @@ ] } }, - "query": "SELECT address, key, value FROM storage_logs WHERE miniblock_number BETWEEN (SELECT MIN(number) FROM miniblocks WHERE l1_batch_number = $1) AND (SELECT MAX(number) FROM miniblocks WHERE l1_batch_number = $1) ORDER BY miniblock_number, operation_number" - }, - "f78960549e6201527454d060d5b483db032f4df80b4269a624f0309ed9a6a38e": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Text", - "Int8" - ] - } - }, - "query": "\n UPDATE witness_inputs_fri SET status ='failed', error= $1, updated_at = now()\n WHERE l1_batch_number = $2\n " + "query": "SELECT hash FROM l1_batches WHERE number = $1" }, - "fa006dda8f56abb70afc5ba8b6da631747d17ebd03a37ddb72914c4ed2aeb2f5": { + "f0c83c517fdf9696a0acf288f061bd00a993e0b2379b667738b6876e2f588043": { "describe": { "columns": [ { - "name": "trace", + "name": "l1_batch_number", "ordinal": 0, - "type_info": "Jsonb" + "type_info": "Int8" } ], "nullable": [ false ], + "parameters": { + "Left": [] + } + }, + "query": "\n UPDATE node_aggregation_witness_jobs\n SET status='queued'\n WHERE l1_batch_number IN\n (SELECT prover_jobs.l1_batch_number\n FROM prover_jobs\n JOIN node_aggregation_witness_jobs nawj ON prover_jobs.l1_batch_number = nawj.l1_batch_number\n WHERE nawj.status = 'waiting_for_proofs'\n AND prover_jobs.status = 'successful'\n AND prover_jobs.aggregation_round = 1\n GROUP BY prover_jobs.l1_batch_number, nawj.number_of_leaf_circuits\n HAVING COUNT(*) = nawj.number_of_leaf_circuits)\n RETURNING l1_batch_number;\n " + }, + "f1defa140e20b9c250d3212602dc259c0a35598c2e69d1c42746a8fab6dd8d3e": { + "describe": { + "columns": [], + "nullable": [], "parameters": { "Left": [ - "Bytea" + "Text", + "Int4", + "Int4", + "Text", + "Text" ] } }, - "query": "SELECT trace FROM transaction_traces WHERE tx_hash = $1" + "query": "\n UPDATE gpu_prover_queue\n SET instance_status = 'available', updated_at = now(), queue_free_slots = $3\n WHERE instance_host = $1::text::inet\n AND instance_port = $2\n AND instance_status = 'full'\n AND region = $4\n AND zone = $5\n " }, - "fa177254ba516ad1588f4f6960be96706d1f43c23ff1d57ba2bc7bc7148bdcac": { + "f365ada84c576a9049551a28f800ca8cb1d0096f3ba1c9edec725e11892a5a6c": { "describe": { "columns": [ { - "name": "number", + "name": "hash", "ordinal": 0, - "type_info": "Int8" + "type_info": "Bytea" }, { - "name": "timestamp", + "name": "is_priority", "ordinal": 1, - "type_info": "Int8" + "type_info": "Bool" }, { - "name": "hash", + "name": "full_fee", "ordinal": 2, - "type_info": "Bytea" + "type_info": "Numeric" }, { - "name": "l1_tx_count", + "name": "layer_2_tip_fee", "ordinal": 3, - "type_info": "Int4" + "type_info": "Numeric" }, { - "name": "l2_tx_count", + "name": "initiator_address", "ordinal": 4, - "type_info": "Int4" + "type_info": "Bytea" }, { - "name": "base_fee_per_gas", + "name": "nonce", "ordinal": 5, - "type_info": "Numeric" + "type_info": "Int8" }, { - "name": "l1_gas_price", + "name": "signature", "ordinal": 6, - "type_info": "Int8" + "type_info": "Bytea" }, { - "name": "l2_fair_gas_price", + "name": "input", "ordinal": 7, - "type_info": "Int8" + "type_info": "Bytea" }, { - "name": "bootloader_code_hash", + "name": "data", "ordinal": 8, - "type_info": "Bytea" + "type_info": "Jsonb" }, { - "name": "default_aa_code_hash", + "name": "received_at", "ordinal": 9, - "type_info": "Bytea" + "type_info": "Timestamp" }, { - "name": "protocol_version", + "name": "priority_op_id", "ordinal": 10, - "type_info": "Int4" + "type_info": "Int8" }, { - "name": "virtual_blocks", + "name": "l1_batch_number", "ordinal": 11, "type_info": "Int8" - } - ], - "nullable": [ - false, - false, - false, - false, - false, - false, - false, - false, - true, - true, - true, - false - ], - "parameters": { - "Left": [] - } - }, - "query": "SELECT number, timestamp, hash, l1_tx_count, l2_tx_count, base_fee_per_gas, l1_gas_price, l2_fair_gas_price, bootloader_code_hash, default_aa_code_hash, protocol_version, virtual_blocks\n FROM miniblocks ORDER BY number DESC LIMIT 1" - }, - "fa2b4316aaef09e96d93b70f96b129ed123951732e01d63f30b4b292d441ea39": { - "describe": { - "columns": [ + }, { - "name": "l1_batch_number", - "ordinal": 0, - "type_info": "Int8" + "name": "index_in_block", + "ordinal": 12, + "type_info": "Int4" }, { - "name": "status", - "ordinal": 1, - "type_info": "Text" + "name": "error", + "ordinal": 13, + "type_info": "Varchar" }, { - "name": "circuit_1_final_prover_job_id", - "ordinal": 2, - "type_info": "Int8" + "name": "gas_limit", + "ordinal": 14, + "type_info": "Numeric" }, { - "name": "circuit_2_final_prover_job_id", - "ordinal": 3, - "type_info": "Int8" + "name": "gas_per_storage_limit", + "ordinal": 15, + "type_info": "Numeric" }, { - "name": "circuit_3_final_prover_job_id", - "ordinal": 4, - "type_info": "Int8" + "name": "gas_per_pubdata_limit", + "ordinal": 16, + "type_info": "Numeric" }, { - "name": "circuit_4_final_prover_job_id", - "ordinal": 5, - "type_info": "Int8" + "name": "tx_format", + "ordinal": 17, + "type_info": "Int4" }, { - "name": "circuit_5_final_prover_job_id", - "ordinal": 6, - "type_info": "Int8" + "name": "created_at", + "ordinal": 18, + "type_info": "Timestamp" }, { - "name": "circuit_6_final_prover_job_id", - "ordinal": 7, - "type_info": "Int8" + "name": "updated_at", + "ordinal": 19, + "type_info": "Timestamp" }, { - "name": "circuit_7_final_prover_job_id", - "ordinal": 8, - "type_info": "Int8" + "name": "execution_info", + "ordinal": 20, + "type_info": "Jsonb" + }, + { + "name": "contract_address", + "ordinal": 21, + "type_info": "Bytea" + }, + { + "name": "in_mempool", + "ordinal": 22, + "type_info": "Bool" + }, + { + "name": "l1_block_number", + "ordinal": 23, + "type_info": "Int4" + }, + { + "name": "value", + "ordinal": 24, + "type_info": "Numeric" + }, + { + "name": "paymaster", + "ordinal": 25, + "type_info": "Bytea" + }, + { + "name": "paymaster_input", + "ordinal": 26, + "type_info": "Bytea" + }, + { + "name": "max_fee_per_gas", + "ordinal": 27, + "type_info": "Numeric" }, { - "name": "circuit_8_final_prover_job_id", - "ordinal": 9, - "type_info": "Int8" + "name": "max_priority_fee_per_gas", + "ordinal": 28, + "type_info": "Numeric" }, { - "name": "circuit_9_final_prover_job_id", - "ordinal": 10, - "type_info": "Int8" + "name": "effective_gas_price", + "ordinal": 29, + "type_info": "Numeric" }, { - "name": "circuit_10_final_prover_job_id", - "ordinal": 11, + "name": "miniblock_number", + "ordinal": 30, "type_info": "Int8" }, { - "name": "circuit_11_final_prover_job_id", - "ordinal": 12, - "type_info": "Int8" + "name": "l1_batch_tx_index", + "ordinal": 31, + "type_info": "Int4" }, { - "name": "circuit_12_final_prover_job_id", - "ordinal": 13, + "name": "refunded_gas", + "ordinal": 32, "type_info": "Int8" }, { - "name": "circuit_13_final_prover_job_id", - "ordinal": 14, - "type_info": "Int8" + "name": "l1_tx_mint", + "ordinal": 33, + "type_info": "Numeric" }, { - "name": "created_at", - "ordinal": 15, - "type_info": "Timestamp" + "name": "l1_tx_refund_recipient", + "ordinal": 34, + "type_info": "Bytea" }, { - "name": "updated_at", - "ordinal": 16, - "type_info": "Timestamp" + "name": "upgrade_id", + "ordinal": 35, + "type_info": "Int4" } ], "nullable": [ @@ -11253,9 +11506,12 @@ false, true, true, + false, true, true, true, + false, + false, true, true, true, @@ -11265,7 +11521,23 @@ true, true, false, - false + false, + false, + true, + false, + true, + false, + false, + false, + true, + true, + true, + true, + true, + false, + true, + true, + true ], "parameters": { "Left": [ @@ -11273,125 +11545,124 @@ ] } }, - "query": "\n SELECT * FROM scheduler_dependency_tracker_fri\n WHERE l1_batch_number = $1\n " + "query": "SELECT * FROM transactions WHERE l1_batch_number = $1 ORDER BY miniblock_number, index_in_block" }, - "fa33d51f8627376832b11bb174354e65e645ee2fb81564a97725518f47ae6f57": { + "f5e3c4b23fa0d0686b400b64c42cf78b2219f0cbcf1c9240b77e4132513e36ef": { "describe": { "columns": [ { - "name": "number", + "name": "address", "ordinal": 0, - "type_info": "Int8" + "type_info": "Bytea" + }, + { + "name": "key", + "ordinal": 1, + "type_info": "Bytea" + }, + { + "name": "value", + "ordinal": 2, + "type_info": "Bytea" } ], "nullable": [ - null + false, + false, + false ], "parameters": { - "Left": [] + "Left": [ + "Int8" + ] } }, - "query": "SELECT MAX(number) as \"number\" FROM l1_batches" + "query": "SELECT address, key, value FROM storage_logs WHERE miniblock_number BETWEEN (SELECT MIN(number) FROM miniblocks WHERE l1_batch_number = $1) AND (SELECT MAX(number) FROM miniblocks WHERE l1_batch_number = $1) ORDER BY miniblock_number, operation_number" }, - "fa6ef06edd04d20ddbdf22a63092222e89bb84d6093b07bda16407811d9c33c0": { + "f69542ca7e27a74d3703f359d9be33cf11c1f066c42754b92fced2af410c4558": { "describe": { "columns": [ { - "name": "id", + "name": "attempts", "ordinal": 0, - "type_info": "Int4" - }, - { - "name": "nonce", - "ordinal": 1, - "type_info": "Int8" - }, - { - "name": "raw_tx", - "ordinal": 2, - "type_info": "Bytea" - }, - { - "name": "contract_address", - "ordinal": 3, - "type_info": "Text" - }, - { - "name": "tx_type", - "ordinal": 4, - "type_info": "Text" - }, - { - "name": "gas_used", - "ordinal": 5, - "type_info": "Int8" - }, - { - "name": "created_at", - "ordinal": 6, - "type_info": "Timestamp" - }, - { - "name": "updated_at", - "ordinal": 7, - "type_info": "Timestamp" - }, - { - "name": "has_failed", - "ordinal": 8, - "type_info": "Bool" - }, - { - "name": "sent_at_block", - "ordinal": 9, - "type_info": "Int4" - }, - { - "name": "confirmed_eth_tx_history_id", - "ordinal": 10, - "type_info": "Int4" - }, - { - "name": "predicted_gas_cost", - "ordinal": 11, - "type_info": "Int8" + "type_info": "Int2" } ], "nullable": [ - false, - false, - false, - false, - false, - true, - false, - false, - false, - true, - true, false ], "parameters": { "Left": [ - "Int4" + { + "Custom": { + "kind": { + "Enum": [ + "Queued", + "ManuallySkipped", + "InProgress", + "Successful", + "Failed" + ] + }, + "name": "basic_witness_input_producer_job_status" + } + }, + "Int8", + "Time", + "Text", + { + "Custom": { + "kind": { + "Enum": [ + "Queued", + "ManuallySkipped", + "InProgress", + "Successful", + "Failed" + ] + }, + "name": "basic_witness_input_producer_job_status" + } + } ] } }, - "query": "SELECT * FROM eth_txs WHERE id = $1" + "query": "UPDATE basic_witness_input_producer_jobs SET status = $1, updated_at = now(), time_taken = $3, error = $4 WHERE l1_batch_number = $2 AND status != $5 RETURNING basic_witness_input_producer_jobs.attempts" }, - "fc52c356fd09d82da89a435d08398d9b773494491404b5c84fc14c1c1d374b59": { + "f78960549e6201527454d060d5b483db032f4df80b4269a624f0309ed9a6a38e": { "describe": { "columns": [], "nullable": [], "parameters": { "Left": [ + "Text", "Int8" ] } }, - "query": "\n UPDATE contract_verification_requests\n SET status = 'successful', updated_at = now()\n WHERE id = $1\n " + "query": "\n UPDATE witness_inputs_fri SET status ='failed', error= $1, updated_at = now()\n WHERE l1_batch_number = $2\n " + }, + "fa006dda8f56abb70afc5ba8b6da631747d17ebd03a37ddb72914c4ed2aeb2f5": { + "describe": { + "columns": [ + { + "name": "trace", + "ordinal": 0, + "type_info": "Jsonb" + } + ], + "nullable": [ + false + ], + "parameters": { + "Left": [ + "Bytea" + ] + } + }, + "query": "SELECT trace FROM transaction_traces WHERE tx_hash = $1" }, - "fd1dc8bf31a47b049faf4114ee6bd182b4fb6f7d6542739a593d4a274c05b8ab": { + "fa177254ba516ad1588f4f6960be96706d1f43c23ff1d57ba2bc7bc7148bdcac": { "describe": { "columns": [ { @@ -11405,9 +11676,9 @@ "type_info": "Int8" }, { - "name": "is_finished", + "name": "hash", "ordinal": 2, - "type_info": "Bool" + "type_info": "Bytea" }, { "name": "l1_tx_count", @@ -11420,189 +11691,257 @@ "type_info": "Int4" }, { - "name": "fee_account_address", + "name": "base_fee_per_gas", "ordinal": 5, - "type_info": "Bytea" + "type_info": "Numeric" }, { - "name": "bloom", + "name": "l1_gas_price", "ordinal": 6, - "type_info": "Bytea" + "type_info": "Int8" }, { - "name": "priority_ops_onchain_data", + "name": "l2_fair_gas_price", "ordinal": 7, - "type_info": "ByteaArray" + "type_info": "Int8" }, { - "name": "hash", + "name": "bootloader_code_hash", "ordinal": 8, "type_info": "Bytea" }, { - "name": "parent_hash", + "name": "default_aa_code_hash", "ordinal": 9, "type_info": "Bytea" }, { - "name": "commitment", + "name": "protocol_version", "ordinal": 10, - "type_info": "Bytea" + "type_info": "Int4" }, { - "name": "compressed_write_logs", + "name": "virtual_blocks", "ordinal": 11, - "type_info": "Bytea" - }, - { - "name": "compressed_contracts", - "ordinal": 12, - "type_info": "Bytea" - }, + "type_info": "Int8" + } + ], + "nullable": [ + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + false + ], + "parameters": { + "Left": [] + } + }, + "query": "SELECT number, timestamp, hash, l1_tx_count, l2_tx_count, base_fee_per_gas, l1_gas_price, l2_fair_gas_price, bootloader_code_hash, default_aa_code_hash, protocol_version, virtual_blocks\n FROM miniblocks ORDER BY number DESC LIMIT 1" + }, + "fa2b4316aaef09e96d93b70f96b129ed123951732e01d63f30b4b292d441ea39": { + "describe": { + "columns": [ { - "name": "eth_prove_tx_id", - "ordinal": 13, - "type_info": "Int4" + "name": "l1_batch_number", + "ordinal": 0, + "type_info": "Int8" }, { - "name": "eth_commit_tx_id", - "ordinal": 14, - "type_info": "Int4" + "name": "status", + "ordinal": 1, + "type_info": "Text" }, { - "name": "eth_execute_tx_id", - "ordinal": 15, - "type_info": "Int4" + "name": "circuit_1_final_prover_job_id", + "ordinal": 2, + "type_info": "Int8" }, { - "name": "merkle_root_hash", - "ordinal": 16, - "type_info": "Bytea" + "name": "circuit_2_final_prover_job_id", + "ordinal": 3, + "type_info": "Int8" }, { - "name": "l2_to_l1_logs", - "ordinal": 17, - "type_info": "ByteaArray" + "name": "circuit_3_final_prover_job_id", + "ordinal": 4, + "type_info": "Int8" }, { - "name": "l2_to_l1_messages", - "ordinal": 18, - "type_info": "ByteaArray" + "name": "circuit_4_final_prover_job_id", + "ordinal": 5, + "type_info": "Int8" }, { - "name": "used_contract_hashes", - "ordinal": 19, - "type_info": "Jsonb" + "name": "circuit_5_final_prover_job_id", + "ordinal": 6, + "type_info": "Int8" }, { - "name": "compressed_initial_writes", - "ordinal": 20, - "type_info": "Bytea" + "name": "circuit_6_final_prover_job_id", + "ordinal": 7, + "type_info": "Int8" }, { - "name": "compressed_repeated_writes", - "ordinal": 21, - "type_info": "Bytea" + "name": "circuit_7_final_prover_job_id", + "ordinal": 8, + "type_info": "Int8" }, { - "name": "l2_l1_compressed_messages", - "ordinal": 22, - "type_info": "Bytea" + "name": "circuit_8_final_prover_job_id", + "ordinal": 9, + "type_info": "Int8" }, { - "name": "l2_l1_merkle_root", - "ordinal": 23, - "type_info": "Bytea" + "name": "circuit_9_final_prover_job_id", + "ordinal": 10, + "type_info": "Int8" }, { - "name": "l1_gas_price", - "ordinal": 24, + "name": "circuit_10_final_prover_job_id", + "ordinal": 11, "type_info": "Int8" }, { - "name": "l2_fair_gas_price", - "ordinal": 25, + "name": "circuit_11_final_prover_job_id", + "ordinal": 12, "type_info": "Int8" }, { - "name": "rollup_last_leaf_index", - "ordinal": 26, + "name": "circuit_12_final_prover_job_id", + "ordinal": 13, "type_info": "Int8" }, { - "name": "zkporter_is_available", - "ordinal": 27, - "type_info": "Bool" + "name": "circuit_13_final_prover_job_id", + "ordinal": 14, + "type_info": "Int8" }, { - "name": "bootloader_code_hash", - "ordinal": 28, - "type_info": "Bytea" + "name": "created_at", + "ordinal": 15, + "type_info": "Timestamp" }, { - "name": "default_aa_code_hash", - "ordinal": 29, - "type_info": "Bytea" + "name": "updated_at", + "ordinal": 16, + "type_info": "Timestamp" + } + ], + "nullable": [ + false, + false, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + false + ], + "parameters": { + "Left": [ + "Int8" + ] + } + }, + "query": "\n SELECT * FROM scheduler_dependency_tracker_fri\n WHERE l1_batch_number = $1\n " + }, + "fa33d51f8627376832b11bb174354e65e645ee2fb81564a97725518f47ae6f57": { + "describe": { + "columns": [ + { + "name": "number", + "ordinal": 0, + "type_info": "Int8" + } + ], + "nullable": [ + null + ], + "parameters": { + "Left": [] + } + }, + "query": "SELECT MAX(number) as \"number\" FROM l1_batches" + }, + "fa6ef06edd04d20ddbdf22a63092222e89bb84d6093b07bda16407811d9c33c0": { + "describe": { + "columns": [ + { + "name": "id", + "ordinal": 0, + "type_info": "Int4" }, { - "name": "base_fee_per_gas", - "ordinal": 30, - "type_info": "Numeric" + "name": "nonce", + "ordinal": 1, + "type_info": "Int8" }, { - "name": "aux_data_hash", - "ordinal": 31, + "name": "raw_tx", + "ordinal": 2, "type_info": "Bytea" }, { - "name": "pass_through_data_hash", - "ordinal": 32, - "type_info": "Bytea" + "name": "contract_address", + "ordinal": 3, + "type_info": "Text" }, { - "name": "meta_parameters_hash", - "ordinal": 33, - "type_info": "Bytea" + "name": "tx_type", + "ordinal": 4, + "type_info": "Text" }, { - "name": "protocol_version", - "ordinal": 34, - "type_info": "Int4" + "name": "gas_used", + "ordinal": 5, + "type_info": "Int8" }, { - "name": "system_logs", - "ordinal": 35, - "type_info": "ByteaArray" + "name": "created_at", + "ordinal": 6, + "type_info": "Timestamp" }, { - "name": "compressed_state_diffs", - "ordinal": 36, - "type_info": "Bytea" + "name": "updated_at", + "ordinal": 7, + "type_info": "Timestamp" }, { - "name": "skip_proof", - "ordinal": 37, + "name": "has_failed", + "ordinal": 8, "type_info": "Bool" }, { - "name": "gas_per_pubdata_byte_in_block", - "ordinal": 38, + "name": "sent_at_block", + "ordinal": 9, "type_info": "Int4" }, { - "name": "gas_per_pubdata_limit", - "ordinal": 39, - "type_info": "Int8" - }, - { - "name": "events_queue_commitment", - "ordinal": 40, - "type_info": "Bytea" + "name": "confirmed_eth_tx_history_id", + "ordinal": 10, + "type_info": "Int4" }, { - "name": "bootloader_initial_content_commitment", - "ordinal": 41, - "type_info": "Bytea" + "name": "predicted_gas_cost", + "ordinal": 11, + "type_info": "Int8" } ], "nullable": [ @@ -11611,51 +11950,33 @@ false, false, false, - false, - false, - false, - true, - true, - true, - true, - true, - true, - true, - true, - true, - false, - false, - false, - true, - true, - true, - true, - false, - false, - true, - true, - true, true, false, - true, - true, - true, - true, false, - true, false, true, - false, true, - true + false ], + "parameters": { + "Left": [ + "Int4" + ] + } + }, + "query": "SELECT * FROM eth_txs WHERE id = $1" + }, + "fc52c356fd09d82da89a435d08398d9b773494491404b5c84fc14c1c1d374b59": { + "describe": { + "columns": [], + "nullable": [], "parameters": { "Left": [ "Int8" ] } }, - "query": "SELECT number, timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, rollup_last_leaf_index, zkporter_is_available, bootloader_code_hash, default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, meta_parameters_hash, protocol_version, system_logs, compressed_state_diffs, skip_proof, \n gas_per_pubdata_byte_in_block, gas_per_pubdata_limit, events_queue_commitment, bootloader_initial_content_commitment FROM l1_batches LEFT JOIN commitments ON commitments.l1_batch_number = l1_batches.number WHERE number = $1" + "query": "\n UPDATE contract_verification_requests\n SET status = 'successful', updated_at = now()\n WHERE id = $1\n " }, "ff7ff36b86b0e8d1cd7280aa447baef172cb054ffe7e1d742c59bf09b4f414cb": { "describe": { diff --git a/core/lib/types/src/commitment.rs b/core/lib/types/src/commitment.rs index 1e5eaff8c78..edc98ba3ce9 100644 --- a/core/lib/types/src/commitment.rs +++ b/core/lib/types/src/commitment.rs @@ -63,7 +63,6 @@ pub struct L1BatchMetadata { pub aux_data_hash: H256, pub meta_parameters_hash: H256, pub pass_through_data_hash: H256, - pub state_diffs_compressed: Vec, /// The commitment to the final events queue state after the batch is committed. /// Practically, it is a commitment to all events that happened on L2 during the batch execution. pub events_queue_commitment: Option, @@ -338,7 +337,7 @@ impl L1BatchAuxiliaryOutput { result.extend(self.system_logs_linear_hash.as_bytes()); result.extend(self.state_diffs_hash.as_bytes()); result.extend(self.bootloader_heap_hash.as_bytes()); - result.extend(self.events_state_hash.as_bytes()); + result.extend(self.events_state_queue_hash.as_bytes()); result } diff --git a/core/lib/zksync_core/src/eth_sender/tests.rs b/core/lib/zksync_core/src/eth_sender/tests.rs index 3d4f69b2de2..ce1977512a5 100644 --- a/core/lib/zksync_core/src/eth_sender/tests.rs +++ b/core/lib/zksync_core/src/eth_sender/tests.rs @@ -492,7 +492,6 @@ fn default_l1_batch_metadata() -> L1BatchMetadata { aux_data_hash: Default::default(), meta_parameters_hash: Default::default(), pass_through_data_hash: Default::default(), - state_diffs_compressed: vec![], events_queue_commitment: Some(H256::zero()), bootloader_initial_content_commitment: Some(H256::zero()), state_diffs_compressed: vec![], diff --git a/core/lib/zksync_core/src/eth_watch/tests.rs b/core/lib/zksync_core/src/eth_watch/tests.rs index 1e95df0e9ec..77dcfba07be 100644 --- a/core/lib/zksync_core/src/eth_watch/tests.rs +++ b/core/lib/zksync_core/src/eth_watch/tests.rs @@ -4,7 +4,6 @@ use std::sync::Arc; use tokio::sync::RwLock; -use db_test_macro::db_test; use zksync_contracts::{governance_contract, zksync_contract}; use zksync_dal::{ConnectionPool, StorageProcessor}; use zksync_types::protocol_version::{ProtocolUpgradeTx, ProtocolUpgradeTxCommonData}; diff --git a/core/lib/zksync_core/src/genesis.rs b/core/lib/zksync_core/src/genesis.rs index f5a2f1a7b9f..ae1c737cb44 100644 --- a/core/lib/zksync_core/src/genesis.rs +++ b/core/lib/zksync_core/src/genesis.rs @@ -386,7 +386,6 @@ pub(crate) async fn save_genesis_l1_batch_metadata( aux_data_hash: commitment_hash.aux_output, meta_parameters_hash: commitment_hash.meta_parameters, pass_through_data_hash: commitment_hash.pass_through_data, - state_diffs_compressed: vec![], events_queue_commitment: None, bootloader_initial_content_commitment: None, state_diffs_compressed: vec![], diff --git a/core/lib/zksync_core/src/state_keeper/io/seal_logic.rs b/core/lib/zksync_core/src/state_keeper/io/seal_logic.rs index b1894c63f56..eec8b973e9d 100644 --- a/core/lib/zksync_core/src/state_keeper/io/seal_logic.rs +++ b/core/lib/zksync_core/src/state_keeper/io/seal_logic.rs @@ -132,9 +132,8 @@ impl UpdatesManager { l1_gas_price: self.l1_gas_price(), l2_fair_gas_price: self.fair_l2_gas_price(), base_system_contracts_hashes: self.base_system_contract_hashes(), - system_logs: finished_batch.final_execution_state.system_logs, protocol_version: Some(self.protocol_version()), - system_logs: vec![], + system_logs: finished_batch.final_execution_state.system_logs, }; let events_queue = finished_batch diff --git a/core/lib/zksync_core/src/state_keeper/tests/mod.rs b/core/lib/zksync_core/src/state_keeper/tests/mod.rs index 7c81dd04db4..57099bb1803 100644 --- a/core/lib/zksync_core/src/state_keeper/tests/mod.rs +++ b/core/lib/zksync_core/src/state_keeper/tests/mod.rs @@ -101,7 +101,6 @@ pub(crate) fn create_l1_batch_metadata(number: u32) -> L1BatchMetadata { aux_data_hash: H256::zero(), meta_parameters_hash: H256::zero(), pass_through_data_hash: H256::zero(), - state_diffs_compressed: vec![], events_queue_commitment: Some(H256::zero()), bootloader_initial_content_commitment: Some(H256::zero()), state_diffs_compressed: vec![], From 69c7b9e9dc6cf62fc091b519e4c7527632c69eae Mon Sep 17 00:00:00 2001 From: Lyova Potyomkin Date: Fri, 27 Oct 2023 13:52:20 +0300 Subject: [PATCH 052/108] Fix some lints --- .../src/glue/types/vm/vm_partial_execution_result.rs | 1 - .../src/versions/vm_latest/implementation/logs.rs | 1 - .../src/versions/vm_latest/old_vm/event_sink.rs | 2 +- .../multivm/src/versions/vm_latest/oracles/storage.rs | 2 +- .../multivm/src/versions/vm_latest/tests/l2_blocks.rs | 10 ++++------ .../multivm/src/versions/vm_m6/vm_with_bootloader.rs | 1 - 6 files changed, 6 insertions(+), 11 deletions(-) diff --git a/core/lib/multivm/src/glue/types/vm/vm_partial_execution_result.rs b/core/lib/multivm/src/glue/types/vm/vm_partial_execution_result.rs index 9422bff367b..527d24d5b46 100644 --- a/core/lib/multivm/src/glue/types/vm/vm_partial_execution_result.rs +++ b/core/lib/multivm/src/glue/types/vm/vm_partial_execution_result.rs @@ -1,5 +1,4 @@ use crate::glue::{GlueFrom, GlueInto}; -use crate::versions::vm_latest::VmExecutionLogs; impl GlueFrom for crate::interface::VmExecutionResultAndLogs diff --git a/core/lib/multivm/src/versions/vm_latest/implementation/logs.rs b/core/lib/multivm/src/versions/vm_latest/implementation/logs.rs index 763e425e8db..c402f82f4da 100644 --- a/core/lib/multivm/src/versions/vm_latest/implementation/logs.rs +++ b/core/lib/multivm/src/versions/vm_latest/implementation/logs.rs @@ -6,7 +6,6 @@ use zksync_types::l2_to_l1_log::L2ToL1Log; use zksync_types::VmEvent; use crate::interface::types::outputs::VmExecutionLogs; -use crate::vm_latest::old_vm::events::merge_events; use crate::vm_latest::old_vm::history_recorder::HistoryMode; use crate::vm_latest::old_vm::utils::precompile_calls_count_after_timestamp; use crate::vm_latest::utils::logs; diff --git a/core/lib/multivm/src/versions/vm_latest/old_vm/event_sink.rs b/core/lib/multivm/src/versions/vm_latest/old_vm/event_sink.rs index 26cf1a81e6a..a764b10cab2 100644 --- a/core/lib/multivm/src/versions/vm_latest/old_vm/event_sink.rs +++ b/core/lib/multivm/src/versions/vm_latest/old_vm/event_sink.rs @@ -114,7 +114,7 @@ impl InMemoryEventSink { } else { // The event on the stack has not been rolled back. It must be a different event, // with a different timestamp. - assert!(el.rollback == false); + assert!(!el.rollback); stack.push(*el); // cleanup some fields diff --git a/core/lib/multivm/src/versions/vm_latest/oracles/storage.rs b/core/lib/multivm/src/versions/vm_latest/oracles/storage.rs index e091be58460..5edec608f13 100644 --- a/core/lib/multivm/src/versions/vm_latest/oracles/storage.rs +++ b/core/lib/multivm/src/versions/vm_latest/oracles/storage.rs @@ -101,7 +101,7 @@ impl StorageOracle { } fn set_initial_value(&mut self, storage_key: &StorageKey, value: U256, timestamp: Timestamp) { - if !self.initial_values.inner().contains_key(&storage_key) { + if !self.initial_values.inner().contains_key(storage_key) { self.initial_values.insert(*storage_key, value, timestamp); } } diff --git a/core/lib/multivm/src/versions/vm_latest/tests/l2_blocks.rs b/core/lib/multivm/src/versions/vm_latest/tests/l2_blocks.rs index 51ba90c4895..7b428016008 100644 --- a/core/lib/multivm/src/versions/vm_latest/tests/l2_blocks.rs +++ b/core/lib/multivm/src/versions/vm_latest/tests/l2_blocks.rs @@ -12,14 +12,12 @@ use crate::vm_latest::tests::tester::VmTesterBuilder; use crate::vm_latest::utils::l2_blocks::get_l2_block_hash_key; use crate::vm_latest::{HistoryEnabled, HistoryMode, Vm}; use zk_evm_1_3_3::aux_structures::Timestamp; -use zksync_state::{ReadStorage, WriteStorage}; -use zksync_system_constants::{ - CURRENT_VIRTUAL_BLOCK_INFO_POSITION, REQUIRED_L1_TO_L2_GAS_PER_PUBDATA_BYTE, -}; -use zksync_types::block::{pack_block_info, unpack_block_info}; +use zksync_state::WriteStorage; +use zksync_system_constants::REQUIRED_L1_TO_L2_GAS_PER_PUBDATA_BYTE; +use zksync_types::block::pack_block_info; use zksync_types::{ block::{legacy_miniblock_hash, miniblock_hash}, - get_code_key, AccountTreeId, Execute, ExecuteTransactionCommon, L1BatchNumber, L1TxCommonData, + AccountTreeId, Execute, ExecuteTransactionCommon, L1BatchNumber, L1TxCommonData, MiniblockNumber, StorageKey, Transaction, H160, H256, SYSTEM_CONTEXT_ADDRESS, SYSTEM_CONTEXT_BLOCK_INFO_POSITION, SYSTEM_CONTEXT_CURRENT_L2_BLOCK_INFO_POSITION, SYSTEM_CONTEXT_CURRENT_TX_ROLLING_HASH_POSITION, U256, diff --git a/core/lib/multivm/src/versions/vm_m6/vm_with_bootloader.rs b/core/lib/multivm/src/versions/vm_m6/vm_with_bootloader.rs index 960ef400048..35b78e92d1c 100644 --- a/core/lib/multivm/src/versions/vm_m6/vm_with_bootloader.rs +++ b/core/lib/multivm/src/versions/vm_m6/vm_with_bootloader.rs @@ -24,7 +24,6 @@ use zksync_utils::{ misc::ceil_div, }; -use crate::interface::types::outputs::VmExecutionLogs; use crate::vm_m6::storage::Storage; use crate::vm_m6::{ bootloader_state::BootloaderState, From af07c50aec1315fefefde60a5a38719c3edf6aff Mon Sep 17 00:00:00 2001 From: koloz Date: Fri, 27 Oct 2023 07:52:10 -0400 Subject: [PATCH 053/108] remove unused variable --- core/lib/multivm/src/versions/vm_latest/oracles/storage.rs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/core/lib/multivm/src/versions/vm_latest/oracles/storage.rs b/core/lib/multivm/src/versions/vm_latest/oracles/storage.rs index 5edec608f13..0cf8d785803 100644 --- a/core/lib/multivm/src/versions/vm_latest/oracles/storage.rs +++ b/core/lib/multivm/src/versions/vm_latest/oracles/storage.rs @@ -340,10 +340,6 @@ impl VmStorageOracle for StorageOracle { let to_pay_by_user = self.base_price_for_write_query(&query); let prepaid = self.prepaid_for_write(&storage_key); - let initial_value = self - .get_initial_value(&storage_key) - .unwrap_or(self.storage.read_from_storage(&storage_key)); - if to_pay_by_user > prepaid { self.paid_changes.apply_historic_record( HashMapHistoryEvent { From fc0fd7738ad204534a250f7ff5e496cfe5ac7775 Mon Sep 17 00:00:00 2001 From: Lyova Potyomkin Date: Fri, 27 Oct 2023 15:40:19 +0300 Subject: [PATCH 054/108] Fix invalid error log --- core/lib/types/src/protocol_version.rs | 5 +++-- .../eth_watch/event_processors/governance_upgrades.rs | 10 ++++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/core/lib/types/src/protocol_version.rs b/core/lib/types/src/protocol_version.rs index a7b7f45d57a..f963872d328 100644 --- a/core/lib/types/src/protocol_version.rs +++ b/core/lib/types/src/protocol_version.rs @@ -257,7 +257,7 @@ impl TryFrom for ProtocolUpgrade { let mut decoded = decode( &[ParamType::Tuple(vec![ transaction_param_type, // transaction data - ParamType::Array(Box::new(ParamType::Bytes)), //factory deps + ParamType::Array(Box::new(ParamType::Bytes)), // factory deps ParamType::FixedBytes(32), // bootloader code hash ParamType::FixedBytes(32), // default account code hash ParamType::Address, // verifier address @@ -441,7 +441,8 @@ impl TryFrom for ProtocolUpgrade { fn try_from(call: Call) -> Result { // Reuses `ProtocolUpgrade::try_from`. - // `ProtocolUpgrade::try_from` only uses 3 log fields: `data`, `block_number`, `transaction_hash`. Others can be filled with dummy values. + // `ProtocolUpgrade::try_from` only uses 3 log fields: `data`, `block_number`, `transaction_hash`. + // Others can be filled with dummy values. // We build data as `call.data` without first 4 bytes which are for selector // and append it with `bytes32(0)` for compatibility with old event data. let data = call diff --git a/core/lib/zksync_core/src/eth_watch/event_processors/governance_upgrades.rs b/core/lib/zksync_core/src/eth_watch/event_processors/governance_upgrades.rs index 2867f63cd40..b43fc6fb050 100644 --- a/core/lib/zksync_core/src/eth_watch/event_processors/governance_upgrades.rs +++ b/core/lib/zksync_core/src/eth_watch/event_processors/governance_upgrades.rs @@ -57,8 +57,14 @@ impl EventProcessor for GovernanceUpgradesEventProcessor .into_iter() .filter(|call| call.target == self.diamond_proxy_address) { - let upgrade = ProtocolUpgrade::try_from(call) - .map_err(|err| Error::LogParse(format!("{:?}", err)))?; + // We might not get an upgrade operation here, but something else instead + // (e.g. `acceptGovernor` call), so if parsing doesn't work, just skip the call. + let Ok(upgrade) = ProtocolUpgrade::try_from(call) else { + tracing::warn!( + "Failed to parse governance operation call as protocol upgrade, skipping" + ); + continue; + }; // Scheduler VK is not present in proposal event. It is hardcoded in verifier contract. let scheduler_vk_hash = if let Some(address) = upgrade.verifier_address { Some(client.scheduler_vk_hash(address).await?) From 5e7cc1ce27f445f0c504b66280b28b7e5dca8fb5 Mon Sep 17 00:00:00 2001 From: Lyova Potyomkin Date: Mon, 30 Oct 2023 13:27:36 +0200 Subject: [PATCH 055/108] Fix more lints --- .../eth_watch/event_processors/upgrades.rs | 73 +------------------ core/lib/zksync_core/src/eth_watch/mod.rs | 3 +- .../src/state_keeper/io/seal_logic.rs | 4 - 3 files changed, 3 insertions(+), 77 deletions(-) diff --git a/core/lib/zksync_core/src/eth_watch/event_processors/upgrades.rs b/core/lib/zksync_core/src/eth_watch/event_processors/upgrades.rs index a9c27b564ea..58fda990920 100644 --- a/core/lib/zksync_core/src/eth_watch/event_processors/upgrades.rs +++ b/core/lib/zksync_core/src/eth_watch/event_processors/upgrades.rs @@ -1,11 +1,6 @@ use std::convert::TryFrom; -use std::time::Instant; -use zksync_contracts::{governance_contract, zksync_contract}; use zksync_dal::StorageProcessor; -use zksync_types::{ - ethabi::Contract, protocol_version::GovernanceOperation, web3::types::Log, Address, - ProtocolUpgrade, ProtocolVersionId, H256, -}; +use zksync_types::{ethabi::Contract, web3::types::Log, ProtocolUpgrade, ProtocolVersionId, H256}; use crate::eth_watch::{ client::{Error, EthClient}, @@ -16,25 +11,18 @@ use crate::eth_watch::{ /// Responsible for saving new protocol upgrade proposals to the database. #[derive(Debug)] pub struct UpgradesEventProcessor { - diamond_proxy_address: Address, last_seen_version_id: ProtocolVersionId, upgrade_proposal_signature: H256, - execute_upgrade_short_signature: [u8; 4], } impl UpgradesEventProcessor { - pub fn new(diamond_proxy_address: Address, last_seen_version_id: ProtocolVersionId) -> Self { + pub fn new(last_seen_version_id: ProtocolVersionId) -> Self { Self { - diamond_proxy_address, last_seen_version_id, upgrade_proposal_signature: old_zksync_contract() .event("ProposeTransparentUpgrade") .expect("ProposeTransparentUpgrade event is missing in abi") .signature(), - execute_upgrade_short_signature: zksync_contract() - .function("executeUpgrade") - .unwrap() - .short_signature(), } } } @@ -171,63 +159,6 @@ pub fn old_zksync_contract() -> Contract { "name": "ProposeTransparentUpgrade", "type": "event" }, - { - "inputs": [ - { - "components": [ - { - "components": [ - { - "internalType": "address", - "name": "facet", - "type": "address" - }, - { - "internalType": "enum Diamond.Action", - "name": "action", - "type": "uint8" - }, - { - "internalType": "bool", - "name": "isFreezable", - "type": "bool" - }, - { - "internalType": "bytes4[]", - "name": "selectors", - "type": "bytes4[]" - } - ], - "internalType": "struct Diamond.FacetCut[]", - "name": "facetCuts", - "type": "tuple[]" - }, - { - "internalType": "address", - "name": "initAddress", - "type": "address" - }, - { - "internalType": "bytes", - "name": "initCalldata", - "type": "bytes" - } - ], - "internalType": "struct Diamond.DiamondCutData", - "name": "_diamondCut", - "type": "tuple" - }, - { - "internalType": "bytes32", - "name": "_proposalSalt", - "type": "bytes32" - } - ], - "name": "executeUpgrade", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { "anonymous": false, "inputs": [ diff --git a/core/lib/zksync_core/src/eth_watch/mod.rs b/core/lib/zksync_core/src/eth_watch/mod.rs index 1b22b7261e6..640f96707e4 100644 --- a/core/lib/zksync_core/src/eth_watch/mod.rs +++ b/core/lib/zksync_core/src/eth_watch/mod.rs @@ -65,8 +65,7 @@ impl EthWatch { let priority_ops_processor = PriorityOpsEventProcessor::new(state.next_expected_priority_id); - let upgrades_processor = - UpgradesEventProcessor::new(diamond_proxy_address, state.last_seen_version_id); + let upgrades_processor = UpgradesEventProcessor::new(state.last_seen_version_id); let mut event_processors: Vec>> = vec![ Box::new(priority_ops_processor), Box::new(upgrades_processor), diff --git a/core/lib/zksync_core/src/state_keeper/io/seal_logic.rs b/core/lib/zksync_core/src/state_keeper/io/seal_logic.rs index eec8b973e9d..e7d5738f6b2 100644 --- a/core/lib/zksync_core/src/state_keeper/io/seal_logic.rs +++ b/core/lib/zksync_core/src/state_keeper/io/seal_logic.rs @@ -2,10 +2,6 @@ //! It contains the logic of the block sealing, which is used by both the mempool-based and external node IO. use itertools::Itertools; -use zkevm_test_harness::witness::utils::{ - events_queue_commitment_fixed, initial_heap_content_commitment_fixed, -}; - use std::{ collections::HashMap, time::{Duration, Instant}, From 86655f242161af90a751519bdecb3001508cf5a5 Mon Sep 17 00:00:00 2001 From: Lyova Potyomkin Date: Mon, 30 Oct 2023 14:14:42 +0200 Subject: [PATCH 056/108] Fix zk compile --- core/tests/ts-integration/package.json | 4 +++- etc/ERC20/package.json | 3 +++ infrastructure/zk/src/compiler.ts | 10 ++++------ 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/core/tests/ts-integration/package.json b/core/tests/ts-integration/package.json index bc56492a7a5..a4fe50beadc 100644 --- a/core/tests/ts-integration/package.json +++ b/core/tests/ts-integration/package.json @@ -8,7 +8,9 @@ "long-running-test": "zk f jest", "fee-test": "RUN_FEE_TEST=1 zk f jest -- fees.test.ts", "api-test": "zk f jest -- api/web3.test.ts", - "contract-verification-test": "zk f jest -- api/contract-verification.test.ts" + "contract-verification-test": "zk f jest -- api/contract-verification.test.ts", + "build": "hardhat compile", + "build-yul": "hardhat run scripts/compile-yul.ts" }, "devDependencies": { "@matterlabs/hardhat-zksync-deploy": "^0.6.1", diff --git a/etc/ERC20/package.json b/etc/ERC20/package.json index ef16d6baebf..8e3113b2a19 100644 --- a/etc/ERC20/package.json +++ b/etc/ERC20/package.json @@ -6,5 +6,8 @@ "devDependencies": { "@matterlabs/hardhat-zksync-solc": "^0.3.15", "hardhat": "=2.12.4" + }, + "scripts": { + "build": "hardhat compile" } } diff --git a/infrastructure/zk/src/compiler.ts b/infrastructure/zk/src/compiler.ts index c8dca3851ad..2cb98e6ff37 100644 --- a/infrastructure/zk/src/compiler.ts +++ b/infrastructure/zk/src/compiler.ts @@ -2,15 +2,13 @@ import { Command } from 'commander'; import * as utils from './utils'; export async function compileTestContracts() { - await utils.spawn('yarn --cwd etc/contracts-test-data hardhat compile'); - process.chdir('core/tests/ts-integration'); - await utils.spawn('yarn hardhat compile'); - await utils.spawn('yarn hardhat run ./scripts/compile-yul.ts'); - process.chdir('../../..'); + await utils.spawn('yarn workspace contracts-test-data build'); + await utils.spawn('yarn ts-integration build'); + await utils.spawn('yarn ts-integration build-yul'); } export async function compileSystemContracts() { - await utils.spawn('yarn --cwd etc/ERC20 hardhat compile'); + await utils.spawn('yarn workspace zksync-erc20 build'); process.chdir('etc/system-contracts'); await utils.spawn('yarn'); From a99026e255479c6526e416cd045a28554615d918 Mon Sep 17 00:00:00 2001 From: Lyova Potyomkin Date: Mon, 30 Oct 2023 14:48:00 +0200 Subject: [PATCH 057/108] Bump era-contracts --- contracts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts b/contracts index 75764004f0a..df5f6a94161 160000 --- a/contracts +++ b/contracts @@ -1 +1 @@ -Subproject commit 75764004f0ae81642a2756d368d59b1635543d75 +Subproject commit df5f6a9416135b239584865ae60c01556b721d63 From 90d3b63fd597d1b038486a75abf9d03a6f2672fd Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Wed, 1 Nov 2023 15:20:47 +0100 Subject: [PATCH 058/108] sync with latest release --- contracts | 2 +- etc/ERC20/hardhat.config.ts | 4 +- etc/ERC20/package.json | 2 +- etc/contracts-test-data/package.json | 2 +- etc/system-contracts | 2 +- infrastructure/zk/src/compiler.ts | 4 +- yarn.lock | 193 ++++++++++++++++++++++++++- 7 files changed, 198 insertions(+), 11 deletions(-) diff --git a/contracts b/contracts index df5f6a94161..86f2436e0e9 160000 --- a/contracts +++ b/contracts @@ -1 +1 @@ -Subproject commit df5f6a9416135b239584865ae60c01556b721d63 +Subproject commit 86f2436e0e91f56eab2dfc97c2739cb1e46da120 diff --git a/etc/ERC20/hardhat.config.ts b/etc/ERC20/hardhat.config.ts index 59080306c84..7d1be0668ae 100644 --- a/etc/ERC20/hardhat.config.ts +++ b/etc/ERC20/hardhat.config.ts @@ -2,7 +2,7 @@ import '@matterlabs/hardhat-zksync-solc'; export default { zksolc: { - version: '1.3.1', + version: '1.3.14', compilerSource: 'binary', settings: { isSystem: true @@ -14,6 +14,6 @@ export default { } }, solidity: { - version: '0.8.16' + version: '0.8.20' } }; diff --git a/etc/ERC20/package.json b/etc/ERC20/package.json index 8e3113b2a19..dccc730c260 100644 --- a/etc/ERC20/package.json +++ b/etc/ERC20/package.json @@ -5,7 +5,7 @@ "license": "MIT", "devDependencies": { "@matterlabs/hardhat-zksync-solc": "^0.3.15", - "hardhat": "=2.12.4" + "hardhat": "=2.16.0" }, "scripts": { "build": "hardhat compile" diff --git a/etc/contracts-test-data/package.json b/etc/contracts-test-data/package.json index 7ba728af658..e5d278874a5 100644 --- a/etc/contracts-test-data/package.json +++ b/etc/contracts-test-data/package.json @@ -4,7 +4,7 @@ "license": "MIT", "dependencies": { "@openzeppelin/contracts": "^4.8.0", - "hardhat": "2.12.4" + "hardhat": "=2.16.0" }, "devDependencies": { "@matterlabs/hardhat-zksync-solc": "^0.3.15" diff --git a/etc/system-contracts b/etc/system-contracts index ef5e5f7a7dd..6a84befeb2e 160000 --- a/etc/system-contracts +++ b/etc/system-contracts @@ -1 +1 @@ -Subproject commit ef5e5f7a7ddbf887bfb93c32b633a15c6f604196 +Subproject commit 6a84befeb2eb804c0b934789b93dc9459147fe90 diff --git a/infrastructure/zk/src/compiler.ts b/infrastructure/zk/src/compiler.ts index 2cb98e6ff37..fadff30cdbc 100644 --- a/infrastructure/zk/src/compiler.ts +++ b/infrastructure/zk/src/compiler.ts @@ -12,9 +12,7 @@ export async function compileSystemContracts() { process.chdir('etc/system-contracts'); await utils.spawn('yarn'); - await utils.spawn('yarn hardhat compile'); - await utils.spawn('yarn preprocess'); - await utils.spawn('yarn hardhat run ./scripts/compile-yul.ts'); + await utils.spawn('yarn build'); process.chdir('../..'); } diff --git a/yarn.lock b/yarn.lock index 71596665066..97b4df4879e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1577,6 +1577,19 @@ "@nomicfoundation/ethereumjs-util" "8.0.6" ethereum-cryptography "0.1.3" +"@nomicfoundation/ethereumjs-block@5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-5.0.1.tgz#6f89664f55febbd723195b6d0974773d29ee133d" + integrity sha512-u1Yioemi6Ckj3xspygu/SfFvm8vZEO8/Yx5a1QLzi6nVU0jz3Pg2OmHKJ5w+D9Ogk1vhwRiqEBAqcb0GVhCyHw== + dependencies: + "@nomicfoundation/ethereumjs-common" "4.0.1" + "@nomicfoundation/ethereumjs-rlp" "5.0.1" + "@nomicfoundation/ethereumjs-trie" "6.0.1" + "@nomicfoundation/ethereumjs-tx" "5.0.1" + "@nomicfoundation/ethereumjs-util" "9.0.1" + ethereum-cryptography "0.1.3" + ethers "^5.7.1" + "@nomicfoundation/ethereumjs-block@5.0.2": version "5.0.2" resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-5.0.2.tgz#13a7968f5964f1697da941281b7f7943b0465d04" @@ -1608,6 +1621,25 @@ lru-cache "^5.1.1" memory-level "^1.0.0" +"@nomicfoundation/ethereumjs-blockchain@7.0.1": + version "7.0.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-7.0.1.tgz#80e0bd3535bfeb9baa29836b6f25123dab06a726" + integrity sha512-NhzndlGg829XXbqJEYrF1VeZhAwSPgsK/OB7TVrdzft3y918hW5KNd7gIZ85sn6peDZOdjBsAXIpXZ38oBYE5A== + dependencies: + "@nomicfoundation/ethereumjs-block" "5.0.1" + "@nomicfoundation/ethereumjs-common" "4.0.1" + "@nomicfoundation/ethereumjs-ethash" "3.0.1" + "@nomicfoundation/ethereumjs-rlp" "5.0.1" + "@nomicfoundation/ethereumjs-trie" "6.0.1" + "@nomicfoundation/ethereumjs-tx" "5.0.1" + "@nomicfoundation/ethereumjs-util" "9.0.1" + abstract-level "^1.0.3" + debug "^4.3.3" + ethereum-cryptography "0.1.3" + level "^8.0.0" + lru-cache "^5.1.1" + memory-level "^1.0.0" + "@nomicfoundation/ethereumjs-blockchain@7.0.2": version "7.0.2" resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-7.0.2.tgz#45323b673b3d2fab6b5008535340d1b8fea7d446" @@ -1635,6 +1667,14 @@ "@nomicfoundation/ethereumjs-util" "8.0.6" crc-32 "^1.2.0" +"@nomicfoundation/ethereumjs-common@4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.1.tgz#4702d82df35b07b5407583b54a45bf728e46a2f0" + integrity sha512-OBErlkfp54GpeiE06brBW/TTbtbuBJV5YI5Nz/aB2evTDo+KawyEzPjBlSr84z/8MFfj8wS2wxzQX1o32cev5g== + dependencies: + "@nomicfoundation/ethereumjs-util" "9.0.1" + crc-32 "^1.2.0" + "@nomicfoundation/ethereumjs-common@4.0.2": version "4.0.2" resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.2.tgz#a15d1651ca36757588fdaf2a7d381a150662a3c3" @@ -1655,6 +1695,18 @@ bigint-crypto-utils "^3.0.23" ethereum-cryptography "0.1.3" +"@nomicfoundation/ethereumjs-ethash@3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-3.0.1.tgz#65ca494d53e71e8415c9a49ef48bc921c538fc41" + integrity sha512-KDjGIB5igzWOp8Ik5I6QiRH5DH+XgILlplsHR7TEuWANZA759G6krQ6o8bvj+tRUz08YygMQu/sGd9mJ1DYT8w== + dependencies: + "@nomicfoundation/ethereumjs-block" "5.0.1" + "@nomicfoundation/ethereumjs-rlp" "5.0.1" + "@nomicfoundation/ethereumjs-util" "9.0.1" + abstract-level "^1.0.3" + bigint-crypto-utils "^3.0.23" + ethereum-cryptography "0.1.3" + "@nomicfoundation/ethereumjs-ethash@3.0.2": version "3.0.2" resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-3.0.2.tgz#da77147f806401ee996bfddfa6487500118addca" @@ -1681,6 +1733,20 @@ mcl-wasm "^0.7.1" rustbn.js "~0.2.0" +"@nomicfoundation/ethereumjs-evm@2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-2.0.1.tgz#f35681e203363f69ce2b3d3bf9f44d4e883ca1f1" + integrity sha512-oL8vJcnk0Bx/onl+TgQOQ1t/534GKFaEG17fZmwtPFeH8S5soiBYPCLUrvANOl4sCp9elYxIMzIiTtMtNNN8EQ== + dependencies: + "@ethersproject/providers" "^5.7.1" + "@nomicfoundation/ethereumjs-common" "4.0.1" + "@nomicfoundation/ethereumjs-tx" "5.0.1" + "@nomicfoundation/ethereumjs-util" "9.0.1" + debug "^4.3.3" + ethereum-cryptography "0.1.3" + mcl-wasm "^0.7.1" + rustbn.js "~0.2.0" + "@nomicfoundation/ethereumjs-evm@2.0.2": version "2.0.2" resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-2.0.2.tgz#4c2f4b84c056047102a4fa41c127454e3f0cfcf6" @@ -1700,6 +1766,11 @@ resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-4.0.3.tgz#8d9147fbd0d49e8f4c5ce729d226694a8fe03eb8" integrity sha512-DZMzB/lqPK78T6MluyXqtlRmOMcsZbTTbbEyAjo0ncaff2mqu/k8a79PBcyvpgAhWD/R59Fjq/x3ro5Lof0AtA== +"@nomicfoundation/ethereumjs-rlp@5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.1.tgz#0b30c1cf77d125d390408e391c4bb5291ef43c28" + integrity sha512-xtxrMGa8kP4zF5ApBQBtjlSbN5E2HI8m8FYgVSYAnO6ssUoY5pVPGy2H8+xdf/bmMa22Ce8nWMH3aEW8CcqMeQ== + "@nomicfoundation/ethereumjs-rlp@5.0.2": version "5.0.2" resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.2.tgz#4fee8dc58a53ac6ae87fb1fca7c15dc06c6b5dea" @@ -1718,6 +1789,18 @@ ethereum-cryptography "0.1.3" functional-red-black-tree "^1.0.1" +"@nomicfoundation/ethereumjs-statemanager@2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-2.0.1.tgz#8824a97938db4471911e2d2f140f79195def5935" + integrity sha512-B5ApMOnlruVOR7gisBaYwFX+L/AP7i/2oAahatssjPIBVDF6wTX1K7Qpa39E/nzsH8iYuL3krkYeUFIdO3EMUQ== + dependencies: + "@nomicfoundation/ethereumjs-common" "4.0.1" + "@nomicfoundation/ethereumjs-rlp" "5.0.1" + debug "^4.3.3" + ethereum-cryptography "0.1.3" + ethers "^5.7.1" + js-sdsl "^4.1.4" + "@nomicfoundation/ethereumjs-statemanager@2.0.2": version "2.0.2" resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-2.0.2.tgz#3ba4253b29b1211cafe4f9265fee5a0d780976e0" @@ -1740,6 +1823,17 @@ ethereum-cryptography "0.1.3" readable-stream "^3.6.0" +"@nomicfoundation/ethereumjs-trie@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-6.0.1.tgz#662c55f6b50659fd4b22ea9f806a7401cafb7717" + integrity sha512-A64It/IMpDVODzCgxDgAAla8jNjNtsoQZIzZUfIV5AY6Coi4nvn7+VReBn5itlxMiL2yaTlQr9TRWp3CSI6VoA== + dependencies: + "@nomicfoundation/ethereumjs-rlp" "5.0.1" + "@nomicfoundation/ethereumjs-util" "9.0.1" + "@types/readable-stream" "^2.3.13" + ethereum-cryptography "0.1.3" + readable-stream "^3.6.0" + "@nomicfoundation/ethereumjs-trie@6.0.2": version "6.0.2" resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-6.0.2.tgz#9a6dbd28482dca1bc162d12b3733acab8cd12835" @@ -1761,6 +1855,18 @@ "@nomicfoundation/ethereumjs-util" "8.0.6" ethereum-cryptography "0.1.3" +"@nomicfoundation/ethereumjs-tx@5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.1.tgz#7629dc2036b4a33c34e9f0a592b43227ef4f0c7d" + integrity sha512-0HwxUF2u2hrsIM1fsasjXvlbDOq1ZHFV2dd1yGq8CA+MEYhaxZr8OTScpVkkxqMwBcc5y83FyPl0J9MZn3kY0w== + dependencies: + "@chainsafe/ssz" "^0.9.2" + "@ethersproject/providers" "^5.7.2" + "@nomicfoundation/ethereumjs-common" "4.0.1" + "@nomicfoundation/ethereumjs-rlp" "5.0.1" + "@nomicfoundation/ethereumjs-util" "9.0.1" + ethereum-cryptography "0.1.3" + "@nomicfoundation/ethereumjs-tx@5.0.2": version "5.0.2" resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.2.tgz#117813b69c0fdc14dd0446698a64be6df71d7e56" @@ -1781,6 +1887,15 @@ "@nomicfoundation/ethereumjs-rlp" "4.0.3" ethereum-cryptography "0.1.3" +"@nomicfoundation/ethereumjs-util@9.0.1": + version "9.0.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.1.tgz#530cda8bae33f8b5020a8f199ed1d0a2ce48ec89" + integrity sha512-TwbhOWQ8QoSCFhV/DDfSmyfFIHjPjFBj957219+V3jTZYZ2rf9PmDtNOeZWAE3p3vlp8xb02XGpd0v6nTUPbsA== + dependencies: + "@chainsafe/ssz" "^0.10.0" + "@nomicfoundation/ethereumjs-rlp" "5.0.1" + ethereum-cryptography "0.1.3" + "@nomicfoundation/ethereumjs-util@9.0.2": version "9.0.2" resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.2.tgz#16bdc1bb36f333b8a3559bbb4b17dac805ce904d" @@ -1790,6 +1905,25 @@ "@nomicfoundation/ethereumjs-rlp" "5.0.2" ethereum-cryptography "0.1.3" +"@nomicfoundation/ethereumjs-vm@7.0.1": + version "7.0.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-7.0.1.tgz#7d035e0993bcad10716c8b36e61dfb87fa3ca05f" + integrity sha512-rArhyn0jPsS/D+ApFsz3yVJMQ29+pVzNZ0VJgkzAZ+7FqXSRtThl1C1prhmlVr3YNUlfpZ69Ak+RUT4g7VoOuQ== + dependencies: + "@nomicfoundation/ethereumjs-block" "5.0.1" + "@nomicfoundation/ethereumjs-blockchain" "7.0.1" + "@nomicfoundation/ethereumjs-common" "4.0.1" + "@nomicfoundation/ethereumjs-evm" "2.0.1" + "@nomicfoundation/ethereumjs-rlp" "5.0.1" + "@nomicfoundation/ethereumjs-statemanager" "2.0.1" + "@nomicfoundation/ethereumjs-trie" "6.0.1" + "@nomicfoundation/ethereumjs-tx" "5.0.1" + "@nomicfoundation/ethereumjs-util" "9.0.1" + debug "^4.3.3" + ethereum-cryptography "0.1.3" + mcl-wasm "^0.7.1" + rustbn.js "~0.2.0" + "@nomicfoundation/ethereumjs-vm@7.0.2": version "7.0.2" resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-7.0.2.tgz#3b0852cb3584df0e18c182d0672a3596c9ca95e6" @@ -7066,7 +7200,7 @@ hardhat-typechain@^0.3.3: resolved "https://registry.yarnpkg.com/hardhat-typechain/-/hardhat-typechain-0.3.5.tgz#8e50616a9da348b33bd001168c8fda9c66b7b4af" integrity sha512-w9lm8sxqTJACY+V7vijiH+NkPExnmtiQEjsV9JKD1KgMdVk2q8y+RhvU/c4B7+7b1+HylRUCxpOIvFuB3rE4+w== -hardhat@2.12.4, hardhat@=2.12.4: +hardhat@=2.12.4: version "2.12.4" resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.12.4.tgz#e539ba58bee9ba1a1ced823bfdcec0b3c5a3e70f" integrity sha512-rc9S2U/4M+77LxW1Kg7oqMMmjl81tzn5rNFARhbXKUA1am/nhfMJEujOjuKvt+ZGMiZ11PYSe8gyIpB/aRNDgw== @@ -7122,7 +7256,62 @@ hardhat@2.12.4, hardhat@=2.12.4: uuid "^8.3.2" ws "^7.4.6" -hardhat@^2.12.4: +hardhat@=2.16.0: + version "2.16.0" + resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.16.0.tgz#c5611d433416b31f6ce92f733b1f1b5236ad6230" + integrity sha512-7VQEJPQRAZdtrYUZaU9GgCpP3MBNy/pTdscARNJQMWKj5C+R7V32G5uIZKIqZ4QiqXa6CBfxxe+G+ahxUbHZHA== + dependencies: + "@ethersproject/abi" "^5.1.2" + "@metamask/eth-sig-util" "^4.0.0" + "@nomicfoundation/ethereumjs-block" "5.0.1" + "@nomicfoundation/ethereumjs-blockchain" "7.0.1" + "@nomicfoundation/ethereumjs-common" "4.0.1" + "@nomicfoundation/ethereumjs-evm" "2.0.1" + "@nomicfoundation/ethereumjs-rlp" "5.0.1" + "@nomicfoundation/ethereumjs-statemanager" "2.0.1" + "@nomicfoundation/ethereumjs-trie" "6.0.1" + "@nomicfoundation/ethereumjs-tx" "5.0.1" + "@nomicfoundation/ethereumjs-util" "9.0.1" + "@nomicfoundation/ethereumjs-vm" "7.0.1" + "@nomicfoundation/solidity-analyzer" "^0.1.0" + "@sentry/node" "^5.18.1" + "@types/bn.js" "^5.1.0" + "@types/lru-cache" "^5.1.0" + abort-controller "^3.0.0" + adm-zip "^0.4.16" + aggregate-error "^3.0.0" + ansi-escapes "^4.3.0" + chalk "^2.4.2" + chokidar "^3.4.0" + ci-info "^2.0.0" + debug "^4.1.1" + enquirer "^2.3.0" + env-paths "^2.2.0" + ethereum-cryptography "^1.0.3" + ethereumjs-abi "^0.6.8" + find-up "^2.1.0" + fp-ts "1.19.3" + fs-extra "^7.0.1" + glob "7.2.0" + immutable "^4.0.0-rc.12" + io-ts "1.10.4" + keccak "^3.0.2" + lodash "^4.17.11" + mnemonist "^0.38.0" + mocha "^10.0.0" + p-map "^4.0.0" + raw-body "^2.4.1" + resolve "1.17.0" + semver "^6.3.0" + solc "0.7.3" + source-map-support "^0.5.13" + stacktrace-parser "^0.1.10" + tsort "0.0.1" + undici "^5.14.0" + uuid "^8.3.2" + ws "^7.4.6" + +hardhat@^2.12.4, hardhat@^2.18.3: version "2.18.3" resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.18.3.tgz#8fd01348795c77086fff417a4d13c521dce28fcf" integrity sha512-JuYaTG+4ZHVjEHCW5Hn6jCHH3LpO75dtgznZpM/dLv12RcSlw/xHbeQh3FAsGahQr1epKryZcZEMHvztVZHe0g== From 1b9feae9ddb6ad3b4d7eb27b3d3e3f18d45ed2b0 Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Wed, 1 Nov 2023 19:04:39 +0100 Subject: [PATCH 059/108] update scripts to use the correct facets --- contracts | 2 +- core/tests/upgrade-test/tests/upgrade.test.ts | 2 +- .../src/l1upgrade/deployer.ts | 10 ++-- .../protocol-upgrade/src/l1upgrade/facets.ts | 53 +++++-------------- 4 files changed, 19 insertions(+), 48 deletions(-) diff --git a/contracts b/contracts index 86f2436e0e9..5c10341d1dd 160000 --- a/contracts +++ b/contracts @@ -1 +1 @@ -Subproject commit 86f2436e0e91f56eab2dfc97c2739cb1e46da120 +Subproject commit 5c10341d1ddcdf7d75b3928343ed484941ce0f42 diff --git a/core/tests/upgrade-test/tests/upgrade.test.ts b/core/tests/upgrade-test/tests/upgrade.test.ts index 42e15fd2333..80e2c96c4b4 100644 --- a/core/tests/upgrade-test/tests/upgrade.test.ts +++ b/core/tests/upgrade-test/tests/upgrade.test.ts @@ -257,7 +257,7 @@ describe('Upgrade test', function () { // Run again. utils.background( - 'cd $ZKSYNC_HOME && cargo run --bin zksync_server --release -- --components=api,tree,eth,data_fetcher,state_keeper &>> upgrade.log', + 'cd $ZKSYNC_HOME && cargo run --bin zksync_server --release -- --components=api,tree,eth,data_fetcher,state_keeper &> upgrade.log', [null, logs, logs] ); await utils.sleep(10); diff --git a/infrastructure/protocol-upgrade/src/l1upgrade/deployer.ts b/infrastructure/protocol-upgrade/src/l1upgrade/deployer.ts index e0f8765ba21..babcbb5b195 100644 --- a/infrastructure/protocol-upgrade/src/l1upgrade/deployer.ts +++ b/infrastructure/protocol-upgrade/src/l1upgrade/deployer.ts @@ -7,8 +7,7 @@ export async function callFacetDeployer( create2Address: string, nonce: string, executor: boolean, - governance: boolean, - diamondCut: boolean, + admin: boolean, getters: boolean, mailbox: boolean, file: string @@ -19,11 +18,8 @@ export async function callFacetDeployer( if (executor) { argsString += ' --executor'; } - if (governance) { - argsString += ' --governance'; - } - if (diamondCut) { - argsString += ' --diamondCut'; + if (admin) { + argsString += ' --admin'; } if (getters) { argsString += ' --getters'; diff --git a/infrastructure/protocol-upgrade/src/l1upgrade/facets.ts b/infrastructure/protocol-upgrade/src/l1upgrade/facets.ts index 2d72fbd415b..77dc913f7b9 100644 --- a/infrastructure/protocol-upgrade/src/l1upgrade/facets.ts +++ b/infrastructure/protocol-upgrade/src/l1upgrade/facets.ts @@ -13,19 +13,7 @@ async function deployAllFacets( environment: string ) { const file = getFacetsFileName(environment); - await callFacetDeployer( - l1RpcProvider, - privateKey, - gasPrice, - create2Address, - nonce, - true, - true, - true, - true, - true, - file - ); + await callFacetDeployer(l1RpcProvider, privateKey, gasPrice, create2Address, nonce, true, true, true, true, file); } async function deployFacetsAndMergeFiles( @@ -35,8 +23,7 @@ async function deployFacetsAndMergeFiles( create2Address: string, nonce: string, executor: boolean, - governance: boolean, - diamondCut: boolean, + admin: boolean, getters: boolean, mailbox: boolean, environment @@ -51,8 +38,7 @@ async function deployFacetsAndMergeFiles( create2Address, nonce, executor, - governance, - diamondCut, + admin, getters, mailbox, tmpFacetsFile @@ -77,9 +63,9 @@ async function generateFacetCuts(l1RpcProvider?: string, zksyncAddress?: string, if (gettersAddress) { gettersAddress = gettersAddress['address']; } - let diamondCutAddress = facets['DiamondCutFacet']; - if (diamondCutAddress) { - diamondCutAddress = diamondCutAddress['address']; + let adminAddress = facets['AdminFacet']; + if (adminAddress) { + adminAddress = adminAddress['address']; } let mailboxAddress = facets['MailboxFacet']; if (mailboxAddress) { @@ -89,20 +75,15 @@ async function generateFacetCuts(l1RpcProvider?: string, zksyncAddress?: string, if (executorAddress) { executorAddress = executorAddress['address']; } - let governanceAddress = facets['GovernanceFacet']; - if (governanceAddress) { - governanceAddress = governanceAddress['address']; - } await callGenerateFacetCuts( zksyncAddress, getFacetCutsFileName(environment), l1RpcProvider, - diamondCutAddress, + adminAddress, gettersAddress, mailboxAddress, - executorAddress, - governanceAddress + executorAddress ); } @@ -110,11 +91,10 @@ async function callGenerateFacetCuts( zksyncAddress: string, file: string, l1RpcProvider?: string, - diamondCutAddress?: string, + adminAddress?: string, gettersAddress?: string, mailboxAddress?: string, - executorAddress?: string, - governanceAddress?: string + executorAddress?: string ) { const cwd = process.cwd(); process.chdir(`${process.env.ZKSYNC_HOME}/contracts/ethereum/`); @@ -122,8 +102,8 @@ async function callGenerateFacetCuts( if (l1RpcProvider) { argsString += ` --l1Rpc ${l1RpcProvider}`; } - if (diamondCutAddress) { - argsString += ` --diamond-cut-facet-address ${diamondCutAddress}`; + if (adminAddress) { + argsString += ` --admin-address ${adminAddress}`; } if (gettersAddress) { argsString += ` --getters-address ${gettersAddress}`; @@ -134,9 +114,6 @@ async function callGenerateFacetCuts( if (executorAddress) { argsString += ` --executor-address ${executorAddress}`; } - if (governanceAddress) { - argsString += ` --governance-address ${governanceAddress}`; - } argsString += ` --zkSyncAddress ${zksyncAddress}`; argsString += ` --file ${file}`; @@ -196,8 +173,7 @@ command .option('--nonce ') .option('--l1rpc ') .option('--executor') - .option('--governance') - .option('--diamond-cut') + .option('--admin') .option('--getters') .option('--mailbox') .action(async (cmd) => { @@ -208,8 +184,7 @@ command cmd.create2Address, cmd.nonce, cmd.executor, - cmd.governance, - cmd.diamondCut, + cmd.admin, cmd.getters, cmd.mailbox, cmd.environment From 2fb9d43c3666db738b81a54bf70e08899972ef9c Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Thu, 2 Nov 2023 11:04:01 +0100 Subject: [PATCH 060/108] add initial protocol version --- contracts | 2 +- etc/env/base/contracts.toml | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/contracts b/contracts index df5f6a94161..9e29d7f80f6 160000 --- a/contracts +++ b/contracts @@ -1 +1 @@ -Subproject commit df5f6a9416135b239584865ae60c01556b721d63 +Subproject commit 9e29d7f80f696fe007a6a7b07ee855b03bf61a1d diff --git a/etc/env/base/contracts.toml b/etc/env/base/contracts.toml index fea581fc24f..f84718d21b6 100644 --- a/etc/env/base/contracts.toml +++ b/etc/env/base/contracts.toml @@ -46,6 +46,8 @@ SNARK_WRAPPER_VK_HASH = "0x4be443afd605a782b6e56d199df2460a025c81b3dea144e135bec # Prover that should be used at genesis. 'fri' or 'snark' PROVER_AT_GENESIS="fri" +INITIAL_PROTOCOL_VERSION=18 + [contracts.test] dummy_verifier=true easy_priority_mode=false From 293cc9da3e492dd4ae313192cc0de7cbf641d515 Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Thu, 2 Nov 2023 11:27:35 +0100 Subject: [PATCH 061/108] upd unit tests --- contracts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts b/contracts index 9e29d7f80f6..ba64dbdfa59 160000 --- a/contracts +++ b/contracts @@ -1 +1 @@ -Subproject commit 9e29d7f80f696fe007a6a7b07ee855b03bf61a1d +Subproject commit ba64dbdfa59b4986cdd004165c0192104061ccc7 From 487404c1dc11bfcf4fc7675c43480cc90abb212d Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Thu, 2 Nov 2023 11:47:38 +0100 Subject: [PATCH 062/108] fix ext node --- core/lib/commitment_utils/src/lib.rs | 26 ++++++++------------------ core/lib/types/src/protocol_version.rs | 5 +++-- 2 files changed, 11 insertions(+), 20 deletions(-) diff --git a/core/lib/commitment_utils/src/lib.rs b/core/lib/commitment_utils/src/lib.rs index 8891d294d88..b8f8784832e 100644 --- a/core/lib/commitment_utils/src/lib.rs +++ b/core/lib/commitment_utils/src/lib.rs @@ -9,28 +9,18 @@ pub fn events_queue_commitment( events_queue: &Vec, protocol_version: ProtocolVersionId, ) -> Option { - match protocol_version { - id if id.is_pre_boojum() => None, - ProtocolVersionId::Version17 | ProtocolVersionId::Version18 => { - Some(H256(events_queue_commitment_fixed(events_queue))) - } - id => unimplemented!("events_queue_commitment is not implemented for {id:?}"), - } + (!protocol_version.is_pre_boojum()).then(|| H256(events_queue_commitment_fixed(events_queue))) } pub fn bootloader_initial_content_commitment( initial_bootloader_contents: &[(usize, U256)], protocol_version: ProtocolVersionId, ) -> Option { - match protocol_version { - id if id.is_pre_boojum() => None, - ProtocolVersionId::Version17 | ProtocolVersionId::Version18 => { - let full_bootloader_memory = - expand_memory_contents(initial_bootloader_contents, USED_BOOTLOADER_MEMORY_BYTES); - Some(H256(initial_heap_content_commitment_fixed( - &full_bootloader_memory, - ))) - } - id => unimplemented!("events_queue_commitment is not implemented for {id:?}"), - } + (!protocol_version.is_pre_boojum()).then(|| { + let full_bootloader_memory = + expand_memory_contents(initial_bootloader_contents, USED_BOOTLOADER_MEMORY_BYTES); + H256(initial_heap_content_commitment_fixed( + &full_bootloader_memory, + )) + }) } diff --git a/core/lib/types/src/protocol_version.rs b/core/lib/types/src/protocol_version.rs index 6890ba73024..c6bb9f7ecaa 100644 --- a/core/lib/types/src/protocol_version.rs +++ b/core/lib/types/src/protocol_version.rs @@ -38,15 +38,16 @@ pub enum ProtocolVersionId { Version16, Version17, Version18, + Version19, } impl ProtocolVersionId { pub fn latest() -> Self { - Self::Version17 + Self::Version18 } pub fn next() -> Self { - Self::Version18 + Self::Version19 } /// Returns VM version to be used by API for this protocol version. From eb44921fcfbef0d2f4bda085ccf348f967ba8866 Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Thu, 2 Nov 2023 11:57:36 +0100 Subject: [PATCH 063/108] fix compilation --- core/lib/types/src/protocol_version.rs | 2 ++ core/lib/zksync_core/src/api_server/tx_sender/mod.rs | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/core/lib/types/src/protocol_version.rs b/core/lib/types/src/protocol_version.rs index c6bb9f7ecaa..6151332764f 100644 --- a/core/lib/types/src/protocol_version.rs +++ b/core/lib/types/src/protocol_version.rs @@ -73,6 +73,7 @@ impl ProtocolVersionId { ProtocolVersionId::Version16 => VmVersion::VmVirtualBlocksRefundsEnhancement, ProtocolVersionId::Version17 => VmVersion::VmVirtualBlocksRefundsEnhancement, ProtocolVersionId::Version18 => VmVersion::VmVirtualBlocksRefundsEnhancement, + ProtocolVersionId::Version19 => VmVersion::VmVirtualBlocksRefundsEnhancement, } } @@ -691,6 +692,7 @@ impl From for VmVersion { ProtocolVersionId::Version16 => VmVersion::VmVirtualBlocksRefundsEnhancement, ProtocolVersionId::Version17 => VmVersion::VmVirtualBlocksRefundsEnhancement, ProtocolVersionId::Version18 => VmVersion::VmVirtualBlocksRefundsEnhancement, + ProtocolVersionId::Version19 => VmVersion::VmVirtualBlocksRefundsEnhancement, } } } diff --git a/core/lib/zksync_core/src/api_server/tx_sender/mod.rs b/core/lib/zksync_core/src/api_server/tx_sender/mod.rs index 1d4ab862213..abd5b4d1191 100644 --- a/core/lib/zksync_core/src/api_server/tx_sender/mod.rs +++ b/core/lib/zksync_core/src/api_server/tx_sender/mod.rs @@ -94,7 +94,8 @@ impl MultiVMBaseSystemContracts { | ProtocolVersionId::Version15 | ProtocolVersionId::Version16 | ProtocolVersionId::Version17 - | ProtocolVersionId::Version18 => self.post_virtual_blocks_finish_upgrade_fix, + | ProtocolVersionId::Version18 + | ProtocolVersionId::Version19 => self.post_virtual_blocks_finish_upgrade_fix, } } } From 4dd00c9aaeeb3030314e5405e3c9683ac0f5d42a Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Thu, 2 Nov 2023 12:41:28 +0100 Subject: [PATCH 064/108] fix rust unit tests --- core/lib/zksync_core/src/eth_sender/tests.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/lib/zksync_core/src/eth_sender/tests.rs b/core/lib/zksync_core/src/eth_sender/tests.rs index 81837e58099..b2c1fa77e60 100644 --- a/core/lib/zksync_core/src/eth_sender/tests.rs +++ b/core/lib/zksync_core/src/eth_sender/tests.rs @@ -945,7 +945,7 @@ async fn send_operation( .save_eth_tx( &mut tester.conn.access_storage().await.unwrap(), &aggregated_operation, - true, + false, ) .await .unwrap(); From fdf8906e1b3bb89aa6900fc66db2cf3261273350 Mon Sep 17 00:00:00 2001 From: Lyova Potyomkin Date: Thu, 2 Nov 2023 15:17:08 +0200 Subject: [PATCH 065/108] Add the VmBoojumIntegration version --- core/lib/multivm/src/glue/block_properties.rs | 6 +- core/lib/multivm/src/glue/history_mode.rs | 24 +- core/lib/multivm/src/glue/init_vm.rs | 16 +- core/lib/multivm/src/glue/oracle_tools.rs | 3 +- core/lib/multivm/src/glue/tracer.rs | 21 +- .../src/glue/tracer/implementations.rs | 5 +- core/lib/multivm/src/lib.rs | 1 + core/lib/multivm/src/versions/mod.rs | 1 + .../versions/vm_refunds_enhancement/README.md | 44 + .../bootloader_state/l2_block.rs | 83 ++ .../bootloader_state/mod.rs | 8 + .../bootloader_state/snapshot.rs | 23 + .../bootloader_state/state.rs | 253 ++++++ .../bootloader_state/tx.rs | 48 ++ .../bootloader_state/utils.rs | 140 +++ .../vm_refunds_enhancement/constants.rs | 112 +++ .../implementation/bytecode.rs | 57 ++ .../implementation/execution.rs | 129 +++ .../implementation/gas.rs | 42 + .../implementation/logs.rs | 65 ++ .../implementation/mod.rs | 7 + .../implementation/snapshots.rs | 92 ++ .../implementation/statistics.rs | 68 ++ .../implementation/tx.rs | 67 ++ .../versions/vm_refunds_enhancement/mod.rs | 34 + .../old_vm/event_sink.rs | 171 ++++ .../vm_refunds_enhancement/old_vm/events.rs | 146 ++++ .../old_vm/history_recorder.rs | 809 ++++++++++++++++++ .../vm_refunds_enhancement/old_vm/memory.rs | 325 +++++++ .../vm_refunds_enhancement/old_vm/mod.rs | 8 + .../old_vm/oracles/decommitter.rs | 240 ++++++ .../old_vm/oracles/mod.rs | 8 + .../old_vm/oracles/precompile.rs | 77 ++ .../old_vm/oracles/storage.rs | 338 ++++++++ .../vm_refunds_enhancement/old_vm/utils.rs | 224 +++++ .../vm_refunds_enhancement/oracles/mod.rs | 1 + .../vm_refunds_enhancement/oracles/storage.rs | 426 +++++++++ .../tests/bootloader.rs | 54 ++ .../tests/bytecode_publishing.rs | 37 + .../tests/call_tracer.rs | 87 ++ .../tests/default_aa.rs | 70 ++ .../vm_refunds_enhancement/tests/gas_limit.rs | 47 + .../tests/get_used_contracts.rs | 104 +++ .../tests/invalid_bytecode.rs | 120 +++ .../tests/is_write_initial.rs | 42 + .../tests/l1_tx_execution.rs | 125 +++ .../vm_refunds_enhancement/tests/l2_blocks.rs | 498 +++++++++++ .../vm_refunds_enhancement/tests/mod.rs | 20 + .../tests/nonce_holder.rs | 181 ++++ .../vm_refunds_enhancement/tests/refunds.rs | 152 ++++ .../tests/require_eip712.rs | 163 ++++ .../vm_refunds_enhancement/tests/rollbacks.rs | 259 ++++++ .../tests/simple_execution.rs | 77 ++ .../tests/tester/inner_state.rs | 127 +++ .../tests/tester/mod.rs | 7 + .../tests/tester/transaction_test_info.rs | 217 +++++ .../tests/tester/vm_tester.rs | 300 +++++++ .../tests/tracing_execution_error.rs | 53 ++ .../vm_refunds_enhancement/tests/upgrade.rs | 342 ++++++++ .../vm_refunds_enhancement/tests/utils.rs | 106 +++ .../vm_refunds_enhancement/tracers/call.rs | 243 ++++++ .../tracers/default_tracers.rs | 292 +++++++ .../vm_refunds_enhancement/tracers/mod.rs | 15 + .../vm_refunds_enhancement/tracers/refunds.rs | 337 ++++++++ .../tracers/result_tracer.rs | 245 ++++++ .../tracers/storage_invocations.rs | 45 + .../vm_refunds_enhancement/tracers/traits.rs | 103 +++ .../vm_refunds_enhancement/tracers/utils.rs | 225 +++++ .../tracers/validation/error.rs | 22 + .../tracers/validation/mod.rs | 409 +++++++++ .../tracers/validation/params.rs | 18 + .../tracers/validation/types.rs | 18 + .../types/internals/mod.rs | 7 + .../types/internals/snapshot.rs | 11 + .../types/internals/transaction_data.rs | 344 ++++++++ .../types/internals/vm_state.rs | 175 ++++ .../vm_refunds_enhancement/types/l1_batch.rs | 37 + .../types/legacy_types.rs | 1 + .../vm_refunds_enhancement/types/mod.rs | 3 + .../vm_refunds_enhancement/utils/fee.rs | 29 + .../vm_refunds_enhancement/utils/l2_blocks.rs | 93 ++ .../vm_refunds_enhancement/utils/mod.rs | 5 + .../vm_refunds_enhancement/utils/overhead.rs | 349 ++++++++ .../utils/transaction_encoding.rs | 15 + .../src/versions/vm_refunds_enhancement/vm.rs | 166 ++++ core/lib/multivm/src/vm_instance.rs | 45 +- core/lib/types/src/vm_version.rs | 3 +- 87 files changed, 10544 insertions(+), 21 deletions(-) create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/README.md create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/bootloader_state/l2_block.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/bootloader_state/mod.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/bootloader_state/snapshot.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/bootloader_state/state.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/bootloader_state/tx.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/bootloader_state/utils.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/constants.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/bytecode.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/execution.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/gas.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/logs.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/mod.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/snapshots.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/statistics.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/tx.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/mod.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/old_vm/event_sink.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/old_vm/events.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/old_vm/history_recorder.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/old_vm/memory.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/old_vm/mod.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/old_vm/oracles/decommitter.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/old_vm/oracles/mod.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/old_vm/oracles/precompile.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/old_vm/oracles/storage.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/old_vm/utils.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/oracles/mod.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/oracles/storage.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/tests/bootloader.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/tests/bytecode_publishing.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/tests/call_tracer.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/tests/default_aa.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/tests/gas_limit.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/tests/get_used_contracts.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/tests/invalid_bytecode.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/tests/is_write_initial.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/tests/l1_tx_execution.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/tests/l2_blocks.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/tests/mod.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/tests/nonce_holder.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/tests/refunds.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/tests/require_eip712.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/tests/rollbacks.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/tests/simple_execution.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/tests/tester/inner_state.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/tests/tester/mod.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/tests/tester/transaction_test_info.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/tests/tester/vm_tester.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/tests/tracing_execution_error.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/tests/upgrade.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/tests/utils.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/call.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/default_tracers.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/mod.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/refunds.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/result_tracer.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/storage_invocations.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/traits.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/utils.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/validation/error.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/validation/mod.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/validation/params.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/validation/types.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/types/internals/mod.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/types/internals/snapshot.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/types/internals/transaction_data.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/types/internals/vm_state.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/types/l1_batch.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/types/legacy_types.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/types/mod.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/utils/fee.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/utils/l2_blocks.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/utils/mod.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/utils/overhead.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/utils/transaction_encoding.rs create mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/vm.rs diff --git a/core/lib/multivm/src/glue/block_properties.rs b/core/lib/multivm/src/glue/block_properties.rs index 00c7d3e160c..6f01cada09b 100644 --- a/core/lib/multivm/src/glue/block_properties.rs +++ b/core/lib/multivm/src/glue/block_properties.rs @@ -33,9 +33,11 @@ impl BlockProperties { }; Self::Vm1_3_2(inner) } - VmVersion::VmVirtualBlocks | VmVersion::VmVirtualBlocksRefundsEnhancement => { + VmVersion::VmVirtualBlocks + | VmVersion::VmVirtualBlocksRefundsEnhancement + | VmVersion::VmBoojumIntegration => { unreachable!( - "From VmVirtualBlocks we have another initialization logic, \ + "Starting from VmVirtualBlocks we have another initialization logic, \ so it's not required to have BlockProperties for it" ) } diff --git a/core/lib/multivm/src/glue/history_mode.rs b/core/lib/multivm/src/glue/history_mode.rs index 66a0c15e668..ca56836d8e8 100644 --- a/core/lib/multivm/src/glue/history_mode.rs +++ b/core/lib/multivm/src/glue/history_mode.rs @@ -6,11 +6,13 @@ pub trait HistoryMode: + GlueInto + GlueInto + GlueInto + + GlueInto { type VmM6Mode: crate::vm_m6::HistoryMode; type Vm1_3_2Mode: crate::vm_1_3_2::HistoryMode; type VmVirtualBlocksMode: crate::vm_virtual_blocks::HistoryMode; - type VmVirtualBlocksRefundsEnhancement: crate::vm_latest::HistoryMode; + type VmVirtualBlocksRefundsEnhancement: crate::vm_refunds_enhancement::HistoryMode; + type VmBoojumIntegration: crate::vm_latest::HistoryMode; } impl GlueFrom for crate::vm_m6::HistoryEnabled { @@ -31,6 +33,12 @@ impl GlueFrom for crate::vm_virtual_blocks::Hi } } +impl GlueFrom for crate::vm_refunds_enhancement::HistoryEnabled { + fn glue_from(_: crate::vm_latest::HistoryEnabled) -> Self { + Self + } +} + impl GlueFrom for crate::vm_m6::HistoryDisabled { fn glue_from(_: crate::vm_latest::HistoryDisabled) -> Self { Self @@ -49,16 +57,26 @@ impl GlueFrom for crate::vm_virtual_blocks::H } } +impl GlueFrom + for crate::vm_refunds_enhancement::HistoryDisabled +{ + fn glue_from(_: crate::vm_latest::HistoryDisabled) -> Self { + Self + } +} + impl HistoryMode for crate::vm_latest::HistoryEnabled { type VmM6Mode = crate::vm_m6::HistoryEnabled; type Vm1_3_2Mode = crate::vm_1_3_2::HistoryEnabled; type VmVirtualBlocksMode = crate::vm_virtual_blocks::HistoryEnabled; - type VmVirtualBlocksRefundsEnhancement = crate::vm_latest::HistoryEnabled; + type VmVirtualBlocksRefundsEnhancement = crate::vm_refunds_enhancement::HistoryEnabled; + type VmBoojumIntegration = crate::vm_latest::HistoryEnabled; } impl HistoryMode for crate::vm_latest::HistoryDisabled { type VmM6Mode = crate::vm_m6::HistoryDisabled; type Vm1_3_2Mode = crate::vm_1_3_2::HistoryDisabled; type VmVirtualBlocksMode = crate::vm_virtual_blocks::HistoryDisabled; - type VmVirtualBlocksRefundsEnhancement = crate::vm_latest::HistoryDisabled; + type VmVirtualBlocksRefundsEnhancement = crate::vm_refunds_enhancement::HistoryDisabled; + type VmBoojumIntegration = crate::vm_latest::HistoryDisabled; } diff --git a/core/lib/multivm/src/glue/init_vm.rs b/core/lib/multivm/src/glue/init_vm.rs index 859d33149ac..a587165daa2 100644 --- a/core/lib/multivm/src/glue/init_vm.rs +++ b/core/lib/multivm/src/glue/init_vm.rs @@ -164,7 +164,7 @@ impl VmInstance { } } VmVersion::VmVirtualBlocksRefundsEnhancement => { - let vm = crate::vm_latest::Vm::new( + let vm = crate::vm_refunds_enhancement::Vm::new( l1_batch_env.glue_into(), system_env.clone(), storage_view.clone(), @@ -177,6 +177,20 @@ impl VmInstance { last_tx_compressed_bytecodes: vec![], } } + VmVersion::VmBoojumIntegration => { + let vm = crate::vm_latest::Vm::new( + l1_batch_env.glue_into(), + system_env.clone(), + storage_view.clone(), + H::VmBoojumIntegration::default(), + ); + let vm = VmInstanceVersion::VmBoojumIntegration(Box::new(vm)); + Self { + vm, + system_env, + last_tx_compressed_bytecodes: vec![], + } + } } } } diff --git a/core/lib/multivm/src/glue/oracle_tools.rs b/core/lib/multivm/src/glue/oracle_tools.rs index 368beb909b8..02ada1b3f60 100644 --- a/core/lib/multivm/src/glue/oracle_tools.rs +++ b/core/lib/multivm/src/glue/oracle_tools.rs @@ -31,7 +31,8 @@ where } VmVersion::VmVirtualBlocks | VmVersion::VmVirtualBlocksRefundsEnhancement - | VmVersion::Vm1_3_2 => { + | VmVersion::Vm1_3_2 + | VmVersion::VmBoojumIntegration => { panic!("oracle tools for after VM1.3.2 do not exist") } } diff --git a/core/lib/multivm/src/glue/tracer.rs b/core/lib/multivm/src/glue/tracer.rs index 158a0689d10..cab66abc0b8 100644 --- a/core/lib/multivm/src/glue/tracer.rs +++ b/core/lib/multivm/src/glue/tracer.rs @@ -42,7 +42,7 @@ use crate::HistoryMode; use zksync_state::WriteStorage; pub trait MultivmTracer: - IntoLatestTracer + IntoVmVirtualBlocksTracer + IntoLatestTracer + IntoVmVirtualBlocksTracer + IntoVmRefundsEnhancementTracer { fn into_boxed(self) -> Box> where @@ -53,9 +53,7 @@ pub trait MultivmTracer: } pub trait IntoLatestTracer { - fn latest( - &self, - ) -> Box>; + fn latest(&self) -> Box>; } pub trait IntoVmVirtualBlocksTracer { @@ -64,15 +62,19 @@ pub trait IntoVmVirtualBlocksTracer { ) -> Box>; } +pub trait IntoVmRefundsEnhancementTracer { + fn vm_refunds_enhancement( + &self, + ) -> Box>; +} + impl IntoLatestTracer for T where S: WriteStorage, H: HistoryMode, - T: crate::vm_latest::VmTracer + Clone + 'static, + T: crate::vm_latest::VmTracer + Clone + 'static, { - fn latest( - &self, - ) -> Box> { + fn latest(&self) -> Box> { Box::new(self.clone()) } } @@ -81,9 +83,10 @@ impl MultivmTracer for T where S: WriteStorage, H: HistoryMode, - T: crate::vm_latest::VmTracer + T: crate::vm_latest::VmTracer + IntoLatestTracer + IntoVmVirtualBlocksTracer + + IntoVmRefundsEnhancementTracer + Clone + 'static, { diff --git a/core/lib/multivm/src/glue/tracer/implementations.rs b/core/lib/multivm/src/glue/tracer/implementations.rs index bf6f99b6532..9a0ebb65679 100644 --- a/core/lib/multivm/src/glue/tracer/implementations.rs +++ b/core/lib/multivm/src/glue/tracer/implementations.rs @@ -16,7 +16,7 @@ where } } -impl IntoVmVirtualBlocksTracer for CallTracer +impl IntoVmVirtualBlocksTracer for CallTracer where H: crate::HistoryMode + 'static, S: WriteStorage, @@ -31,8 +31,7 @@ where } } -impl IntoVmVirtualBlocksTracer - for ValidationTracer +impl IntoVmVirtualBlocksTracer for ValidationTracer where H: crate::HistoryMode + 'static, S: WriteStorage, diff --git a/core/lib/multivm/src/lib.rs b/core/lib/multivm/src/lib.rs index 2204fb4af6a..51a8b8036fb 100644 --- a/core/lib/multivm/src/lib.rs +++ b/core/lib/multivm/src/lib.rs @@ -22,4 +22,5 @@ pub use versions::vm_1_3_2; pub use versions::vm_latest; pub use versions::vm_m5; pub use versions::vm_m6; +pub use versions::vm_refunds_enhancement; pub use versions::vm_virtual_blocks; diff --git a/core/lib/multivm/src/versions/mod.rs b/core/lib/multivm/src/versions/mod.rs index cbb918d1a83..71379f6df5c 100644 --- a/core/lib/multivm/src/versions/mod.rs +++ b/core/lib/multivm/src/versions/mod.rs @@ -2,4 +2,5 @@ pub mod vm_1_3_2; pub mod vm_latest; pub mod vm_m5; pub mod vm_m6; +pub mod vm_refunds_enhancement; pub mod vm_virtual_blocks; diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/README.md b/core/lib/multivm/src/versions/vm_refunds_enhancement/README.md new file mode 100644 index 00000000000..d515df0dfc6 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/README.md @@ -0,0 +1,44 @@ +# VM Crate + +This crate contains code that interacts with the VM (Virtual Machine). The VM itself is in a separate repository +[era-zk_evm][zk_evm_repo_ext]. + +## VM Dependencies + +The VM relies on several subcomponents or traits, such as Memory and Storage. These traits are defined in the `zk_evm` +repository, while their implementations can be found in this crate, such as the storage implementation in +`oracles/storage.rs` and the Memory implementation in `memory.rs`. + +Many of these implementations also support easy rollbacks and history, which is useful when creating a block with +multiple transactions and needing to return the VM to a previous state if a transaction doesn't fit. + +## Running the VM + +To interact with the VM, you must initialize it with `L1BatchEnv`, which represents the initial parameters of the batch, +`SystemEnv`, that represents the system parameters, and a reference to the Storage. To execute a transaction, you have +to push the transaction into the bootloader memory and call the `execute_next_transaction` method. + +### Tracers + +The VM implementation allows for the addition of `Tracers`, which are activated before and after each instruction. This +provides a more in-depth look into the VM, collecting detailed debugging information and logs. More details can be found +in the `tracer/` directory. + +This VM also supports custom tracers. You can call the `inspect_next_transaction` method with a custom tracer and +receive the result of the execution. + +### Bootloader + +In the context of zkEVM, we usually think about transactions. However, from the VM's perspective, it runs a single +program called the bootloader, which internally processes multiple transactions. + +### Rollbacks + +The `VMInstance` in `vm.rs` allows for easy rollbacks. You can save the current state at any moment by calling +`make_snapshot()` and return to that state using `rollback_to_the_latest_snapshot()`. + +This rollback affects all subcomponents, such as memory, storage, and events, and is mainly used if a transaction +doesn't fit in a block. + +[zk_evm_repo]: https://github.com/matter-labs/zk_evm 'internal zk EVM repo' +[zk_evm_repo_ext]: https://github.com/matter-labs/era-zk_evm 'external zk EVM repo' diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/bootloader_state/l2_block.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/bootloader_state/l2_block.rs new file mode 100644 index 00000000000..56b5b1b6b39 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/bootloader_state/l2_block.rs @@ -0,0 +1,83 @@ +use std::cmp::Ordering; +use zksync_types::{MiniblockNumber, H256}; +use zksync_utils::concat_and_hash; + +use crate::interface::{L2Block, L2BlockEnv}; +use crate::vm_refunds_enhancement::bootloader_state::snapshot::L2BlockSnapshot; +use crate::vm_refunds_enhancement::bootloader_state::tx::BootloaderTx; +use crate::vm_refunds_enhancement::utils::l2_blocks::l2_block_hash; + +const EMPTY_TXS_ROLLING_HASH: H256 = H256::zero(); + +#[derive(Debug, Clone)] +pub(crate) struct BootloaderL2Block { + pub(crate) number: u32, + pub(crate) timestamp: u64, + pub(crate) txs_rolling_hash: H256, // The rolling hash of all the transactions in the miniblock + pub(crate) prev_block_hash: H256, + // Number of the first l2 block tx in l1 batch + pub(crate) first_tx_index: usize, + pub(crate) max_virtual_blocks_to_create: u32, + pub(super) txs: Vec, +} + +impl BootloaderL2Block { + pub(crate) fn new(l2_block: L2BlockEnv, first_tx_place: usize) -> Self { + Self { + number: l2_block.number, + timestamp: l2_block.timestamp, + txs_rolling_hash: EMPTY_TXS_ROLLING_HASH, + prev_block_hash: l2_block.prev_block_hash, + first_tx_index: first_tx_place, + max_virtual_blocks_to_create: l2_block.max_virtual_blocks_to_create, + txs: vec![], + } + } + + pub(super) fn push_tx(&mut self, tx: BootloaderTx) { + self.update_rolling_hash(tx.hash); + self.txs.push(tx) + } + + pub(crate) fn get_hash(&self) -> H256 { + l2_block_hash( + MiniblockNumber(self.number), + self.timestamp, + self.prev_block_hash, + self.txs_rolling_hash, + ) + } + + fn update_rolling_hash(&mut self, tx_hash: H256) { + self.txs_rolling_hash = concat_and_hash(self.txs_rolling_hash, tx_hash) + } + + pub(crate) fn interim_version(&self) -> BootloaderL2Block { + let mut interim = self.clone(); + interim.max_virtual_blocks_to_create = 0; + interim + } + + pub(crate) fn make_snapshot(&self) -> L2BlockSnapshot { + L2BlockSnapshot { + txs_rolling_hash: self.txs_rolling_hash, + txs_len: self.txs.len(), + } + } + + pub(crate) fn apply_snapshot(&mut self, snapshot: L2BlockSnapshot) { + self.txs_rolling_hash = snapshot.txs_rolling_hash; + match self.txs.len().cmp(&snapshot.txs_len) { + Ordering::Greater => self.txs.truncate(snapshot.txs_len), + Ordering::Less => panic!("Applying snapshot from future is not supported"), + Ordering::Equal => {} + } + } + pub(crate) fn l2_block(&self) -> L2Block { + L2Block { + number: self.number, + timestamp: self.timestamp, + hash: self.get_hash(), + } + } +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/bootloader_state/mod.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/bootloader_state/mod.rs new file mode 100644 index 00000000000..73830de2759 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/bootloader_state/mod.rs @@ -0,0 +1,8 @@ +mod l2_block; +mod snapshot; +mod state; +mod tx; + +pub(crate) mod utils; +pub(crate) use snapshot::BootloaderStateSnapshot; +pub use state::BootloaderState; diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/bootloader_state/snapshot.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/bootloader_state/snapshot.rs new file mode 100644 index 00000000000..e417a3b9ee6 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/bootloader_state/snapshot.rs @@ -0,0 +1,23 @@ +use zksync_types::H256; + +#[derive(Debug, Clone)] +pub(crate) struct BootloaderStateSnapshot { + /// ID of the next transaction to be executed. + pub(crate) tx_to_execute: usize, + /// Stored l2 blocks in bootloader memory + pub(crate) l2_blocks_len: usize, + /// Snapshot of the last l2 block. Only this block could be changed during the rollback + pub(crate) last_l2_block: L2BlockSnapshot, + /// The number of 32-byte words spent on the already included compressed bytecodes. + pub(crate) compressed_bytecodes_encoding: usize, + /// Current offset of the free space in the bootloader memory. + pub(crate) free_tx_offset: usize, +} + +#[derive(Debug, Clone)] +pub(crate) struct L2BlockSnapshot { + /// The rolling hash of all the transactions in the miniblock + pub(crate) txs_rolling_hash: H256, + /// The number of transactions in the last l2 block + pub(crate) txs_len: usize, +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/bootloader_state/state.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/bootloader_state/state.rs new file mode 100644 index 00000000000..4c8d48bc1a7 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/bootloader_state/state.rs @@ -0,0 +1,253 @@ +use crate::vm_refunds_enhancement::bootloader_state::l2_block::BootloaderL2Block; +use crate::vm_refunds_enhancement::bootloader_state::snapshot::BootloaderStateSnapshot; +use crate::vm_refunds_enhancement::bootloader_state::utils::{apply_l2_block, apply_tx_to_memory}; +use std::cmp::Ordering; +use zksync_types::{L2ChainId, U256}; +use zksync_utils::bytecode::CompressedBytecodeInfo; + +use crate::interface::{BootloaderMemory, L2BlockEnv, TxExecutionMode}; +use crate::vm_refunds_enhancement::{ + constants::TX_DESCRIPTION_OFFSET, types::internals::TransactionData, + utils::l2_blocks::assert_next_block, +}; + +use super::tx::BootloaderTx; +/// Intermediate bootloader-related VM state. +/// +/// Required to process transactions one by one (since we intercept the VM execution to execute +/// transactions and add new ones to the memory on the fly). +/// Keeps tracking everything related to the bootloader memory and can restore the whole memory. +/// +/// +/// Serves two purposes: +/// - Tracks where next tx should be pushed to in the bootloader memory. +/// - Tracks which transaction should be executed next. +#[derive(Debug, Clone)] +pub struct BootloaderState { + /// ID of the next transaction to be executed. + /// See the structure doc-comment for a better explanation of purpose. + tx_to_execute: usize, + /// Stored txs in bootloader memory + l2_blocks: Vec, + /// The number of 32-byte words spent on the already included compressed bytecodes. + compressed_bytecodes_encoding: usize, + /// Initial memory of bootloader + initial_memory: BootloaderMemory, + /// Mode of txs for execution, it can be changed once per vm lunch + execution_mode: TxExecutionMode, + /// Current offset of the free space in the bootloader memory. + free_tx_offset: usize, +} + +impl BootloaderState { + pub(crate) fn new( + execution_mode: TxExecutionMode, + initial_memory: BootloaderMemory, + first_l2_block: L2BlockEnv, + ) -> Self { + let l2_block = BootloaderL2Block::new(first_l2_block, 0); + Self { + tx_to_execute: 0, + compressed_bytecodes_encoding: 0, + l2_blocks: vec![l2_block], + initial_memory, + execution_mode, + free_tx_offset: 0, + } + } + + pub(crate) fn set_refund_for_current_tx(&mut self, refund: u32) { + let current_tx = self.current_tx(); + // We can't set the refund for the latest tx or using the latest l2_block for fining tx + // Because we can fill the whole batch first and then execute txs one by one + let tx = self.find_tx_mut(current_tx); + tx.refund = refund; + } + + pub(crate) fn start_new_l2_block(&mut self, l2_block: L2BlockEnv) { + let last_block = self.last_l2_block(); + assert!( + !last_block.txs.is_empty(), + "Can not create new miniblocks on top of empty ones" + ); + assert_next_block(&last_block.l2_block(), &l2_block); + self.push_l2_block(l2_block); + } + + /// This method bypass sanity checks and should be used carefully. + pub(crate) fn push_l2_block(&mut self, l2_block: L2BlockEnv) { + self.l2_blocks + .push(BootloaderL2Block::new(l2_block, self.free_tx_index())) + } + + pub(crate) fn push_tx( + &mut self, + tx: TransactionData, + predefined_overhead: u32, + predefined_refund: u32, + compressed_bytecodes: Vec, + trusted_ergs_limit: U256, + chain_id: L2ChainId, + ) -> BootloaderMemory { + let tx_offset = self.free_tx_offset(); + let bootloader_tx = BootloaderTx::new( + tx, + predefined_refund, + predefined_overhead, + trusted_ergs_limit, + compressed_bytecodes, + tx_offset, + chain_id, + ); + + let mut memory = vec![]; + let compressed_bytecode_size = apply_tx_to_memory( + &mut memory, + &bootloader_tx, + self.last_l2_block(), + self.free_tx_index(), + self.free_tx_offset(), + self.compressed_bytecodes_encoding, + self.execution_mode, + self.last_l2_block().txs.is_empty(), + ); + self.compressed_bytecodes_encoding += compressed_bytecode_size; + self.free_tx_offset = tx_offset + bootloader_tx.encoded_len(); + self.last_mut_l2_block().push_tx(bootloader_tx); + memory + } + + pub(crate) fn last_l2_block(&self) -> &BootloaderL2Block { + self.l2_blocks.last().unwrap() + } + + fn last_mut_l2_block(&mut self) -> &mut BootloaderL2Block { + self.l2_blocks.last_mut().unwrap() + } + + /// Apply all bootloader transaction to the initial memory + pub(crate) fn bootloader_memory(&self) -> BootloaderMemory { + let mut initial_memory = self.initial_memory.clone(); + let mut offset = 0; + let mut compressed_bytecodes_offset = 0; + let mut tx_index = 0; + for l2_block in &self.l2_blocks { + for (num, tx) in l2_block.txs.iter().enumerate() { + let compressed_bytecodes_size = apply_tx_to_memory( + &mut initial_memory, + tx, + l2_block, + tx_index, + offset, + compressed_bytecodes_offset, + self.execution_mode, + num == 0, + ); + offset += tx.encoded_len(); + compressed_bytecodes_offset += compressed_bytecodes_size; + tx_index += 1; + } + if l2_block.txs.is_empty() { + apply_l2_block(&mut initial_memory, l2_block, tx_index) + } + } + initial_memory + } + + fn free_tx_offset(&self) -> usize { + self.free_tx_offset + } + + pub(crate) fn free_tx_index(&self) -> usize { + let l2_block = self.last_l2_block(); + l2_block.first_tx_index + l2_block.txs.len() + } + + pub(crate) fn get_last_tx_compressed_bytecodes(&self) -> Vec { + if let Some(tx) = self.last_l2_block().txs.last() { + tx.compressed_bytecodes.clone() + } else { + vec![] + } + } + + /// Returns the id of current tx + pub(crate) fn current_tx(&self) -> usize { + self.tx_to_execute + .checked_sub(1) + .expect("There are no current tx to execute") + } + + /// Returns the ID of the next transaction to be executed and increments the local transaction counter. + pub(crate) fn move_tx_to_execute_pointer(&mut self) -> usize { + assert!( + self.tx_to_execute < self.free_tx_index(), + "Attempt to execute tx that was not pushed to memory. Tx ID: {}, txs in bootloader: {}", + self.tx_to_execute, + self.free_tx_index() + ); + + let old = self.tx_to_execute; + self.tx_to_execute += 1; + old + } + + /// Get offset of tx description + pub(crate) fn get_tx_description_offset(&self, tx_index: usize) -> usize { + TX_DESCRIPTION_OFFSET + self.find_tx(tx_index).offset + } + + pub(crate) fn insert_fictive_l2_block(&mut self) -> &BootloaderL2Block { + let block = self.last_l2_block(); + if !block.txs.is_empty() { + self.start_new_l2_block(L2BlockEnv { + timestamp: block.timestamp + 1, + number: block.number + 1, + prev_block_hash: block.get_hash(), + max_virtual_blocks_to_create: 1, + }); + } + self.last_l2_block() + } + + fn find_tx(&self, tx_index: usize) -> &BootloaderTx { + for block in self.l2_blocks.iter().rev() { + if tx_index >= block.first_tx_index { + return &block.txs[tx_index - block.first_tx_index]; + } + } + panic!("The tx with this index must exist") + } + + fn find_tx_mut(&mut self, tx_index: usize) -> &mut BootloaderTx { + for block in self.l2_blocks.iter_mut().rev() { + if tx_index >= block.first_tx_index { + return &mut block.txs[tx_index - block.first_tx_index]; + } + } + panic!("The tx with this index must exist") + } + + pub(crate) fn get_snapshot(&self) -> BootloaderStateSnapshot { + BootloaderStateSnapshot { + tx_to_execute: self.tx_to_execute, + l2_blocks_len: self.l2_blocks.len(), + last_l2_block: self.last_l2_block().make_snapshot(), + compressed_bytecodes_encoding: self.compressed_bytecodes_encoding, + free_tx_offset: self.free_tx_offset, + } + } + + pub(crate) fn apply_snapshot(&mut self, snapshot: BootloaderStateSnapshot) { + self.tx_to_execute = snapshot.tx_to_execute; + self.compressed_bytecodes_encoding = snapshot.compressed_bytecodes_encoding; + self.free_tx_offset = snapshot.free_tx_offset; + match self.l2_blocks.len().cmp(&snapshot.l2_blocks_len) { + Ordering::Greater => self.l2_blocks.truncate(snapshot.l2_blocks_len), + Ordering::Less => panic!("Applying snapshot from future is not supported"), + Ordering::Equal => {} + } + self.last_mut_l2_block() + .apply_snapshot(snapshot.last_l2_block); + } +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/bootloader_state/tx.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/bootloader_state/tx.rs new file mode 100644 index 00000000000..c1551dcf6cd --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/bootloader_state/tx.rs @@ -0,0 +1,48 @@ +use crate::vm_refunds_enhancement::types::internals::TransactionData; +use zksync_types::{L2ChainId, H256, U256}; +use zksync_utils::bytecode::CompressedBytecodeInfo; + +/// Information about tx necessary for execution in bootloader. +#[derive(Debug, Clone)] +pub(super) struct BootloaderTx { + pub(super) hash: H256, + /// Encoded transaction + pub(super) encoded: Vec, + /// Compressed bytecodes, which has been published during this transaction + pub(super) compressed_bytecodes: Vec, + /// Refunds for this transaction + pub(super) refund: u32, + /// Gas overhead + pub(super) gas_overhead: u32, + /// Gas Limit for this transaction. It can be different from the gaslimit inside the transaction + pub(super) trusted_gas_limit: U256, + /// Offset of the tx in bootloader memory + pub(super) offset: usize, +} + +impl BootloaderTx { + pub(super) fn new( + tx: TransactionData, + predefined_refund: u32, + predefined_overhead: u32, + trusted_gas_limit: U256, + compressed_bytecodes: Vec, + offset: usize, + chain_id: L2ChainId, + ) -> Self { + let hash = tx.tx_hash(chain_id); + Self { + hash, + encoded: tx.into_tokens(), + compressed_bytecodes, + refund: predefined_refund, + gas_overhead: predefined_overhead, + trusted_gas_limit, + offset, + } + } + + pub(super) fn encoded_len(&self) -> usize { + self.encoded.len() + } +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/bootloader_state/utils.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/bootloader_state/utils.rs new file mode 100644 index 00000000000..dbb3fa0dff2 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/bootloader_state/utils.rs @@ -0,0 +1,140 @@ +use zksync_types::U256; +use zksync_utils::bytecode::CompressedBytecodeInfo; +use zksync_utils::{bytes_to_be_words, h256_to_u256}; + +use crate::interface::{BootloaderMemory, TxExecutionMode}; +use crate::vm_refunds_enhancement::bootloader_state::l2_block::BootloaderL2Block; +use crate::vm_refunds_enhancement::constants::{ + BOOTLOADER_TX_DESCRIPTION_OFFSET, BOOTLOADER_TX_DESCRIPTION_SIZE, COMPRESSED_BYTECODES_OFFSET, + OPERATOR_REFUNDS_OFFSET, TX_DESCRIPTION_OFFSET, TX_OPERATOR_L2_BLOCK_INFO_OFFSET, + TX_OPERATOR_SLOTS_PER_L2_BLOCK_INFO, TX_OVERHEAD_OFFSET, TX_TRUSTED_GAS_LIMIT_OFFSET, +}; + +use super::tx::BootloaderTx; + +pub(super) fn get_memory_for_compressed_bytecodes( + compressed_bytecodes: &[CompressedBytecodeInfo], +) -> Vec { + let memory_addition: Vec<_> = compressed_bytecodes + .iter() + .flat_map(|x| x.encode_call()) + .collect(); + + bytes_to_be_words(memory_addition) +} + +#[allow(clippy::too_many_arguments)] +pub(super) fn apply_tx_to_memory( + memory: &mut BootloaderMemory, + bootloader_tx: &BootloaderTx, + bootloader_l2_block: &BootloaderL2Block, + tx_index: usize, + tx_offset: usize, + compressed_bytecodes_size: usize, + execution_mode: TxExecutionMode, + start_new_l2_block: bool, +) -> usize { + let bootloader_description_offset = + BOOTLOADER_TX_DESCRIPTION_OFFSET + BOOTLOADER_TX_DESCRIPTION_SIZE * tx_index; + let tx_description_offset = TX_DESCRIPTION_OFFSET + tx_offset; + + memory.push(( + bootloader_description_offset, + assemble_tx_meta(execution_mode, true), + )); + + memory.push(( + bootloader_description_offset + 1, + U256::from_big_endian(&(32 * tx_description_offset).to_be_bytes()), + )); + + let refund_offset = OPERATOR_REFUNDS_OFFSET + tx_index; + memory.push((refund_offset, bootloader_tx.refund.into())); + + let overhead_offset = TX_OVERHEAD_OFFSET + tx_index; + memory.push((overhead_offset, bootloader_tx.gas_overhead.into())); + + let trusted_gas_limit_offset = TX_TRUSTED_GAS_LIMIT_OFFSET + tx_index; + memory.push((trusted_gas_limit_offset, bootloader_tx.trusted_gas_limit)); + + memory.extend( + (tx_description_offset..tx_description_offset + bootloader_tx.encoded_len()) + .zip(bootloader_tx.encoded.clone()), + ); + + let bootloader_l2_block = if start_new_l2_block { + bootloader_l2_block.clone() + } else { + bootloader_l2_block.interim_version() + }; + apply_l2_block(memory, &bootloader_l2_block, tx_index); + + // Note, +1 is moving for poitner + let compressed_bytecodes_offset = COMPRESSED_BYTECODES_OFFSET + 1 + compressed_bytecodes_size; + + let encoded_compressed_bytecodes = + get_memory_for_compressed_bytecodes(&bootloader_tx.compressed_bytecodes); + let compressed_bytecodes_encoding = encoded_compressed_bytecodes.len(); + + memory.extend( + (compressed_bytecodes_offset + ..compressed_bytecodes_offset + encoded_compressed_bytecodes.len()) + .zip(encoded_compressed_bytecodes), + ); + compressed_bytecodes_encoding +} + +pub(crate) fn apply_l2_block( + memory: &mut BootloaderMemory, + bootloader_l2_block: &BootloaderL2Block, + txs_index: usize, +) { + // Since L2 block infos start from the TX_OPERATOR_L2_BLOCK_INFO_OFFSET and each + // L2 block info takes TX_OPERATOR_SLOTS_PER_L2_BLOCK_INFO slots, the position where the L2 block info + // for this transaction needs to be written is: + + let block_position = + TX_OPERATOR_L2_BLOCK_INFO_OFFSET + txs_index * TX_OPERATOR_SLOTS_PER_L2_BLOCK_INFO; + + memory.extend(vec![ + (block_position, bootloader_l2_block.number.into()), + (block_position + 1, bootloader_l2_block.timestamp.into()), + ( + block_position + 2, + h256_to_u256(bootloader_l2_block.prev_block_hash), + ), + ( + block_position + 3, + bootloader_l2_block.max_virtual_blocks_to_create.into(), + ), + ]) +} + +/// Forms a word that contains meta information for the transaction execution. +/// +/// # Current layout +/// +/// - 0 byte (MSB): server-side tx execution mode +/// In the server, we may want to execute different parts of the transaction in the different context +/// For example, when checking validity, we don't want to actually execute transaction and have side effects. +/// +/// Possible values: +/// - 0x00: validate & execute (normal mode) +/// - 0x02: execute but DO NOT validate +/// +/// - 31 byte (LSB): whether to execute transaction or not (at all). +pub(super) fn assemble_tx_meta(execution_mode: TxExecutionMode, execute_tx: bool) -> U256 { + let mut output = [0u8; 32]; + + // Set 0 byte (execution mode) + output[0] = match execution_mode { + TxExecutionMode::VerifyExecute => 0x00, + TxExecutionMode::EstimateFee { .. } => 0x00, + TxExecutionMode::EthCall { .. } => 0x02, + }; + + // Set 31 byte (marker for tx execution) + output[31] = u8::from(execute_tx); + + U256::from_big_endian(&output) +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/constants.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/constants.rs new file mode 100644 index 00000000000..ef3b09299fd --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/constants.rs @@ -0,0 +1,112 @@ +use zk_evm_1_3_3::aux_structures::MemoryPage; + +use zksync_system_constants::{ + L1_GAS_PER_PUBDATA_BYTE, MAX_L2_TX_GAS_LIMIT, MAX_NEW_FACTORY_DEPS, MAX_TXS_IN_BLOCK, + USED_BOOTLOADER_MEMORY_WORDS, +}; + +pub use zk_evm_1_3_3::zkevm_opcode_defs::system_params::{ + ERGS_PER_CIRCUIT, INITIAL_STORAGE_WRITE_PUBDATA_BYTES, MAX_PUBDATA_PER_BLOCK, +}; + +use crate::vm_refunds_enhancement::old_vm::utils::heap_page_from_base; + +/// Max cycles for a single transaction. +pub const MAX_CYCLES_FOR_TX: u32 = u32::MAX; + +/// The first 32 slots are reserved for debugging purposes +pub(crate) const DEBUG_SLOTS_OFFSET: usize = 8; +pub(crate) const DEBUG_FIRST_SLOTS: usize = 32; +/// The next 33 slots are reserved for dealing with the paymaster context (1 slot for storing length + 32 slots for storing the actual context). +pub(crate) const PAYMASTER_CONTEXT_SLOTS: usize = 32 + 1; +/// The next PAYMASTER_CONTEXT_SLOTS + 7 slots free slots are needed before each tx, so that the +/// postOp operation could be encoded correctly. +pub(crate) const MAX_POSTOP_SLOTS: usize = PAYMASTER_CONTEXT_SLOTS + 7; + +/// Slots used to store the current L2 transaction's hash and the hash recommended +/// to be used for signing the transaction's content. +const CURRENT_L2_TX_HASHES_SLOTS: usize = 2; + +/// Slots used to store the calldata for the KnownCodesStorage to mark new factory +/// dependencies as known ones. Besides the slots for the new factory dependencies themselves +/// another 4 slots are needed for: selector, marker of whether the user should pay for the pubdata, +/// the offset for the encoding of the array as well as the length of the array. +const NEW_FACTORY_DEPS_RESERVED_SLOTS: usize = MAX_NEW_FACTORY_DEPS + 4; + +/// The operator can provide for each transaction the proposed minimal refund +pub(crate) const OPERATOR_REFUNDS_SLOTS: usize = MAX_TXS_IN_BLOCK; + +pub(crate) const OPERATOR_REFUNDS_OFFSET: usize = DEBUG_SLOTS_OFFSET + + DEBUG_FIRST_SLOTS + + PAYMASTER_CONTEXT_SLOTS + + CURRENT_L2_TX_HASHES_SLOTS + + NEW_FACTORY_DEPS_RESERVED_SLOTS; + +pub(crate) const TX_OVERHEAD_OFFSET: usize = OPERATOR_REFUNDS_OFFSET + OPERATOR_REFUNDS_SLOTS; +pub(crate) const TX_OVERHEAD_SLOTS: usize = MAX_TXS_IN_BLOCK; + +pub(crate) const TX_TRUSTED_GAS_LIMIT_OFFSET: usize = TX_OVERHEAD_OFFSET + TX_OVERHEAD_SLOTS; +pub(crate) const TX_TRUSTED_GAS_LIMIT_SLOTS: usize = MAX_TXS_IN_BLOCK; + +pub(crate) const COMPRESSED_BYTECODES_SLOTS: usize = 32768; + +pub(crate) const BOOTLOADER_TX_DESCRIPTION_OFFSET: usize = + COMPRESSED_BYTECODES_OFFSET + COMPRESSED_BYTECODES_SLOTS; + +/// The size of the bootloader memory dedicated to the encodings of transactions +pub const BOOTLOADER_TX_ENCODING_SPACE: u32 = + (USED_BOOTLOADER_MEMORY_WORDS - TX_DESCRIPTION_OFFSET - MAX_TXS_IN_BLOCK) as u32; + +// Size of the bootloader tx description in words +pub(crate) const BOOTLOADER_TX_DESCRIPTION_SIZE: usize = 2; + +/// The actual descriptions of transactions should start after the minor descriptions and a MAX_POSTOP_SLOTS +/// free slots to allow postOp encoding. +pub(crate) const TX_DESCRIPTION_OFFSET: usize = BOOTLOADER_TX_DESCRIPTION_OFFSET + + BOOTLOADER_TX_DESCRIPTION_SIZE * MAX_TXS_IN_BLOCK + + MAX_POSTOP_SLOTS; + +pub(crate) const TX_GAS_LIMIT_OFFSET: usize = 4; + +const INITIAL_BASE_PAGE: u32 = 8; +pub const BOOTLOADER_HEAP_PAGE: u32 = heap_page_from_base(MemoryPage(INITIAL_BASE_PAGE)).0; +pub const BLOCK_OVERHEAD_GAS: u32 = 1200000; +pub const BLOCK_OVERHEAD_L1_GAS: u32 = 1000000; +pub const BLOCK_OVERHEAD_PUBDATA: u32 = BLOCK_OVERHEAD_L1_GAS / L1_GAS_PER_PUBDATA_BYTE; + +/// VM Hooks are used for communication between bootloader and tracers. +/// The 'type'/'opcode' is put into VM_HOOK_POSITION slot, +/// and VM_HOOKS_PARAMS_COUNT parameters (each 32 bytes) are put in the slots before. +/// So the layout looks like this: +/// [param 0][param 1][vmhook opcode] +pub const VM_HOOK_POSITION: u32 = RESULT_SUCCESS_FIRST_SLOT - 1; +pub const VM_HOOK_PARAMS_COUNT: u32 = 2; +pub const VM_HOOK_PARAMS_START_POSITION: u32 = VM_HOOK_POSITION - VM_HOOK_PARAMS_COUNT; + +pub(crate) const MAX_MEM_SIZE_BYTES: u32 = 16777216; // 2^24 + +/// Arbitrary space in memory closer to the end of the page +pub const RESULT_SUCCESS_FIRST_SLOT: u32 = + (MAX_MEM_SIZE_BYTES - (MAX_TXS_IN_BLOCK as u32) * 32) / 32; + +/// How many gas bootloader is allowed to spend within one block. +/// Note that this value doesn't correspond to the gas limit of any particular transaction +/// (except for the fact that, of course, gas limit for each transaction should be <= `BLOCK_GAS_LIMIT`). +pub const BLOCK_GAS_LIMIT: u32 = + zk_evm_1_3_3::zkevm_opcode_defs::system_params::VM_INITIAL_FRAME_ERGS; + +/// How many gas is allowed to spend on a single transaction in eth_call method +pub const ETH_CALL_GAS_LIMIT: u32 = MAX_L2_TX_GAS_LIMIT as u32; + +/// ID of the transaction from L1 +pub const L1_TX_TYPE: u8 = 255; + +pub(crate) const TX_OPERATOR_L2_BLOCK_INFO_OFFSET: usize = + TX_TRUSTED_GAS_LIMIT_OFFSET + TX_TRUSTED_GAS_LIMIT_SLOTS; + +pub(crate) const TX_OPERATOR_SLOTS_PER_L2_BLOCK_INFO: usize = 4; +pub(crate) const TX_OPERATOR_L2_BLOCK_INFO_SLOTS: usize = + (MAX_TXS_IN_BLOCK + 1) * TX_OPERATOR_SLOTS_PER_L2_BLOCK_INFO; + +pub(crate) const COMPRESSED_BYTECODES_OFFSET: usize = + TX_OPERATOR_L2_BLOCK_INFO_OFFSET + TX_OPERATOR_L2_BLOCK_INFO_SLOTS; diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/bytecode.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/bytecode.rs new file mode 100644 index 00000000000..2092c03e06e --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/bytecode.rs @@ -0,0 +1,57 @@ +use itertools::Itertools; + +use zksync_state::{StoragePtr, WriteStorage}; +use zksync_types::U256; +use zksync_utils::bytecode::{compress_bytecode, hash_bytecode, CompressedBytecodeInfo}; +use zksync_utils::bytes_to_be_words; + +use crate::vm_refunds_enhancement::{HistoryMode, Vm}; + +impl Vm { + /// Checks the last transaction has successfully published compressed bytecodes and returns `true` if there is at least one is still unknown. + pub(crate) fn has_unpublished_bytecodes(&mut self) -> bool { + self.get_last_tx_compressed_bytecodes().iter().any(|info| { + !self + .state + .storage + .storage + .get_ptr() + .borrow_mut() + .is_bytecode_known(&hash_bytecode(&info.original)) + }) + } +} + +/// Converts bytecode to tokens and hashes it. +pub(crate) fn bytecode_to_factory_dep(bytecode: Vec) -> (U256, Vec) { + let bytecode_hash = hash_bytecode(&bytecode); + let bytecode_hash = U256::from_big_endian(bytecode_hash.as_bytes()); + + let bytecode_words = bytes_to_be_words(bytecode); + + (bytecode_hash, bytecode_words) +} + +pub(crate) fn compress_bytecodes( + bytecodes: &[Vec], + storage: StoragePtr, +) -> Vec { + bytecodes + .iter() + .enumerate() + .sorted_by_key(|(_idx, dep)| *dep) + .dedup_by(|x, y| x.1 == y.1) + .filter(|(_idx, dep)| !storage.borrow_mut().is_bytecode_known(&hash_bytecode(dep))) + .sorted_by_key(|(idx, _dep)| *idx) + .filter_map(|(_idx, dep)| { + let compressed_bytecode = compress_bytecode(dep); + + compressed_bytecode + .ok() + .map(|compressed| CompressedBytecodeInfo { + original: dep.clone(), + compressed, + }) + }) + .collect() +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/execution.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/execution.rs new file mode 100644 index 00000000000..23d16ec4850 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/execution.rs @@ -0,0 +1,129 @@ +use zk_evm_1_3_3::aux_structures::Timestamp; +use zksync_state::WriteStorage; + +use crate::interface::{VmExecutionMode, VmExecutionResultAndLogs}; +use crate::vm_refunds_enhancement::old_vm::{ + history_recorder::HistoryMode, + utils::{vm_may_have_ended_inner, VmExecutionResult}, +}; +use crate::vm_refunds_enhancement::tracers::{ + traits::{TracerExecutionStatus, VmTracer}, + DefaultExecutionTracer, RefundsTracer, +}; +use crate::vm_refunds_enhancement::vm::Vm; +use crate::vm_refunds_enhancement::VmExecutionStopReason; + +impl Vm { + pub(crate) fn inspect_inner( + &mut self, + tracers: Vec>>, + execution_mode: VmExecutionMode, + ) -> VmExecutionResultAndLogs { + let mut enable_refund_tracer = false; + if let VmExecutionMode::OneTx = execution_mode { + // Move the pointer to the next transaction + self.bootloader_state.move_tx_to_execute_pointer(); + enable_refund_tracer = true; + } + let (_, result) = + self.inspect_and_collect_results(tracers, execution_mode, enable_refund_tracer); + result + } + + /// Execute VM with given traces until the stop reason is reached. + /// Collect the result from the default tracers. + fn inspect_and_collect_results( + &mut self, + tracers: Vec>>, + execution_mode: VmExecutionMode, + with_refund_tracer: bool, + ) -> (VmExecutionStopReason, VmExecutionResultAndLogs) { + let refund_tracers = + with_refund_tracer.then_some(RefundsTracer::new(self.batch_env.clone())); + let mut tx_tracer: DefaultExecutionTracer = DefaultExecutionTracer::new( + self.system_env.default_validation_computational_gas_limit, + execution_mode, + tracers, + self.storage.clone(), + refund_tracers, + ); + + let timestamp_initial = Timestamp(self.state.local_state.timestamp); + let cycles_initial = self.state.local_state.monotonic_cycle_counter; + let gas_remaining_before = self.gas_remaining(); + let spent_pubdata_counter_before = self.state.local_state.spent_pubdata_counter; + + let stop_reason = self.execute_with_default_tracer(&mut tx_tracer); + + let gas_remaining_after = self.gas_remaining(); + + let logs = self.collect_execution_logs_after_timestamp(timestamp_initial); + + let statistics = self.get_statistics( + timestamp_initial, + cycles_initial, + &tx_tracer, + gas_remaining_before, + gas_remaining_after, + spent_pubdata_counter_before, + logs.total_log_queries_count, + ); + + let result = tx_tracer.result_tracer.into_result(); + + let refunds = tx_tracer + .refund_tracer + .map(|x| x.get_refunds()) + .unwrap_or_default(); + + let result = VmExecutionResultAndLogs { + result, + logs, + statistics, + refunds, + }; + + (stop_reason, result) + } + + /// Execute vm with given tracers until the stop reason is reached. + fn execute_with_default_tracer( + &mut self, + tracer: &mut DefaultExecutionTracer, + ) -> VmExecutionStopReason { + tracer.initialize_tracer(&mut self.state); + let result = loop { + // Sanity check: we should never reach the maximum value, because then we won't be able to process the next cycle. + assert_ne!( + self.state.local_state.monotonic_cycle_counter, + u32::MAX, + "VM reached maximum possible amount of cycles. Vm state: {:?}", + self.state + ); + + self.state + .cycle(tracer) + .expect("Failed execution VM cycle."); + + if let TracerExecutionStatus::Stop(reason) = + tracer.finish_cycle(&mut self.state, &mut self.bootloader_state) + { + break VmExecutionStopReason::TracerRequestedStop(reason); + } + if self.has_ended() { + break VmExecutionStopReason::VmFinished; + } + }; + tracer.after_vm_execution(&mut self.state, &self.bootloader_state, result.clone()); + result + } + + fn has_ended(&self) -> bool { + match vm_may_have_ended_inner(&self.state) { + None | Some(VmExecutionResult::MostLikelyDidNotFinish(_, _)) => false, + Some( + VmExecutionResult::Ok(_) | VmExecutionResult::Revert(_) | VmExecutionResult::Panic, + ) => true, + } + } +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/gas.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/gas.rs new file mode 100644 index 00000000000..7f85ba7dda3 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/gas.rs @@ -0,0 +1,42 @@ +use zksync_state::WriteStorage; + +use crate::vm_refunds_enhancement::old_vm::history_recorder::HistoryMode; +use crate::vm_refunds_enhancement::tracers::DefaultExecutionTracer; +use crate::vm_refunds_enhancement::vm::Vm; + +impl Vm { + /// Returns the amount of gas remaining to the VM. + /// Note that this *does not* correspond to the gas limit of a transaction. + /// To calculate the amount of gas spent by transaction, you should call this method before and after + /// the execution, and subtract these values. + /// + /// Note: this method should only be called when either transaction is fully completed or VM completed + /// its execution. Remaining gas value is read from the current stack frame, so if you'll attempt to + /// read it during the transaction execution, you may receive invalid value. + pub(crate) fn gas_remaining(&self) -> u32 { + self.state.local_state.callstack.current.ergs_remaining + } + + pub(crate) fn calculate_computational_gas_used( + &self, + tracer: &DefaultExecutionTracer, + gas_remaining_before: u32, + spent_pubdata_counter_before: u32, + ) -> u32 { + let total_gas_used = gas_remaining_before + .checked_sub(self.gas_remaining()) + .expect("underflow"); + let gas_used_on_pubdata = + tracer.gas_spent_on_pubdata(&self.state.local_state) - spent_pubdata_counter_before; + total_gas_used + .checked_sub(gas_used_on_pubdata) + .unwrap_or_else(|| { + tracing::error!( + "Gas used on pubdata is greater than total gas used. On pubdata: {}, total: {}", + gas_used_on_pubdata, + total_gas_used + ); + 0 + }) + } +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/logs.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/logs.rs new file mode 100644 index 00000000000..1f1c7c0982d --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/logs.rs @@ -0,0 +1,65 @@ +use zk_evm_1_3_3::aux_structures::Timestamp; +use zksync_state::WriteStorage; + +use zksync_types::l2_to_l1_log::L2ToL1Log; +use zksync_types::VmEvent; + +use crate::interface::types::outputs::VmExecutionLogs; +use crate::vm_refunds_enhancement::old_vm::events::merge_events; +use crate::vm_refunds_enhancement::old_vm::history_recorder::HistoryMode; +use crate::vm_refunds_enhancement::old_vm::utils::precompile_calls_count_after_timestamp; +use crate::vm_refunds_enhancement::vm::Vm; + +impl Vm { + pub(crate) fn collect_execution_logs_after_timestamp( + &self, + from_timestamp: Timestamp, + ) -> VmExecutionLogs { + let storage_logs: Vec<_> = self + .state + .storage + .storage_log_queries_after_timestamp(from_timestamp) + .iter() + .map(|log| **log) + .collect(); + let storage_logs_count = storage_logs.len(); + + let (events, l2_to_l1_logs) = + self.collect_events_and_l1_logs_after_timestamp(from_timestamp); + + let log_queries = self + .state + .event_sink + .log_queries_after_timestamp(from_timestamp); + + let precompile_calls_count = precompile_calls_count_after_timestamp( + self.state.precompiles_processor.timestamp_history.inner(), + from_timestamp, + ); + + let total_log_queries_count = + storage_logs_count + log_queries.len() + precompile_calls_count; + VmExecutionLogs { + storage_logs, + events, + user_l2_to_l1_logs: l2_to_l1_logs, + system_l2_to_l1_logs: vec![], + total_log_queries_count, + } + } + + pub(crate) fn collect_events_and_l1_logs_after_timestamp( + &self, + from_timestamp: Timestamp, + ) -> (Vec, Vec) { + let (raw_events, l1_messages) = self + .state + .event_sink + .get_events_and_l2_l1_logs_after_timestamp(from_timestamp); + let events = merge_events(raw_events) + .into_iter() + .map(|e| e.into_vm_event(self.batch_env.number)) + .collect(); + (events, l1_messages.into_iter().map(Into::into).collect()) + } +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/mod.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/mod.rs new file mode 100644 index 00000000000..161732cf034 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/mod.rs @@ -0,0 +1,7 @@ +mod bytecode; +mod execution; +mod gas; +mod logs; +mod snapshots; +mod statistics; +mod tx; diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/snapshots.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/snapshots.rs new file mode 100644 index 00000000000..1ad2735ddf0 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/snapshots.rs @@ -0,0 +1,92 @@ +use vise::{Buckets, EncodeLabelSet, EncodeLabelValue, Family, Histogram, Metrics}; + +use std::time::Duration; + +use zk_evm_1_3_3::aux_structures::Timestamp; +use zksync_state::WriteStorage; + +use crate::vm_refunds_enhancement::{ + old_vm::{history_recorder::HistoryEnabled, oracles::OracleWithHistory}, + types::internals::VmSnapshot, + vm::Vm, +}; + +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, EncodeLabelSet, EncodeLabelValue)] +#[metrics(label = "stage", rename_all = "snake_case")] +enum RollbackStage { + DecommitmentProcessorRollback, + EventSinkRollback, + StorageRollback, + MemoryRollback, + PrecompilesProcessorRollback, + ApplyBootloaderSnapshot, +} + +#[derive(Debug, Metrics)] +#[metrics(prefix = "server_vm")] +struct VmMetrics { + #[metrics(buckets = Buckets::LATENCIES)] + rollback_time: Family>, +} + +#[vise::register] +static METRICS: vise::Global = vise::Global::new(); + +/// Implementation of VM related to rollbacks inside virtual machine +impl Vm { + pub(crate) fn make_snapshot_inner(&mut self) { + self.snapshots.push(VmSnapshot { + // Vm local state contains O(1) various parameters (registers/etc). + // The only "expensive" copying here is copying of the callstack. + // It will take O(callstack_depth) to copy it. + // So it is generally recommended to get snapshots of the bootloader frame, + // where the depth is 1. + local_state: self.state.local_state.clone(), + bootloader_state: self.bootloader_state.get_snapshot(), + }); + } + + pub(crate) fn rollback_to_snapshot(&mut self, snapshot: VmSnapshot) { + let VmSnapshot { + local_state, + bootloader_state, + } = snapshot; + + let stage_latency = + METRICS.rollback_time[&RollbackStage::DecommitmentProcessorRollback].start(); + let timestamp = Timestamp(local_state.timestamp); + tracing::trace!("Rolling back decomitter"); + self.state + .decommittment_processor + .rollback_to_timestamp(timestamp); + stage_latency.observe(); + + let stage_latency = METRICS.rollback_time[&RollbackStage::EventSinkRollback].start(); + tracing::trace!("Rolling back event_sink"); + self.state.event_sink.rollback_to_timestamp(timestamp); + stage_latency.observe(); + + let stage_latency = METRICS.rollback_time[&RollbackStage::StorageRollback].start(); + tracing::trace!("Rolling back storage"); + self.state.storage.rollback_to_timestamp(timestamp); + stage_latency.observe(); + + let stage_latency = METRICS.rollback_time[&RollbackStage::MemoryRollback].start(); + tracing::trace!("Rolling back memory"); + self.state.memory.rollback_to_timestamp(timestamp); + stage_latency.observe(); + + let stage_latency = + METRICS.rollback_time[&RollbackStage::PrecompilesProcessorRollback].start(); + tracing::trace!("Rolling back precompiles_processor"); + self.state + .precompiles_processor + .rollback_to_timestamp(timestamp); + stage_latency.observe(); + + self.state.local_state = local_state; + let stage_latency = METRICS.rollback_time[&RollbackStage::ApplyBootloaderSnapshot].start(); + self.bootloader_state.apply_snapshot(bootloader_state); + stage_latency.observe(); + } +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/statistics.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/statistics.rs new file mode 100644 index 00000000000..8858e346548 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/statistics.rs @@ -0,0 +1,68 @@ +use zk_evm_1_3_3::aux_structures::Timestamp; +use zksync_state::WriteStorage; + +use zksync_types::U256; + +use crate::interface::{VmExecutionStatistics, VmMemoryMetrics}; +use crate::vm_refunds_enhancement::old_vm::history_recorder::HistoryMode; +use crate::vm_refunds_enhancement::tracers::DefaultExecutionTracer; +use crate::vm_refunds_enhancement::vm::Vm; + +/// Module responsible for observing the VM behavior, i.e. calculating the statistics of the VM runs +/// or reporting the VM memory usage. + +impl Vm { + /// Get statistics about TX execution. + #[allow(clippy::too_many_arguments)] + pub(crate) fn get_statistics( + &self, + timestamp_initial: Timestamp, + cycles_initial: u32, + tracer: &DefaultExecutionTracer, + gas_remaining_before: u32, + gas_remaining_after: u32, + spent_pubdata_counter_before: u32, + total_log_queries_count: usize, + ) -> VmExecutionStatistics { + let computational_gas_used = self.calculate_computational_gas_used( + tracer, + gas_remaining_before, + spent_pubdata_counter_before, + ); + VmExecutionStatistics { + contracts_used: self + .state + .decommittment_processor + .get_decommitted_bytecodes_after_timestamp(timestamp_initial), + cycles_used: self.state.local_state.monotonic_cycle_counter - cycles_initial, + gas_used: gas_remaining_before - gas_remaining_after, + computational_gas_used, + total_log_queries: total_log_queries_count, + } + } + + /// Returns the hashes the bytecodes that have been decommitted by the decomittment processor. + pub(crate) fn get_used_contracts(&self) -> Vec { + self.state + .decommittment_processor + .decommitted_code_hashes + .inner() + .keys() + .cloned() + .collect() + } + + /// Returns the info about all oracles' sizes. + pub fn record_vm_memory_metrics(&self) -> VmMemoryMetrics { + VmMemoryMetrics { + event_sink_inner: self.state.event_sink.get_size(), + event_sink_history: self.state.event_sink.get_history_size(), + memory_inner: self.state.memory.get_size(), + memory_history: self.state.memory.get_history_size(), + decommittment_processor_inner: self.state.decommittment_processor.get_size(), + decommittment_processor_history: self.state.decommittment_processor.get_history_size(), + storage_inner: self.state.storage.get_size(), + storage_history: self.state.storage.get_history_size(), + } + } +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/tx.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/tx.rs new file mode 100644 index 00000000000..2d748040b47 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/tx.rs @@ -0,0 +1,67 @@ +use crate::vm_refunds_enhancement::constants::BOOTLOADER_HEAP_PAGE; +use crate::vm_refunds_enhancement::implementation::bytecode::{ + bytecode_to_factory_dep, compress_bytecodes, +}; +use zk_evm_1_3_3::aux_structures::Timestamp; +use zksync_state::WriteStorage; +use zksync_types::l1::is_l1_tx_type; +use zksync_types::Transaction; + +use crate::vm_refunds_enhancement::old_vm::history_recorder::HistoryMode; +use crate::vm_refunds_enhancement::types::internals::TransactionData; +use crate::vm_refunds_enhancement::vm::Vm; + +impl Vm { + pub(crate) fn push_raw_transaction( + &mut self, + tx: TransactionData, + predefined_overhead: u32, + predefined_refund: u32, + with_compression: bool, + ) { + let timestamp = Timestamp(self.state.local_state.timestamp); + let codes_for_decommiter = tx + .factory_deps + .iter() + .map(|dep| bytecode_to_factory_dep(dep.clone())) + .collect(); + + let compressed_bytecodes = if is_l1_tx_type(tx.tx_type) || !with_compression { + // L1 transactions do not need compression + vec![] + } else { + compress_bytecodes(&tx.factory_deps, self.state.storage.storage.get_ptr()) + }; + + self.state + .decommittment_processor + .populate(codes_for_decommiter, timestamp); + + let trusted_ergs_limit = + tx.trusted_ergs_limit(self.batch_env.block_gas_price_per_pubdata()); + + let memory = self.bootloader_state.push_tx( + tx, + predefined_overhead, + predefined_refund, + compressed_bytecodes, + trusted_ergs_limit, + self.system_env.chain_id, + ); + + self.state + .memory + .populate_page(BOOTLOADER_HEAP_PAGE as usize, memory, timestamp); + } + + pub(crate) fn push_transaction_with_compression( + &mut self, + tx: Transaction, + with_compression: bool, + ) { + let tx: TransactionData = tx.into(); + let block_gas_per_pubdata_byte = self.batch_env.block_gas_price_per_pubdata(); + let overhead = tx.overhead_gas(block_gas_per_pubdata_byte as u32); + self.push_raw_transaction(tx, overhead, 0, with_compression); + } +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/mod.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/mod.rs new file mode 100644 index 00000000000..10339d7e4d3 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/mod.rs @@ -0,0 +1,34 @@ +pub use old_vm::{ + history_recorder::{HistoryDisabled, HistoryEnabled, HistoryMode}, + memory::SimpleMemory, +}; + +pub use oracles::storage::StorageOracle; + +pub use tracers::{ + call::CallTracer, + traits::{BoxedTracer, DynTracer, TracerExecutionStatus, TracerExecutionStopReason, VmTracer}, + utils::VmExecutionStopReason, + StorageInvocations, ValidationError, ValidationTracer, ValidationTracerParams, +}; + +pub use utils::transaction_encoding::TransactionVmExt; + +pub use bootloader_state::BootloaderState; +pub use types::internals::ZkSyncVmState; + +pub use vm::Vm; + +mod bootloader_state; +mod implementation; +mod old_vm; +mod oracles; +mod tracers; +mod types; +mod vm; + +pub mod constants; +pub mod utils; + +#[cfg(test)] +mod tests; diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/old_vm/event_sink.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/old_vm/event_sink.rs new file mode 100644 index 00000000000..adbee280a3d --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/old_vm/event_sink.rs @@ -0,0 +1,171 @@ +use crate::vm_refunds_enhancement::old_vm::{ + history_recorder::{AppDataFrameManagerWithHistory, HistoryEnabled, HistoryMode}, + oracles::OracleWithHistory, +}; +use std::collections::HashMap; +use zk_evm_1_3_3::{ + abstractions::EventSink, + aux_structures::{LogQuery, Timestamp}, + reference_impls::event_sink::EventMessage, + zkevm_opcode_defs::system_params::{ + BOOTLOADER_FORMAL_ADDRESS, EVENT_AUX_BYTE, L1_MESSAGE_AUX_BYTE, + }, +}; + +#[derive(Debug, Clone, PartialEq, Default)] +pub struct InMemoryEventSink { + frames_stack: AppDataFrameManagerWithHistory, H>, +} + +impl OracleWithHistory for InMemoryEventSink { + fn rollback_to_timestamp(&mut self, timestamp: Timestamp) { + self.frames_stack.rollback_to_timestamp(timestamp); + } +} + +// as usual, if we rollback the current frame then we apply changes to storage immediately, +// otherwise we carry rollbacks to the parent's frames + +impl InMemoryEventSink { + pub fn flatten(&self) -> (Vec, Vec, Vec) { + assert_eq!( + self.frames_stack.len(), + 1, + "there must exist an initial keeper frame" + ); + // we forget rollbacks as we have finished the execution and can just apply them + let history = self.frames_stack.forward().current_frame(); + + let (events, l1_messages) = Self::events_and_l1_messages_from_history(history); + (history.iter().map(|x| **x).collect(), events, l1_messages) + } + + pub fn get_log_queries(&self) -> usize { + self.frames_stack.forward().current_frame().len() + } + + /// Returns the log queries in the current frame where `log_query.timestamp >= from_timestamp`. + pub fn log_queries_after_timestamp(&self, from_timestamp: Timestamp) -> &[Box] { + let events = self.frames_stack.forward().current_frame(); + + // Select all of the last elements where e.timestamp >= from_timestamp. + // Note, that using binary search here is dangerous, because the logs are not sorted by timestamp. + events + .rsplit(|e| e.timestamp < from_timestamp) + .next() + .unwrap_or(&[]) + } + + pub fn get_events_and_l2_l1_logs_after_timestamp( + &self, + from_timestamp: Timestamp, + ) -> (Vec, Vec) { + Self::events_and_l1_messages_from_history(self.log_queries_after_timestamp(from_timestamp)) + } + + fn events_and_l1_messages_from_history( + history: &[Box], + ) -> (Vec, Vec) { + let mut tmp = HashMap::::with_capacity(history.len()); + + // note that we only use "forward" part and discard the rollbacks at the end, + // since if rollbacks of parents were not appended anywhere we just still keep them + for el in history { + // we are time ordered here in terms of rollbacks + if tmp.get(&el.timestamp.0).is_some() { + assert!(el.rollback); + tmp.remove(&el.timestamp.0); + } else { + assert!(!el.rollback); + tmp.insert(el.timestamp.0, **el); + } + } + + // naturally sorted by timestamp + let mut keys: Vec<_> = tmp.keys().cloned().collect(); + keys.sort_unstable(); + + let mut events = vec![]; + let mut l1_messages = vec![]; + + for k in keys.into_iter() { + let el = tmp.remove(&k).unwrap(); + let LogQuery { + shard_id, + is_service, + tx_number_in_block, + address, + key, + written_value, + aux_byte, + .. + } = el; + + let event = EventMessage { + shard_id, + is_first: is_service, + tx_number_in_block, + address, + key, + value: written_value, + }; + + if aux_byte == EVENT_AUX_BYTE { + events.push(event); + } else { + l1_messages.push(event); + } + } + + (events, l1_messages) + } + + pub(crate) fn get_size(&self) -> usize { + self.frames_stack.get_size() + } + + pub fn get_history_size(&self) -> usize { + self.frames_stack.get_history_size() + } + + pub fn delete_history(&mut self) { + self.frames_stack.delete_history(); + } +} + +impl EventSink for InMemoryEventSink { + // when we enter a new frame we should remember all our current applications and rollbacks + // when we exit the current frame then if we did panic we should concatenate all current + // forward and rollback cases + + fn add_partial_query(&mut self, _monotonic_cycle_counter: u32, mut query: LogQuery) { + assert!(query.rw_flag); + assert!(query.aux_byte == EVENT_AUX_BYTE || query.aux_byte == L1_MESSAGE_AUX_BYTE); + assert!(!query.rollback); + + // just append to rollbacks and a full history + + self.frames_stack + .push_forward(Box::new(query), query.timestamp); + // we do not need it explicitly here, but let's be consistent with circuit counterpart + query.rollback = true; + self.frames_stack + .push_rollback(Box::new(query), query.timestamp); + } + + fn start_frame(&mut self, timestamp: Timestamp) { + self.frames_stack.push_frame(timestamp) + } + + fn finish_frame(&mut self, panicked: bool, timestamp: Timestamp) { + // if we panic then we append forward and rollbacks to the forward of parent, + // otherwise we place rollbacks of child before rollbacks of the parent + if panicked { + self.frames_stack.move_rollback_to_forward( + |q| q.address != *BOOTLOADER_FORMAL_ADDRESS || q.aux_byte != EVENT_AUX_BYTE, + timestamp, + ); + } + self.frames_stack.merge_frame(timestamp); + } +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/old_vm/events.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/old_vm/events.rs new file mode 100644 index 00000000000..de918e06914 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/old_vm/events.rs @@ -0,0 +1,146 @@ +use zk_evm_1_3_3::{ethereum_types::Address, reference_impls::event_sink::EventMessage}; +use zksync_types::{L1BatchNumber, VmEvent, EVENT_WRITER_ADDRESS, H256}; +use zksync_utils::{be_chunks_to_h256_words, h256_to_account_address}; + +#[derive(Clone)] +pub(crate) struct SolidityLikeEvent { + pub(crate) shard_id: u8, + pub(crate) tx_number_in_block: u16, + pub(crate) address: Address, + pub(crate) topics: Vec<[u8; 32]>, + pub(crate) data: Vec, +} + +impl SolidityLikeEvent { + pub(crate) fn into_vm_event(self, block_number: L1BatchNumber) -> VmEvent { + VmEvent { + location: (block_number, self.tx_number_in_block as u32), + address: self.address, + indexed_topics: be_chunks_to_h256_words(self.topics), + value: self.data, + } + } +} + +fn merge_events_inner(events: Vec) -> Vec { + let mut result = vec![]; + let mut current: Option<(usize, u32, SolidityLikeEvent)> = None; + + for message in events.into_iter() { + if !message.is_first { + let EventMessage { + shard_id, + is_first: _, + tx_number_in_block, + address, + key, + value, + } = message; + + if let Some((mut remaining_data_length, mut remaining_topics, mut event)) = + current.take() + { + if event.address != address + || event.shard_id != shard_id + || event.tx_number_in_block != tx_number_in_block + { + continue; + } + let mut data_0 = [0u8; 32]; + let mut data_1 = [0u8; 32]; + key.to_big_endian(&mut data_0); + value.to_big_endian(&mut data_1); + for el in [data_0, data_1].iter() { + if remaining_topics != 0 { + event.topics.push(*el); + remaining_topics -= 1; + } else if remaining_data_length != 0 { + if remaining_data_length >= 32 { + event.data.extend_from_slice(el); + remaining_data_length -= 32; + } else { + event.data.extend_from_slice(&el[..remaining_data_length]); + remaining_data_length = 0; + } + } + } + + if remaining_data_length != 0 || remaining_topics != 0 { + current = Some((remaining_data_length, remaining_topics, event)) + } else { + result.push(event); + } + } + } else { + // start new one. First take the old one only if it's well formed + if let Some((remaining_data_length, remaining_topics, event)) = current.take() { + if remaining_data_length == 0 && remaining_topics == 0 { + result.push(event); + } + } + + let EventMessage { + shard_id, + is_first: _, + tx_number_in_block, + address, + key, + value, + } = message; + // split key as our internal marker. Ignore higher bits + let mut num_topics = key.0[0] as u32; + let mut data_length = (key.0[0] >> 32) as usize; + let mut buffer = [0u8; 32]; + value.to_big_endian(&mut buffer); + + let (topics, data) = if num_topics == 0 && data_length == 0 { + (vec![], vec![]) + } else if num_topics == 0 { + data_length -= 32; + (vec![], buffer.to_vec()) + } else { + num_topics -= 1; + (vec![buffer], vec![]) + }; + + let new_event = SolidityLikeEvent { + shard_id, + tx_number_in_block, + address, + topics, + data, + }; + + current = Some((data_length, num_topics, new_event)) + } + } + + // add the last one + if let Some((remaining_data_length, remaining_topics, event)) = current.take() { + if remaining_data_length == 0 && remaining_topics == 0 { + result.push(event); + } + } + + result +} + +pub(crate) fn merge_events(events: Vec) -> Vec { + let raw_events = merge_events_inner(events); + + raw_events + .into_iter() + .filter(|e| e.address == EVENT_WRITER_ADDRESS) + .map(|event| { + // The events writer events where the first topic is the actual address of the event and the rest of the topics are real topics + let address = h256_to_account_address(&H256(event.topics[0])); + let topics = event.topics.into_iter().skip(1).collect(); + + SolidityLikeEvent { + topics, + address, + ..event + } + }) + .collect() +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/old_vm/history_recorder.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/old_vm/history_recorder.rs new file mode 100644 index 00000000000..44d510b0075 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/old_vm/history_recorder.rs @@ -0,0 +1,809 @@ +use std::{collections::HashMap, fmt::Debug, hash::Hash}; + +use zk_evm_1_3_3::{ + aux_structures::Timestamp, + vm_state::PrimitiveValue, + zkevm_opcode_defs::{self}, +}; + +use zksync_state::{StoragePtr, WriteStorage}; +use zksync_types::{StorageKey, U256}; +use zksync_utils::{h256_to_u256, u256_to_h256}; + +pub(crate) type MemoryWithHistory = HistoryRecorder; +pub(crate) type IntFrameManagerWithHistory = HistoryRecorder, H>; + +// Within the same cycle, timestamps in range timestamp..timestamp+TIME_DELTA_PER_CYCLE-1 +// can be used. This can sometimes violate monotonicity of the timestamp within the +// same cycle, so it should be normalized. +#[inline] +fn normalize_timestamp(timestamp: Timestamp) -> Timestamp { + let timestamp = timestamp.0; + + // Making sure it is divisible by TIME_DELTA_PER_CYCLE + Timestamp(timestamp - timestamp % zkevm_opcode_defs::TIME_DELTA_PER_CYCLE) +} + +/// Accepts history item as its parameter and applies it. +pub trait WithHistory { + type HistoryRecord; + type ReturnValue; + + // Applies an action and returns the action that would + // rollback its effect as well as some returned value + fn apply_historic_record( + &mut self, + item: Self::HistoryRecord, + ) -> (Self::HistoryRecord, Self::ReturnValue); +} + +type EventList = Vec<(Timestamp, ::HistoryRecord)>; + +/// Controls if rolling back is possible or not. +/// Either [HistoryEnabled] or [HistoryDisabled]. +pub trait HistoryMode: private::Sealed + Debug + Clone + Default { + type History: Default; + + fn clone_history(history: &Self::History) -> Self::History + where + T::HistoryRecord: Clone; + fn mutate_history)>( + recorder: &mut HistoryRecorder, + f: F, + ); + fn borrow_history) -> R, R>( + recorder: &HistoryRecorder, + f: F, + default: R, + ) -> R; +} + +mod private { + pub trait Sealed {} + impl Sealed for super::HistoryEnabled {} + impl Sealed for super::HistoryDisabled {} +} + +// derives require that all type parameters implement the trait, which is why +// HistoryEnabled/Disabled derive so many traits even though they mostly don't +// exist at runtime. + +/// A data structure with this parameter can be rolled back. +/// See also: [HistoryDisabled] +#[derive(Debug, Clone, Default, PartialEq)] +pub struct HistoryEnabled; + +/// A data structure with this parameter cannot be rolled back. +/// It won't even have rollback methods. +/// See also: [HistoryEnabled] +#[derive(Debug, Clone, Default)] +pub struct HistoryDisabled; + +impl HistoryMode for HistoryEnabled { + type History = EventList; + + fn clone_history(history: &Self::History) -> Self::History + where + T::HistoryRecord: Clone, + { + history.clone() + } + fn mutate_history)>( + recorder: &mut HistoryRecorder, + f: F, + ) { + f(&mut recorder.inner, &mut recorder.history) + } + fn borrow_history) -> R, R>( + recorder: &HistoryRecorder, + f: F, + _: R, + ) -> R { + f(&recorder.history) + } +} + +impl HistoryMode for HistoryDisabled { + type History = (); + + fn clone_history(_: &Self::History) -> Self::History {} + fn mutate_history)>( + _: &mut HistoryRecorder, + _: F, + ) { + } + fn borrow_history) -> R, R>( + _: &HistoryRecorder, + _: F, + default: R, + ) -> R { + default + } +} + +/// A struct responsible for tracking history for +/// a component that is passed as a generic parameter to it (`inner`). +#[derive(Default)] +pub struct HistoryRecorder { + inner: T, + history: H::History, +} + +impl PartialEq for HistoryRecorder +where + T::HistoryRecord: PartialEq, +{ + fn eq(&self, other: &Self) -> bool { + self.inner == other.inner + && self.borrow_history(|h1| other.borrow_history(|h2| h1 == h2, true), true) + } +} + +impl Debug for HistoryRecorder +where + T::HistoryRecord: Debug, +{ + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + let mut debug_struct = f.debug_struct("HistoryRecorder"); + debug_struct.field("inner", &self.inner); + self.borrow_history( + |h| { + debug_struct.field("history", h); + }, + (), + ); + debug_struct.finish() + } +} + +impl Clone for HistoryRecorder +where + T::HistoryRecord: Clone, + H: HistoryMode, +{ + fn clone(&self) -> Self { + Self { + inner: self.inner.clone(), + history: H::clone_history(&self.history), + } + } +} + +impl HistoryRecorder { + pub fn from_inner(inner: T) -> Self { + Self { + inner, + history: Default::default(), + } + } + + pub fn inner(&self) -> &T { + &self.inner + } + + /// If history exists, modify it using `f`. + pub fn mutate_history)>(&mut self, f: F) { + H::mutate_history(self, f); + } + + /// If history exists, feed it into `f`. Otherwise return `default`. + pub fn borrow_history) -> R, R>(&self, f: F, default: R) -> R { + H::borrow_history(self, f, default) + } + + pub fn apply_historic_record( + &mut self, + item: T::HistoryRecord, + timestamp: Timestamp, + ) -> T::ReturnValue { + let (reversed_item, return_value) = self.inner.apply_historic_record(item); + + self.mutate_history(|_, history| { + let last_recorded_timestamp = history.last().map(|(t, _)| *t).unwrap_or(Timestamp(0)); + let timestamp = normalize_timestamp(timestamp); + assert!( + last_recorded_timestamp <= timestamp, + "Timestamps are not monotonic" + ); + history.push((timestamp, reversed_item)); + }); + + return_value + } + + /// Deletes all the history for its component, making + /// its current state irreversible + pub fn delete_history(&mut self) { + self.mutate_history(|_, h| h.clear()) + } +} + +impl HistoryRecorder { + pub fn history(&self) -> &Vec<(Timestamp, T::HistoryRecord)> { + &self.history + } + + pub(crate) fn rollback_to_timestamp(&mut self, timestamp: Timestamp) { + loop { + let should_undo = self + .history + .last() + .map(|(item_timestamp, _)| *item_timestamp >= timestamp) + .unwrap_or(false); + if !should_undo { + break; + } + + let (_, item_to_apply) = self.history.pop().unwrap(); + self.inner.apply_historic_record(item_to_apply); + } + } +} + +#[derive(Debug, Clone, PartialEq)] +pub enum VectorHistoryEvent { + Push(X), + Pop, +} + +impl WithHistory for Vec { + type HistoryRecord = VectorHistoryEvent; + type ReturnValue = Option; + fn apply_historic_record( + &mut self, + item: VectorHistoryEvent, + ) -> (Self::HistoryRecord, Self::ReturnValue) { + match item { + VectorHistoryEvent::Pop => { + // Note, that here we assume that the users + // will check themselves whether this vector is empty + // prior to popping from it. + let poped_item = self.pop().unwrap(); + + (VectorHistoryEvent::Push(poped_item), Some(poped_item)) + } + VectorHistoryEvent::Push(x) => { + self.push(x); + + (VectorHistoryEvent::Pop, None) + } + } + } +} + +impl HistoryRecorder, H> { + pub fn push(&mut self, elem: T, timestamp: Timestamp) { + self.apply_historic_record(VectorHistoryEvent::Push(elem), timestamp); + } + + pub fn pop(&mut self, timestamp: Timestamp) -> T { + self.apply_historic_record(VectorHistoryEvent::Pop, timestamp) + .unwrap() + } + + pub fn len(&self) -> usize { + self.inner.len() + } + + pub fn is_empty(&self) -> bool { + self.len() == 0 + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct HashMapHistoryEvent { + pub key: K, + pub value: Option, +} + +impl WithHistory for HashMap { + type HistoryRecord = HashMapHistoryEvent; + type ReturnValue = Option; + fn apply_historic_record( + &mut self, + item: Self::HistoryRecord, + ) -> (Self::HistoryRecord, Self::ReturnValue) { + let HashMapHistoryEvent { key, value } = item; + + let prev_value = match value { + Some(x) => self.insert(key, x), + None => self.remove(&key), + }; + + ( + HashMapHistoryEvent { + key, + value: prev_value.clone(), + }, + prev_value, + ) + } +} + +impl HistoryRecorder, H> { + pub fn insert(&mut self, key: K, value: V, timestamp: Timestamp) -> Option { + self.apply_historic_record( + HashMapHistoryEvent { + key, + value: Some(value), + }, + timestamp, + ) + } + + pub(crate) fn remove(&mut self, key: K, timestamp: Timestamp) -> Option { + self.apply_historic_record(HashMapHistoryEvent { key, value: None }, timestamp) + } +} + +/// A stack of stacks. The inner stacks are called frames. +/// +/// Does not support popping from the outer stack. Instead, the outer stack can +/// push its topmost frame's contents onto the previous frame. +#[derive(Debug, Clone, PartialEq)] +pub struct FramedStack { + data: Vec, + frame_start_indices: Vec, +} + +impl Default for FramedStack { + fn default() -> Self { + // We typically require at least the first frame to be there + // since the last user-provided frame might be reverted + Self { + data: vec![], + frame_start_indices: vec![0], + } + } +} + +#[derive(Debug, Clone, PartialEq)] +pub enum FramedStackEvent { + Push(T), + Pop, + PushFrame(usize), + MergeFrame, +} + +impl WithHistory for FramedStack { + type HistoryRecord = FramedStackEvent; + type ReturnValue = (); + + fn apply_historic_record( + &mut self, + item: Self::HistoryRecord, + ) -> (Self::HistoryRecord, Self::ReturnValue) { + use FramedStackEvent::*; + match item { + Push(x) => { + self.data.push(x); + (Pop, ()) + } + Pop => { + let x = self.data.pop().unwrap(); + (Push(x), ()) + } + PushFrame(i) => { + self.frame_start_indices.push(i); + (MergeFrame, ()) + } + MergeFrame => { + let pos = self.frame_start_indices.pop().unwrap(); + (PushFrame(pos), ()) + } + } + } +} + +impl FramedStack { + fn push_frame(&self) -> FramedStackEvent { + FramedStackEvent::PushFrame(self.data.len()) + } + + pub fn current_frame(&self) -> &[T] { + &self.data[*self.frame_start_indices.last().unwrap()..self.data.len()] + } + + fn len(&self) -> usize { + self.frame_start_indices.len() + } + + /// Returns the amount of memory taken up by the stored items + pub fn get_size(&self) -> usize { + self.data.len() * std::mem::size_of::() + } +} + +impl HistoryRecorder, H> { + pub fn push_to_frame(&mut self, x: T, timestamp: Timestamp) { + self.apply_historic_record(FramedStackEvent::Push(x), timestamp); + } + pub fn clear_frame(&mut self, timestamp: Timestamp) { + let start = *self.inner.frame_start_indices.last().unwrap(); + while self.inner.data.len() > start { + self.apply_historic_record(FramedStackEvent::Pop, timestamp); + } + } + pub fn extend_frame(&mut self, items: impl IntoIterator, timestamp: Timestamp) { + for x in items { + self.push_to_frame(x, timestamp); + } + } + pub fn push_frame(&mut self, timestamp: Timestamp) { + self.apply_historic_record(self.inner.push_frame(), timestamp); + } + pub fn merge_frame(&mut self, timestamp: Timestamp) { + self.apply_historic_record(FramedStackEvent::MergeFrame, timestamp); + } +} + +#[derive(Debug, Clone, PartialEq)] +pub(crate) struct AppDataFrameManagerWithHistory { + forward: HistoryRecorder, H>, + rollback: HistoryRecorder, H>, +} + +impl Default for AppDataFrameManagerWithHistory { + fn default() -> Self { + Self { + forward: Default::default(), + rollback: Default::default(), + } + } +} + +impl AppDataFrameManagerWithHistory { + pub(crate) fn delete_history(&mut self) { + self.forward.delete_history(); + self.rollback.delete_history(); + } + + pub(crate) fn push_forward(&mut self, item: T, timestamp: Timestamp) { + self.forward.push_to_frame(item, timestamp); + } + pub(crate) fn push_rollback(&mut self, item: T, timestamp: Timestamp) { + self.rollback.push_to_frame(item, timestamp); + } + pub(crate) fn push_frame(&mut self, timestamp: Timestamp) { + self.forward.push_frame(timestamp); + self.rollback.push_frame(timestamp); + } + pub(crate) fn merge_frame(&mut self, timestamp: Timestamp) { + self.forward.merge_frame(timestamp); + self.rollback.merge_frame(timestamp); + } + + pub(crate) fn len(&self) -> usize { + self.forward.inner.len() + } + pub(crate) fn forward(&self) -> &FramedStack { + &self.forward.inner + } + pub(crate) fn rollback(&self) -> &FramedStack { + &self.rollback.inner + } + + /// Returns the amount of memory taken up by the stored items + pub(crate) fn get_size(&self) -> usize { + self.forward().get_size() + self.rollback().get_size() + } + + pub(crate) fn get_history_size(&self) -> usize { + (self.forward.borrow_history(|h| h.len(), 0) + self.rollback.borrow_history(|h| h.len(), 0)) + * std::mem::size_of::< as WithHistory>::HistoryRecord>() + } +} + +impl AppDataFrameManagerWithHistory { + pub(crate) fn move_rollback_to_forward bool>( + &mut self, + filter: F, + timestamp: Timestamp, + ) { + for x in self.rollback.inner.current_frame().iter().rev() { + if filter(x) { + self.forward.push_to_frame(x.clone(), timestamp); + } + } + self.rollback.clear_frame(timestamp); + } +} + +impl AppDataFrameManagerWithHistory { + pub(crate) fn rollback_to_timestamp(&mut self, timestamp: Timestamp) { + self.forward.rollback_to_timestamp(timestamp); + self.rollback.rollback_to_timestamp(timestamp); + } +} + +const PRIMITIVE_VALUE_EMPTY: PrimitiveValue = PrimitiveValue::empty(); +const PAGE_SUBDIVISION_LEN: usize = 64; + +#[derive(Debug, Default, Clone)] +struct MemoryPage { + root: Vec>>, +} + +impl MemoryPage { + fn get(&self, slot: usize) -> &PrimitiveValue { + self.root + .get(slot / PAGE_SUBDIVISION_LEN) + .and_then(|inner| inner.as_ref()) + .map(|leaf| &leaf[slot % PAGE_SUBDIVISION_LEN]) + .unwrap_or(&PRIMITIVE_VALUE_EMPTY) + } + fn set(&mut self, slot: usize, value: PrimitiveValue) -> PrimitiveValue { + let root_index = slot / PAGE_SUBDIVISION_LEN; + let leaf_index = slot % PAGE_SUBDIVISION_LEN; + + if self.root.len() <= root_index { + self.root.resize_with(root_index + 1, || None); + } + let node = &mut self.root[root_index]; + + if let Some(leaf) = node { + let old = leaf[leaf_index]; + leaf[leaf_index] = value; + old + } else { + let mut leaf = [PrimitiveValue::empty(); PAGE_SUBDIVISION_LEN]; + leaf[leaf_index] = value; + self.root[root_index] = Some(Box::new(leaf)); + PrimitiveValue::empty() + } + } + + fn get_size(&self) -> usize { + self.root.iter().filter_map(|x| x.as_ref()).count() + * PAGE_SUBDIVISION_LEN + * std::mem::size_of::() + } +} + +impl PartialEq for MemoryPage { + fn eq(&self, other: &Self) -> bool { + for slot in 0..self.root.len().max(other.root.len()) * PAGE_SUBDIVISION_LEN { + if self.get(slot) != other.get(slot) { + return false; + } + } + true + } +} + +#[derive(Debug, Default, Clone)] +pub struct MemoryWrapper { + memory: Vec, +} + +impl PartialEq for MemoryWrapper { + fn eq(&self, other: &Self) -> bool { + let empty_page = MemoryPage::default(); + let empty_pages = std::iter::repeat(&empty_page); + self.memory + .iter() + .chain(empty_pages.clone()) + .zip(other.memory.iter().chain(empty_pages)) + .take(self.memory.len().max(other.memory.len())) + .all(|(a, b)| a == b) + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct MemoryHistoryRecord { + pub page: usize, + pub slot: usize, + pub set_value: PrimitiveValue, +} + +impl MemoryWrapper { + pub fn ensure_page_exists(&mut self, page: usize) { + if self.memory.len() <= page { + // We don't need to record such events in history + // because all these vectors will be empty + self.memory.resize_with(page + 1, MemoryPage::default); + } + } + + pub fn dump_page_content_as_u256_words( + &self, + page_number: u32, + range: std::ops::Range, + ) -> Vec { + if let Some(page) = self.memory.get(page_number as usize) { + let mut result = vec![]; + for i in range { + result.push(*page.get(i as usize)); + } + result + } else { + vec![PrimitiveValue::empty(); range.len()] + } + } + + pub fn read_slot(&self, page: usize, slot: usize) -> &PrimitiveValue { + self.memory + .get(page) + .map(|page| page.get(slot)) + .unwrap_or(&PRIMITIVE_VALUE_EMPTY) + } + + pub fn get_size(&self) -> usize { + self.memory.iter().map(|page| page.get_size()).sum() + } +} + +impl WithHistory for MemoryWrapper { + type HistoryRecord = MemoryHistoryRecord; + type ReturnValue = PrimitiveValue; + + fn apply_historic_record( + &mut self, + item: MemoryHistoryRecord, + ) -> (Self::HistoryRecord, Self::ReturnValue) { + let MemoryHistoryRecord { + page, + slot, + set_value, + } = item; + + self.ensure_page_exists(page); + let page_handle = self.memory.get_mut(page).unwrap(); + let prev_value = page_handle.set(slot, set_value); + + let undo = MemoryHistoryRecord { + page, + slot, + set_value: prev_value, + }; + + (undo, prev_value) + } +} + +impl HistoryRecorder { + pub fn write_to_memory( + &mut self, + page: usize, + slot: usize, + value: PrimitiveValue, + timestamp: Timestamp, + ) -> PrimitiveValue { + self.apply_historic_record( + MemoryHistoryRecord { + page, + slot, + set_value: value, + }, + timestamp, + ) + } + + pub fn clear_page(&mut self, page: usize, timestamp: Timestamp) { + self.mutate_history(|inner, history| { + if let Some(page_handle) = inner.memory.get(page) { + for (i, x) in page_handle.root.iter().enumerate() { + if let Some(slots) = x { + for (j, value) in slots.iter().enumerate() { + if *value != PrimitiveValue::empty() { + history.push(( + timestamp, + MemoryHistoryRecord { + page, + slot: PAGE_SUBDIVISION_LEN * i + j, + set_value: *value, + }, + )) + } + } + } + } + inner.memory[page] = MemoryPage::default(); + } + }); + } +} + +#[derive(Debug)] +pub struct StorageWrapper { + storage_ptr: StoragePtr, +} + +impl StorageWrapper { + pub fn new(storage_ptr: StoragePtr) -> Self { + Self { storage_ptr } + } + + pub fn get_ptr(&self) -> StoragePtr { + self.storage_ptr.clone() + } + + pub fn read_from_storage(&self, key: &StorageKey) -> U256 { + h256_to_u256(self.storage_ptr.borrow_mut().read_value(key)) + } +} + +#[derive(Debug, Clone)] +pub struct StorageHistoryRecord { + pub key: StorageKey, + pub value: U256, +} + +impl WithHistory for StorageWrapper { + type HistoryRecord = StorageHistoryRecord; + type ReturnValue = U256; + + fn apply_historic_record( + &mut self, + item: Self::HistoryRecord, + ) -> (Self::HistoryRecord, Self::ReturnValue) { + let prev_value = h256_to_u256( + self.storage_ptr + .borrow_mut() + .set_value(item.key, u256_to_h256(item.value)), + ); + + let reverse_item = StorageHistoryRecord { + key: item.key, + value: prev_value, + }; + + (reverse_item, prev_value) + } +} + +impl HistoryRecorder, H> { + pub fn read_from_storage(&self, key: &StorageKey) -> U256 { + self.inner.read_from_storage(key) + } + + pub fn write_to_storage(&mut self, key: StorageKey, value: U256, timestamp: Timestamp) -> U256 { + self.apply_historic_record(StorageHistoryRecord { key, value }, timestamp) + } + + /// Returns a pointer to the storage. + /// Note, that any changes done to the storage via this pointer + /// will NOT be recorded as its history. + pub fn get_ptr(&self) -> StoragePtr { + self.inner.get_ptr() + } +} + +#[cfg(test)] +mod tests { + use crate::vm_refunds_enhancement::old_vm::history_recorder::{HistoryRecorder, MemoryWrapper}; + use crate::vm_refunds_enhancement::HistoryDisabled; + use zk_evm_1_3_3::{aux_structures::Timestamp, vm_state::PrimitiveValue}; + use zksync_types::U256; + + #[test] + fn memory_equality() { + let mut a: HistoryRecorder = Default::default(); + let mut b = a.clone(); + let nonzero = U256::from_dec_str("123").unwrap(); + let different_value = U256::from_dec_str("1234").unwrap(); + + let write = |memory: &mut HistoryRecorder, value| { + memory.write_to_memory( + 17, + 34, + PrimitiveValue { + value, + is_pointer: false, + }, + Timestamp::empty(), + ); + }; + + assert_eq!(a, b); + + write(&mut b, nonzero); + assert_ne!(a, b); + + write(&mut a, different_value); + assert_ne!(a, b); + + write(&mut a, nonzero); + assert_eq!(a, b); + } +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/old_vm/memory.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/old_vm/memory.rs new file mode 100644 index 00000000000..1ef04da58cb --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/old_vm/memory.rs @@ -0,0 +1,325 @@ +use zk_evm_1_3_3::abstractions::{Memory, MemoryType}; +use zk_evm_1_3_3::aux_structures::{MemoryPage, MemoryQuery, Timestamp}; +use zk_evm_1_3_3::vm_state::PrimitiveValue; +use zk_evm_1_3_3::zkevm_opcode_defs::FatPointer; +use zksync_types::U256; + +use crate::vm_refunds_enhancement::old_vm::history_recorder::{ + FramedStack, HistoryEnabled, HistoryMode, IntFrameManagerWithHistory, MemoryWithHistory, + MemoryWrapper, WithHistory, +}; +use crate::vm_refunds_enhancement::old_vm::oracles::OracleWithHistory; +use crate::vm_refunds_enhancement::old_vm::utils::{ + aux_heap_page_from_base, heap_page_from_base, stack_page_from_base, +}; + +#[derive(Debug, Clone, PartialEq)] +pub struct SimpleMemory { + memory: MemoryWithHistory, + observable_pages: IntFrameManagerWithHistory, +} + +impl Default for SimpleMemory { + fn default() -> Self { + let mut memory: MemoryWithHistory = Default::default(); + memory.mutate_history(|_, h| h.reserve(607)); + Self { + memory, + observable_pages: Default::default(), + } + } +} + +impl OracleWithHistory for SimpleMemory { + fn rollback_to_timestamp(&mut self, timestamp: Timestamp) { + self.memory.rollback_to_timestamp(timestamp); + self.observable_pages.rollback_to_timestamp(timestamp); + } +} + +impl SimpleMemory { + pub fn populate(&mut self, elements: Vec<(u32, Vec)>, timestamp: Timestamp) { + for (page, values) in elements.into_iter() { + for (i, value) in values.into_iter().enumerate() { + let value = PrimitiveValue { + value, + is_pointer: false, + }; + self.memory + .write_to_memory(page as usize, i, value, timestamp); + } + } + } + + pub fn populate_page( + &mut self, + page: usize, + elements: Vec<(usize, U256)>, + timestamp: Timestamp, + ) { + elements.into_iter().for_each(|(offset, value)| { + let value = PrimitiveValue { + value, + is_pointer: false, + }; + + self.memory.write_to_memory(page, offset, value, timestamp); + }); + } + + pub fn dump_page_content_as_u256_words( + &self, + page: u32, + range: std::ops::Range, + ) -> Vec { + self.memory + .inner() + .dump_page_content_as_u256_words(page, range) + .into_iter() + .map(|v| v.value) + .collect() + } + + pub fn read_slot(&self, page: usize, slot: usize) -> &PrimitiveValue { + self.memory.inner().read_slot(page, slot) + } + + // This method should be used with relatively small lengths, since + // we don't heavily optimize here for cases with long lengths + pub fn read_unaligned_bytes(&self, page: usize, start: usize, length: usize) -> Vec { + if length == 0 { + return vec![]; + } + + let end = start + length - 1; + + let mut current_word = start / 32; + let mut result = vec![]; + while current_word * 32 <= end { + let word_value = self.read_slot(page, current_word).value; + let word_value = { + let mut bytes: Vec = vec![0u8; 32]; + word_value.to_big_endian(&mut bytes); + bytes + }; + + result.extend(extract_needed_bytes_from_word( + word_value, + current_word, + start, + end, + )); + + current_word += 1; + } + + assert_eq!(result.len(), length); + + result + } + + pub(crate) fn get_size(&self) -> usize { + // Hashmap memory overhead is neglected. + let memory_size = self.memory.inner().get_size(); + let observable_pages_size = self.observable_pages.inner().get_size(); + + memory_size + observable_pages_size + } + + pub fn get_history_size(&self) -> usize { + let memory_size = self.memory.borrow_history(|h| h.len(), 0) + * std::mem::size_of::<::HistoryRecord>(); + let observable_pages_size = self.observable_pages.borrow_history(|h| h.len(), 0) + * std::mem::size_of::< as WithHistory>::HistoryRecord>(); + + memory_size + observable_pages_size + } + + pub fn delete_history(&mut self) { + self.memory.delete_history(); + self.observable_pages.delete_history(); + } +} + +impl Memory for SimpleMemory { + fn execute_partial_query( + &mut self, + _monotonic_cycle_counter: u32, + mut query: MemoryQuery, + ) -> MemoryQuery { + match query.location.memory_type { + MemoryType::Stack => {} + MemoryType::Heap | MemoryType::AuxHeap => { + // The following assertion works fine even when doing a read + // from heap through pointer, since `value_is_pointer` can only be set to + // `true` during memory writes. + assert!( + !query.value_is_pointer, + "Pointers can only be stored on stack" + ); + } + MemoryType::FatPointer => { + assert!(!query.rw_flag); + assert!( + !query.value_is_pointer, + "Pointers can only be stored on stack" + ); + } + MemoryType::Code => { + unreachable!("code should be through specialized query"); + } + } + + let page = query.location.page.0 as usize; + let slot = query.location.index.0 as usize; + + if query.rw_flag { + self.memory.write_to_memory( + page, + slot, + PrimitiveValue { + value: query.value, + is_pointer: query.value_is_pointer, + }, + query.timestamp, + ); + } else { + let current_value = self.read_slot(page, slot); + query.value = current_value.value; + query.value_is_pointer = current_value.is_pointer; + } + + query + } + + fn specialized_code_query( + &mut self, + _monotonic_cycle_counter: u32, + mut query: MemoryQuery, + ) -> MemoryQuery { + assert_eq!(query.location.memory_type, MemoryType::Code); + assert!( + !query.value_is_pointer, + "Pointers are not used for decommmits" + ); + + let page = query.location.page.0 as usize; + let slot = query.location.index.0 as usize; + + if query.rw_flag { + self.memory.write_to_memory( + page, + slot, + PrimitiveValue { + value: query.value, + is_pointer: query.value_is_pointer, + }, + query.timestamp, + ); + } else { + let current_value = self.read_slot(page, slot); + query.value = current_value.value; + query.value_is_pointer = current_value.is_pointer; + } + + query + } + + fn read_code_query( + &self, + _monotonic_cycle_counter: u32, + mut query: MemoryQuery, + ) -> MemoryQuery { + assert_eq!(query.location.memory_type, MemoryType::Code); + assert!( + !query.value_is_pointer, + "Pointers are not used for decommmits" + ); + assert!(!query.rw_flag, "Only read queries can be processed"); + + let page = query.location.page.0 as usize; + let slot = query.location.index.0 as usize; + + let current_value = self.read_slot(page, slot); + query.value = current_value.value; + query.value_is_pointer = current_value.is_pointer; + + query + } + + fn start_global_frame( + &mut self, + _current_base_page: MemoryPage, + new_base_page: MemoryPage, + calldata_fat_pointer: FatPointer, + timestamp: Timestamp, + ) { + // Besides the calldata page, we also formally include the current stack + // page, heap page and aux heap page. + // The code page will be always left observable, so we don't include it here. + self.observable_pages.push_frame(timestamp); + self.observable_pages.extend_frame( + vec![ + calldata_fat_pointer.memory_page, + stack_page_from_base(new_base_page).0, + heap_page_from_base(new_base_page).0, + aux_heap_page_from_base(new_base_page).0, + ], + timestamp, + ); + } + + fn finish_global_frame( + &mut self, + base_page: MemoryPage, + returndata_fat_pointer: FatPointer, + timestamp: Timestamp, + ) { + // Safe to unwrap here, since `finish_global_frame` is never called with empty stack + let current_observable_pages = self.observable_pages.inner().current_frame(); + let returndata_page = returndata_fat_pointer.memory_page; + + for &page in current_observable_pages { + // If the page's number is greater than or equal to the base_page, + // it means that it was created by the internal calls of this contract. + // We need to add this check as the calldata pointer is also part of the + // observable pages. + if page >= base_page.0 && page != returndata_page { + self.memory.clear_page(page as usize, timestamp); + } + } + + self.observable_pages.clear_frame(timestamp); + self.observable_pages.merge_frame(timestamp); + + self.observable_pages + .push_to_frame(returndata_page, timestamp); + } +} + +// It is expected that there is some intersection between [word_number*32..word_number*32+31] and [start, end] +fn extract_needed_bytes_from_word( + word_value: Vec, + word_number: usize, + start: usize, + end: usize, +) -> Vec { + let word_start = word_number * 32; + let word_end = word_start + 31; // Note, that at word_start + 32 a new word already starts + + let intersection_left = std::cmp::max(word_start, start); + let intersection_right = std::cmp::min(word_end, end); + + if intersection_right < intersection_left { + vec![] + } else { + let start_bytes = intersection_left - word_start; + let to_take = intersection_right - intersection_left + 1; + + word_value + .into_iter() + .skip(start_bytes) + .take(to_take) + .collect() + } +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/old_vm/mod.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/old_vm/mod.rs new file mode 100644 index 00000000000..afade198461 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/old_vm/mod.rs @@ -0,0 +1,8 @@ +/// This module contains the parts from old VM implementation, which were not changed during the vm implementation. +/// It should be refactored and removed in the future. +pub(crate) mod event_sink; +pub(crate) mod events; +pub(crate) mod history_recorder; +pub(crate) mod memory; +pub(crate) mod oracles; +pub(crate) mod utils; diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/old_vm/oracles/decommitter.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/old_vm/oracles/decommitter.rs new file mode 100644 index 00000000000..0f335cabf39 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/old_vm/oracles/decommitter.rs @@ -0,0 +1,240 @@ +use std::collections::HashMap; +use std::fmt::Debug; + +use crate::vm_refunds_enhancement::old_vm::history_recorder::{ + HistoryEnabled, HistoryMode, HistoryRecorder, WithHistory, +}; + +use zk_evm_1_3_3::abstractions::MemoryType; +use zk_evm_1_3_3::aux_structures::Timestamp; +use zk_evm_1_3_3::{ + abstractions::{DecommittmentProcessor, Memory}, + aux_structures::{DecommittmentQuery, MemoryIndex, MemoryLocation, MemoryPage, MemoryQuery}, +}; + +use zksync_state::{ReadStorage, StoragePtr}; +use zksync_types::U256; +use zksync_utils::bytecode::bytecode_len_in_words; +use zksync_utils::{bytes_to_be_words, u256_to_h256}; + +use super::OracleWithHistory; + +/// The main job of the DecommiterOracle is to implement the DecommittmentProcessor trait - that is +/// used by the VM to 'load' bytecodes into memory. +#[derive(Debug)] +pub struct DecommitterOracle { + /// Pointer that enables to read contract bytecodes from the database. + storage: StoragePtr, + /// The cache of bytecodes that the bootloader "knows", but that are not necessarily in the database. + /// And it is also used as a database cache. + pub known_bytecodes: HistoryRecorder>, H>, + /// Stores pages of memory where certain code hashes have already been decommitted. + /// It is expected that they all are present in the DB. + // `decommitted_code_hashes` history is necessary + pub decommitted_code_hashes: HistoryRecorder, HistoryEnabled>, + /// Stores history of decommitment requests. + decommitment_requests: HistoryRecorder, H>, +} + +impl DecommitterOracle { + pub fn new(storage: StoragePtr) -> Self { + Self { + storage, + known_bytecodes: HistoryRecorder::default(), + decommitted_code_hashes: HistoryRecorder::default(), + decommitment_requests: HistoryRecorder::default(), + } + } + + /// Gets the bytecode for a given hash (either from storage, or from 'known_bytecodes' that were populated by `populate` method). + /// Panics if bytecode doesn't exist. + pub fn get_bytecode(&mut self, hash: U256, timestamp: Timestamp) -> Vec { + let entry = self.known_bytecodes.inner().get(&hash); + + match entry { + Some(x) => x.clone(), + None => { + // It is ok to panic here, since the decommitter is never called directly by + // the users and always called by the VM. VM will never let decommit the + // code hash which we didn't previously claim to know the preimage of. + let value = self + .storage + .borrow_mut() + .load_factory_dep(u256_to_h256(hash)) + .expect("Trying to decode unexisting hash"); + + let value = bytes_to_be_words(value); + self.known_bytecodes.insert(hash, value.clone(), timestamp); + value + } + } + } + + /// Adds additional bytecodes. They will take precendent over the bytecodes from storage. + pub fn populate(&mut self, bytecodes: Vec<(U256, Vec)>, timestamp: Timestamp) { + for (hash, bytecode) in bytecodes { + self.known_bytecodes.insert(hash, bytecode, timestamp); + } + } + + pub fn get_used_bytecode_hashes(&self) -> Vec { + self.decommitted_code_hashes + .inner() + .iter() + .map(|item| *item.0) + .collect() + } + + pub fn get_decommitted_bytecodes_after_timestamp(&self, timestamp: Timestamp) -> usize { + // Note, that here we rely on the fact that for each used bytecode + // there is one and only one corresponding event in the history of it. + self.decommitted_code_hashes + .history() + .iter() + .rev() + .take_while(|(t, _)| *t >= timestamp) + .count() + } + + pub fn get_decommitted_code_hashes_with_history( + &self, + ) -> &HistoryRecorder, HistoryEnabled> { + &self.decommitted_code_hashes + } + + /// Returns the storage handle. Used only in tests. + pub fn get_storage(&self) -> StoragePtr { + self.storage.clone() + } + + /// Measures the amount of memory used by this Oracle (used for metrics only). + pub(crate) fn get_size(&self) -> usize { + // Hashmap memory overhead is neglected. + let known_bytecodes_size = self + .known_bytecodes + .inner() + .iter() + .map(|(_, value)| value.len() * std::mem::size_of::()) + .sum::(); + let decommitted_code_hashes_size = + self.decommitted_code_hashes.inner().len() * std::mem::size_of::<(U256, u32)>(); + + known_bytecodes_size + decommitted_code_hashes_size + } + + pub(crate) fn get_history_size(&self) -> usize { + let known_bytecodes_stack_size = self.known_bytecodes.borrow_history(|h| h.len(), 0) + * std::mem::size_of::<> as WithHistory>::HistoryRecord>(); + let known_bytecodes_heap_size = self.known_bytecodes.borrow_history( + |h| { + h.iter() + .map(|(_, event)| { + if let Some(bytecode) = event.value.as_ref() { + bytecode.len() * std::mem::size_of::() + } else { + 0 + } + }) + .sum::() + }, + 0, + ); + let decommitted_code_hashes_size = + self.decommitted_code_hashes.borrow_history(|h| h.len(), 0) + * std::mem::size_of::< as WithHistory>::HistoryRecord>(); + + known_bytecodes_stack_size + known_bytecodes_heap_size + decommitted_code_hashes_size + } + + pub fn delete_history(&mut self) { + self.decommitted_code_hashes.delete_history(); + self.known_bytecodes.delete_history(); + self.decommitment_requests.delete_history(); + } +} + +impl OracleWithHistory for DecommitterOracle { + fn rollback_to_timestamp(&mut self, timestamp: Timestamp) { + self.decommitted_code_hashes + .rollback_to_timestamp(timestamp); + self.known_bytecodes.rollback_to_timestamp(timestamp); + self.decommitment_requests.rollback_to_timestamp(timestamp); + } +} + +impl DecommittmentProcessor + for DecommitterOracle +{ + /// Loads a given bytecode hash into memory (see trait description for more details). + fn decommit_into_memory( + &mut self, + monotonic_cycle_counter: u32, + mut partial_query: DecommittmentQuery, + memory: &mut M, + ) -> Result< + ( + zk_evm_1_3_3::aux_structures::DecommittmentQuery, + Option>, + ), + anyhow::Error, + > { + self.decommitment_requests.push((), partial_query.timestamp); + // First - check if we didn't fetch this bytecode in the past. + // If we did - we can just return the page that we used before (as the memory is read only). + if let Some(memory_page) = self + .decommitted_code_hashes + .inner() + .get(&partial_query.hash) + .copied() + { + partial_query.is_fresh = false; + partial_query.memory_page = MemoryPage(memory_page); + partial_query.decommitted_length = + bytecode_len_in_words(&u256_to_h256(partial_query.hash)); + + Ok((partial_query, None)) + } else { + // We are fetching a fresh bytecode that we didn't read before. + let values = self.get_bytecode(partial_query.hash, partial_query.timestamp); + let page_to_use = partial_query.memory_page; + let timestamp = partial_query.timestamp; + partial_query.decommitted_length = values.len() as u16; + partial_query.is_fresh = true; + + // Create a template query, that we'll use for writing into memory. + // value & index are set to 0 - as they will be updated in the inner loop below. + let mut tmp_q = MemoryQuery { + timestamp, + location: MemoryLocation { + memory_type: MemoryType::Code, + page: page_to_use, + index: MemoryIndex(0), + }, + value: U256::zero(), + value_is_pointer: false, + rw_flag: true, + }; + self.decommitted_code_hashes + .insert(partial_query.hash, page_to_use.0, timestamp); + + // Copy the bytecode (that is stored in 'values' Vec) into the memory page. + if B { + for (i, value) in values.iter().enumerate() { + tmp_q.location.index = MemoryIndex(i as u32); + tmp_q.value = *value; + memory.specialized_code_query(monotonic_cycle_counter, tmp_q); + } + // If we're in the witness mode - we also have to return the values. + Ok((partial_query, Some(values))) + } else { + for (i, value) in values.into_iter().enumerate() { + tmp_q.location.index = MemoryIndex(i as u32); + tmp_q.value = value; + memory.specialized_code_query(monotonic_cycle_counter, tmp_q); + } + + Ok((partial_query, None)) + } + } + } +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/old_vm/oracles/mod.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/old_vm/oracles/mod.rs new file mode 100644 index 00000000000..f9d35c2567b --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/old_vm/oracles/mod.rs @@ -0,0 +1,8 @@ +use zk_evm_1_3_3::aux_structures::Timestamp; + +pub(crate) mod decommitter; +pub(crate) mod precompile; + +pub(crate) trait OracleWithHistory { + fn rollback_to_timestamp(&mut self, timestamp: Timestamp); +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/old_vm/oracles/precompile.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/old_vm/oracles/precompile.rs new file mode 100644 index 00000000000..eb3f7b866b1 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/old_vm/oracles/precompile.rs @@ -0,0 +1,77 @@ +use zk_evm_1_3_3::{ + abstractions::Memory, + abstractions::PrecompileCyclesWitness, + abstractions::PrecompilesProcessor, + aux_structures::{LogQuery, MemoryQuery, Timestamp}, + precompiles::DefaultPrecompilesProcessor, +}; + +use crate::vm_refunds_enhancement::old_vm::history_recorder::{ + HistoryEnabled, HistoryMode, HistoryRecorder, +}; + +use super::OracleWithHistory; + +/// Wrap of DefaultPrecompilesProcessor that store queue +/// of timestamp when precompiles are called to be executed. +/// Number of precompiles per block is strictly limited, +/// saving timestamps allows us to check the exact number +/// of log queries, that were used during the tx execution. +#[derive(Debug, Clone)] +pub struct PrecompilesProcessorWithHistory { + pub timestamp_history: HistoryRecorder, H>, + pub default_precompiles_processor: DefaultPrecompilesProcessor, +} + +impl Default for PrecompilesProcessorWithHistory { + fn default() -> Self { + Self { + timestamp_history: Default::default(), + default_precompiles_processor: DefaultPrecompilesProcessor, + } + } +} + +impl OracleWithHistory for PrecompilesProcessorWithHistory { + fn rollback_to_timestamp(&mut self, timestamp: Timestamp) { + self.timestamp_history.rollback_to_timestamp(timestamp); + } +} + +impl PrecompilesProcessorWithHistory { + pub fn get_timestamp_history(&self) -> &Vec { + self.timestamp_history.inner() + } + + pub fn delete_history(&mut self) { + self.timestamp_history.delete_history(); + } +} + +impl PrecompilesProcessor for PrecompilesProcessorWithHistory { + fn start_frame(&mut self) { + self.default_precompiles_processor.start_frame(); + } + fn execute_precompile( + &mut self, + monotonic_cycle_counter: u32, + query: LogQuery, + memory: &mut M, + ) -> Option<(Vec, Vec, PrecompileCyclesWitness)> { + // In the next line we same `query.timestamp` as both + // an operation in the history of precompiles processor and + // the time when this operation occurred. + // While slightly weird, it is done for consistency with other oracles + // where operations and timestamp have different types. + self.timestamp_history + .push(query.timestamp, query.timestamp); + self.default_precompiles_processor.execute_precompile( + monotonic_cycle_counter, + query, + memory, + ) + } + fn finish_frame(&mut self, _panicked: bool) { + self.default_precompiles_processor.finish_frame(_panicked); + } +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/old_vm/oracles/storage.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/old_vm/oracles/storage.rs new file mode 100644 index 00000000000..bf1871c9b68 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/old_vm/oracles/storage.rs @@ -0,0 +1,338 @@ +use std::collections::HashMap; + +use crate::vm_refunds_enhancement::old_vm::history_recorder::{ + AppDataFrameManagerWithHistory, HashMapHistoryEvent, HistoryEnabled, HistoryMode, + HistoryRecorder, StorageWrapper, WithHistory, +}; + +use zk_evm_1_3_3::abstractions::RefundedAmounts; +use zk_evm_1_3_3::zkevm_opcode_defs::system_params::INITIAL_STORAGE_WRITE_PUBDATA_BYTES; +use zk_evm_1_3_3::{ + abstractions::{RefundType, Storage as VmStorageOracle}, + aux_structures::{LogQuery, Timestamp}, +}; + +use zksync_state::{StoragePtr, WriteStorage}; +use zksync_types::utils::storage_key_for_eth_balance; +use zksync_types::{ + AccountTreeId, Address, StorageKey, StorageLogQuery, StorageLogQueryType, BOOTLOADER_ADDRESS, + U256, +}; +use zksync_utils::u256_to_h256; + +use super::OracleWithHistory; + +// While the storage does not support different shards, it was decided to write the +// code of the StorageOracle with the shard parameters in mind. +pub(crate) fn triplet_to_storage_key(_shard_id: u8, address: Address, key: U256) -> StorageKey { + StorageKey::new(AccountTreeId::new(address), u256_to_h256(key)) +} + +pub(crate) fn storage_key_of_log(query: &LogQuery) -> StorageKey { + triplet_to_storage_key(query.shard_id, query.address, query.key) +} + +#[derive(Debug)] +pub struct StorageOracle { + // Access to the persistent storage. Please note that it + // is used only for read access. All the actual writes happen + // after the execution ended. + pub(crate) storage: HistoryRecorder, H>, + + pub(crate) frames_stack: AppDataFrameManagerWithHistory, H>, + + // The changes that have been paid for in previous transactions. + // It is a mapping from storage key to the number of *bytes* that was paid by the user + // to cover this slot. + // `paid_changes` history is necessary + pub(crate) paid_changes: HistoryRecorder, HistoryEnabled>, +} + +impl OracleWithHistory for StorageOracle { + fn rollback_to_timestamp(&mut self, timestamp: Timestamp) { + self.frames_stack.rollback_to_timestamp(timestamp); + self.storage.rollback_to_timestamp(timestamp); + self.paid_changes.rollback_to_timestamp(timestamp); + } +} + +impl StorageOracle { + pub fn new(storage: StoragePtr) -> Self { + Self { + storage: HistoryRecorder::from_inner(StorageWrapper::new(storage)), + frames_stack: Default::default(), + paid_changes: Default::default(), + } + } + + pub fn delete_history(&mut self) { + self.frames_stack.delete_history(); + self.storage.delete_history(); + self.paid_changes.delete_history(); + } + + fn is_storage_key_free(&self, key: &StorageKey) -> bool { + key.address() == &zksync_system_constants::SYSTEM_CONTEXT_ADDRESS + || *key == storage_key_for_eth_balance(&BOOTLOADER_ADDRESS) + } + + pub fn read_value(&mut self, mut query: LogQuery) -> LogQuery { + let key = triplet_to_storage_key(query.shard_id, query.address, query.key); + let current_value = self.storage.read_from_storage(&key); + + query.read_value = current_value; + + self.frames_stack.push_forward( + Box::new(StorageLogQuery { + log_query: query, + log_type: StorageLogQueryType::Read, + }), + query.timestamp, + ); + + query + } + + pub fn write_value(&mut self, mut query: LogQuery) -> LogQuery { + let key = triplet_to_storage_key(query.shard_id, query.address, query.key); + let current_value = + self.storage + .write_to_storage(key, query.written_value, query.timestamp); + + let is_initial_write = self.storage.get_ptr().borrow_mut().is_write_initial(&key); + let log_query_type = if is_initial_write { + StorageLogQueryType::InitialWrite + } else { + StorageLogQueryType::RepeatedWrite + }; + + query.read_value = current_value; + + let mut storage_log_query = StorageLogQuery { + log_query: query, + log_type: log_query_type, + }; + self.frames_stack + .push_forward(Box::new(storage_log_query), query.timestamp); + storage_log_query.log_query.rollback = true; + self.frames_stack + .push_rollback(Box::new(storage_log_query), query.timestamp); + storage_log_query.log_query.rollback = false; + + query + } + + // Returns the amount of funds that has been already paid for writes into the storage slot + fn prepaid_for_write(&self, storage_key: &StorageKey) -> u32 { + self.paid_changes + .inner() + .get(storage_key) + .copied() + .unwrap_or_default() + } + + pub(crate) fn base_price_for_write(&self, query: &LogQuery) -> u32 { + let storage_key = storage_key_of_log(query); + + if self.is_storage_key_free(&storage_key) { + return 0; + } + + let is_initial_write = self + .storage + .get_ptr() + .borrow_mut() + .is_write_initial(&storage_key); + + get_pubdata_price_bytes(query, is_initial_write) + } + + // Returns the price of the update in terms of pubdata bytes. + // TODO (SMA-1701): update VM to accept gas instead of pubdata. + fn value_update_price(&self, query: &LogQuery) -> u32 { + let storage_key = storage_key_of_log(query); + + let base_cost = self.base_price_for_write(query); + + let already_paid = self.prepaid_for_write(&storage_key); + + if base_cost <= already_paid { + // Some other transaction has already paid for this slot, no need to pay anything + 0u32 + } else { + base_cost - already_paid + } + } + + /// Returns storage log queries from current frame where `log.log_query.timestamp >= from_timestamp`. + pub(crate) fn storage_log_queries_after_timestamp( + &self, + from_timestamp: Timestamp, + ) -> &[Box] { + let logs = self.frames_stack.forward().current_frame(); + + // Select all of the last elements where l.log_query.timestamp >= from_timestamp. + // Note, that using binary search here is dangerous, because the logs are not sorted by timestamp. + logs.rsplit(|l| l.log_query.timestamp < from_timestamp) + .next() + .unwrap_or(&[]) + } + + pub(crate) fn get_final_log_queries(&self) -> Vec { + assert_eq!( + self.frames_stack.len(), + 1, + "VM finished execution in unexpected state" + ); + + self.frames_stack + .forward() + .current_frame() + .iter() + .map(|x| **x) + .collect() + } + + pub(crate) fn get_size(&self) -> usize { + let frames_stack_size = self.frames_stack.get_size(); + let paid_changes_size = + self.paid_changes.inner().len() * std::mem::size_of::<(StorageKey, u32)>(); + + frames_stack_size + paid_changes_size + } + + pub(crate) fn get_history_size(&self) -> usize { + let storage_size = self.storage.borrow_history(|h| h.len(), 0) + * std::mem::size_of::< as WithHistory>::HistoryRecord>(); + let frames_stack_size = self.frames_stack.get_history_size(); + let paid_changes_size = self.paid_changes.borrow_history(|h| h.len(), 0) + * std::mem::size_of::< as WithHistory>::HistoryRecord>(); + storage_size + frames_stack_size + paid_changes_size + } +} + +impl VmStorageOracle for StorageOracle { + // Perform a storage read/write access by taking an partially filled query + // and returning filled query and cold/warm marker for pricing purposes + fn execute_partial_query( + &mut self, + _monotonic_cycle_counter: u32, + query: LogQuery, + ) -> LogQuery { + // tracing::trace!( + // "execute partial query cyc {:?} addr {:?} key {:?}, rw {:?}, wr {:?}, tx {:?}", + // _monotonic_cycle_counter, + // query.address, + // query.key, + // query.rw_flag, + // query.written_value, + // query.tx_number_in_block + // ); + assert!(!query.rollback); + if query.rw_flag { + // The number of bytes that have been compensated by the user to perform this write + let storage_key = storage_key_of_log(&query); + + // It is considered that the user has paid for the whole base price for the writes + let to_pay_by_user = self.base_price_for_write(&query); + let prepaid = self.prepaid_for_write(&storage_key); + + if to_pay_by_user > prepaid { + self.paid_changes.apply_historic_record( + HashMapHistoryEvent { + key: storage_key, + value: Some(to_pay_by_user), + }, + query.timestamp, + ); + } + self.write_value(query) + } else { + self.read_value(query) + } + } + + // We can return the size of the refund before each storage query. + // Note, that while the `RefundType` allows to provide refunds both in + // `ergs` and `pubdata`, only refunds in pubdata will be compensated for the users + fn estimate_refunds_for_write( + &mut self, // to avoid any hacks inside, like prefetch + _monotonic_cycle_counter: u32, + partial_query: &LogQuery, + ) -> RefundType { + let price_to_pay = self.value_update_price(partial_query); + + RefundType::RepeatedWrite(RefundedAmounts { + ergs: 0, + // `INITIAL_STORAGE_WRITE_PUBDATA_BYTES` is the default amount of pubdata bytes the user pays for. + pubdata_bytes: (INITIAL_STORAGE_WRITE_PUBDATA_BYTES as u32) - price_to_pay, + }) + } + + // Indicate a start of execution frame for rollback purposes + fn start_frame(&mut self, timestamp: Timestamp) { + self.frames_stack.push_frame(timestamp); + } + + // Indicate that execution frame went out from the scope, so we can + // log the history and either rollback immediately or keep records to rollback later + fn finish_frame(&mut self, timestamp: Timestamp, panicked: bool) { + // If we panic then we append forward and rollbacks to the forward of parent, + // otherwise we place rollbacks of child before rollbacks of the parent + if panicked { + // perform actual rollback + for query in self.frames_stack.rollback().current_frame().iter().rev() { + let read_value = match query.log_type { + StorageLogQueryType::Read => { + // Having Read logs in rollback is not possible + tracing::warn!("Read log in rollback queue {:?}", query); + continue; + } + StorageLogQueryType::InitialWrite | StorageLogQueryType::RepeatedWrite => { + query.log_query.read_value + } + }; + + let LogQuery { written_value, .. } = query.log_query; + let key = triplet_to_storage_key( + query.log_query.shard_id, + query.log_query.address, + query.log_query.key, + ); + let current_value = self.storage.write_to_storage( + key, + // NOTE, that since it is a rollback query, + // the `read_value` is being set + read_value, timestamp, + ); + + // Additional validation that the current value was correct + // Unwrap is safe because the return value from write_inner is the previous value in this leaf. + // It is impossible to set leaf value to `None` + assert_eq!(current_value, written_value); + } + + self.frames_stack + .move_rollback_to_forward(|_| true, timestamp); + } + self.frames_stack.merge_frame(timestamp); + } +} + +/// Returns the number of bytes needed to publish a slot. +// Since we need to publish the state diffs onchain, for each of the updated storage slot +// we basically need to publish the following pair: (). +// While new_value is always 32 bytes long, for key we use the following optimization: +// - The first time we publish it, we use 32 bytes. +// Then, we remember a 8-byte id for this slot and assign it to it. We call this initial write. +// - The second time we publish it, we will use this 8-byte instead of the 32 bytes of the entire key. +// So the total size of the publish pubdata is 40 bytes. We call this kind of write the repeated one +fn get_pubdata_price_bytes(_query: &LogQuery, is_initial: bool) -> u32 { + // TODO (SMA-1702): take into account the content of the log query, i.e. values that contain mostly zeroes + // should cost less. + if is_initial { + zk_evm_1_3_3::zkevm_opcode_defs::system_params::INITIAL_STORAGE_WRITE_PUBDATA_BYTES as u32 + } else { + zk_evm_1_3_3::zkevm_opcode_defs::system_params::REPEATED_STORAGE_WRITE_PUBDATA_BYTES as u32 + } +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/old_vm/utils.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/old_vm/utils.rs new file mode 100644 index 00000000000..9b4aae851d2 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/old_vm/utils.rs @@ -0,0 +1,224 @@ +use crate::vm_refunds_enhancement::old_vm::memory::SimpleMemory; + +use crate::vm_refunds_enhancement::types::internals::ZkSyncVmState; +use crate::vm_refunds_enhancement::HistoryMode; + +use zk_evm_1_3_3::zkevm_opcode_defs::decoding::{ + AllowedPcOrImm, EncodingModeProduction, VmEncodingMode, +}; +use zk_evm_1_3_3::zkevm_opcode_defs::RET_IMPLICIT_RETURNDATA_PARAMS_REGISTER; +use zk_evm_1_3_3::{ + aux_structures::{MemoryPage, Timestamp}, + vm_state::PrimitiveValue, + zkevm_opcode_defs::FatPointer, +}; +use zksync_state::WriteStorage; +use zksync_system_constants::L1_GAS_PER_PUBDATA_BYTE; + +use zksync_types::{Address, U256}; + +#[derive(Debug, Clone)] +pub(crate) enum VmExecutionResult { + Ok(Vec), + Revert(Vec), + Panic, + MostLikelyDidNotFinish(Address, u16), +} + +pub(crate) const fn stack_page_from_base(base: MemoryPage) -> MemoryPage { + MemoryPage(base.0 + 1) +} + +pub(crate) const fn heap_page_from_base(base: MemoryPage) -> MemoryPage { + MemoryPage(base.0 + 2) +} + +pub(crate) const fn aux_heap_page_from_base(base: MemoryPage) -> MemoryPage { + MemoryPage(base.0 + 3) +} + +pub(crate) trait FixedLengthIterator<'a, I: 'a, const N: usize>: Iterator +where + Self: 'a, +{ + fn next(&mut self) -> Option<::Item> { + ::next(self) + } +} + +pub(crate) trait IntoFixedLengthByteIterator { + type IntoIter: FixedLengthIterator<'static, u8, N>; + fn into_le_iter(self) -> Self::IntoIter; + fn into_be_iter(self) -> Self::IntoIter; +} + +pub(crate) struct FixedBufferValueIterator { + iter: std::array::IntoIter, +} + +impl Iterator for FixedBufferValueIterator { + type Item = T; + fn next(&mut self) -> Option { + self.iter.next() + } +} + +impl FixedLengthIterator<'static, T, N> + for FixedBufferValueIterator +{ +} + +impl IntoFixedLengthByteIterator<32> for U256 { + type IntoIter = FixedBufferValueIterator; + fn into_le_iter(self) -> Self::IntoIter { + let mut buffer = [0u8; 32]; + self.to_little_endian(&mut buffer); + + FixedBufferValueIterator { + iter: IntoIterator::into_iter(buffer), + } + } + + fn into_be_iter(self) -> Self::IntoIter { + let mut buffer = [0u8; 32]; + self.to_big_endian(&mut buffer); + + FixedBufferValueIterator { + iter: IntoIterator::into_iter(buffer), + } + } +} + +/// Receives sorted slice of timestamps. +/// Returns count of timestamps that are greater than or equal to `from_timestamp`. +/// Works in O(log(sorted_timestamps.len())). +pub(crate) fn precompile_calls_count_after_timestamp( + sorted_timestamps: &[Timestamp], + from_timestamp: Timestamp, +) -> usize { + sorted_timestamps.len() - sorted_timestamps.partition_point(|t| *t < from_timestamp) +} + +pub(crate) fn eth_price_per_pubdata_byte(l1_gas_price: u64) -> u64 { + // This value will typically be a lot less than u64 + // unless the gas price on L1 goes beyond tens of millions of gwei + l1_gas_price * (L1_GAS_PER_PUBDATA_BYTE as u64) +} + +pub(crate) fn vm_may_have_ended_inner( + vm: &ZkSyncVmState, +) -> Option { + let execution_has_ended = vm.execution_has_ended(); + + let r1 = vm.local_state.registers[RET_IMPLICIT_RETURNDATA_PARAMS_REGISTER as usize]; + let current_address = vm.local_state.callstack.get_current_stack().this_address; + + let outer_eh_location = >::PcOrImm::MAX.as_u64(); + match ( + execution_has_ended, + vm.local_state.callstack.get_current_stack().pc.as_u64(), + ) { + (true, 0) => { + let returndata = dump_memory_page_using_primitive_value(&vm.memory, r1); + + Some(VmExecutionResult::Ok(returndata)) + } + (false, _) => None, + (true, l) if l == outer_eh_location => { + // check r1,r2,r3 + if vm.local_state.flags.overflow_or_less_than_flag { + Some(VmExecutionResult::Panic) + } else { + let returndata = dump_memory_page_using_primitive_value(&vm.memory, r1); + Some(VmExecutionResult::Revert(returndata)) + } + } + (_, a) => Some(VmExecutionResult::MostLikelyDidNotFinish( + current_address, + a as u16, + )), + } +} + +pub(crate) fn dump_memory_page_using_primitive_value( + memory: &SimpleMemory, + ptr: PrimitiveValue, +) -> Vec { + if !ptr.is_pointer { + return vec![]; + } + let fat_ptr = FatPointer::from_u256(ptr.value); + dump_memory_page_using_fat_pointer(memory, fat_ptr) +} + +pub(crate) fn dump_memory_page_using_fat_pointer( + memory: &SimpleMemory, + fat_ptr: FatPointer, +) -> Vec { + dump_memory_page_by_offset_and_length( + memory, + fat_ptr.memory_page, + (fat_ptr.start + fat_ptr.offset) as usize, + (fat_ptr.length - fat_ptr.offset) as usize, + ) +} + +pub(crate) fn dump_memory_page_by_offset_and_length( + memory: &SimpleMemory, + page: u32, + offset: usize, + length: usize, +) -> Vec { + assert!(offset < (1u32 << 24) as usize); + assert!(length < (1u32 << 24) as usize); + let mut dump = Vec::with_capacity(length); + if length == 0 { + return dump; + } + + let first_word = offset / 32; + let end_byte = offset + length; + let mut last_word = end_byte / 32; + if end_byte % 32 != 0 { + last_word += 1; + } + + let unalignment = offset % 32; + + let page_part = + memory.dump_page_content_as_u256_words(page, (first_word as u32)..(last_word as u32)); + + let mut is_first = true; + let mut remaining = length; + for word in page_part.into_iter() { + let it = word.into_be_iter(); + if is_first { + is_first = false; + let it = it.skip(unalignment); + for next in it { + if remaining > 0 { + dump.push(next); + remaining -= 1; + } + } + } else { + for next in it { + if remaining > 0 { + dump.push(next); + remaining -= 1; + } + } + } + } + + assert_eq!( + dump.len(), + length, + "tried to dump with offset {}, length {}, got a bytestring of length {}", + offset, + length, + dump.len() + ); + + dump +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/oracles/mod.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/oracles/mod.rs new file mode 100644 index 00000000000..b21c842572f --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/oracles/mod.rs @@ -0,0 +1 @@ +pub(crate) mod storage; diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/oracles/storage.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/oracles/storage.rs new file mode 100644 index 00000000000..e054cdbe2a6 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/oracles/storage.rs @@ -0,0 +1,426 @@ +use std::collections::HashMap; + +use crate::vm_refunds_enhancement::old_vm::history_recorder::{ + AppDataFrameManagerWithHistory, HashMapHistoryEvent, HistoryEnabled, HistoryMode, + HistoryRecorder, StorageWrapper, VectorHistoryEvent, WithHistory, +}; +use crate::vm_refunds_enhancement::old_vm::oracles::OracleWithHistory; + +use zk_evm_1_3_3::abstractions::RefundedAmounts; +use zk_evm_1_3_3::zkevm_opcode_defs::system_params::INITIAL_STORAGE_WRITE_PUBDATA_BYTES; +use zk_evm_1_3_3::{ + abstractions::{RefundType, Storage as VmStorageOracle}, + aux_structures::{LogQuery, Timestamp}, +}; + +use zksync_state::{StoragePtr, WriteStorage}; +use zksync_types::utils::storage_key_for_eth_balance; +use zksync_types::{ + AccountTreeId, Address, StorageKey, StorageLogQuery, StorageLogQueryType, BOOTLOADER_ADDRESS, + U256, +}; +use zksync_utils::u256_to_h256; + +// While the storage does not support different shards, it was decided to write the +// code of the StorageOracle with the shard parameters in mind. +pub(crate) fn triplet_to_storage_key(_shard_id: u8, address: Address, key: U256) -> StorageKey { + StorageKey::new(AccountTreeId::new(address), u256_to_h256(key)) +} + +pub(crate) fn storage_key_of_log(query: &LogQuery) -> StorageKey { + triplet_to_storage_key(query.shard_id, query.address, query.key) +} + +#[derive(Debug)] +pub struct StorageOracle { + // Access to the persistent storage. Please note that it + // is used only for read access. All the actual writes happen + // after the execution ended. + pub(crate) storage: HistoryRecorder, H>, + + pub(crate) frames_stack: AppDataFrameManagerWithHistory, H>, + + // The changes that have been paid for in previous transactions. + // It is a mapping from storage key to the number of *bytes* that was paid by the user + // to cover this slot. + pub(crate) pre_paid_changes: HistoryRecorder, H>, + + // The changes that have been paid for in the current transaction + pub(crate) paid_changes: HistoryRecorder, H>, + + // The map that contains all the first values read from storage for each slot. + // While formally it does not have to be rollbackable, we still do it to avoid memory bloat + // for unused slots. + pub(crate) initial_values: HistoryRecorder, H>, + + // Storage refunds that oracle has returned in `estimate_refunds_for_write`. + pub(crate) returned_refunds: HistoryRecorder, H>, +} + +impl OracleWithHistory for StorageOracle { + fn rollback_to_timestamp(&mut self, timestamp: Timestamp) { + self.storage.rollback_to_timestamp(timestamp); + self.frames_stack.rollback_to_timestamp(timestamp); + self.pre_paid_changes.rollback_to_timestamp(timestamp); + self.paid_changes.rollback_to_timestamp(timestamp); + self.initial_values.rollback_to_timestamp(timestamp); + self.returned_refunds.rollback_to_timestamp(timestamp); + } +} + +impl StorageOracle { + pub fn new(storage: StoragePtr) -> Self { + Self { + storage: HistoryRecorder::from_inner(StorageWrapper::new(storage)), + frames_stack: Default::default(), + pre_paid_changes: Default::default(), + paid_changes: Default::default(), + initial_values: Default::default(), + returned_refunds: Default::default(), + } + } + + pub fn delete_history(&mut self) { + self.storage.delete_history(); + self.frames_stack.delete_history(); + self.pre_paid_changes.delete_history(); + self.paid_changes.delete_history(); + self.initial_values.delete_history(); + self.returned_refunds.delete_history(); + } + + fn is_storage_key_free(&self, key: &StorageKey) -> bool { + key.address() == &zksync_system_constants::SYSTEM_CONTEXT_ADDRESS + || *key == storage_key_for_eth_balance(&BOOTLOADER_ADDRESS) + } + + pub fn read_value(&mut self, mut query: LogQuery) -> LogQuery { + let key = triplet_to_storage_key(query.shard_id, query.address, query.key); + let current_value = self.storage.read_from_storage(&key); + + query.read_value = current_value; + + self.frames_stack.push_forward( + Box::new(StorageLogQuery { + log_query: query, + log_type: StorageLogQueryType::Read, + }), + query.timestamp, + ); + + query + } + + pub fn write_value(&mut self, mut query: LogQuery) -> LogQuery { + let key = triplet_to_storage_key(query.shard_id, query.address, query.key); + let current_value = + self.storage + .write_to_storage(key, query.written_value, query.timestamp); + + let is_initial_write = self.storage.get_ptr().borrow_mut().is_write_initial(&key); + let log_query_type = if is_initial_write { + StorageLogQueryType::InitialWrite + } else { + StorageLogQueryType::RepeatedWrite + }; + + query.read_value = current_value; + + if !self.initial_values.inner().contains_key(&key) { + self.initial_values + .insert(key, current_value, query.timestamp); + } + + let mut storage_log_query = StorageLogQuery { + log_query: query, + log_type: log_query_type, + }; + self.frames_stack + .push_forward(Box::new(storage_log_query), query.timestamp); + storage_log_query.log_query.rollback = true; + self.frames_stack + .push_rollback(Box::new(storage_log_query), query.timestamp); + storage_log_query.log_query.rollback = false; + + query + } + + // Returns the amount of funds that has been already paid for writes into the storage slot + fn prepaid_for_write(&self, storage_key: &StorageKey) -> u32 { + self.paid_changes + .inner() + .get(storage_key) + .copied() + .unwrap_or_else(|| { + self.pre_paid_changes + .inner() + .get(storage_key) + .copied() + .unwrap_or(0) + }) + } + + // Remembers the changes that have been paid for in the current transaction. + // It also returns how much pubdata did the user pay for and how much was actually published. + pub(crate) fn save_paid_changes(&mut self, timestamp: Timestamp) -> u32 { + let mut published = 0; + + let modified_keys = self + .paid_changes + .inner() + .iter() + .map(|(k, v)| (*k, *v)) + .collect::>(); + + for (key, _) in modified_keys { + // It is expected that for each slot for which we have paid changes, there is some + // first slot value already read. + let first_slot_value = self.initial_values.inner().get(&key).copied().unwrap(); + + // This is the value has been written to the storage slot at the end. + let current_slot_value = self.storage.read_from_storage(&key); + + let required_pubdata = + self.base_price_for_write(&key, first_slot_value, current_slot_value); + + // We assume that "prepaid_for_slot" represents both the number of pubdata published and the number of bytes paid by the previous transactions + // as they should be identical. + let prepaid_for_slot = self + .pre_paid_changes + .inner() + .get(&key) + .copied() + .unwrap_or_default(); + + published += required_pubdata.saturating_sub(prepaid_for_slot); + + // We remove the slot from the paid changes and move to the pre-paid changes as + // the transaction ends. + self.paid_changes.remove(key, timestamp); + self.pre_paid_changes + .insert(key, prepaid_for_slot.max(required_pubdata), timestamp); + } + + published + } + + fn base_price_for_write_query(&self, query: &LogQuery) -> u32 { + let storage_key = storage_key_of_log(query); + + self.base_price_for_write(&storage_key, query.read_value, query.written_value) + } + + pub(crate) fn base_price_for_write( + &self, + storage_key: &StorageKey, + prev_value: U256, + new_value: U256, + ) -> u32 { + if self.is_storage_key_free(storage_key) || prev_value == new_value { + return 0; + } + + let is_initial_write = self + .storage + .get_ptr() + .borrow_mut() + .is_write_initial(storage_key); + + get_pubdata_price_bytes(is_initial_write) + } + + // Returns the price of the update in terms of pubdata bytes. + // TODO (SMA-1701): update VM to accept gas instead of pubdata. + fn value_update_price(&self, query: &LogQuery) -> u32 { + let storage_key = storage_key_of_log(query); + + let base_cost = self.base_price_for_write_query(query); + + let already_paid = self.prepaid_for_write(&storage_key); + + if base_cost <= already_paid { + // Some other transaction has already paid for this slot, no need to pay anything + 0u32 + } else { + base_cost - already_paid + } + } + + /// Returns storage log queries from current frame where `log.log_query.timestamp >= from_timestamp`. + pub(crate) fn storage_log_queries_after_timestamp( + &self, + from_timestamp: Timestamp, + ) -> &[Box] { + let logs = self.frames_stack.forward().current_frame(); + + // Select all of the last elements where l.log_query.timestamp >= from_timestamp. + // Note, that using binary search here is dangerous, because the logs are not sorted by timestamp. + logs.rsplit(|l| l.log_query.timestamp < from_timestamp) + .next() + .unwrap_or(&[]) + } + + pub(crate) fn get_final_log_queries(&self) -> Vec { + assert_eq!( + self.frames_stack.len(), + 1, + "VM finished execution in unexpected state" + ); + + self.frames_stack + .forward() + .current_frame() + .iter() + .map(|x| **x) + .collect() + } + + pub(crate) fn get_size(&self) -> usize { + let frames_stack_size = self.frames_stack.get_size(); + let paid_changes_size = + self.paid_changes.inner().len() * std::mem::size_of::<(StorageKey, u32)>(); + + frames_stack_size + paid_changes_size + } + + pub(crate) fn get_history_size(&self) -> usize { + let storage_size = self.storage.borrow_history(|h| h.len(), 0) + * std::mem::size_of::< as WithHistory>::HistoryRecord>(); + let frames_stack_size = self.frames_stack.get_history_size(); + let paid_changes_size = self.paid_changes.borrow_history(|h| h.len(), 0) + * std::mem::size_of::< as WithHistory>::HistoryRecord>(); + storage_size + frames_stack_size + paid_changes_size + } +} + +impl VmStorageOracle for StorageOracle { + // Perform a storage read/write access by taking an partially filled query + // and returning filled query and cold/warm marker for pricing purposes + fn execute_partial_query( + &mut self, + _monotonic_cycle_counter: u32, + query: LogQuery, + ) -> LogQuery { + // tracing::trace!( + // "execute partial query cyc {:?} addr {:?} key {:?}, rw {:?}, wr {:?}, tx {:?}", + // _monotonic_cycle_counter, + // query.address, + // query.key, + // query.rw_flag, + // query.written_value, + // query.tx_number_in_block + // ); + assert!(!query.rollback); + if query.rw_flag { + // The number of bytes that have been compensated by the user to perform this write + let storage_key = storage_key_of_log(&query); + + // It is considered that the user has paid for the whole base price for the writes + let to_pay_by_user = self.base_price_for_write_query(&query); + let prepaid = self.prepaid_for_write(&storage_key); + + if to_pay_by_user > prepaid { + self.paid_changes.apply_historic_record( + HashMapHistoryEvent { + key: storage_key, + value: Some(to_pay_by_user), + }, + query.timestamp, + ); + } + self.write_value(query) + } else { + self.read_value(query) + } + } + + // We can return the size of the refund before each storage query. + // Note, that while the `RefundType` allows to provide refunds both in + // `ergs` and `pubdata`, only refunds in pubdata will be compensated for the users + fn estimate_refunds_for_write( + &mut self, // to avoid any hacks inside, like prefetch + _monotonic_cycle_counter: u32, + partial_query: &LogQuery, + ) -> RefundType { + let price_to_pay = self.value_update_price(partial_query); + + let refund = RefundType::RepeatedWrite(RefundedAmounts { + ergs: 0, + // `INITIAL_STORAGE_WRITE_PUBDATA_BYTES` is the default amount of pubdata bytes the user pays for. + pubdata_bytes: (INITIAL_STORAGE_WRITE_PUBDATA_BYTES as u32) - price_to_pay, + }); + self.returned_refunds.apply_historic_record( + VectorHistoryEvent::Push(refund.pubdata_refund()), + partial_query.timestamp, + ); + + refund + } + + // Indicate a start of execution frame for rollback purposes + fn start_frame(&mut self, timestamp: Timestamp) { + self.frames_stack.push_frame(timestamp); + } + + // Indicate that execution frame went out from the scope, so we can + // log the history and either rollback immediately or keep records to rollback later + fn finish_frame(&mut self, timestamp: Timestamp, panicked: bool) { + // If we panic then we append forward and rollbacks to the forward of parent, + // otherwise we place rollbacks of child before rollbacks of the parent + if panicked { + // perform actual rollback + for query in self.frames_stack.rollback().current_frame().iter().rev() { + let read_value = match query.log_type { + StorageLogQueryType::Read => { + // Having Read logs in rollback is not possible + tracing::warn!("Read log in rollback queue {:?}", query); + continue; + } + StorageLogQueryType::InitialWrite | StorageLogQueryType::RepeatedWrite => { + query.log_query.read_value + } + }; + + let LogQuery { written_value, .. } = query.log_query; + let key = triplet_to_storage_key( + query.log_query.shard_id, + query.log_query.address, + query.log_query.key, + ); + let current_value = self.storage.write_to_storage( + key, + // NOTE, that since it is a rollback query, + // the `read_value` is being set + read_value, timestamp, + ); + + // Additional validation that the current value was correct + // Unwrap is safe because the return value from write_inner is the previous value in this leaf. + // It is impossible to set leaf value to `None` + assert_eq!(current_value, written_value); + } + + self.frames_stack + .move_rollback_to_forward(|_| true, timestamp); + } + self.frames_stack.merge_frame(timestamp); + } +} + +/// Returns the number of bytes needed to publish a slot. +// Since we need to publish the state diffs onchain, for each of the updated storage slot +// we basically need to publish the following pair: (). +// While new_value is always 32 bytes long, for key we use the following optimization: +// - The first time we publish it, we use 32 bytes. +// Then, we remember a 8-byte id for this slot and assign it to it. We call this initial write. +// - The second time we publish it, we will use this 8-byte instead of the 32 bytes of the entire key. +// So the total size of the publish pubdata is 40 bytes. We call this kind of write the repeated one +fn get_pubdata_price_bytes(is_initial: bool) -> u32 { + // TODO (SMA-1702): take into account the content of the log query, i.e. values that contain mostly zeroes + // should cost less. + if is_initial { + zk_evm_1_3_3::zkevm_opcode_defs::system_params::INITIAL_STORAGE_WRITE_PUBDATA_BYTES as u32 + } else { + zk_evm_1_3_3::zkevm_opcode_defs::system_params::REPEATED_STORAGE_WRITE_PUBDATA_BYTES as u32 + } +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/bootloader.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/bootloader.rs new file mode 100644 index 00000000000..bfa439106ea --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/bootloader.rs @@ -0,0 +1,54 @@ +use zksync_types::U256; + +use crate::interface::{Halt, TxExecutionMode, VmExecutionMode}; +use crate::vm_refunds_enhancement::constants::BOOTLOADER_HEAP_PAGE; +use crate::vm_refunds_enhancement::tests::tester::VmTesterBuilder; +use crate::vm_refunds_enhancement::tests::utils::{ + get_bootloader, verify_required_memory, BASE_SYSTEM_CONTRACTS, +}; + +use crate::interface::ExecutionResult; +use crate::vm_refunds_enhancement::HistoryEnabled; + +#[test] +fn test_dummy_bootloader() { + let mut base_system_contracts = BASE_SYSTEM_CONTRACTS.clone(); + base_system_contracts.bootloader = get_bootloader("dummy"); + + let mut vm = VmTesterBuilder::new(HistoryEnabled) + .with_empty_in_memory_storage() + .with_base_system_smart_contracts(base_system_contracts) + .with_execution_mode(TxExecutionMode::VerifyExecute) + .build(); + + let result = vm.vm.execute(VmExecutionMode::Batch); + assert!(!result.result.is_failed()); + + let correct_first_cell = U256::from_str_radix("123123123", 16).unwrap(); + verify_required_memory( + &vm.vm.state, + vec![(correct_first_cell, BOOTLOADER_HEAP_PAGE, 0)], + ); +} + +#[test] +fn test_bootloader_out_of_gas() { + let mut base_system_contracts = BASE_SYSTEM_CONTRACTS.clone(); + base_system_contracts.bootloader = get_bootloader("dummy"); + + let mut vm = VmTesterBuilder::new(HistoryEnabled) + .with_empty_in_memory_storage() + .with_base_system_smart_contracts(base_system_contracts) + .with_gas_limit(10) + .with_execution_mode(TxExecutionMode::VerifyExecute) + .build(); + + let res = vm.vm.execute(VmExecutionMode::Batch); + + assert!(matches!( + res.result, + ExecutionResult::Halt { + reason: Halt::BootloaderOutOfGas + } + )); +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/bytecode_publishing.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/bytecode_publishing.rs new file mode 100644 index 00000000000..b2c126dea00 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/bytecode_publishing.rs @@ -0,0 +1,37 @@ +use zksync_types::event::extract_long_l2_to_l1_messages; +use zksync_utils::bytecode::compress_bytecode; + +use crate::interface::{TxExecutionMode, VmExecutionMode}; +use crate::vm_refunds_enhancement::tests::tester::{DeployContractsTx, TxType, VmTesterBuilder}; +use crate::vm_refunds_enhancement::tests::utils::read_test_contract; +use crate::vm_refunds_enhancement::HistoryEnabled; + +#[test] +fn test_bytecode_publishing() { + // In this test, we aim to ensure that the contents of the compressed bytecodes + // are included as part of the L2->L1 long messages + let mut vm = VmTesterBuilder::new(HistoryEnabled) + .with_empty_in_memory_storage() + .with_execution_mode(TxExecutionMode::VerifyExecute) + .with_random_rich_accounts(1) + .build(); + + let counter = read_test_contract(); + let account = &mut vm.rich_accounts[0]; + + let compressed_bytecode = compress_bytecode(&counter).unwrap(); + + let DeployContractsTx { tx, .. } = account.get_deploy_tx(&counter, None, TxType::L2); + vm.vm.push_transaction(tx); + let result = vm.vm.execute(VmExecutionMode::OneTx); + assert!(!result.result.is_failed(), "Transaction wasn't successful"); + + vm.vm.execute(VmExecutionMode::Batch); + + let state = vm.vm.get_current_execution_state(); + let long_messages = extract_long_l2_to_l1_messages(&state.events); + assert!( + long_messages.contains(&compressed_bytecode), + "Bytecode not published" + ); +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/call_tracer.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/call_tracer.rs new file mode 100644 index 00000000000..fb2d3389407 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/call_tracer.rs @@ -0,0 +1,87 @@ +use crate::interface::{TxExecutionMode, VmExecutionMode}; +use crate::vm_refunds_enhancement::constants::BLOCK_GAS_LIMIT; +use crate::vm_refunds_enhancement::tests::tester::VmTesterBuilder; +use crate::vm_refunds_enhancement::tests::utils::{read_max_depth_contract, read_test_contract}; +use crate::vm_refunds_enhancement::{CallTracer, HistoryEnabled}; +use once_cell::sync::OnceCell; +use std::sync::Arc; +use zksync_types::{Address, Execute}; + +// This test is ultra slow, so it's ignored by default. +#[test] +#[ignore] +fn test_max_depth() { + let contarct = read_max_depth_contract(); + let address = Address::random(); + let mut vm = VmTesterBuilder::new(HistoryEnabled) + .with_empty_in_memory_storage() + .with_random_rich_accounts(1) + .with_deployer() + .with_gas_limit(BLOCK_GAS_LIMIT) + .with_execution_mode(TxExecutionMode::VerifyExecute) + .with_custom_contracts(vec![(contarct, address, true)]) + .build(); + + let account = &mut vm.rich_accounts[0]; + let tx = account.get_l2_tx_for_execute( + Execute { + contract_address: address, + calldata: vec![], + value: Default::default(), + factory_deps: None, + }, + None, + ); + + let result = Arc::new(OnceCell::new()); + let call_tracer = CallTracer::new(result.clone(), HistoryEnabled); + vm.vm.push_transaction(tx); + let res = vm + .vm + .inspect(vec![Box::new(call_tracer)], VmExecutionMode::OneTx); + assert!(result.get().is_some()); + assert!(res.result.is_failed()); +} + +#[test] +fn test_basic_behavior() { + let contarct = read_test_contract(); + let address = Address::random(); + let mut vm = VmTesterBuilder::new(HistoryEnabled) + .with_empty_in_memory_storage() + .with_random_rich_accounts(1) + .with_deployer() + .with_gas_limit(BLOCK_GAS_LIMIT) + .with_execution_mode(TxExecutionMode::VerifyExecute) + .with_custom_contracts(vec![(contarct, address, true)]) + .build(); + + let increment_by_6_calldata = + "7cf5dab00000000000000000000000000000000000000000000000000000000000000006"; + + let account = &mut vm.rich_accounts[0]; + let tx = account.get_l2_tx_for_execute( + Execute { + contract_address: address, + calldata: hex::decode(increment_by_6_calldata).unwrap(), + value: Default::default(), + factory_deps: None, + }, + None, + ); + + let result = Arc::new(OnceCell::new()); + let call_tracer = CallTracer::new(result.clone(), HistoryEnabled); + vm.vm.push_transaction(tx); + let res = vm + .vm + .inspect(vec![Box::new(call_tracer)], VmExecutionMode::OneTx); + + let call_tracer_result = result.get().unwrap(); + + assert_eq!(call_tracer_result.len(), 1); + // Expect that there are a plenty of subcalls underneath. + let subcall = &call_tracer_result[0].calls; + assert!(subcall.len() > 10); + assert!(!res.result.is_failed()); +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/default_aa.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/default_aa.rs new file mode 100644 index 00000000000..92e043ae96f --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/default_aa.rs @@ -0,0 +1,70 @@ +use zksync_system_constants::L2_ETH_TOKEN_ADDRESS; +use zksync_types::system_contracts::{DEPLOYMENT_NONCE_INCREMENT, TX_NONCE_INCREMENT}; + +use zksync_types::{get_code_key, get_known_code_key, get_nonce_key, AccountTreeId, U256}; +use zksync_utils::u256_to_h256; + +use crate::interface::{TxExecutionMode, VmExecutionMode}; +use crate::vm_refunds_enhancement::tests::tester::{DeployContractsTx, TxType, VmTesterBuilder}; +use crate::vm_refunds_enhancement::tests::utils::{ + get_balance, read_test_contract, verify_required_storage, +}; +use crate::vm_refunds_enhancement::HistoryEnabled; + +#[test] +fn test_default_aa_interaction() { + // In this test, we aim to test whether a simple account interaction (without any fee logic) + // will work. The account will try to deploy a simple contract from integration tests. + let mut vm = VmTesterBuilder::new(HistoryEnabled) + .with_empty_in_memory_storage() + .with_execution_mode(TxExecutionMode::VerifyExecute) + .with_random_rich_accounts(1) + .build(); + + let counter = read_test_contract(); + let account = &mut vm.rich_accounts[0]; + let DeployContractsTx { + tx, + bytecode_hash, + address, + } = account.get_deploy_tx(&counter, None, TxType::L2); + let maximal_fee = tx.gas_limit() * vm.vm.batch_env.base_fee(); + + vm.vm.push_transaction(tx); + let result = vm.vm.execute(VmExecutionMode::OneTx); + assert!(!result.result.is_failed(), "Transaction wasn't successful"); + + vm.vm.execute(VmExecutionMode::Batch); + vm.vm.get_current_execution_state(); + + // Both deployment and ordinary nonce should be incremented by one. + let account_nonce_key = get_nonce_key(&account.address); + let expected_nonce = TX_NONCE_INCREMENT + DEPLOYMENT_NONCE_INCREMENT; + + // The code hash of the deployed contract should be marked as republished. + let known_codes_key = get_known_code_key(&bytecode_hash); + + // The contract should be deployed successfully. + let account_code_key = get_code_key(&address); + + let expected_slots = vec![ + (u256_to_h256(expected_nonce), account_nonce_key), + (u256_to_h256(U256::from(1u32)), known_codes_key), + (bytecode_hash, account_code_key), + ]; + + verify_required_storage(&vm.vm.state, expected_slots); + + let expected_fee = maximal_fee + - U256::from(result.refunds.gas_refunded) * U256::from(vm.vm.batch_env.base_fee()); + let operator_balance = get_balance( + AccountTreeId::new(L2_ETH_TOKEN_ADDRESS), + &vm.fee_account, + vm.vm.state.storage.storage.get_ptr(), + ); + + assert_eq!( + operator_balance, expected_fee, + "Operator did not receive his fee" + ); +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/gas_limit.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/gas_limit.rs new file mode 100644 index 00000000000..0ea1669cf21 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/gas_limit.rs @@ -0,0 +1,47 @@ +use zksync_types::fee::Fee; +use zksync_types::Execute; + +use crate::vm_refunds_enhancement::constants::{ + BOOTLOADER_HEAP_PAGE, TX_DESCRIPTION_OFFSET, TX_GAS_LIMIT_OFFSET, +}; +use crate::vm_refunds_enhancement::tests::tester::VmTesterBuilder; + +use crate::interface::TxExecutionMode; +use crate::vm_refunds_enhancement::HistoryDisabled; + +/// Checks that `TX_GAS_LIMIT_OFFSET` constant is correct. +#[test] +fn test_tx_gas_limit_offset() { + let mut vm = VmTesterBuilder::new(HistoryDisabled) + .with_empty_in_memory_storage() + .with_execution_mode(TxExecutionMode::VerifyExecute) + .with_random_rich_accounts(1) + .build(); + + let gas_limit = 9999.into(); + let tx = vm.rich_accounts[0].get_l2_tx_for_execute( + Execute { + contract_address: Default::default(), + calldata: vec![], + value: Default::default(), + factory_deps: None, + }, + Some(Fee { + gas_limit, + ..Default::default() + }), + ); + + vm.vm.push_transaction(tx); + + let gas_limit_from_memory = vm + .vm + .state + .memory + .read_slot( + BOOTLOADER_HEAP_PAGE as usize, + TX_DESCRIPTION_OFFSET + TX_GAS_LIMIT_OFFSET, + ) + .value; + assert_eq!(gas_limit_from_memory, gas_limit); +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/get_used_contracts.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/get_used_contracts.rs new file mode 100644 index 00000000000..a798a3178f5 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/get_used_contracts.rs @@ -0,0 +1,104 @@ +use std::collections::{HashMap, HashSet}; + +use itertools::Itertools; + +use zksync_state::WriteStorage; +use zksync_system_constants::CONTRACT_DEPLOYER_ADDRESS; +use zksync_test_account::Account; +use zksync_types::{Execute, U256}; +use zksync_utils::bytecode::hash_bytecode; +use zksync_utils::h256_to_u256; + +use crate::interface::{TxExecutionMode, VmExecutionMode}; +use crate::vm_refunds_enhancement::tests::tester::{TxType, VmTesterBuilder}; +use crate::vm_refunds_enhancement::tests::utils::{read_test_contract, BASE_SYSTEM_CONTRACTS}; +use crate::vm_refunds_enhancement::{HistoryDisabled, HistoryMode, Vm}; + +#[test] +fn test_get_used_contracts() { + let mut vm = VmTesterBuilder::new(HistoryDisabled) + .with_empty_in_memory_storage() + .with_execution_mode(TxExecutionMode::VerifyExecute) + .build(); + + assert!(known_bytecodes_without_aa_code(&vm.vm).is_empty()); + + // create and push and execute some not-empty factory deps transaction with success status + // to check that get_used_contracts() updates + let contract_code = read_test_contract(); + let mut account = Account::random(); + let tx = account.get_deploy_tx(&contract_code, None, TxType::L1 { serial_id: 0 }); + vm.vm.push_transaction(tx.tx.clone()); + let result = vm.vm.execute(VmExecutionMode::OneTx); + assert!(!result.result.is_failed()); + + assert!(vm + .vm + .get_used_contracts() + .contains(&h256_to_u256(tx.bytecode_hash))); + + // Note: Default_AA will be in the list of used contracts if l2 tx is used + assert_eq!( + vm.vm + .get_used_contracts() + .into_iter() + .collect::>(), + known_bytecodes_without_aa_code(&vm.vm) + .keys() + .cloned() + .collect::>() + ); + + // create push and execute some non-empty factory deps transaction that fails + // (known_bytecodes will be updated but we expect get_used_contracts() to not be updated) + + let calldata = [1, 2, 3]; + let big_calldata: Vec = calldata + .iter() + .cycle() + .take(calldata.len() * 1024) + .cloned() + .collect(); + let account2 = Account::random(); + let tx2 = account2.get_l1_tx( + Execute { + contract_address: CONTRACT_DEPLOYER_ADDRESS, + calldata: big_calldata, + value: Default::default(), + factory_deps: Some(vec![vec![1; 32]]), + }, + 1, + ); + + vm.vm.push_transaction(tx2.clone()); + + let res2 = vm.vm.execute(VmExecutionMode::OneTx); + + assert!(res2.result.is_failed()); + + for factory_dep in tx2.execute.factory_deps.unwrap() { + let hash = hash_bytecode(&factory_dep); + let hash_to_u256 = h256_to_u256(hash); + assert!(known_bytecodes_without_aa_code(&vm.vm) + .keys() + .contains(&hash_to_u256)); + assert!(!vm.vm.get_used_contracts().contains(&hash_to_u256)); + } +} + +fn known_bytecodes_without_aa_code( + vm: &Vm, +) -> HashMap> { + let mut known_bytecodes_without_aa_code = vm + .state + .decommittment_processor + .known_bytecodes + .inner() + .clone(); + + known_bytecodes_without_aa_code + .remove(&h256_to_u256(BASE_SYSTEM_CONTRACTS.default_aa.hash)) + .unwrap(); + + known_bytecodes_without_aa_code +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/invalid_bytecode.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/invalid_bytecode.rs new file mode 100644 index 00000000000..88ed141630a --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/invalid_bytecode.rs @@ -0,0 +1,120 @@ +use zksync_types::H256; +use zksync_utils::h256_to_u256; + +use crate::vm_refunds_enhancement::tests::tester::VmTesterBuilder; +use crate::vm_refunds_enhancement::types::inputs::system_env::TxExecutionMode; +use crate::vm_refunds_enhancement::{HistoryEnabled, TxRevertReason}; + +// TODO this test requires a lot of hacks for bypassing the bytecode checks in the VM. +// Port it later, it's not significant. for now + +#[test] +fn test_invalid_bytecode() { + let mut vm_builder = VmTesterBuilder::new(HistoryEnabled) + .with_in_memory_storage() + .with_execution_mode(TxExecutionMode::VerifyExecute) + .with_random_rich_accounts(1); + let mut storage = vm_builder.take_storage(); + let mut vm = vm_builder.build(&mut storage); + + let block_gas_per_pubdata = vm_test_env + .block_context + .context + .block_gas_price_per_pubdata(); + + let mut test_vm_with_custom_bytecode_hash = + |bytecode_hash: H256, expected_revert_reason: Option| { + let mut oracle_tools = + OracleTools::new(vm_test_env.storage_ptr.as_mut(), HistoryEnabled); + + let (encoded_tx, predefined_overhead) = get_l1_tx_with_custom_bytecode_hash( + h256_to_u256(bytecode_hash), + block_gas_per_pubdata as u32, + ); + + run_vm_with_custom_factory_deps( + &mut oracle_tools, + vm_test_env.block_context.context, + &vm_test_env.block_properties, + encoded_tx, + predefined_overhead, + expected_revert_reason, + ); + }; + + let failed_to_mark_factory_deps = |msg: &str, data: Vec| { + TxRevertReason::FailedToMarkFactoryDependencies(VmRevertReason::General { + msg: msg.to_string(), + data, + }) + }; + + // Here we provide the correctly-formatted bytecode hash of + // odd length, so it should work. + test_vm_with_custom_bytecode_hash( + H256([ + 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, + ]), + None, + ); + + // Here we provide correctly formatted bytecode of even length, so + // it should fail. + test_vm_with_custom_bytecode_hash( + H256([ + 1, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, + ]), + Some(failed_to_mark_factory_deps( + "Code length in words must be odd", + vec![ + 8, 195, 121, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 67, 111, 100, 101, 32, 108, 101, 110, + 103, 116, 104, 32, 105, 110, 32, 119, 111, 114, 100, 115, 32, 109, 117, 115, 116, + 32, 98, 101, 32, 111, 100, 100, + ], + )), + ); + + // Here we provide incorrectly formatted bytecode of odd length, so + // it should fail. + test_vm_with_custom_bytecode_hash( + H256([ + 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, + ]), + Some(failed_to_mark_factory_deps( + "Incorrectly formatted bytecodeHash", + vec![ + 8, 195, 121, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 73, 110, 99, 111, 114, 114, 101, 99, + 116, 108, 121, 32, 102, 111, 114, 109, 97, 116, 116, 101, 100, 32, 98, 121, 116, + 101, 99, 111, 100, 101, 72, 97, 115, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + ], + )), + ); + + // Here we provide incorrectly formatted bytecode of odd length, so + // it should fail. + test_vm_with_custom_bytecode_hash( + H256([ + 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, + ]), + Some(failed_to_mark_factory_deps( + "Incorrectly formatted bytecodeHash", + vec![ + 8, 195, 121, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 73, 110, 99, 111, 114, 114, 101, 99, + 116, 108, 121, 32, 102, 111, 114, 109, 97, 116, 116, 101, 100, 32, 98, 121, 116, + 101, 99, 111, 100, 101, 72, 97, 115, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + ], + )), + ); +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/is_write_initial.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/is_write_initial.rs new file mode 100644 index 00000000000..ca7ff595e19 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/is_write_initial.rs @@ -0,0 +1,42 @@ +use zksync_state::ReadStorage; +use zksync_types::get_nonce_key; + +use crate::interface::{TxExecutionMode, VmExecutionMode}; +use crate::vm_refunds_enhancement::tests::tester::{Account, TxType, VmTesterBuilder}; +use crate::vm_refunds_enhancement::tests::utils::read_test_contract; +use crate::vm_refunds_enhancement::HistoryDisabled; + +#[test] +fn test_is_write_initial_behaviour() { + // In this test, we check result of `is_write_initial` at different stages. + // The main idea is to check that `is_write_initial` storage uses the correct cache for initial_writes and doesn't + // messed up it with the repeated writes during the one batch execution. + + let mut account = Account::random(); + let mut vm = VmTesterBuilder::new(HistoryDisabled) + .with_empty_in_memory_storage() + .with_execution_mode(TxExecutionMode::VerifyExecute) + .with_rich_accounts(vec![account.clone()]) + .build(); + + let nonce_key = get_nonce_key(&account.address); + // Check that the next write to the nonce key will be initial. + assert!(vm + .storage + .as_ref() + .borrow_mut() + .is_write_initial(&nonce_key)); + + let contract_code = read_test_contract(); + let tx = account.get_deploy_tx(&contract_code, None, TxType::L2).tx; + + vm.vm.push_transaction(tx); + vm.vm.execute(VmExecutionMode::OneTx); + + // Check that `is_write_initial` still returns true for the nonce key. + assert!(vm + .storage + .as_ref() + .borrow_mut() + .is_write_initial(&nonce_key)); +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/l1_tx_execution.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/l1_tx_execution.rs new file mode 100644 index 00000000000..138879cd7ed --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/l1_tx_execution.rs @@ -0,0 +1,125 @@ +use zksync_system_constants::BOOTLOADER_ADDRESS; +use zksync_types::l2_to_l1_log::L2ToL1Log; +use zksync_types::storage_writes_deduplicator::StorageWritesDeduplicator; +use zksync_types::{get_code_key, get_known_code_key, U256}; +use zksync_utils::u256_to_h256; + +use crate::interface::{TxExecutionMode, VmExecutionMode}; +use crate::vm_refunds_enhancement::tests::tester::{TxType, VmTesterBuilder}; +use crate::vm_refunds_enhancement::tests::utils::{ + read_test_contract, verify_required_storage, BASE_SYSTEM_CONTRACTS, +}; +use crate::vm_refunds_enhancement::types::internals::TransactionData; +use crate::vm_refunds_enhancement::HistoryEnabled; + +#[test] +fn test_l1_tx_execution() { + // In this test, we try to execute a contract deployment from L1 + // Here instead of marking code hash via the bootloader means, we will be + // using L1->L2 communication, the same it would likely be done during the priority mode. + + // There are always at least 3 initial writes here, because we pay fees from l1: + // - totalSupply of ETH token + // - balance of the refund recipient + // - balance of the bootloader + // - tx_rollout hash + + let basic_initial_writes = 1; + + let mut vm = VmTesterBuilder::new(HistoryEnabled) + .with_empty_in_memory_storage() + .with_base_system_smart_contracts(BASE_SYSTEM_CONTRACTS.clone()) + .with_execution_mode(TxExecutionMode::VerifyExecute) + .with_random_rich_accounts(1) + .build(); + + let contract_code = read_test_contract(); + let account = &mut vm.rich_accounts[0]; + let deploy_tx = account.get_deploy_tx(&contract_code, None, TxType::L1 { serial_id: 1 }); + let tx_data: TransactionData = deploy_tx.tx.clone().into(); + + let required_l2_to_l1_logs = vec![L2ToL1Log { + shard_id: 0, + is_service: true, + tx_number_in_block: 0, + sender: BOOTLOADER_ADDRESS, + key: tx_data.tx_hash(0.into()), + value: u256_to_h256(U256::from(1u32)), + }]; + + vm.vm.push_transaction(deploy_tx.tx.clone()); + + let res = vm.vm.execute(VmExecutionMode::OneTx); + + // The code hash of the deployed contract should be marked as republished. + let known_codes_key = get_known_code_key(&deploy_tx.bytecode_hash); + + // The contract should be deployed successfully. + let account_code_key = get_code_key(&deploy_tx.address); + + let expected_slots = vec![ + (u256_to_h256(U256::from(1u32)), known_codes_key), + (deploy_tx.bytecode_hash, account_code_key), + ]; + assert!(!res.result.is_failed()); + + verify_required_storage(&vm.vm.state, expected_slots); + + assert_eq!(res.logs.user_l2_to_l1_logs, required_l2_to_l1_logs); + + let tx = account.get_test_contract_transaction( + deploy_tx.address, + true, + None, + false, + TxType::L1 { serial_id: 0 }, + ); + vm.vm.push_transaction(tx); + let res = vm.vm.execute(VmExecutionMode::OneTx); + let storage_logs = res.logs.storage_logs; + let res = StorageWritesDeduplicator::apply_on_empty_state(&storage_logs); + + // Tx panicked + assert_eq!(res.initial_storage_writes - basic_initial_writes, 0); + + let tx = account.get_test_contract_transaction( + deploy_tx.address, + false, + None, + false, + TxType::L1 { serial_id: 0 }, + ); + vm.vm.push_transaction(tx.clone()); + let res = vm.vm.execute(VmExecutionMode::OneTx); + let storage_logs = res.logs.storage_logs; + let res = StorageWritesDeduplicator::apply_on_empty_state(&storage_logs); + // We changed one slot inside contract + assert_eq!(res.initial_storage_writes - basic_initial_writes, 1); + + // No repeated writes + let repeated_writes = res.repeated_storage_writes; + assert_eq!(res.repeated_storage_writes, 0); + + vm.vm.push_transaction(tx); + let storage_logs = vm.vm.execute(VmExecutionMode::OneTx).logs.storage_logs; + let res = StorageWritesDeduplicator::apply_on_empty_state(&storage_logs); + // We do the same storage write, it will be deduplicated, so still 4 initial write and 0 repeated + assert_eq!(res.initial_storage_writes - basic_initial_writes, 1); + assert_eq!(res.repeated_storage_writes, repeated_writes); + + let tx = account.get_test_contract_transaction( + deploy_tx.address, + false, + Some(10.into()), + false, + TxType::L1 { serial_id: 1 }, + ); + vm.vm.push_transaction(tx); + let result = vm.vm.execute(VmExecutionMode::OneTx); + // Method is not payable tx should fail + assert!(result.result.is_failed(), "The transaction should fail"); + + let res = StorageWritesDeduplicator::apply_on_empty_state(&result.logs.storage_logs); + // There are only basic initial writes + assert_eq!(res.initial_storage_writes - basic_initial_writes, 2); +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/l2_blocks.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/l2_blocks.rs new file mode 100644 index 00000000000..9130b6627ca --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/l2_blocks.rs @@ -0,0 +1,498 @@ +//! +//! Tests for the bootloader +//! The description for each of the tests can be found in the corresponding `.yul` file. +//! + +use crate::interface::{ExecutionResult, Halt, L2BlockEnv, TxExecutionMode, VmExecutionMode}; +use crate::vm_refunds_enhancement::constants::{ + BOOTLOADER_HEAP_PAGE, TX_OPERATOR_L2_BLOCK_INFO_OFFSET, TX_OPERATOR_SLOTS_PER_L2_BLOCK_INFO, +}; +use crate::vm_refunds_enhancement::tests::tester::default_l1_batch; +use crate::vm_refunds_enhancement::tests::tester::VmTesterBuilder; +use crate::vm_refunds_enhancement::utils::l2_blocks::get_l2_block_hash_key; +use crate::vm_refunds_enhancement::{HistoryEnabled, HistoryMode, Vm}; +use zk_evm_1_3_3::aux_structures::Timestamp; +use zksync_state::{ReadStorage, WriteStorage}; +use zksync_system_constants::{ + CURRENT_VIRTUAL_BLOCK_INFO_POSITION, REQUIRED_L1_TO_L2_GAS_PER_PUBDATA_BYTE, +}; +use zksync_types::block::{pack_block_info, unpack_block_info}; +use zksync_types::{ + block::{legacy_miniblock_hash, miniblock_hash}, + get_code_key, AccountTreeId, Execute, ExecuteTransactionCommon, L1BatchNumber, L1TxCommonData, + MiniblockNumber, StorageKey, Transaction, H160, H256, SYSTEM_CONTEXT_ADDRESS, + SYSTEM_CONTEXT_BLOCK_INFO_POSITION, SYSTEM_CONTEXT_CURRENT_L2_BLOCK_INFO_POSITION, + SYSTEM_CONTEXT_CURRENT_TX_ROLLING_HASH_POSITION, U256, +}; +use zksync_utils::{h256_to_u256, u256_to_h256}; + +fn get_l1_noop() -> Transaction { + Transaction { + common_data: ExecuteTransactionCommon::L1(L1TxCommonData { + sender: H160::random(), + gas_limit: U256::from(2000000u32), + gas_per_pubdata_limit: REQUIRED_L1_TO_L2_GAS_PER_PUBDATA_BYTE.into(), + ..Default::default() + }), + execute: Execute { + contract_address: H160::zero(), + calldata: vec![], + value: U256::zero(), + factory_deps: None, + }, + received_timestamp_ms: 0, + raw_bytes: None, + } +} + +#[test] +fn test_l2_block_initialization_timestamp() { + // This test checks that the L2 block initialization works correctly. + // Here we check that that the first block must have timestamp that is greater or equal to the timestamp + // of the current batch. + + let mut vm = VmTesterBuilder::new(HistoryEnabled) + .with_empty_in_memory_storage() + .with_execution_mode(TxExecutionMode::VerifyExecute) + .with_random_rich_accounts(1) + .build(); + + // Override the timestamp of the current miniblock to be 0. + vm.vm.bootloader_state.push_l2_block(L2BlockEnv { + number: 1, + timestamp: 0, + prev_block_hash: legacy_miniblock_hash(MiniblockNumber(0)), + max_virtual_blocks_to_create: 1, + }); + let l1_tx = get_l1_noop(); + + vm.vm.push_transaction(l1_tx); + let res = vm.vm.execute(VmExecutionMode::OneTx); + + assert_eq!( + res.result, + ExecutionResult::Halt {reason: Halt::FailedToSetL2Block("The timestamp of the L2 block must be greater than or equal to the timestamp of the current batch".to_string())} + ); +} + +#[test] +fn test_l2_block_initialization_number_non_zero() { + // This test checks that the L2 block initialization works correctly. + // Here we check that the first miniblock number can not be zero. + + let l1_batch = default_l1_batch(L1BatchNumber(1)); + let first_l2_block = L2BlockEnv { + number: 0, + timestamp: l1_batch.timestamp, + prev_block_hash: legacy_miniblock_hash(MiniblockNumber(0)), + max_virtual_blocks_to_create: 1, + }; + + let mut vm = VmTesterBuilder::new(HistoryEnabled) + .with_empty_in_memory_storage() + .with_execution_mode(TxExecutionMode::VerifyExecute) + .with_l1_batch_env(l1_batch) + .with_random_rich_accounts(1) + .build(); + + let l1_tx = get_l1_noop(); + + vm.vm.push_transaction(l1_tx); + + let timestamp = Timestamp(vm.vm.state.local_state.timestamp); + set_manual_l2_block_info(&mut vm.vm, 0, first_l2_block, timestamp); + + let res = vm.vm.execute(VmExecutionMode::OneTx); + + assert_eq!( + res.result, + ExecutionResult::Halt { + reason: Halt::FailedToSetL2Block( + "L2 block number is never expected to be zero".to_string() + ) + } + ); +} + +fn test_same_l2_block( + expected_error: Option, + override_timestamp: Option, + override_prev_block_hash: Option, +) { + let mut l1_batch = default_l1_batch(L1BatchNumber(1)); + l1_batch.timestamp = 1; + let mut vm = VmTesterBuilder::new(HistoryEnabled) + .with_empty_in_memory_storage() + .with_execution_mode(TxExecutionMode::VerifyExecute) + .with_l1_batch_env(l1_batch) + .with_random_rich_accounts(1) + .build(); + + let l1_tx = get_l1_noop(); + vm.vm.push_transaction(l1_tx.clone()); + let res = vm.vm.execute(VmExecutionMode::OneTx); + assert!(!res.result.is_failed()); + + let mut current_l2_block = vm.vm.batch_env.first_l2_block; + + if let Some(timestamp) = override_timestamp { + current_l2_block.timestamp = timestamp; + } + if let Some(prev_block_hash) = override_prev_block_hash { + current_l2_block.prev_block_hash = prev_block_hash; + } + + if (None, None) == (override_timestamp, override_prev_block_hash) { + current_l2_block.max_virtual_blocks_to_create = 0; + } + + vm.vm.push_transaction(l1_tx); + let timestamp = Timestamp(vm.vm.state.local_state.timestamp); + set_manual_l2_block_info(&mut vm.vm, 1, current_l2_block, timestamp); + + let result = vm.vm.execute(VmExecutionMode::OneTx); + + if let Some(err) = expected_error { + assert_eq!(result.result, ExecutionResult::Halt { reason: err }); + } else { + assert_eq!(result.result, ExecutionResult::Success { output: vec![] }); + } +} + +#[test] +fn test_l2_block_same_l2_block() { + // This test aims to test the case when there are multiple transactions inside the same L2 block. + + // Case 1: Incorrect timestamp + test_same_l2_block( + Some(Halt::FailedToSetL2Block( + "The timestamp of the same L2 block must be same".to_string(), + )), + Some(0), + None, + ); + + // Case 2: Incorrect previous block hash + test_same_l2_block( + Some(Halt::FailedToSetL2Block( + "The previous hash of the same L2 block must be same".to_string(), + )), + None, + Some(H256::zero()), + ); + + // Case 3: Correct continuation of the same L2 block + test_same_l2_block(None, None, None); +} + +fn test_new_l2_block( + first_l2_block: L2BlockEnv, + overriden_second_block_number: Option, + overriden_second_block_timestamp: Option, + overriden_second_block_prev_block_hash: Option, + expected_error: Option, +) { + let mut l1_batch = default_l1_batch(L1BatchNumber(1)); + l1_batch.timestamp = 1; + l1_batch.first_l2_block = first_l2_block; + + let mut vm = VmTesterBuilder::new(HistoryEnabled) + .with_empty_in_memory_storage() + .with_l1_batch_env(l1_batch) + .with_execution_mode(TxExecutionMode::VerifyExecute) + .with_random_rich_accounts(1) + .build(); + + let l1_tx = get_l1_noop(); + + // Firstly we execute the first transaction + vm.vm.push_transaction(l1_tx.clone()); + vm.vm.execute(VmExecutionMode::OneTx); + + let mut second_l2_block = vm.vm.batch_env.first_l2_block; + second_l2_block.number += 1; + second_l2_block.timestamp += 1; + second_l2_block.prev_block_hash = vm.vm.bootloader_state.last_l2_block().get_hash(); + + if let Some(block_number) = overriden_second_block_number { + second_l2_block.number = block_number; + } + if let Some(timestamp) = overriden_second_block_timestamp { + second_l2_block.timestamp = timestamp; + } + if let Some(prev_block_hash) = overriden_second_block_prev_block_hash { + second_l2_block.prev_block_hash = prev_block_hash; + } + + vm.vm.bootloader_state.push_l2_block(second_l2_block); + + vm.vm.push_transaction(l1_tx); + + let result = vm.vm.execute(VmExecutionMode::OneTx); + if let Some(err) = expected_error { + assert_eq!(result.result, ExecutionResult::Halt { reason: err }); + } else { + assert_eq!(result.result, ExecutionResult::Success { output: vec![] }); + } +} + +#[test] +fn test_l2_block_new_l2_block() { + // This test is aimed to cover potential issue + + let correct_first_block = L2BlockEnv { + number: 1, + timestamp: 1, + prev_block_hash: legacy_miniblock_hash(MiniblockNumber(0)), + max_virtual_blocks_to_create: 1, + }; + + // Case 1: Block number increasing by more than 1 + test_new_l2_block( + correct_first_block, + Some(3), + None, + None, + Some(Halt::FailedToSetL2Block( + "Invalid new L2 block number".to_string(), + )), + ); + + // Case 2: Timestamp not increasing + test_new_l2_block( + correct_first_block, + None, + Some(1), + None, + Some(Halt::FailedToSetL2Block("The timestamp of the new L2 block must be greater than the timestamp of the previous L2 block".to_string())), + ); + + // Case 3: Incorrect previous block hash + test_new_l2_block( + correct_first_block, + None, + None, + Some(H256::zero()), + Some(Halt::FailedToSetL2Block( + "The current L2 block hash is incorrect".to_string(), + )), + ); + + // Case 4: Correct new block + test_new_l2_block(correct_first_block, None, None, None, None); +} + +#[allow(clippy::too_many_arguments)] +fn test_first_in_batch( + miniblock_timestamp: u64, + miniblock_number: u32, + pending_txs_hash: H256, + batch_timestamp: u64, + new_batch_timestamp: u64, + batch_number: u32, + proposed_block: L2BlockEnv, + expected_error: Option, +) { + let mut l1_batch = default_l1_batch(L1BatchNumber(1)); + l1_batch.number += 1; + l1_batch.timestamp = new_batch_timestamp; + + let mut vm = VmTesterBuilder::new(HistoryEnabled) + .with_empty_in_memory_storage() + .with_l1_batch_env(l1_batch) + .with_execution_mode(TxExecutionMode::VerifyExecute) + .with_random_rich_accounts(1) + .build(); + let l1_tx = get_l1_noop(); + + // Setting the values provided. + let storage_ptr = vm.vm.state.storage.storage.get_ptr(); + let miniblock_info_slot = StorageKey::new( + AccountTreeId::new(SYSTEM_CONTEXT_ADDRESS), + SYSTEM_CONTEXT_CURRENT_L2_BLOCK_INFO_POSITION, + ); + let pending_txs_hash_slot = StorageKey::new( + AccountTreeId::new(SYSTEM_CONTEXT_ADDRESS), + SYSTEM_CONTEXT_CURRENT_TX_ROLLING_HASH_POSITION, + ); + let batch_info_slot = StorageKey::new( + AccountTreeId::new(SYSTEM_CONTEXT_ADDRESS), + SYSTEM_CONTEXT_BLOCK_INFO_POSITION, + ); + let prev_block_hash_position = get_l2_block_hash_key(miniblock_number - 1); + + storage_ptr.borrow_mut().set_value( + miniblock_info_slot, + u256_to_h256(pack_block_info( + miniblock_number as u64, + miniblock_timestamp, + )), + ); + storage_ptr + .borrow_mut() + .set_value(pending_txs_hash_slot, pending_txs_hash); + storage_ptr.borrow_mut().set_value( + batch_info_slot, + u256_to_h256(pack_block_info(batch_number as u64, batch_timestamp)), + ); + storage_ptr.borrow_mut().set_value( + prev_block_hash_position, + legacy_miniblock_hash(MiniblockNumber(miniblock_number - 1)), + ); + + // In order to skip checks from the Rust side of the VM, we firstly use some definitely correct L2 block info. + // And then override it with the user-provided value + + let last_l2_block = vm.vm.bootloader_state.last_l2_block(); + let new_l2_block = L2BlockEnv { + number: last_l2_block.number + 1, + timestamp: last_l2_block.timestamp + 1, + prev_block_hash: last_l2_block.get_hash(), + max_virtual_blocks_to_create: last_l2_block.max_virtual_blocks_to_create, + }; + + vm.vm.bootloader_state.push_l2_block(new_l2_block); + vm.vm.push_transaction(l1_tx); + let timestamp = Timestamp(vm.vm.state.local_state.timestamp); + set_manual_l2_block_info(&mut vm.vm, 0, proposed_block, timestamp); + + let result = vm.vm.execute(VmExecutionMode::OneTx); + if let Some(err) = expected_error { + assert_eq!(result.result, ExecutionResult::Halt { reason: err }); + } else { + assert_eq!(result.result, ExecutionResult::Success { output: vec![] }); + } +} + +#[test] +fn test_l2_block_first_in_batch() { + test_first_in_batch( + 1, + 1, + H256::zero(), + 1, + 2, + 1, + L2BlockEnv { + number: 2, + timestamp: 2, + prev_block_hash: miniblock_hash( + MiniblockNumber(1), + 1, + legacy_miniblock_hash(MiniblockNumber(0)), + H256::zero(), + ), + max_virtual_blocks_to_create: 1, + }, + None, + ); + + test_first_in_batch( + 8, + 1, + H256::zero(), + 5, + 12, + 1, + L2BlockEnv { + number: 2, + timestamp: 9, + prev_block_hash: miniblock_hash(MiniblockNumber(1), 8, legacy_miniblock_hash(MiniblockNumber(0)), H256::zero()), + max_virtual_blocks_to_create: 1 + }, + Some(Halt::FailedToSetL2Block("The timestamp of the L2 block must be greater than or equal to the timestamp of the current batch".to_string())), + ); +} + +#[test] +fn test_l2_block_upgrade() { + let mut vm = VmTesterBuilder::new(HistoryEnabled) + .with_empty_in_memory_storage() + .with_execution_mode(TxExecutionMode::VerifyExecute) + .with_random_rich_accounts(1) + .build(); + + vm.vm + .state + .storage + .storage + .get_ptr() + .borrow_mut() + .set_value(get_code_key(&SYSTEM_CONTEXT_ADDRESS), H256::default()); + + let l1_tx = get_l1_noop(); + // Firstly we execute the first transaction + vm.vm.push_transaction(l1_tx); + let result = vm.vm.execute(VmExecutionMode::OneTx); + assert!(!result.result.is_failed(), "No revert reason expected"); + let result = vm.vm.execute(VmExecutionMode::Batch); + assert!(!result.result.is_failed(), "No revert reason expected"); +} + +#[test] +fn test_l2_block_upgrade_ending() { + let mut l1_batch = default_l1_batch(L1BatchNumber(1)); + l1_batch.timestamp = 1; + let mut vm = VmTesterBuilder::new(HistoryEnabled) + .with_empty_in_memory_storage() + .with_execution_mode(TxExecutionMode::VerifyExecute) + .with_l1_batch_env(l1_batch.clone()) + .with_random_rich_accounts(1) + .build(); + + let l1_tx = get_l1_noop(); + + let storage = vm.storage.clone(); + + storage + .borrow_mut() + .set_value(get_code_key(&SYSTEM_CONTEXT_ADDRESS), H256::default()); + + vm.vm.push_transaction(l1_tx.clone()); + let result = vm.vm.execute(VmExecutionMode::OneTx); + + assert!(!result.result.is_failed(), "No revert reason expected"); + + let virtual_block_info = storage.borrow_mut().read_value(&StorageKey::new( + AccountTreeId::new(SYSTEM_CONTEXT_ADDRESS), + CURRENT_VIRTUAL_BLOCK_INFO_POSITION, + )); + + let (virtual_block_number, virtual_block_timestamp) = + unpack_block_info(h256_to_u256(virtual_block_info)); + + assert_eq!(virtual_block_number as u32, l1_batch.first_l2_block.number); + assert_eq!(virtual_block_timestamp, l1_batch.first_l2_block.timestamp); + vm.vm.push_transaction(l1_tx); + let result = vm.vm.execute(VmExecutionMode::OneTx); + assert!(!result.result.is_failed(), "No revert reason expected"); + let result = vm.vm.execute(VmExecutionMode::Batch); + assert!(!result.result.is_failed(), "No revert reason expected"); +} + +fn set_manual_l2_block_info( + vm: &mut Vm, + tx_number: usize, + block_info: L2BlockEnv, + timestamp: Timestamp, +) { + let fictive_miniblock_position = + TX_OPERATOR_L2_BLOCK_INFO_OFFSET + TX_OPERATOR_SLOTS_PER_L2_BLOCK_INFO * tx_number; + + vm.state.memory.populate_page( + BOOTLOADER_HEAP_PAGE as usize, + vec![ + (fictive_miniblock_position, block_info.number.into()), + (fictive_miniblock_position + 1, block_info.timestamp.into()), + ( + fictive_miniblock_position + 2, + h256_to_u256(block_info.prev_block_hash), + ), + ( + fictive_miniblock_position + 3, + block_info.max_virtual_blocks_to_create.into(), + ), + ], + timestamp, + ) +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/mod.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/mod.rs new file mode 100644 index 00000000000..ffb38dd3725 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/mod.rs @@ -0,0 +1,20 @@ +mod bootloader; +mod default_aa; +// TODO - fix this test +// mod invalid_bytecode; +mod bytecode_publishing; +mod call_tracer; +mod gas_limit; +mod get_used_contracts; +mod is_write_initial; +mod l1_tx_execution; +mod l2_blocks; +mod nonce_holder; +mod refunds; +mod require_eip712; +mod rollbacks; +mod simple_execution; +mod tester; +mod tracing_execution_error; +mod upgrade; +mod utils; diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/nonce_holder.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/nonce_holder.rs new file mode 100644 index 00000000000..21959461906 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/nonce_holder.rs @@ -0,0 +1,181 @@ +use zksync_types::{Execute, Nonce}; + +use crate::interface::TxExecutionMode; +use crate::interface::VmRevertReason; +use crate::interface::{ExecutionResult, Halt, TxRevertReason, VmExecutionMode}; +use crate::vm_refunds_enhancement::tests::tester::{Account, VmTesterBuilder}; +use crate::vm_refunds_enhancement::tests::utils::read_nonce_holder_tester; +use crate::vm_refunds_enhancement::types::internals::TransactionData; +use crate::vm_refunds_enhancement::HistoryEnabled; + +pub enum NonceHolderTestMode { + SetValueUnderNonce, + IncreaseMinNonceBy5, + IncreaseMinNonceTooMuch, + LeaveNonceUnused, + IncreaseMinNonceBy1, + SwitchToArbitraryOrdering, +} + +impl From for u8 { + fn from(mode: NonceHolderTestMode) -> u8 { + match mode { + NonceHolderTestMode::SetValueUnderNonce => 0, + NonceHolderTestMode::IncreaseMinNonceBy5 => 1, + NonceHolderTestMode::IncreaseMinNonceTooMuch => 2, + NonceHolderTestMode::LeaveNonceUnused => 3, + NonceHolderTestMode::IncreaseMinNonceBy1 => 4, + NonceHolderTestMode::SwitchToArbitraryOrdering => 5, + } + } +} + +#[test] +fn test_nonce_holder() { + let mut account = Account::random(); + + let mut vm = VmTesterBuilder::new(HistoryEnabled) + .with_empty_in_memory_storage() + .with_execution_mode(TxExecutionMode::VerifyExecute) + .with_deployer() + .with_custom_contracts(vec![( + read_nonce_holder_tester().to_vec(), + account.address, + true, + )]) + .with_rich_accounts(vec![account.clone()]) + .build(); + + let mut run_nonce_test = |nonce: u32, + test_mode: NonceHolderTestMode, + error_message: Option, + comment: &'static str| { + // In this test we have to reset VM state after each test case. Because once bootloader failed during the validation of the transaction, + // it will fail again and again. At the same time we have to keep the same storage, because we want to keep the nonce holder contract state. + // The easiest way in terms of lifetimes is to reuse vm_builder to achieve it. + vm.reset_state(true); + let mut transaction_data: TransactionData = account + .get_l2_tx_for_execute_with_nonce( + Execute { + contract_address: account.address, + calldata: vec![12], + value: Default::default(), + factory_deps: None, + }, + None, + Nonce(nonce), + ) + .into(); + + transaction_data.signature = vec![test_mode.into()]; + vm.vm.push_raw_transaction(transaction_data, 0, 0, true); + let result = vm.vm.execute(VmExecutionMode::OneTx); + + if let Some(msg) = error_message { + let expected_error = + TxRevertReason::Halt(Halt::ValidationFailed(VmRevertReason::General { + msg, + data: vec![], + })); + let ExecutionResult::Halt { reason } = result.result else { + panic!("Expected revert, got {:?}", result.result); + }; + assert_eq!( + reason.to_string(), + expected_error.to_string(), + "{}", + comment + ); + } else { + assert!(!result.result.is_failed(), "{}", comment); + } + }; + // Test 1: trying to set value under non sequential nonce value. + run_nonce_test( + 1u32, + NonceHolderTestMode::SetValueUnderNonce, + Some("Previous nonce has not been used".to_string()), + "Allowed to set value under non sequential value", + ); + + // Test 2: increase min nonce by 1 with sequential nonce ordering: + run_nonce_test( + 0u32, + NonceHolderTestMode::IncreaseMinNonceBy1, + None, + "Failed to increment nonce by 1 for sequential account", + ); + + // Test 3: correctly set value under nonce with sequential nonce ordering: + run_nonce_test( + 1u32, + NonceHolderTestMode::SetValueUnderNonce, + None, + "Failed to set value under nonce sequential value", + ); + + // Test 5: migrate to the arbitrary nonce ordering: + run_nonce_test( + 2u32, + NonceHolderTestMode::SwitchToArbitraryOrdering, + None, + "Failed to switch to arbitrary ordering", + ); + + // Test 6: increase min nonce by 5 + run_nonce_test( + 6u32, + NonceHolderTestMode::IncreaseMinNonceBy5, + None, + "Failed to increase min nonce by 5", + ); + + // Test 7: since the nonces in range [6,10] are no longer allowed, the + // tx with nonce 10 should not be allowed + run_nonce_test( + 10u32, + NonceHolderTestMode::IncreaseMinNonceBy5, + Some("Reusing the same nonce twice".to_string()), + "Allowed to reuse nonce below the minimal one", + ); + + // Test 8: we should be able to use nonce 13 + run_nonce_test( + 13u32, + NonceHolderTestMode::SetValueUnderNonce, + None, + "Did not allow to use unused nonce 10", + ); + + // Test 9: we should not be able to reuse nonce 13 + run_nonce_test( + 13u32, + NonceHolderTestMode::IncreaseMinNonceBy5, + Some("Reusing the same nonce twice".to_string()), + "Allowed to reuse the same nonce twice", + ); + + // Test 10: we should be able to simply use nonce 14, while bumping the minimal nonce by 5 + run_nonce_test( + 14u32, + NonceHolderTestMode::IncreaseMinNonceBy5, + None, + "Did not allow to use a bumped nonce", + ); + + // Test 11: Do not allow bumping nonce by too much + run_nonce_test( + 16u32, + NonceHolderTestMode::IncreaseMinNonceTooMuch, + Some("The value for incrementing the nonce is too high".to_string()), + "Allowed for incrementing min nonce too much", + ); + + // Test 12: Do not allow not setting a nonce as used + run_nonce_test( + 16u32, + NonceHolderTestMode::LeaveNonceUnused, + Some("The nonce was not set as used".to_string()), + "Allowed to leave nonce as unused", + ); +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/refunds.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/refunds.rs new file mode 100644 index 00000000000..5a8fdb7bf7c --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/refunds.rs @@ -0,0 +1,152 @@ +use crate::interface::{TxExecutionMode, VmExecutionMode}; +use crate::vm_refunds_enhancement::tests::tester::{DeployContractsTx, TxType, VmTesterBuilder}; +use crate::vm_refunds_enhancement::tests::utils::read_test_contract; + +use crate::vm_refunds_enhancement::types::internals::TransactionData; +use crate::vm_refunds_enhancement::HistoryEnabled; + +#[test] +fn test_predetermined_refunded_gas() { + // In this test, we compare the execution of the bootloader with the predefined + // refunded gas and without them + + let mut vm = VmTesterBuilder::new(HistoryEnabled) + .with_empty_in_memory_storage() + .with_execution_mode(TxExecutionMode::VerifyExecute) + .with_random_rich_accounts(1) + .build(); + let l1_batch = vm.vm.batch_env.clone(); + + let counter = read_test_contract(); + let account = &mut vm.rich_accounts[0]; + + let DeployContractsTx { + tx, + bytecode_hash: _, + address: _, + } = account.get_deploy_tx(&counter, None, TxType::L2); + vm.vm.push_transaction(tx.clone()); + let result = vm.vm.execute(VmExecutionMode::OneTx); + + assert!(!result.result.is_failed()); + + // If the refund provided by the operator or the final refund are the 0 + // there is no impact of the operator's refund at all and so this test does not + // make much sense. + assert!( + result.refunds.operator_suggested_refund > 0, + "The operator's refund is 0" + ); + assert!(result.refunds.gas_refunded > 0, "The final refund is 0"); + + let result_without_predefined_refunds = vm.vm.execute(VmExecutionMode::Batch); + let mut current_state_without_predefined_refunds = vm.vm.get_current_execution_state(); + assert!(!result_without_predefined_refunds.result.is_failed(),); + + // Here we want to provide the same refund from the operator and check that it's the correct one. + // We execute the whole block without refund tracer, because refund tracer will eventually override the provided refund. + // But the overall result should be the same + + let mut vm = VmTesterBuilder::new(HistoryEnabled) + .with_empty_in_memory_storage() + .with_l1_batch_env(l1_batch.clone()) + .with_execution_mode(TxExecutionMode::VerifyExecute) + .with_rich_accounts(vec![account.clone()]) + .build(); + + let tx: TransactionData = tx.into(); + let block_gas_per_pubdata_byte = vm.vm.batch_env.block_gas_price_per_pubdata(); + // Overhead + let overhead = tx.overhead_gas(block_gas_per_pubdata_byte as u32); + vm.vm + .push_raw_transaction(tx.clone(), overhead, result.refunds.gas_refunded, true); + + let result_with_predefined_refunds = vm.vm.execute(VmExecutionMode::Batch); + let mut current_state_with_predefined_refunds = vm.vm.get_current_execution_state(); + + assert!(!result_with_predefined_refunds.result.is_failed()); + + // We need to sort these lists as those are flattened from HashMaps + current_state_with_predefined_refunds + .used_contract_hashes + .sort(); + current_state_without_predefined_refunds + .used_contract_hashes + .sort(); + + assert_eq!( + current_state_with_predefined_refunds.events, + current_state_without_predefined_refunds.events + ); + + assert_eq!( + current_state_with_predefined_refunds.l2_to_l1_logs, + current_state_without_predefined_refunds.l2_to_l1_logs + ); + + assert_eq!( + current_state_with_predefined_refunds.storage_log_queries, + current_state_without_predefined_refunds.storage_log_queries + ); + assert_eq!( + current_state_with_predefined_refunds.used_contract_hashes, + current_state_without_predefined_refunds.used_contract_hashes + ); + + // In this test we put the different refund from the operator. + // We still can't use the refund tracer, because it will override the refund. + // But we can check that the logs and events have changed. + let mut vm = VmTesterBuilder::new(HistoryEnabled) + .with_empty_in_memory_storage() + .with_l1_batch_env(l1_batch) + .with_execution_mode(TxExecutionMode::VerifyExecute) + .with_rich_accounts(vec![account.clone()]) + .build(); + + let changed_operator_suggested_refund = result.refunds.gas_refunded + 1000; + vm.vm + .push_raw_transaction(tx, overhead, changed_operator_suggested_refund, true); + let result = vm.vm.execute(VmExecutionMode::Batch); + let mut current_state_with_changed_predefined_refunds = vm.vm.get_current_execution_state(); + + assert!(!result.result.is_failed()); + current_state_with_changed_predefined_refunds + .used_contract_hashes + .sort(); + current_state_without_predefined_refunds + .used_contract_hashes + .sort(); + + assert_eq!( + current_state_with_changed_predefined_refunds.events.len(), + current_state_without_predefined_refunds.events.len() + ); + + assert_ne!( + current_state_with_changed_predefined_refunds.events, + current_state_without_predefined_refunds.events + ); + + assert_eq!( + current_state_with_changed_predefined_refunds.l2_to_l1_logs, + current_state_without_predefined_refunds.l2_to_l1_logs + ); + + assert_eq!( + current_state_with_changed_predefined_refunds + .storage_log_queries + .len(), + current_state_without_predefined_refunds + .storage_log_queries + .len() + ); + + assert_ne!( + current_state_with_changed_predefined_refunds.storage_log_queries, + current_state_without_predefined_refunds.storage_log_queries + ); + assert_eq!( + current_state_with_changed_predefined_refunds.used_contract_hashes, + current_state_without_predefined_refunds.used_contract_hashes + ); +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/require_eip712.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/require_eip712.rs new file mode 100644 index 00000000000..253a3463c53 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/require_eip712.rs @@ -0,0 +1,163 @@ +use std::convert::TryInto; + +use ethabi::Token; + +use zksync_eth_signer::raw_ethereum_tx::TransactionParameters; +use zksync_eth_signer::EthereumSigner; +use zksync_system_constants::L2_ETH_TOKEN_ADDRESS; +use zksync_types::fee::Fee; +use zksync_types::l2::L2Tx; +use zksync_types::transaction_request::TransactionRequest; +use zksync_types::utils::storage_key_for_standard_token_balance; +use zksync_types::{ + AccountTreeId, Address, Eip712Domain, Execute, L2ChainId, Nonce, Transaction, U256, +}; + +use crate::interface::{TxExecutionMode, VmExecutionMode}; +use crate::vm_refunds_enhancement::tests::tester::{Account, VmTester, VmTesterBuilder}; +use crate::vm_refunds_enhancement::tests::utils::read_many_owners_custom_account_contract; +use crate::vm_refunds_enhancement::HistoryDisabled; + +impl VmTester { + pub(crate) fn get_eth_balance(&mut self, address: Address) -> U256 { + let key = storage_key_for_standard_token_balance( + AccountTreeId::new(L2_ETH_TOKEN_ADDRESS), + &address, + ); + self.vm.state.storage.storage.read_from_storage(&key) + } +} + +// TODO refactor this test it use too much internal details of the VM +#[tokio::test] +/// This test deploys 'buggy' account abstraction code, and then tries accessing it both with legacy +/// and EIP712 transactions. +/// Currently we support both, but in the future, we should allow only EIP712 transactions to access the AA accounts. +async fn test_require_eip712() { + // Use 3 accounts: + // - private_address - EOA account, where we have the key + // - account_address - AA account, where the contract is deployed + // - beneficiary - an EOA account, where we'll try to transfer the tokens. + let account_abstraction = Account::random(); + let mut private_account = Account::random(); + let beneficiary = Account::random(); + + let (bytecode, contract) = read_many_owners_custom_account_contract(); + let mut vm = VmTesterBuilder::new(HistoryDisabled) + .with_empty_in_memory_storage() + .with_custom_contracts(vec![(bytecode, account_abstraction.address, true)]) + .with_execution_mode(TxExecutionMode::VerifyExecute) + .with_rich_accounts(vec![account_abstraction.clone(), private_account.clone()]) + .build(); + + assert_eq!(vm.get_eth_balance(beneficiary.address), U256::from(0)); + + let chain_id: u32 = 270; + + // First, let's set the owners of the AA account to the private_address. + // (so that messages signed by private_address, are authorized to act on behalf of the AA account). + let set_owners_function = contract.function("setOwners").unwrap(); + let encoded_input = set_owners_function + .encode_input(&[Token::Array(vec![Token::Address(private_account.address)])]) + .unwrap(); + + let tx = private_account.get_l2_tx_for_execute( + Execute { + contract_address: account_abstraction.address, + calldata: encoded_input, + value: Default::default(), + factory_deps: None, + }, + None, + ); + + vm.vm.push_transaction(tx); + let result = vm.vm.execute(VmExecutionMode::OneTx); + assert!(!result.result.is_failed()); + + let private_account_balance = vm.get_eth_balance(private_account.address); + + // And now let's do the transfer from the 'account abstraction' to 'beneficiary' (using 'legacy' transaction). + // Normally this would not work - unless the operator is malicious. + let aa_raw_tx = TransactionParameters { + nonce: U256::from(0), + to: Some(beneficiary.address), + gas: U256::from(100000000), + gas_price: Some(U256::from(10000000)), + value: U256::from(888000088), + data: vec![], + chain_id: 270, + transaction_type: None, + access_list: None, + max_fee_per_gas: U256::from(1000000000), + max_priority_fee_per_gas: U256::from(1000000000), + }; + + let aa_tx = private_account.sign_legacy_tx(aa_raw_tx).await; + let (tx_request, hash) = TransactionRequest::from_bytes(&aa_tx, L2ChainId::from(270)).unwrap(); + + let mut l2_tx: L2Tx = L2Tx::from_request(tx_request, 10000).unwrap(); + l2_tx.set_input(aa_tx, hash); + // Pretend that operator is malicious and sets the initiator to the AA account. + l2_tx.common_data.initiator_address = account_abstraction.address; + let transaction: Transaction = l2_tx.try_into().unwrap(); + + vm.vm.push_transaction(transaction); + let result = vm.vm.execute(VmExecutionMode::OneTx); + assert!(!result.result.is_failed()); + assert_eq!( + vm.get_eth_balance(beneficiary.address), + U256::from(888000088) + ); + // Make sure that the tokens were transfered from the AA account. + assert_eq!( + private_account_balance, + vm.get_eth_balance(private_account.address) + ); + + // // Now send the 'classic' EIP712 transaction + let tx_712 = L2Tx::new( + beneficiary.address, + vec![], + Nonce(1), + Fee { + gas_limit: U256::from(1000000000), + max_fee_per_gas: U256::from(1000000000), + max_priority_fee_per_gas: U256::from(1000000000), + gas_per_pubdata_limit: U256::from(1000000000), + }, + account_abstraction.address, + U256::from(28374938), + None, + Default::default(), + ); + + let transaction_request: TransactionRequest = tx_712.into(); + + let domain = Eip712Domain::new(L2ChainId::from(chain_id)); + let signature = private_account + .get_pk_signer() + .sign_typed_data(&domain, &transaction_request) + .await + .unwrap(); + let encoded_tx = transaction_request.get_signed_bytes(&signature, L2ChainId::from(chain_id)); + + let (aa_txn_request, aa_hash) = + TransactionRequest::from_bytes(&encoded_tx, L2ChainId::from(chain_id)).unwrap(); + + let mut l2_tx = L2Tx::from_request(aa_txn_request, 100000).unwrap(); + l2_tx.set_input(encoded_tx, aa_hash); + + let transaction: Transaction = l2_tx.try_into().unwrap(); + vm.vm.push_transaction(transaction); + vm.vm.execute(VmExecutionMode::OneTx); + + assert_eq!( + vm.get_eth_balance(beneficiary.address), + U256::from(916375026) + ); + assert_eq!( + private_account_balance, + vm.get_eth_balance(private_account.address) + ); +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/rollbacks.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/rollbacks.rs new file mode 100644 index 00000000000..84c5a61c10d --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/rollbacks.rs @@ -0,0 +1,259 @@ +use ethabi::Token; + +use zksync_contracts::get_loadnext_contract; +use zksync_contracts::test_contracts::LoadnextContractExecutionParams; + +use zksync_state::WriteStorage; +use zksync_types::{get_nonce_key, Execute, U256}; + +use crate::interface::{TxExecutionMode, VmExecutionMode}; +use crate::vm_refunds_enhancement::tests::tester::{ + DeployContractsTx, TransactionTestInfo, TxModifier, TxType, VmTesterBuilder, +}; +use crate::vm_refunds_enhancement::tests::utils::read_test_contract; +use crate::vm_refunds_enhancement::types::internals::ZkSyncVmState; +use crate::vm_refunds_enhancement::{ + BootloaderState, DynTracer, HistoryEnabled, HistoryMode, TracerExecutionStatus, + TracerExecutionStopReason, VmTracer, +}; + +#[test] +fn test_vm_rollbacks() { + let mut vm = VmTesterBuilder::new(HistoryEnabled) + .with_empty_in_memory_storage() + .with_execution_mode(TxExecutionMode::VerifyExecute) + .with_random_rich_accounts(1) + .build(); + + let mut account = vm.rich_accounts[0].clone(); + let counter = read_test_contract(); + let tx_0 = account.get_deploy_tx(&counter, None, TxType::L2).tx; + let tx_1 = account.get_deploy_tx(&counter, None, TxType::L2).tx; + let tx_2 = account.get_deploy_tx(&counter, None, TxType::L2).tx; + + let result_without_rollbacks = vm.execute_and_verify_txs(&vec![ + TransactionTestInfo::new_processed(tx_0.clone(), false), + TransactionTestInfo::new_processed(tx_1.clone(), false), + TransactionTestInfo::new_processed(tx_2.clone(), false), + ]); + + // reset vm + vm.reset_with_empty_storage(); + + let result_with_rollbacks = vm.execute_and_verify_txs(&vec![ + TransactionTestInfo::new_rejected(tx_0.clone(), TxModifier::WrongSignatureLength.into()), + TransactionTestInfo::new_rejected(tx_0.clone(), TxModifier::WrongMagicValue.into()), + TransactionTestInfo::new_rejected(tx_0.clone(), TxModifier::WrongSignature.into()), + // The correct nonce is 0, this tx will fail + TransactionTestInfo::new_rejected(tx_2.clone(), TxModifier::WrongNonce.into()), + // This tx will succeed + TransactionTestInfo::new_processed(tx_0.clone(), false), + // The correct nonce is 1, this tx will fail + TransactionTestInfo::new_rejected(tx_0.clone(), TxModifier::NonceReused.into()), + // The correct nonce is 1, this tx will fail + TransactionTestInfo::new_rejected(tx_2.clone(), TxModifier::WrongNonce.into()), + // This tx will succeed + TransactionTestInfo::new_processed(tx_1, false), + // The correct nonce is 2, this tx will fail + TransactionTestInfo::new_rejected(tx_0.clone(), TxModifier::NonceReused.into()), + // This tx will succeed + TransactionTestInfo::new_processed(tx_2.clone(), false), + // This tx will fail + TransactionTestInfo::new_rejected(tx_2, TxModifier::NonceReused.into()), + TransactionTestInfo::new_rejected(tx_0, TxModifier::NonceReused.into()), + ]); + + assert_eq!(result_without_rollbacks, result_with_rollbacks); +} + +#[test] +fn test_vm_loadnext_rollbacks() { + let mut vm = VmTesterBuilder::new(HistoryEnabled) + .with_empty_in_memory_storage() + .with_execution_mode(TxExecutionMode::VerifyExecute) + .with_random_rich_accounts(1) + .build(); + let mut account = vm.rich_accounts[0].clone(); + + let loadnext_contract = get_loadnext_contract(); + let loadnext_constructor_data = &[Token::Uint(U256::from(100))]; + let DeployContractsTx { + tx: loadnext_deploy_tx, + address, + .. + } = account.get_deploy_tx_with_factory_deps( + &loadnext_contract.bytecode, + Some(loadnext_constructor_data), + loadnext_contract.factory_deps.clone(), + TxType::L2, + ); + + let loadnext_tx_1 = account.get_l2_tx_for_execute( + Execute { + contract_address: address, + calldata: LoadnextContractExecutionParams { + reads: 100, + writes: 100, + events: 100, + hashes: 500, + recursive_calls: 10, + deploys: 60, + } + .to_bytes(), + value: Default::default(), + factory_deps: None, + }, + None, + ); + + let loadnext_tx_2 = account.get_l2_tx_for_execute( + Execute { + contract_address: address, + calldata: LoadnextContractExecutionParams { + reads: 100, + writes: 100, + events: 100, + hashes: 500, + recursive_calls: 10, + deploys: 60, + } + .to_bytes(), + value: Default::default(), + factory_deps: None, + }, + None, + ); + + let result_without_rollbacks = vm.execute_and_verify_txs(&vec![ + TransactionTestInfo::new_processed(loadnext_deploy_tx.clone(), false), + TransactionTestInfo::new_processed(loadnext_tx_1.clone(), false), + TransactionTestInfo::new_processed(loadnext_tx_2.clone(), false), + ]); + + // reset vm + vm.reset_with_empty_storage(); + + let result_with_rollbacks = vm.execute_and_verify_txs(&vec![ + TransactionTestInfo::new_processed(loadnext_deploy_tx.clone(), false), + TransactionTestInfo::new_processed(loadnext_tx_1.clone(), true), + TransactionTestInfo::new_rejected( + loadnext_deploy_tx.clone(), + TxModifier::NonceReused.into(), + ), + TransactionTestInfo::new_processed(loadnext_tx_1, false), + TransactionTestInfo::new_processed(loadnext_tx_2.clone(), true), + TransactionTestInfo::new_processed(loadnext_tx_2.clone(), true), + TransactionTestInfo::new_rejected(loadnext_deploy_tx, TxModifier::NonceReused.into()), + TransactionTestInfo::new_processed(loadnext_tx_2, false), + ]); + + assert_eq!(result_without_rollbacks, result_with_rollbacks); +} + +// Testing tracer that does not allow the recursion to go deeper than a certain limit +struct MaxRecursionTracer { + max_recursion_depth: usize, +} + +/// Tracer responsible for calculating the number of storage invocations and +/// stopping the VM execution if the limit is reached. +impl DynTracer for MaxRecursionTracer {} + +impl VmTracer for MaxRecursionTracer { + fn finish_cycle( + &mut self, + state: &mut ZkSyncVmState, + _bootloader_state: &mut BootloaderState, + ) -> TracerExecutionStatus { + let current_depth = state.local_state.callstack.depth(); + + if current_depth > self.max_recursion_depth { + TracerExecutionStatus::Stop(TracerExecutionStopReason::Finish) + } else { + TracerExecutionStatus::Continue + } + } +} + +#[test] +fn test_layered_rollback() { + // This test checks that the layered rollbacks work correctly, i.e. + // the rollback by the operator will always revert all the changes + + let mut vm = VmTesterBuilder::new(HistoryEnabled) + .with_empty_in_memory_storage() + .with_execution_mode(TxExecutionMode::VerifyExecute) + .with_random_rich_accounts(1) + .build(); + + let account = &mut vm.rich_accounts[0]; + let loadnext_contract = get_loadnext_contract().bytecode; + + let DeployContractsTx { + tx: deploy_tx, + address, + .. + } = account.get_deploy_tx( + &loadnext_contract, + Some(&[Token::Uint(0.into())]), + TxType::L2, + ); + vm.vm.push_transaction(deploy_tx); + let deployment_res = vm.vm.execute(VmExecutionMode::OneTx); + assert!(!deployment_res.result.is_failed(), "transaction failed"); + + let loadnext_transaction = account.get_loadnext_transaction( + address, + LoadnextContractExecutionParams { + writes: 1, + recursive_calls: 20, + ..LoadnextContractExecutionParams::empty() + }, + TxType::L2, + ); + + let nonce_val = vm + .vm + .state + .storage + .storage + .read_from_storage(&get_nonce_key(&account.address)); + + vm.vm.make_snapshot(); + + vm.vm.push_transaction(loadnext_transaction.clone()); + vm.vm.inspect( + vec![Box::new(MaxRecursionTracer { + max_recursion_depth: 15, + })], + VmExecutionMode::OneTx, + ); + + let nonce_val2 = vm + .vm + .state + .storage + .storage + .read_from_storage(&get_nonce_key(&account.address)); + + // The tracer stopped after the validation has passed, so nonce has already been increased + assert_eq!(nonce_val + U256::one(), nonce_val2, "nonce did not change"); + + vm.vm.rollback_to_the_latest_snapshot(); + + let nonce_val_after_rollback = vm + .vm + .state + .storage + .storage + .read_from_storage(&get_nonce_key(&account.address)); + + assert_eq!( + nonce_val, nonce_val_after_rollback, + "nonce changed after rollback" + ); + + vm.vm.push_transaction(loadnext_transaction); + let result = vm.vm.inspect(vec![], VmExecutionMode::OneTx); + assert!(!result.result.is_failed(), "transaction must not fail"); +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/simple_execution.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/simple_execution.rs new file mode 100644 index 00000000000..f85c2144de1 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/simple_execution.rs @@ -0,0 +1,77 @@ +use crate::interface::{ExecutionResult, VmExecutionMode}; +use crate::vm_refunds_enhancement::tests::tester::{TxType, VmTesterBuilder}; +use crate::vm_refunds_enhancement::HistoryDisabled; + +#[test] +fn estimate_fee() { + let mut vm_tester = VmTesterBuilder::new(HistoryDisabled) + .with_empty_in_memory_storage() + .with_deployer() + .with_random_rich_accounts(1) + .build(); + + vm_tester.deploy_test_contract(); + let account = &mut vm_tester.rich_accounts[0]; + + let tx = account.get_test_contract_transaction( + vm_tester.test_contract.unwrap(), + false, + Default::default(), + false, + TxType::L2, + ); + + vm_tester.vm.push_transaction(tx); + + let result = vm_tester.vm.execute(VmExecutionMode::OneTx); + assert!(matches!(result.result, ExecutionResult::Success { .. })); +} + +#[test] +fn simple_execute() { + let mut vm_tester = VmTesterBuilder::new(HistoryDisabled) + .with_empty_in_memory_storage() + .with_deployer() + .with_random_rich_accounts(1) + .build(); + + vm_tester.deploy_test_contract(); + + let account = &mut vm_tester.rich_accounts[0]; + + let tx1 = account.get_test_contract_transaction( + vm_tester.test_contract.unwrap(), + false, + Default::default(), + false, + TxType::L1 { serial_id: 1 }, + ); + + let tx2 = account.get_test_contract_transaction( + vm_tester.test_contract.unwrap(), + true, + Default::default(), + false, + TxType::L1 { serial_id: 1 }, + ); + + let tx3 = account.get_test_contract_transaction( + vm_tester.test_contract.unwrap(), + false, + Default::default(), + false, + TxType::L1 { serial_id: 1 }, + ); + let vm = &mut vm_tester.vm; + vm.push_transaction(tx1); + vm.push_transaction(tx2); + vm.push_transaction(tx3); + let tx = vm.execute(VmExecutionMode::OneTx); + assert!(matches!(tx.result, ExecutionResult::Success { .. })); + let tx = vm.execute(VmExecutionMode::OneTx); + assert!(matches!(tx.result, ExecutionResult::Revert { .. })); + let tx = vm.execute(VmExecutionMode::OneTx); + assert!(matches!(tx.result, ExecutionResult::Success { .. })); + let block_tip = vm.execute(VmExecutionMode::Batch); + assert!(matches!(block_tip.result, ExecutionResult::Success { .. })); +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/tester/inner_state.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/tester/inner_state.rs new file mode 100644 index 00000000000..c4c6ec05bd7 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/tester/inner_state.rs @@ -0,0 +1,127 @@ +use std::collections::HashMap; + +use zk_evm_1_3_3::aux_structures::Timestamp; +use zk_evm_1_3_3::vm_state::VmLocalState; +use zksync_state::WriteStorage; + +use zksync_types::{StorageKey, StorageLogQuery, StorageValue, U256}; + +use crate::vm_refunds_enhancement::old_vm::event_sink::InMemoryEventSink; +use crate::vm_refunds_enhancement::old_vm::history_recorder::{ + AppDataFrameManagerWithHistory, HistoryRecorder, +}; +use crate::vm_refunds_enhancement::{HistoryEnabled, HistoryMode, SimpleMemory, Vm}; + +#[derive(Clone, Debug)] +pub(crate) struct ModifiedKeysMap(HashMap); + +// We consider hashmaps to be equal even if there is a key +// that is not present in one but has zero value in another. +impl PartialEq for ModifiedKeysMap { + fn eq(&self, other: &Self) -> bool { + for (key, value) in self.0.iter() { + if *value != other.0.get(key).cloned().unwrap_or_default() { + return false; + } + } + for (key, value) in other.0.iter() { + if *value != self.0.get(key).cloned().unwrap_or_default() { + return false; + } + } + true + } +} + +#[derive(Clone, PartialEq, Debug)] +pub(crate) struct DecommitterTestInnerState { + /// There is no way to "trully" compare the storage pointer, + /// so we just compare the modified keys. This is reasonable enough. + pub(crate) modified_storage_keys: ModifiedKeysMap, + pub(crate) known_bytecodes: HistoryRecorder>, H>, + pub(crate) decommitted_code_hashes: HistoryRecorder, HistoryEnabled>, +} + +#[derive(Clone, PartialEq, Debug)] +pub(crate) struct StorageOracleInnerState { + /// There is no way to "trully" compare the storage pointer, + /// so we just compare the modified keys. This is reasonable enough. + pub(crate) modified_storage_keys: ModifiedKeysMap, + + pub(crate) frames_stack: AppDataFrameManagerWithHistory, H>, + + pub(crate) pre_paid_changes: HistoryRecorder, H>, + pub(crate) paid_changes: HistoryRecorder, H>, + pub(crate) initial_values: HistoryRecorder, H>, + pub(crate) returned_refunds: HistoryRecorder, H>, +} + +#[derive(Clone, PartialEq, Debug)] +pub(crate) struct PrecompileProcessorTestInnerState { + pub(crate) timestamp_history: HistoryRecorder, H>, +} + +/// A struct that encapsulates the state of the VM's oracles +/// The state is to be used in tests. +#[derive(Clone, PartialEq, Debug)] +pub(crate) struct VmInstanceInnerState { + event_sink: InMemoryEventSink, + precompile_processor_state: PrecompileProcessorTestInnerState, + memory: SimpleMemory, + decommitter_state: DecommitterTestInnerState, + storage_oracle_state: StorageOracleInnerState, + local_state: VmLocalState, +} + +impl Vm { + // Dump inner state of the VM. + pub(crate) fn dump_inner_state(&self) -> VmInstanceInnerState { + let event_sink = self.state.event_sink.clone(); + let precompile_processor_state = PrecompileProcessorTestInnerState { + timestamp_history: self.state.precompiles_processor.timestamp_history.clone(), + }; + let memory = self.state.memory.clone(); + let decommitter_state = DecommitterTestInnerState { + modified_storage_keys: ModifiedKeysMap( + self.state + .decommittment_processor + .get_storage() + .borrow() + .modified_storage_keys() + .clone(), + ), + known_bytecodes: self.state.decommittment_processor.known_bytecodes.clone(), + decommitted_code_hashes: self + .state + .decommittment_processor + .get_decommitted_code_hashes_with_history() + .clone(), + }; + let storage_oracle_state = StorageOracleInnerState { + modified_storage_keys: ModifiedKeysMap( + self.state + .storage + .storage + .get_ptr() + .borrow() + .modified_storage_keys() + .clone(), + ), + frames_stack: self.state.storage.frames_stack.clone(), + pre_paid_changes: self.state.storage.pre_paid_changes.clone(), + paid_changes: self.state.storage.paid_changes.clone(), + initial_values: self.state.storage.initial_values.clone(), + returned_refunds: self.state.storage.returned_refunds.clone(), + }; + let local_state = self.state.local_state.clone(); + + VmInstanceInnerState { + event_sink, + precompile_processor_state, + memory, + decommitter_state, + storage_oracle_state, + local_state, + } + } +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/tester/mod.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/tester/mod.rs new file mode 100644 index 00000000000..dfe8905a7e0 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/tester/mod.rs @@ -0,0 +1,7 @@ +pub(crate) use transaction_test_info::{ExpectedError, TransactionTestInfo, TxModifier}; +pub(crate) use vm_tester::{default_l1_batch, InMemoryStorageView, VmTester, VmTesterBuilder}; +pub(crate) use zksync_test_account::{Account, DeployContractsTx, TxType}; + +mod inner_state; +mod transaction_test_info; +mod vm_tester; diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/tester/transaction_test_info.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/tester/transaction_test_info.rs new file mode 100644 index 00000000000..8f7ecc0a733 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/tester/transaction_test_info.rs @@ -0,0 +1,217 @@ +use zksync_types::{ExecuteTransactionCommon, Transaction}; + +use crate::interface::VmRevertReason; +use crate::interface::{ + CurrentExecutionState, ExecutionResult, Halt, TxRevertReason, VmExecutionMode, + VmExecutionResultAndLogs, +}; +use crate::vm_refunds_enhancement::tests::tester::vm_tester::VmTester; +use crate::vm_refunds_enhancement::HistoryEnabled; + +#[derive(Debug, Clone)] +pub(crate) enum TxModifier { + WrongSignatureLength, + WrongSignature, + WrongMagicValue, + WrongNonce, + NonceReused, +} + +#[derive(Debug, Clone)] +pub(crate) enum TxExpectedResult { + Rejected { error: ExpectedError }, + Processed { rollback: bool }, +} + +#[derive(Debug, Clone)] +pub(crate) struct TransactionTestInfo { + tx: Transaction, + result: TxExpectedResult, +} + +#[derive(Debug, Clone)] +pub(crate) struct ExpectedError { + pub(crate) revert_reason: TxRevertReason, + pub(crate) modifier: Option, +} + +impl From for ExpectedError { + fn from(value: TxModifier) -> Self { + let revert_reason = match value { + TxModifier::WrongSignatureLength => { + Halt::ValidationFailed(VmRevertReason::General { + msg: "Signature length is incorrect".to_string(), + data: vec![ + 8, 195, 121, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 83, 105, 103, 110, 97, 116, 117, 114, 101, 32, + 108, 101, 110, 103, 116, 104, 32, 105, 115, 32, 105, 110, 99, 111, 114, 114, 101, 99, + 116, 0, 0, 0, + ], + }) + } + TxModifier::WrongSignature => { + Halt::ValidationFailed(VmRevertReason::General { + msg: "Account validation returned invalid magic value. Most often this means that the signature is incorrect".to_string(), + data: vec![], + }) + } + TxModifier::WrongMagicValue => { + Halt::ValidationFailed(VmRevertReason::General { + msg: "v is neither 27 nor 28".to_string(), + data: vec![ + 8, 195, 121, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 118, 32, 105, 115, 32, 110, 101, 105, 116, 104, + 101, 114, 32, 50, 55, 32, 110, 111, 114, 32, 50, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + ], + }) + + } + TxModifier::WrongNonce => { + Halt::ValidationFailed(VmRevertReason::General { + msg: "Incorrect nonce".to_string(), + data: vec![ + 8, 195, 121, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 73, 110, 99, 111, 114, 114, 101, 99, 116, 32, 110, + 111, 110, 99, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + ], + }) + } + TxModifier::NonceReused => { + Halt::ValidationFailed(VmRevertReason::General { + msg: "Reusing the same nonce twice".to_string(), + data: vec![ + 8, 195, 121, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 82, 101, 117, 115, 105, 110, 103, 32, 116, 104, + 101, 32, 115, 97, 109, 101, 32, 110, 111, 110, 99, 101, 32, 116, 119, 105, 99, 101, 0, + 0, 0, 0, + ], + }) + } + }; + + ExpectedError { + revert_reason: TxRevertReason::Halt(revert_reason), + modifier: Some(value), + } + } +} + +impl TransactionTestInfo { + pub(crate) fn new_rejected( + mut transaction: Transaction, + expected_error: ExpectedError, + ) -> Self { + transaction.common_data = match transaction.common_data { + ExecuteTransactionCommon::L2(mut data) => { + if let Some(modifier) = &expected_error.modifier { + match modifier { + TxModifier::WrongSignatureLength => { + data.signature = data.signature[..data.signature.len() - 20].to_vec() + } + TxModifier::WrongSignature => data.signature = vec![27u8; 65], + TxModifier::WrongMagicValue => data.signature = vec![1u8; 65], + TxModifier::WrongNonce => { + // Do not need to modify signature for nonce error + } + TxModifier::NonceReused => { + // Do not need to modify signature for nonce error + } + } + } + ExecuteTransactionCommon::L2(data) + } + _ => panic!("L1 transactions are not supported"), + }; + + Self { + tx: transaction, + result: TxExpectedResult::Rejected { + error: expected_error, + }, + } + } + + pub(crate) fn new_processed(transaction: Transaction, should_be_rollbacked: bool) -> Self { + Self { + tx: transaction, + result: TxExpectedResult::Processed { + rollback: should_be_rollbacked, + }, + } + } + + fn verify_result(&self, result: &VmExecutionResultAndLogs) { + match &self.result { + TxExpectedResult::Rejected { error } => match &result.result { + ExecutionResult::Success { .. } => { + panic!("Transaction should be reverted {:?}", self.tx.nonce()) + } + ExecutionResult::Revert { output } => match &error.revert_reason { + TxRevertReason::TxReverted(expected) => { + assert_eq!(output, expected) + } + _ => { + panic!("Error types mismatch"); + } + }, + ExecutionResult::Halt { reason } => match &error.revert_reason { + TxRevertReason::Halt(expected) => { + assert_eq!(reason, expected) + } + _ => { + panic!("Error types mismatch"); + } + }, + }, + TxExpectedResult::Processed { .. } => { + assert!(!result.result.is_failed()); + } + } + } + + fn should_rollback(&self) -> bool { + match &self.result { + TxExpectedResult::Rejected { .. } => true, + TxExpectedResult::Processed { rollback } => *rollback, + } + } +} + +impl VmTester { + pub(crate) fn execute_and_verify_txs( + &mut self, + txs: &[TransactionTestInfo], + ) -> CurrentExecutionState { + for tx_test_info in txs { + self.execute_tx_and_verify(tx_test_info.clone()); + } + self.vm.execute(VmExecutionMode::Batch); + let mut state = self.vm.get_current_execution_state(); + state.used_contract_hashes.sort(); + state + } + + pub(crate) fn execute_tx_and_verify( + &mut self, + tx_test_info: TransactionTestInfo, + ) -> VmExecutionResultAndLogs { + let inner_state_before = self.vm.dump_inner_state(); + self.vm.make_snapshot(); + self.vm.push_transaction(tx_test_info.tx.clone()); + let result = self.vm.execute(VmExecutionMode::OneTx); + tx_test_info.verify_result(&result); + if tx_test_info.should_rollback() { + self.vm.rollback_to_the_latest_snapshot(); + let inner_state_after = self.vm.dump_inner_state(); + assert_eq!( + inner_state_before, inner_state_after, + "Inner state before and after rollback should be equal" + ); + } + result + } +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/tester/vm_tester.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/tester/vm_tester.rs new file mode 100644 index 00000000000..9c2478a4dbe --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/tester/vm_tester.rs @@ -0,0 +1,300 @@ +use zksync_contracts::BaseSystemContracts; +use zksync_state::{InMemoryStorage, StoragePtr, StorageView, WriteStorage}; + +use zksync_types::block::legacy_miniblock_hash; +use zksync_types::helpers::unix_timestamp_ms; +use zksync_types::utils::{deployed_address_create, storage_key_for_eth_balance}; +use zksync_types::{ + get_code_key, get_is_account_key, Address, L1BatchNumber, L2ChainId, MiniblockNumber, Nonce, + ProtocolVersionId, U256, +}; +use zksync_utils::bytecode::hash_bytecode; +use zksync_utils::u256_to_h256; + +use crate::vm_refunds_enhancement::constants::BLOCK_GAS_LIMIT; + +use crate::interface::{ + L1BatchEnv, L2Block, L2BlockEnv, SystemEnv, TxExecutionMode, VmExecutionMode, +}; +use crate::vm_refunds_enhancement::tests::tester::Account; +use crate::vm_refunds_enhancement::tests::tester::TxType; +use crate::vm_refunds_enhancement::tests::utils::read_test_contract; +use crate::vm_refunds_enhancement::utils::l2_blocks::load_last_l2_block; +use crate::vm_refunds_enhancement::{HistoryMode, Vm}; + +pub(crate) type InMemoryStorageView = StorageView; + +pub(crate) struct VmTester { + pub(crate) vm: Vm, + pub(crate) storage: StoragePtr, + pub(crate) fee_account: Address, + pub(crate) deployer: Option, + pub(crate) test_contract: Option
, + pub(crate) rich_accounts: Vec, + pub(crate) custom_contracts: Vec, + history_mode: H, +} + +impl VmTester { + pub(crate) fn deploy_test_contract(&mut self) { + let contract = read_test_contract(); + let tx = self + .deployer + .as_mut() + .expect("You have to initialize builder with deployer") + .get_deploy_tx(&contract, None, TxType::L2) + .tx; + let nonce = tx.nonce().unwrap().0.into(); + self.vm.push_transaction(tx); + self.vm.execute(VmExecutionMode::OneTx); + let deployed_address = + deployed_address_create(self.deployer.as_ref().unwrap().address, nonce); + self.test_contract = Some(deployed_address); + } + + pub(crate) fn reset_with_empty_storage(&mut self) { + self.storage = StorageView::new(get_empty_storage()).to_rc_ptr(); + self.reset_state(false); + } + + /// Reset the state of the VM to the initial state. + /// If `use_latest_l2_block` is true, then the VM will use the latest L2 block from storage, + /// otherwise it will use the first L2 block of l1 batch env + pub(crate) fn reset_state(&mut self, use_latest_l2_block: bool) { + for account in self.rich_accounts.iter_mut() { + account.nonce = Nonce(0); + make_account_rich(self.storage.clone(), account); + } + if let Some(deployer) = &self.deployer { + make_account_rich(self.storage.clone(), deployer); + } + + if !self.custom_contracts.is_empty() { + println!("Inserting custom contracts is not yet supported") + // insert_contracts(&mut self.storage, &self.custom_contracts); + } + + let mut l1_batch = self.vm.batch_env.clone(); + if use_latest_l2_block { + let last_l2_block = load_last_l2_block(self.storage.clone()).unwrap_or(L2Block { + number: 0, + timestamp: 0, + hash: legacy_miniblock_hash(MiniblockNumber(0)), + }); + l1_batch.first_l2_block = L2BlockEnv { + number: last_l2_block.number + 1, + timestamp: std::cmp::max(last_l2_block.timestamp + 1, l1_batch.timestamp), + prev_block_hash: last_l2_block.hash, + max_virtual_blocks_to_create: 1, + }; + } + + let vm = Vm::new( + l1_batch, + self.vm.system_env.clone(), + self.storage.clone(), + self.history_mode.clone(), + ); + + if self.test_contract.is_some() { + self.deploy_test_contract(); + } + + self.vm = vm; + } +} + +pub(crate) type ContractsToDeploy = (Vec, Address, bool); + +pub(crate) struct VmTesterBuilder { + history_mode: H, + storage: Option, + l1_batch_env: Option, + system_env: SystemEnv, + deployer: Option, + rich_accounts: Vec, + custom_contracts: Vec, +} + +impl Clone for VmTesterBuilder { + fn clone(&self) -> Self { + Self { + history_mode: self.history_mode.clone(), + storage: None, + l1_batch_env: self.l1_batch_env.clone(), + system_env: self.system_env.clone(), + deployer: self.deployer.clone(), + rich_accounts: self.rich_accounts.clone(), + custom_contracts: self.custom_contracts.clone(), + } + } +} + +#[allow(dead_code)] +impl VmTesterBuilder { + pub(crate) fn new(history_mode: H) -> Self { + Self { + history_mode, + storage: None, + l1_batch_env: None, + system_env: SystemEnv { + zk_porter_available: false, + version: ProtocolVersionId::latest(), + base_system_smart_contracts: BaseSystemContracts::playground(), + gas_limit: BLOCK_GAS_LIMIT, + execution_mode: TxExecutionMode::VerifyExecute, + default_validation_computational_gas_limit: BLOCK_GAS_LIMIT, + chain_id: L2ChainId::from(270), + }, + deployer: None, + rich_accounts: vec![], + custom_contracts: vec![], + } + } + + pub(crate) fn with_l1_batch_env(mut self, l1_batch_env: L1BatchEnv) -> Self { + self.l1_batch_env = Some(l1_batch_env); + self + } + + pub(crate) fn with_system_env(mut self, system_env: SystemEnv) -> Self { + self.system_env = system_env; + self + } + + pub(crate) fn with_storage(mut self, storage: InMemoryStorage) -> Self { + self.storage = Some(storage); + self + } + + pub(crate) fn with_base_system_smart_contracts( + mut self, + base_system_smart_contracts: BaseSystemContracts, + ) -> Self { + self.system_env.base_system_smart_contracts = base_system_smart_contracts; + self + } + + pub(crate) fn with_gas_limit(mut self, gas_limit: u32) -> Self { + self.system_env.gas_limit = gas_limit; + self + } + + pub(crate) fn with_execution_mode(mut self, execution_mode: TxExecutionMode) -> Self { + self.system_env.execution_mode = execution_mode; + self + } + + pub(crate) fn with_empty_in_memory_storage(mut self) -> Self { + self.storage = Some(get_empty_storage()); + self + } + + pub(crate) fn with_random_rich_accounts(mut self, number: u32) -> Self { + for _ in 0..number { + let account = Account::random(); + self.rich_accounts.push(account); + } + self + } + + pub(crate) fn with_rich_accounts(mut self, accounts: Vec) -> Self { + self.rich_accounts.extend(accounts); + self + } + + pub(crate) fn with_deployer(mut self) -> Self { + let deployer = Account::random(); + self.deployer = Some(deployer); + self + } + + pub(crate) fn with_custom_contracts(mut self, contracts: Vec) -> Self { + self.custom_contracts = contracts; + self + } + + pub(crate) fn build(self) -> VmTester { + let l1_batch_env = self + .l1_batch_env + .unwrap_or_else(|| default_l1_batch(L1BatchNumber(1))); + + let mut raw_storage = self.storage.unwrap_or_else(get_empty_storage); + insert_contracts(&mut raw_storage, &self.custom_contracts); + let storage_ptr = StorageView::new(raw_storage).to_rc_ptr(); + for account in self.rich_accounts.iter() { + make_account_rich(storage_ptr.clone(), account); + } + if let Some(deployer) = &self.deployer { + make_account_rich(storage_ptr.clone(), deployer); + } + let fee_account = l1_batch_env.fee_account; + + let vm = Vm::new( + l1_batch_env, + self.system_env, + storage_ptr.clone(), + self.history_mode.clone(), + ); + + VmTester { + vm, + storage: storage_ptr, + fee_account, + deployer: self.deployer, + test_contract: None, + rich_accounts: self.rich_accounts.clone(), + custom_contracts: self.custom_contracts.clone(), + history_mode: self.history_mode, + } + } +} + +pub(crate) fn default_l1_batch(number: L1BatchNumber) -> L1BatchEnv { + let timestamp = unix_timestamp_ms(); + L1BatchEnv { + previous_batch_hash: None, + number, + timestamp, + l1_gas_price: 50_000_000_000, // 50 gwei + fair_l2_gas_price: 250_000_000, // 0.25 gwei + fee_account: Address::random(), + enforced_base_fee: None, + first_l2_block: L2BlockEnv { + number: 1, + timestamp, + prev_block_hash: legacy_miniblock_hash(MiniblockNumber(0)), + max_virtual_blocks_to_create: 100, + }, + } +} + +pub(crate) fn make_account_rich(storage: StoragePtr, account: &Account) { + let key = storage_key_for_eth_balance(&account.address); + storage + .as_ref() + .borrow_mut() + .set_value(key, u256_to_h256(U256::from(10u64.pow(19)))); +} + +pub(crate) fn get_empty_storage() -> InMemoryStorage { + InMemoryStorage::with_system_contracts(hash_bytecode) +} + +// Inserts the contracts into the test environment, bypassing the +// deployer system contract. Besides the reference to storage +// it accepts a `contracts` tuple of information about the contract +// and whether or not it is an account. +fn insert_contracts(raw_storage: &mut InMemoryStorage, contracts: &[ContractsToDeploy]) { + for (contract, address, is_account) in contracts { + let deployer_code_key = get_code_key(address); + raw_storage.set_value(deployer_code_key, hash_bytecode(contract)); + + if *is_account { + let is_account_key = get_is_account_key(address); + raw_storage.set_value(is_account_key, u256_to_h256(1_u32.into())); + } + + raw_storage.store_factory_dep(hash_bytecode(contract), contract.clone()); + } +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/tracing_execution_error.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/tracing_execution_error.rs new file mode 100644 index 00000000000..a839f4708ad --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/tracing_execution_error.rs @@ -0,0 +1,53 @@ +use zksync_types::{Execute, H160}; + +use crate::interface::TxExecutionMode; +use crate::interface::{TxRevertReason, VmRevertReason}; +use crate::vm_refunds_enhancement::tests::tester::{ + ExpectedError, TransactionTestInfo, VmTesterBuilder, +}; +use crate::vm_refunds_enhancement::tests::utils::{ + get_execute_error_calldata, read_error_contract, BASE_SYSTEM_CONTRACTS, +}; +use crate::vm_refunds_enhancement::HistoryEnabled; + +#[test] +fn test_tracing_of_execution_errors() { + let contract_address = H160::random(); + let mut vm = VmTesterBuilder::new(HistoryEnabled) + .with_empty_in_memory_storage() + .with_base_system_smart_contracts(BASE_SYSTEM_CONTRACTS.clone()) + .with_custom_contracts(vec![(read_error_contract(), contract_address, false)]) + .with_execution_mode(TxExecutionMode::VerifyExecute) + .with_deployer() + .with_random_rich_accounts(1) + .build(); + + let account = &mut vm.rich_accounts[0]; + + let tx = account.get_l2_tx_for_execute( + Execute { + contract_address, + calldata: get_execute_error_calldata(), + value: Default::default(), + factory_deps: Some(vec![]), + }, + None, + ); + + vm.execute_tx_and_verify(TransactionTestInfo::new_rejected( + tx, + ExpectedError { + revert_reason: TxRevertReason::TxReverted(VmRevertReason::General { + msg: "short".to_string(), + data: vec![ + 8, 195, 121, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 115, 104, 111, 114, 116, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, + ], + }), + modifier: None, + }, + )); +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/upgrade.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/upgrade.rs new file mode 100644 index 00000000000..9a7eaa08468 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/upgrade.rs @@ -0,0 +1,342 @@ +use zk_evm_1_3_3::aux_structures::Timestamp; + +use zksync_types::{ + ethabi::Contract, + Execute, COMPLEX_UPGRADER_ADDRESS, CONTRACT_DEPLOYER_ADDRESS, CONTRACT_FORCE_DEPLOYER_ADDRESS, + REQUIRED_L1_TO_L2_GAS_PER_PUBDATA_BYTE, + {ethabi::Token, Address, ExecuteTransactionCommon, Transaction, H256, U256}, + {get_code_key, get_known_code_key, H160}, +}; + +use zksync_utils::{bytecode::hash_bytecode, bytes_to_be_words, h256_to_u256, u256_to_h256}; + +use zksync_contracts::{deployer_contract, load_contract, load_sys_contract, read_bytecode}; +use zksync_state::WriteStorage; +use zksync_test_account::TxType; + +use crate::interface::{ExecutionResult, Halt, TxExecutionMode, VmExecutionMode}; +use crate::vm_refunds_enhancement::tests::tester::VmTesterBuilder; +use crate::vm_refunds_enhancement::tests::utils::verify_required_storage; +use crate::vm_refunds_enhancement::HistoryEnabled; +use zksync_types::protocol_version::ProtocolUpgradeTxCommonData; + +use super::utils::read_test_contract; + +/// In this test we ensure that the requirements for protocol upgrade transactions are enforced by the bootloader: +/// - This transaction must be the only one in block +/// - If present, this transaction must be the first one in block +#[test] +fn test_protocol_upgrade_is_first() { + let mut vm = VmTesterBuilder::new(HistoryEnabled) + .with_empty_in_memory_storage() + .with_execution_mode(TxExecutionMode::VerifyExecute) + .with_random_rich_accounts(1) + .build(); + + let bytecode_hash = hash_bytecode(&read_test_contract()); + + // Here we just use some random transaction of protocol upgrade type: + let protocol_upgrade_transaction = get_forced_deploy_tx(&[ForceDeployment { + // The bytecode hash to put on an address + bytecode_hash, + // The address on which to deploy the bytecodehash to + address: H160::random(), + // Whether to run the constructor on the force deployment + call_constructor: false, + // The value with which to initialize a contract + value: U256::zero(), + // The constructor calldata + input: vec![], + }]); + + let normal_l1_transaction = vm.rich_accounts[0] + .get_deploy_tx(&read_test_contract(), None, TxType::L1 { serial_id: 0 }) + .tx; + + let expected_error = + Halt::UnexpectedVMBehavior("Assertion error: Protocol upgrade tx not first".to_string()); + + vm.vm.make_snapshot(); + // Test 1: there must be only one system transaction in block + vm.vm.push_transaction(protocol_upgrade_transaction.clone()); + vm.vm.push_transaction(normal_l1_transaction.clone()); + vm.vm.push_transaction(protocol_upgrade_transaction.clone()); + + vm.vm.execute(VmExecutionMode::OneTx); + vm.vm.execute(VmExecutionMode::OneTx); + let result = vm.vm.execute(VmExecutionMode::OneTx); + assert_eq!( + result.result, + ExecutionResult::Halt { + reason: expected_error.clone() + } + ); + + // Test 2: the protocol upgrade tx must be the first one in block + vm.vm.rollback_to_the_latest_snapshot(); + vm.vm.make_snapshot(); + vm.vm.push_transaction(normal_l1_transaction.clone()); + vm.vm.push_transaction(protocol_upgrade_transaction.clone()); + + vm.vm.execute(VmExecutionMode::OneTx); + let result = vm.vm.execute(VmExecutionMode::OneTx); + assert_eq!( + result.result, + ExecutionResult::Halt { + reason: expected_error + } + ); + + vm.vm.rollback_to_the_latest_snapshot(); + vm.vm.make_snapshot(); + vm.vm.push_transaction(protocol_upgrade_transaction); + vm.vm.push_transaction(normal_l1_transaction); + + vm.vm.execute(VmExecutionMode::OneTx); + let result = vm.vm.execute(VmExecutionMode::OneTx); + assert!(!result.result.is_failed()); +} + +/// In this test we try to test how force deployments could be done via protocol upgrade transactions. +#[test] +fn test_force_deploy_upgrade() { + let mut vm = VmTesterBuilder::new(HistoryEnabled) + .with_empty_in_memory_storage() + .with_execution_mode(TxExecutionMode::VerifyExecute) + .with_random_rich_accounts(1) + .build(); + + let storage_view = vm.storage.clone(); + let bytecode_hash = hash_bytecode(&read_test_contract()); + + let known_code_key = get_known_code_key(&bytecode_hash); + // It is generally expected that all the keys will be set as known prior to the protocol upgrade. + storage_view + .borrow_mut() + .set_value(known_code_key, u256_to_h256(1.into())); + drop(storage_view); + + let address_to_deploy = H160::random(); + // Here we just use some random transaction of protocol upgrade type: + let transaction = get_forced_deploy_tx(&[ForceDeployment { + // The bytecode hash to put on an address + bytecode_hash, + // The address on which to deploy the bytecodehash to + address: address_to_deploy, + // Whether to run the constructor on the force deployment + call_constructor: false, + // The value with which to initialize a contract + value: U256::zero(), + // The constructor calldata + input: vec![], + }]); + + vm.vm.push_transaction(transaction); + + let result = vm.vm.execute(VmExecutionMode::OneTx); + assert!( + !result.result.is_failed(), + "The force upgrade was not successful" + ); + + let expected_slots = vec![(bytecode_hash, get_code_key(&address_to_deploy))]; + + // Verify that the bytecode has been set correctly + verify_required_storage(&vm.vm.state, expected_slots); +} + +/// Here we show how the work with the complex upgrader could be done +#[test] +fn test_complex_upgrader() { + let mut vm = VmTesterBuilder::new(HistoryEnabled) + .with_empty_in_memory_storage() + .with_execution_mode(TxExecutionMode::VerifyExecute) + .with_random_rich_accounts(1) + .build(); + + let storage_view = vm.storage.clone(); + + let bytecode_hash = hash_bytecode(&read_complex_upgrade()); + let msg_sender_test_hash = hash_bytecode(&read_msg_sender_test()); + + // Let's assume that the bytecode for the implementation of the complex upgrade + // is already deployed in some address in userspace + let upgrade_impl = H160::random(); + let account_code_key = get_code_key(&upgrade_impl); + + storage_view + .borrow_mut() + .set_value(get_known_code_key(&bytecode_hash), u256_to_h256(1.into())); + storage_view.borrow_mut().set_value( + get_known_code_key(&msg_sender_test_hash), + u256_to_h256(1.into()), + ); + storage_view + .borrow_mut() + .set_value(account_code_key, bytecode_hash); + drop(storage_view); + + vm.vm.state.decommittment_processor.populate( + vec![ + ( + h256_to_u256(bytecode_hash), + bytes_to_be_words(read_complex_upgrade()), + ), + ( + h256_to_u256(msg_sender_test_hash), + bytes_to_be_words(read_msg_sender_test()), + ), + ], + Timestamp(0), + ); + + let address_to_deploy1 = H160::random(); + let address_to_deploy2 = H160::random(); + + let transaction = get_complex_upgrade_tx( + upgrade_impl, + address_to_deploy1, + address_to_deploy2, + bytecode_hash, + ); + + vm.vm.push_transaction(transaction); + let result = vm.vm.execute(VmExecutionMode::OneTx); + assert!( + !result.result.is_failed(), + "The force upgrade was not successful" + ); + + let expected_slots = vec![ + (bytecode_hash, get_code_key(&address_to_deploy1)), + (bytecode_hash, get_code_key(&address_to_deploy2)), + ]; + + // Verify that the bytecode has been set correctly + verify_required_storage(&vm.vm.state, expected_slots); +} + +#[derive(Debug, Clone)] +struct ForceDeployment { + // The bytecode hash to put on an address + bytecode_hash: H256, + // The address on which to deploy the bytecodehash to + address: Address, + // Whether to run the constructor on the force deployment + call_constructor: bool, + // The value with which to initialize a contract + value: U256, + // The constructor calldata + input: Vec, +} + +fn get_forced_deploy_tx(deployment: &[ForceDeployment]) -> Transaction { + let deployer = deployer_contract(); + let contract_function = deployer.function("forceDeployOnAddresses").unwrap(); + + let encoded_deployments: Vec<_> = deployment + .iter() + .map(|deployment| { + Token::Tuple(vec![ + Token::FixedBytes(deployment.bytecode_hash.as_bytes().to_vec()), + Token::Address(deployment.address), + Token::Bool(deployment.call_constructor), + Token::Uint(deployment.value), + Token::Bytes(deployment.input.clone()), + ]) + }) + .collect(); + + let params = [Token::Array(encoded_deployments)]; + + let calldata = contract_function + .encode_input(¶ms) + .expect("failed to encode parameters"); + + let execute = Execute { + contract_address: CONTRACT_DEPLOYER_ADDRESS, + calldata, + factory_deps: None, + value: U256::zero(), + }; + + Transaction { + common_data: ExecuteTransactionCommon::ProtocolUpgrade(ProtocolUpgradeTxCommonData { + sender: CONTRACT_FORCE_DEPLOYER_ADDRESS, + gas_limit: U256::from(200_000_000u32), + gas_per_pubdata_limit: REQUIRED_L1_TO_L2_GAS_PER_PUBDATA_BYTE.into(), + ..Default::default() + }), + execute, + received_timestamp_ms: 0, + raw_bytes: None, + } +} + +// Returns the transaction that performs a complex protocol upgrade. +// The first param is the address of the implementation of the complex upgrade +// in user-space, while the next 3 params are params of the implenentaiton itself +// For the explanatation for the parameters, please refer to: +// etc/contracts-test-data/complex-upgrade/complex-upgrade.sol +fn get_complex_upgrade_tx( + implementation_address: Address, + address1: Address, + address2: Address, + bytecode_hash: H256, +) -> Transaction { + let impl_contract = get_complex_upgrade_abi(); + let impl_function = impl_contract.function("someComplexUpgrade").unwrap(); + let impl_calldata = impl_function + .encode_input(&[ + Token::Address(address1), + Token::Address(address2), + Token::FixedBytes(bytecode_hash.as_bytes().to_vec()), + ]) + .unwrap(); + + let complex_upgrader = get_complex_upgrader_abi(); + let upgrade_function = complex_upgrader.function("upgrade").unwrap(); + let complex_upgrader_calldata = upgrade_function + .encode_input(&[ + Token::Address(implementation_address), + Token::Bytes(impl_calldata), + ]) + .unwrap(); + + let execute = Execute { + contract_address: COMPLEX_UPGRADER_ADDRESS, + calldata: complex_upgrader_calldata, + factory_deps: None, + value: U256::zero(), + }; + + Transaction { + common_data: ExecuteTransactionCommon::ProtocolUpgrade(ProtocolUpgradeTxCommonData { + sender: CONTRACT_FORCE_DEPLOYER_ADDRESS, + gas_limit: U256::from(200_000_000u32), + gas_per_pubdata_limit: REQUIRED_L1_TO_L2_GAS_PER_PUBDATA_BYTE.into(), + ..Default::default() + }), + execute, + received_timestamp_ms: 0, + raw_bytes: None, + } +} + +fn read_complex_upgrade() -> Vec { + read_bytecode("etc/contracts-test-data/artifacts-zk/contracts/complex-upgrade/complex-upgrade.sol/ComplexUpgrade.json") +} + +fn read_msg_sender_test() -> Vec { + read_bytecode("etc/contracts-test-data/artifacts-zk/contracts/complex-upgrade/msg-sender.sol/MsgSenderTest.json") +} + +fn get_complex_upgrade_abi() -> Contract { + load_contract( + "etc/contracts-test-data/artifacts-zk/contracts/complex-upgrade/complex-upgrade.sol/ComplexUpgrade.json" + ) +} + +fn get_complex_upgrader_abi() -> Contract { + load_sys_contract("ComplexUpgrader") +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/utils.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/utils.rs new file mode 100644 index 00000000000..7d3cc7d8e2d --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/utils.rs @@ -0,0 +1,106 @@ +use ethabi::Contract; +use once_cell::sync::Lazy; + +use crate::vm_refunds_enhancement::tests::tester::InMemoryStorageView; +use zksync_contracts::{ + load_contract, read_bytecode, read_zbin_bytecode, BaseSystemContracts, SystemContractCode, +}; +use zksync_state::{StoragePtr, WriteStorage}; +use zksync_types::utils::storage_key_for_standard_token_balance; +use zksync_types::{AccountTreeId, Address, StorageKey, H256, U256}; +use zksync_utils::bytecode::hash_bytecode; +use zksync_utils::{bytes_to_be_words, h256_to_u256, u256_to_h256}; + +use crate::vm_refunds_enhancement::types::internals::ZkSyncVmState; +use crate::vm_refunds_enhancement::HistoryMode; + +pub(crate) static BASE_SYSTEM_CONTRACTS: Lazy = + Lazy::new(BaseSystemContracts::load_from_disk); + +// Probably make it a part of vm tester +pub(crate) fn verify_required_storage( + state: &ZkSyncVmState, + required_values: Vec<(H256, StorageKey)>, +) { + for (required_value, key) in required_values { + let current_value = state.storage.storage.read_from_storage(&key); + + assert_eq!( + u256_to_h256(current_value), + required_value, + "Invalid value at key {key:?}" + ); + } +} + +pub(crate) fn verify_required_memory( + state: &ZkSyncVmState, + required_values: Vec<(U256, u32, u32)>, +) { + for (required_value, memory_page, cell) in required_values { + let current_value = state + .memory + .read_slot(memory_page as usize, cell as usize) + .value; + assert_eq!(current_value, required_value); + } +} + +pub(crate) fn get_balance( + token_id: AccountTreeId, + account: &Address, + main_storage: StoragePtr, +) -> U256 { + let key = storage_key_for_standard_token_balance(token_id, account); + h256_to_u256(main_storage.borrow_mut().read_value(&key)) +} + +pub(crate) fn read_test_contract() -> Vec { + read_bytecode("etc/contracts-test-data/artifacts-zk/contracts/counter/counter.sol/Counter.json") +} + +pub(crate) fn get_bootloader(test: &str) -> SystemContractCode { + let bootloader_code = read_zbin_bytecode(format!( + "etc/system-contracts/bootloader/tests/artifacts/{}.yul/{}.yul.zbin", + test, test + )); + + let bootloader_hash = hash_bytecode(&bootloader_code); + SystemContractCode { + code: bytes_to_be_words(bootloader_code), + hash: bootloader_hash, + } +} + +pub(crate) fn read_nonce_holder_tester() -> Vec { + read_bytecode("etc/contracts-test-data/artifacts-zk/contracts/custom-account/nonce-holder-test.sol/NonceHolderTest.json") +} + +pub(crate) fn read_error_contract() -> Vec { + read_bytecode( + "etc/contracts-test-data/artifacts-zk/contracts/error/error.sol/SimpleRequire.json", + ) +} + +pub(crate) fn get_execute_error_calldata() -> Vec { + let test_contract = load_contract( + "etc/contracts-test-data/artifacts-zk/contracts/error/error.sol/SimpleRequire.json", + ); + + let function = test_contract.function("require_short").unwrap(); + + function + .encode_input(&[]) + .expect("failed to encode parameters") +} + +pub(crate) fn read_many_owners_custom_account_contract() -> (Vec, Contract) { + let path = "etc/contracts-test-data/artifacts-zk/contracts/custom-account/many-owners-custom-account.sol/ManyOwnersCustomAccount.json"; + (read_bytecode(path), load_contract(path)) +} + +pub(crate) fn read_max_depth_contract() -> Vec { + read_zbin_bytecode( + "core/tests/ts-integration/contracts/zkasm/artifacts/deep_stak.zkasm/deep_stak.zkasm.zbin", + ) +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/call.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/call.rs new file mode 100644 index 00000000000..557d0fc5890 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/call.rs @@ -0,0 +1,243 @@ +use once_cell::sync::OnceCell; +use std::marker::PhantomData; +use std::sync::Arc; + +use zk_evm_1_3_3::tracing::{AfterExecutionData, VmLocalStateData}; +use zk_evm_1_3_3::zkevm_opcode_defs::{ + FarCallABI, FarCallOpcode, FatPointer, Opcode, RetOpcode, + CALL_IMPLICIT_CALLDATA_FAT_PTR_REGISTER, RET_IMPLICIT_RETURNDATA_PARAMS_REGISTER, +}; + +use crate::interface::VmRevertReason; +use zksync_state::{StoragePtr, WriteStorage}; +use zksync_system_constants::CONTRACT_DEPLOYER_ADDRESS; +use zksync_types::vm_trace::{Call, CallType}; +use zksync_types::U256; + +use crate::vm_refunds_enhancement::old_vm::history_recorder::HistoryMode; +use crate::vm_refunds_enhancement::old_vm::memory::SimpleMemory; +use crate::vm_refunds_enhancement::tracers::traits::{DynTracer, VmTracer}; +use crate::vm_refunds_enhancement::types::internals::ZkSyncVmState; +use crate::vm_refunds_enhancement::{BootloaderState, VmExecutionStopReason}; + +#[derive(Debug, Clone)] +pub struct CallTracer { + stack: Vec, + pub result: Arc>>, + _phantom: PhantomData H>, +} + +#[derive(Debug, Clone)] +struct FarcallAndNearCallCount { + farcall: Call, + near_calls_after: usize, +} + +impl CallTracer { + pub fn new(resulted_stack: Arc>>, _history: H) -> Self { + Self { + stack: vec![], + result: resulted_stack, + _phantom: PhantomData, + } + } +} + +impl DynTracer for CallTracer { + fn after_execution( + &mut self, + state: VmLocalStateData<'_>, + data: AfterExecutionData, + memory: &SimpleMemory, + _storage: StoragePtr, + ) { + match data.opcode.variant.opcode { + Opcode::NearCall(_) => { + if let Some(last) = self.stack.last_mut() { + last.near_calls_after += 1; + } + } + Opcode::FarCall(far_call) => { + // We use parent gas for properly calculating gas used in the trace. + let current_ergs = state.vm_local_state.callstack.current.ergs_remaining; + let parent_gas = state + .vm_local_state + .callstack + .inner + .last() + .map(|call| call.ergs_remaining + current_ergs) + .unwrap_or(current_ergs); + + let mut current_call = Call { + r#type: CallType::Call(far_call), + gas: 0, + parent_gas, + ..Default::default() + }; + + self.handle_far_call_op_code(state, data, memory, &mut current_call); + self.stack.push(FarcallAndNearCallCount { + farcall: current_call, + near_calls_after: 0, + }); + } + Opcode::Ret(ret_code) => { + self.handle_ret_op_code(state, data, memory, ret_code); + } + _ => {} + }; + } +} + +impl VmTracer for CallTracer { + fn after_vm_execution( + &mut self, + _state: &mut ZkSyncVmState, + _bootloader_state: &BootloaderState, + _stop_reason: VmExecutionStopReason, + ) { + self.result + .set( + std::mem::take(&mut self.stack) + .into_iter() + .map(|x| x.farcall) + .collect(), + ) + .expect("Result is already set"); + } +} + +impl CallTracer { + fn handle_far_call_op_code( + &mut self, + state: VmLocalStateData<'_>, + _data: AfterExecutionData, + memory: &SimpleMemory, + current_call: &mut Call, + ) { + let current = state.vm_local_state.callstack.current; + // All calls from the actual users are mimic calls, + // so we need to check that the previous call was to the deployer. + // Actually it's a call of the constructor. + // And at this stage caller is user and callee is deployed contract. + let call_type = if let CallType::Call(far_call) = current_call.r#type { + if matches!(far_call, FarCallOpcode::Mimic) { + let previous_caller = state + .vm_local_state + .callstack + .inner + .last() + .map(|call| call.this_address) + // Actually it's safe to just unwrap here, because we have at least one call in the stack + // But i want to be sure that we will not have any problems in the future + .unwrap_or(current.this_address); + if previous_caller == CONTRACT_DEPLOYER_ADDRESS { + CallType::Create + } else { + CallType::Call(far_call) + } + } else { + CallType::Call(far_call) + } + } else { + unreachable!() + }; + let calldata = if current.code_page.0 == 0 || current.ergs_remaining == 0 { + vec![] + } else { + let packed_abi = + state.vm_local_state.registers[CALL_IMPLICIT_CALLDATA_FAT_PTR_REGISTER as usize]; + assert!(packed_abi.is_pointer); + let far_call_abi = FarCallABI::from_u256(packed_abi.value); + memory.read_unaligned_bytes( + far_call_abi.memory_quasi_fat_pointer.memory_page as usize, + far_call_abi.memory_quasi_fat_pointer.start as usize, + far_call_abi.memory_quasi_fat_pointer.length as usize, + ) + }; + + current_call.input = calldata; + current_call.r#type = call_type; + current_call.from = current.msg_sender; + current_call.to = current.this_address; + current_call.value = U256::from(current.context_u128_value); + current_call.gas = current.ergs_remaining; + } + + fn save_output( + &mut self, + state: VmLocalStateData<'_>, + memory: &SimpleMemory, + ret_opcode: RetOpcode, + current_call: &mut Call, + ) { + let fat_data_pointer = + state.vm_local_state.registers[RET_IMPLICIT_RETURNDATA_PARAMS_REGISTER as usize]; + + // if fat_data_pointer is not a pointer then there is no output + let output = if fat_data_pointer.is_pointer { + let fat_data_pointer = FatPointer::from_u256(fat_data_pointer.value); + if !fat_data_pointer.is_trivial() { + Some(memory.read_unaligned_bytes( + fat_data_pointer.memory_page as usize, + fat_data_pointer.start as usize, + fat_data_pointer.length as usize, + )) + } else { + None + } + } else { + None + }; + + match ret_opcode { + RetOpcode::Ok => { + current_call.output = output.unwrap_or_default(); + } + RetOpcode::Revert => { + if let Some(output) = output { + current_call.revert_reason = + Some(VmRevertReason::from(output.as_slice()).to_string()); + } else { + current_call.revert_reason = Some("Unknown revert reason".to_string()); + } + } + RetOpcode::Panic => { + current_call.error = Some("Panic".to_string()); + } + } + } + + fn handle_ret_op_code( + &mut self, + state: VmLocalStateData<'_>, + _data: AfterExecutionData, + memory: &SimpleMemory, + ret_opcode: RetOpcode, + ) { + let Some(mut current_call) = self.stack.pop() else { + return; + }; + + if current_call.near_calls_after > 0 { + current_call.near_calls_after -= 1; + self.stack.push(current_call); + return; + } + + current_call.farcall.gas_used = current_call + .farcall + .parent_gas + .saturating_sub(state.vm_local_state.callstack.current.ergs_remaining); + + self.save_output(state, memory, ret_opcode, &mut current_call.farcall); + + // If there is a parent call, push the current call to it + // Otherwise, push the current call to the stack, because it's the top level call + if let Some(parent_call) = self.stack.last_mut() { + parent_call.farcall.calls.push(current_call.farcall); + } else { + self.stack.push(current_call); + } + } +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/default_tracers.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/default_tracers.rs new file mode 100644 index 00000000000..f06a42af286 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/default_tracers.rs @@ -0,0 +1,292 @@ +use std::fmt::{Debug, Formatter}; + +use crate::interface::{Halt, VmExecutionMode}; +use zk_evm_1_3_3::{ + tracing::{ + AfterDecodingData, AfterExecutionData, BeforeExecutionData, Tracer, VmLocalStateData, + }, + vm_state::VmLocalState, + witness_trace::DummyTracer, + zkevm_opcode_defs::{decoding::EncodingModeProduction, Opcode, RetOpcode}, +}; +use zksync_state::{StoragePtr, WriteStorage}; +use zksync_types::Timestamp; + +use crate::vm_refunds_enhancement::bootloader_state::utils::apply_l2_block; +use crate::vm_refunds_enhancement::bootloader_state::BootloaderState; +use crate::vm_refunds_enhancement::constants::BOOTLOADER_HEAP_PAGE; +use crate::vm_refunds_enhancement::old_vm::history_recorder::HistoryMode; +use crate::vm_refunds_enhancement::old_vm::memory::SimpleMemory; +use crate::vm_refunds_enhancement::tracers::traits::{ + DynTracer, TracerExecutionStatus, TracerExecutionStopReason, VmTracer, +}; +use crate::vm_refunds_enhancement::tracers::utils::{ + computational_gas_price, gas_spent_on_bytecodes_and_long_messages_this_opcode, + print_debug_if_needed, VmHook, +}; +use crate::vm_refunds_enhancement::tracers::{RefundsTracer, ResultTracer}; +use crate::vm_refunds_enhancement::types::internals::ZkSyncVmState; +use crate::vm_refunds_enhancement::VmExecutionStopReason; + +/// Default tracer for the VM. It manages the other tracers execution and stop the vm when needed. +pub(crate) struct DefaultExecutionTracer { + tx_has_been_processed: bool, + execution_mode: VmExecutionMode, + + pub(crate) gas_spent_on_bytecodes_and_long_messages: u32, + // Amount of gas used during account validation. + pub(crate) computational_gas_used: u32, + // Maximum number of gas that we're allowed to use during account validation. + tx_validation_gas_limit: u32, + in_account_validation: bool, + final_batch_info_requested: bool, + pub(crate) result_tracer: ResultTracer, + // This tracer is designed specifically for calculating refunds. Its separation from the custom tracer + // ensures static dispatch, enhancing performance by avoiding dynamic dispatch overhead. + // Additionally, being an internal tracer, it saves the results directly to VmResultAndLogs. + pub(crate) refund_tracer: Option, + pub(crate) custom_tracers: Vec>>, + ret_from_the_bootloader: Option, + storage: StoragePtr, +} + +impl Debug for DefaultExecutionTracer { + fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { + f.debug_struct("DefaultExecutionTracer").finish() + } +} + +impl Tracer for DefaultExecutionTracer { + const CALL_BEFORE_DECODING: bool = false; + const CALL_AFTER_DECODING: bool = true; + const CALL_BEFORE_EXECUTION: bool = true; + const CALL_AFTER_EXECUTION: bool = true; + type SupportedMemory = SimpleMemory; + + fn before_decoding( + &mut self, + _state: VmLocalStateData<'_, 8, EncodingModeProduction>, + _memory: &Self::SupportedMemory, + ) { + } + + fn after_decoding( + &mut self, + state: VmLocalStateData<'_>, + data: AfterDecodingData, + memory: &Self::SupportedMemory, + ) { + >::after_decoding( + &mut self.result_tracer, + state, + data, + memory, + ); + + if let Some(refund_tracer) = &mut self.refund_tracer { + >::after_decoding(refund_tracer, state, data, memory); + } + + for tracer in self.custom_tracers.iter_mut() { + tracer.after_decoding(state, data, memory) + } + } + + fn before_execution( + &mut self, + state: VmLocalStateData<'_>, + data: BeforeExecutionData, + memory: &Self::SupportedMemory, + ) { + if self.in_account_validation { + self.computational_gas_used = self + .computational_gas_used + .saturating_add(computational_gas_price(state, &data)); + } + + let hook = VmHook::from_opcode_memory(&state, &data); + print_debug_if_needed(&hook, &state, memory); + + match hook { + VmHook::TxHasEnded => self.tx_has_been_processed = true, + VmHook::NoValidationEntered => self.in_account_validation = false, + VmHook::AccountValidationEntered => self.in_account_validation = true, + VmHook::FinalBatchInfo => self.final_batch_info_requested = true, + _ => {} + } + + self.gas_spent_on_bytecodes_and_long_messages += + gas_spent_on_bytecodes_and_long_messages_this_opcode(&state, &data); + self.result_tracer + .before_execution(state, data, memory, self.storage.clone()); + + if let Some(refund_tracer) = &mut self.refund_tracer { + refund_tracer.before_execution(state, data, memory, self.storage.clone()); + } + for tracer in self.custom_tracers.iter_mut() { + tracer.before_execution(state, data, memory, self.storage.clone()); + } + } + + fn after_execution( + &mut self, + state: VmLocalStateData<'_>, + data: AfterExecutionData, + memory: &Self::SupportedMemory, + ) { + if let VmExecutionMode::Bootloader = self.execution_mode { + let (next_opcode, _, _) = zk_evm_1_3_3::vm_state::read_and_decode( + state.vm_local_state, + memory, + &mut DummyTracer, + self, + ); + if current_frame_is_bootloader(state.vm_local_state) { + if let Opcode::Ret(ret) = next_opcode.inner.variant.opcode { + self.ret_from_the_bootloader = Some(ret); + } + } + } + + self.result_tracer + .after_execution(state, data, memory, self.storage.clone()); + if let Some(refund_tracer) = &mut self.refund_tracer { + refund_tracer.after_execution(state, data, memory, self.storage.clone()) + } + for tracer in self.custom_tracers.iter_mut() { + tracer.after_execution(state, data, memory, self.storage.clone()); + } + } +} + +impl DefaultExecutionTracer { + pub(crate) fn new( + computational_gas_limit: u32, + execution_mode: VmExecutionMode, + custom_tracers: Vec>>, + storage: StoragePtr, + refund_tracer: Option, + ) -> Self { + Self { + tx_has_been_processed: false, + execution_mode, + gas_spent_on_bytecodes_and_long_messages: 0, + computational_gas_used: 0, + tx_validation_gas_limit: computational_gas_limit, + in_account_validation: false, + final_batch_info_requested: false, + result_tracer: ResultTracer::new(execution_mode), + refund_tracer, + custom_tracers, + ret_from_the_bootloader: None, + storage, + } + } + + pub(crate) fn tx_has_been_processed(&self) -> bool { + self.tx_has_been_processed + } + + pub(crate) fn validation_run_out_of_gas(&self) -> bool { + self.computational_gas_used > self.tx_validation_gas_limit + } + + pub(crate) fn gas_spent_on_pubdata(&self, vm_local_state: &VmLocalState) -> u32 { + self.gas_spent_on_bytecodes_and_long_messages + vm_local_state.spent_pubdata_counter + } + + fn set_fictive_l2_block( + &mut self, + state: &mut ZkSyncVmState, + bootloader_state: &mut BootloaderState, + ) { + let current_timestamp = Timestamp(state.local_state.timestamp); + let txs_index = bootloader_state.free_tx_index(); + let l2_block = bootloader_state.insert_fictive_l2_block(); + let mut memory = vec![]; + apply_l2_block(&mut memory, l2_block, txs_index); + state + .memory + .populate_page(BOOTLOADER_HEAP_PAGE as usize, memory, current_timestamp); + self.final_batch_info_requested = false; + } + + fn should_stop_execution(&self) -> TracerExecutionStatus { + match self.execution_mode { + VmExecutionMode::OneTx if self.tx_has_been_processed() => { + return TracerExecutionStatus::Stop(TracerExecutionStopReason::Finish); + } + VmExecutionMode::Bootloader if self.ret_from_the_bootloader == Some(RetOpcode::Ok) => { + return TracerExecutionStatus::Stop(TracerExecutionStopReason::Finish); + } + _ => {} + }; + if self.validation_run_out_of_gas() { + return TracerExecutionStatus::Stop(TracerExecutionStopReason::Abort( + Halt::ValidationOutOfGas, + )); + } + TracerExecutionStatus::Continue + } +} + +impl DynTracer for DefaultExecutionTracer {} + +impl VmTracer for DefaultExecutionTracer { + fn initialize_tracer(&mut self, state: &mut ZkSyncVmState) { + self.result_tracer.initialize_tracer(state); + if let Some(refund_tracer) = &mut self.refund_tracer { + refund_tracer.initialize_tracer(state); + } + for processor in self.custom_tracers.iter_mut() { + processor.initialize_tracer(state); + } + } + + fn finish_cycle( + &mut self, + state: &mut ZkSyncVmState, + bootloader_state: &mut BootloaderState, + ) -> TracerExecutionStatus { + if self.final_batch_info_requested { + self.set_fictive_l2_block(state, bootloader_state) + } + + let mut result = self.result_tracer.finish_cycle(state, bootloader_state); + if let Some(refund_tracer) = &mut self.refund_tracer { + result = refund_tracer + .finish_cycle(state, bootloader_state) + .stricter(&result); + } + for processor in self.custom_tracers.iter_mut() { + result = processor + .finish_cycle(state, bootloader_state) + .stricter(&result); + } + result.stricter(&self.should_stop_execution()) + } + + fn after_vm_execution( + &mut self, + state: &mut ZkSyncVmState, + bootloader_state: &BootloaderState, + stop_reason: VmExecutionStopReason, + ) { + self.result_tracer + .after_vm_execution(state, bootloader_state, stop_reason.clone()); + + if let Some(refund_tracer) = &mut self.refund_tracer { + refund_tracer.after_vm_execution(state, bootloader_state, stop_reason.clone()); + } + for processor in self.custom_tracers.iter_mut() { + processor.after_vm_execution(state, bootloader_state, stop_reason.clone()); + } + } +} + +fn current_frame_is_bootloader(local_state: &VmLocalState) -> bool { + // The current frame is bootloader if the callstack depth is 1. + // Some of the near calls inside the bootloader can be out of gas, which is totally normal behavior + // and it shouldn't result in `is_bootloader_out_of_gas` becoming true. + local_state.callstack.inner.len() == 1 +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/mod.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/mod.rs new file mode 100644 index 00000000000..11fefedc85a --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/mod.rs @@ -0,0 +1,15 @@ +pub(crate) use default_tracers::DefaultExecutionTracer; +pub(crate) use refunds::RefundsTracer; +pub(crate) use result_tracer::ResultTracer; +pub use storage_invocations::StorageInvocations; +pub use validation::{ValidationError, ValidationTracer, ValidationTracerParams}; + +pub(crate) mod default_tracers; +pub(crate) mod refunds; +pub(crate) mod result_tracer; + +pub(crate) mod call; +pub(crate) mod storage_invocations; +pub(crate) mod traits; +pub(crate) mod utils; +pub(crate) mod validation; diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/refunds.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/refunds.rs new file mode 100644 index 00000000000..9513443f291 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/refunds.rs @@ -0,0 +1,337 @@ +use vise::{Buckets, EncodeLabelSet, EncodeLabelValue, Family, Histogram, Metrics}; + +use crate::interface::{L1BatchEnv, Refunds}; +use zk_evm_1_3_3::{ + aux_structures::Timestamp, + tracing::{BeforeExecutionData, VmLocalStateData}, + vm_state::VmLocalState, +}; +use zksync_state::{StoragePtr, WriteStorage}; +use zksync_system_constants::{PUBLISH_BYTECODE_OVERHEAD, SYSTEM_CONTEXT_ADDRESS}; +use zksync_types::{ + event::{extract_long_l2_to_l1_messages, extract_published_bytecodes}, + l2_to_l1_log::L2ToL1Log, + L1BatchNumber, U256, +}; +use zksync_utils::bytecode::bytecode_len_in_bytes; +use zksync_utils::{ceil_div_u256, u256_to_h256}; + +use crate::vm_refunds_enhancement::constants::{ + BOOTLOADER_HEAP_PAGE, OPERATOR_REFUNDS_OFFSET, TX_GAS_LIMIT_OFFSET, +}; +use crate::vm_refunds_enhancement::old_vm::{ + events::merge_events, history_recorder::HistoryMode, memory::SimpleMemory, + utils::eth_price_per_pubdata_byte, +}; + +use crate::vm_refunds_enhancement::bootloader_state::BootloaderState; +use crate::vm_refunds_enhancement::tracers::utils::gas_spent_on_bytecodes_and_long_messages_this_opcode; +use crate::vm_refunds_enhancement::tracers::{ + traits::{DynTracer, VmTracer}, + utils::{get_vm_hook_params, VmHook}, +}; +use crate::vm_refunds_enhancement::types::internals::ZkSyncVmState; +use crate::vm_refunds_enhancement::TracerExecutionStatus; + +/// Tracer responsible for collecting information about refunds. +#[derive(Debug, Clone)] +pub(crate) struct RefundsTracer { + // Some(x) means that the bootloader has asked the operator + // to provide the refund the user, where `x` is the refund proposed + // by the bootloader itself. + pending_operator_refund: Option, + refund_gas: u32, + operator_refund: Option, + timestamp_initial: Timestamp, + timestamp_before_cycle: Timestamp, + gas_remaining_before: u32, + spent_pubdata_counter_before: u32, + gas_spent_on_bytecodes_and_long_messages: u32, + l1_batch: L1BatchEnv, +} + +impl RefundsTracer { + pub(crate) fn new(l1_batch: L1BatchEnv) -> Self { + Self { + pending_operator_refund: None, + refund_gas: 0, + operator_refund: None, + timestamp_initial: Timestamp(0), + timestamp_before_cycle: Timestamp(0), + gas_remaining_before: 0, + spent_pubdata_counter_before: 0, + gas_spent_on_bytecodes_and_long_messages: 0, + l1_batch, + } + } +} + +impl RefundsTracer { + fn requested_refund(&self) -> Option { + self.pending_operator_refund + } + + fn set_refund_as_done(&mut self) { + self.pending_operator_refund = None; + } + + fn block_overhead_refund(&mut self) -> u32 { + 0 + } + + pub(crate) fn get_refunds(&self) -> Refunds { + Refunds { + gas_refunded: self.refund_gas, + operator_suggested_refund: self.operator_refund.unwrap_or_default(), + } + } + + pub(crate) fn tx_body_refund( + &self, + bootloader_refund: u32, + gas_spent_on_pubdata: u32, + tx_gas_limit: u32, + current_ergs_per_pubdata_byte: u32, + pubdata_published: u32, + ) -> u32 { + let total_gas_spent = tx_gas_limit - bootloader_refund; + + let gas_spent_on_computation = total_gas_spent + .checked_sub(gas_spent_on_pubdata) + .unwrap_or_else(|| { + tracing::error!( + "Gas spent on pubdata is greater than total gas spent. On pubdata: {}, total: {}", + gas_spent_on_pubdata, + total_gas_spent + ); + 0 + }); + + // For now, bootloader charges only for base fee. + let effective_gas_price = self.l1_batch.base_fee(); + + let bootloader_eth_price_per_pubdata_byte = + U256::from(effective_gas_price) * U256::from(current_ergs_per_pubdata_byte); + + let fair_eth_price_per_pubdata_byte = + U256::from(eth_price_per_pubdata_byte(self.l1_batch.l1_gas_price)); + + // For now, L1 originated transactions are allowed to pay less than fair fee per pubdata, + // so we should take it into account. + let eth_price_per_pubdata_byte_for_calculation = std::cmp::min( + bootloader_eth_price_per_pubdata_byte, + fair_eth_price_per_pubdata_byte, + ); + + let fair_fee_eth = U256::from(gas_spent_on_computation) + * U256::from(self.l1_batch.fair_l2_gas_price) + + U256::from(pubdata_published) * eth_price_per_pubdata_byte_for_calculation; + let pre_paid_eth = U256::from(tx_gas_limit) * U256::from(effective_gas_price); + let refund_eth = pre_paid_eth.checked_sub(fair_fee_eth).unwrap_or_else(|| { + tracing::error!( + "Fair fee is greater than pre paid. Fair fee: {} wei, pre paid: {} wei", + fair_fee_eth, + pre_paid_eth + ); + U256::zero() + }); + + ceil_div_u256(refund_eth, effective_gas_price.into()).as_u32() + } + + pub(crate) fn gas_spent_on_pubdata(&self, vm_local_state: &VmLocalState) -> u32 { + self.gas_spent_on_bytecodes_and_long_messages + vm_local_state.spent_pubdata_counter + } +} + +impl DynTracer for RefundsTracer { + fn before_execution( + &mut self, + state: VmLocalStateData<'_>, + data: BeforeExecutionData, + memory: &SimpleMemory, + _storage: StoragePtr, + ) { + self.timestamp_before_cycle = Timestamp(state.vm_local_state.timestamp); + let hook = VmHook::from_opcode_memory(&state, &data); + match hook { + VmHook::NotifyAboutRefund => self.refund_gas = get_vm_hook_params(memory)[0].as_u32(), + VmHook::AskOperatorForRefund => { + self.pending_operator_refund = Some(get_vm_hook_params(memory)[0].as_u32()) + } + _ => {} + } + + self.gas_spent_on_bytecodes_and_long_messages += + gas_spent_on_bytecodes_and_long_messages_this_opcode(&state, &data); + } +} + +impl VmTracer for RefundsTracer { + fn initialize_tracer(&mut self, state: &mut ZkSyncVmState) { + self.timestamp_initial = Timestamp(state.local_state.timestamp); + self.gas_remaining_before = state.local_state.callstack.current.ergs_remaining; + self.spent_pubdata_counter_before = state.local_state.spent_pubdata_counter; + } + + fn finish_cycle( + &mut self, + state: &mut ZkSyncVmState, + bootloader_state: &mut BootloaderState, + ) -> TracerExecutionStatus { + #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, EncodeLabelValue, EncodeLabelSet)] + #[metrics(label = "type", rename_all = "snake_case")] + enum RefundType { + Bootloader, + Operator, + } + + const PERCENT_BUCKETS: Buckets = Buckets::values(&[ + 5.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0, 90.0, 100.0, 120.0, + ]); + + #[derive(Debug, Metrics)] + #[metrics(prefix = "vm")] + struct RefundMetrics { + #[metrics(buckets = PERCENT_BUCKETS)] + refund: Family>, + #[metrics(buckets = PERCENT_BUCKETS)] + refund_diff: Histogram, + } + + #[vise::register] + static METRICS: vise::Global = vise::Global::new(); + + // This means that the bootloader has informed the system (usually via VMHooks) - that some gas + // should be refunded back (see askOperatorForRefund in bootloader.yul for details). + if let Some(bootloader_refund) = self.requested_refund() { + assert!( + self.operator_refund.is_none(), + "Operator was asked for refund two times" + ); + let gas_spent_on_pubdata = + self.gas_spent_on_pubdata(&state.local_state) - self.spent_pubdata_counter_before; + + let current_tx_index = bootloader_state.current_tx(); + let tx_description_offset = + bootloader_state.get_tx_description_offset(current_tx_index); + let tx_gas_limit = state + .memory + .read_slot( + BOOTLOADER_HEAP_PAGE as usize, + tx_description_offset + TX_GAS_LIMIT_OFFSET, + ) + .value + .as_u32(); + + let used_published_storage_slots = state + .storage + .save_paid_changes(Timestamp(state.local_state.timestamp)); + + let pubdata_published = pubdata_published( + state, + used_published_storage_slots, + self.timestamp_initial, + self.l1_batch.number, + ); + + let current_ergs_per_pubdata_byte = state.local_state.current_ergs_per_pubdata_byte; + let tx_body_refund = self.tx_body_refund( + bootloader_refund, + gas_spent_on_pubdata, + tx_gas_limit, + current_ergs_per_pubdata_byte, + pubdata_published, + ); + + if tx_body_refund < bootloader_refund { + tracing::error!( + "Suggested tx body refund is less than bootloader refund. Tx body refund: {tx_body_refund}, \ + bootloader refund: {bootloader_refund}" + ); + } + + let refund_to_propose = tx_body_refund + self.block_overhead_refund(); + + let refund_slot = OPERATOR_REFUNDS_OFFSET + current_tx_index; + + // Writing the refund into memory + state.memory.populate_page( + BOOTLOADER_HEAP_PAGE as usize, + vec![(refund_slot, refund_to_propose.into())], + self.timestamp_before_cycle, + ); + + bootloader_state.set_refund_for_current_tx(refund_to_propose); + self.operator_refund = Some(refund_to_propose); + self.set_refund_as_done(); + + if tx_gas_limit < bootloader_refund { + tracing::error!( + "Tx gas limit is less than bootloader refund. Tx gas limit: {tx_gas_limit}, \ + bootloader refund: {bootloader_refund}" + ); + } + if tx_gas_limit < refund_to_propose { + tracing::error!( + "Tx gas limit is less than operator refund. Tx gas limit: {tx_gas_limit}, \ + operator refund: {refund_to_propose}" + ); + } + + METRICS.refund[&RefundType::Bootloader] + .observe(bootloader_refund as f64 / tx_gas_limit as f64 * 100.0); + METRICS.refund[&RefundType::Operator] + .observe(refund_to_propose as f64 / tx_gas_limit as f64 * 100.0); + let refund_diff = + (refund_to_propose as f64 - bootloader_refund as f64) / tx_gas_limit as f64 * 100.0; + METRICS.refund_diff.observe(refund_diff); + } + TracerExecutionStatus::Continue + } +} + +/// Returns the given transactions' gas limit - by reading it directly from the VM memory. +pub(crate) fn pubdata_published( + state: &ZkSyncVmState, + storage_writes_pubdata_published: u32, + from_timestamp: Timestamp, + batch_number: L1BatchNumber, +) -> u32 { + let (raw_events, l1_messages) = state + .event_sink + .get_events_and_l2_l1_logs_after_timestamp(from_timestamp); + let events: Vec<_> = merge_events(raw_events) + .into_iter() + .map(|e| e.into_vm_event(batch_number)) + .collect(); + // For the first transaction in L1 batch there may be (it depends on the execution mode) an L2->L1 log + // that is sent by `SystemContext` in `setNewBlock`. It's a part of the L1 batch pubdata overhead and not the transaction itself. + let l2_l1_logs_bytes = (l1_messages + .into_iter() + .map(|log| L2ToL1Log { + shard_id: log.shard_id, + is_service: log.is_first, + tx_number_in_block: log.tx_number_in_block, + sender: log.address, + key: u256_to_h256(log.key), + value: u256_to_h256(log.value), + }) + .filter(|log| log.sender != SYSTEM_CONTEXT_ADDRESS) + .count() as u32) + * zk_evm_1_3_3::zkevm_opcode_defs::system_params::L1_MESSAGE_PUBDATA_BYTES; + let l2_l1_long_messages_bytes: u32 = extract_long_l2_to_l1_messages(&events) + .iter() + .map(|event| event.len() as u32) + .sum(); + + let published_bytecode_bytes: u32 = extract_published_bytecodes(&events) + .iter() + .map(|bytecodehash| bytecode_len_in_bytes(*bytecodehash) as u32 + PUBLISH_BYTECODE_OVERHEAD) + .sum(); + + storage_writes_pubdata_published + + l2_l1_logs_bytes + + l2_l1_long_messages_bytes + + published_bytecode_bytes +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/result_tracer.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/result_tracer.rs new file mode 100644 index 00000000000..da70d06418a --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/result_tracer.rs @@ -0,0 +1,245 @@ +use zk_evm_1_3_3::{ + tracing::{AfterDecodingData, BeforeExecutionData, VmLocalStateData}, + vm_state::{ErrorFlags, VmLocalState}, + zkevm_opcode_defs::FatPointer, +}; +use zksync_state::{StoragePtr, WriteStorage}; + +use crate::interface::{ExecutionResult, Halt, TxRevertReason, VmExecutionMode, VmRevertReason}; +use zksync_types::U256; + +use crate::vm_refunds_enhancement::bootloader_state::BootloaderState; +use crate::vm_refunds_enhancement::old_vm::{ + history_recorder::HistoryMode, + memory::SimpleMemory, + utils::{vm_may_have_ended_inner, VmExecutionResult}, +}; +use crate::vm_refunds_enhancement::tracers::{ + traits::{DynTracer, VmTracer}, + utils::{get_vm_hook_params, read_pointer, VmHook}, +}; + +use crate::vm_refunds_enhancement::constants::{BOOTLOADER_HEAP_PAGE, RESULT_SUCCESS_FIRST_SLOT}; +use crate::vm_refunds_enhancement::tracers::traits::TracerExecutionStopReason; +use crate::vm_refunds_enhancement::types::internals::ZkSyncVmState; +use crate::vm_refunds_enhancement::VmExecutionStopReason; + +#[derive(Debug, Clone)] +enum Result { + Error { error_reason: VmRevertReason }, + Success { return_data: Vec }, + Halt { reason: Halt }, +} + +/// Tracer responsible for handling the VM execution result. +#[derive(Debug, Clone)] +pub(crate) struct ResultTracer { + result: Option, + bootloader_out_of_gas: bool, + execution_mode: VmExecutionMode, +} + +impl ResultTracer { + pub(crate) fn new(execution_mode: VmExecutionMode) -> Self { + Self { + result: None, + bootloader_out_of_gas: false, + execution_mode, + } + } +} + +fn current_frame_is_bootloader(local_state: &VmLocalState) -> bool { + // The current frame is bootloader if the callstack depth is 1. + // Some of the near calls inside the bootloader can be out of gas, which is totally normal behavior + // and it shouldn't result in `is_bootloader_out_of_gas` becoming true. + local_state.callstack.inner.len() == 1 +} + +impl DynTracer for ResultTracer { + fn after_decoding( + &mut self, + state: VmLocalStateData<'_>, + data: AfterDecodingData, + _memory: &SimpleMemory, + ) { + // We should check not only for the `NOT_ENOUGH_ERGS` flag but if the current frame is bootloader too. + if current_frame_is_bootloader(state.vm_local_state) + && data + .error_flags_accumulated + .contains(ErrorFlags::NOT_ENOUGH_ERGS) + { + self.bootloader_out_of_gas = true; + } + } + + fn before_execution( + &mut self, + state: VmLocalStateData<'_>, + data: BeforeExecutionData, + memory: &SimpleMemory, + _storage: StoragePtr, + ) { + let hook = VmHook::from_opcode_memory(&state, &data); + if let VmHook::ExecutionResult = hook { + let vm_hook_params = get_vm_hook_params(memory); + let success = vm_hook_params[0]; + let returndata_ptr = FatPointer::from_u256(vm_hook_params[1]); + let returndata = read_pointer(memory, returndata_ptr); + if success == U256::zero() { + self.result = Some(Result::Error { + // Tx has reverted, without bootloader error, we can simply parse the revert reason + error_reason: (VmRevertReason::from(returndata.as_slice())), + }); + } else { + self.result = Some(Result::Success { + return_data: returndata, + }); + } + } + } +} + +impl VmTracer for ResultTracer { + fn after_vm_execution( + &mut self, + state: &mut ZkSyncVmState, + bootloader_state: &BootloaderState, + stop_reason: VmExecutionStopReason, + ) { + match stop_reason { + // Vm has finished execution, we need to check the result of it + VmExecutionStopReason::VmFinished => { + self.vm_finished_execution(state); + } + // One of the tracers above has requested to stop the execution. + // If it was the correct stop we already have the result, + // otherwise it can be out of gas error + VmExecutionStopReason::TracerRequestedStop(reason) => { + match self.execution_mode { + VmExecutionMode::OneTx => { + self.vm_stopped_execution(state, bootloader_state, reason) + } + VmExecutionMode::Batch => self.vm_finished_execution(state), + VmExecutionMode::Bootloader => self.vm_finished_execution(state), + }; + } + } + } +} + +impl ResultTracer { + fn vm_finished_execution( + &mut self, + state: &ZkSyncVmState, + ) { + let Some(result) = vm_may_have_ended_inner(state) else { + // The VM has finished execution, but the result is not yet available. + self.result = Some(Result::Success { + return_data: vec![], + }); + return; + }; + + // Check it's not inside tx + match result { + VmExecutionResult::Ok(output) => { + self.result = Some(Result::Success { + return_data: output, + }); + } + VmExecutionResult::Revert(output) => { + // Unlike VmHook::ExecutionResult, vm has completely finished and returned not only the revert reason, + // but with bytecode, which represents the type of error from the bootloader side + let revert_reason = TxRevertReason::parse_error(&output); + + match revert_reason { + TxRevertReason::TxReverted(reason) => { + self.result = Some(Result::Error { + error_reason: reason, + }); + } + TxRevertReason::Halt(halt) => { + self.result = Some(Result::Halt { reason: halt }); + } + }; + } + VmExecutionResult::Panic => { + if self.bootloader_out_of_gas { + self.result = Some(Result::Halt { + reason: Halt::BootloaderOutOfGas, + }); + } else { + self.result = Some(Result::Halt { + reason: Halt::VMPanic, + }); + } + } + VmExecutionResult::MostLikelyDidNotFinish(_, _) => { + unreachable!() + } + } + } + + fn vm_stopped_execution( + &mut self, + state: &ZkSyncVmState, + bootloader_state: &BootloaderState, + reason: TracerExecutionStopReason, + ) { + if let TracerExecutionStopReason::Abort(halt) = reason { + self.result = Some(Result::Halt { reason: halt }); + return; + } + + if self.bootloader_out_of_gas { + self.result = Some(Result::Halt { + reason: Halt::BootloaderOutOfGas, + }); + } else { + if self.result.is_some() { + return; + } + + let has_failed = tx_has_failed(state, bootloader_state.current_tx() as u32); + if has_failed { + self.result = Some(Result::Error { + error_reason: VmRevertReason::General { + msg: "Transaction reverted with empty reason. Possibly out of gas" + .to_string(), + data: vec![], + }, + }); + } else { + self.result = Some(self.result.clone().unwrap_or(Result::Success { + return_data: vec![], + })); + } + } + } + + pub(crate) fn into_result(self) -> ExecutionResult { + match self.result.unwrap() { + Result::Error { error_reason } => ExecutionResult::Revert { + output: error_reason, + }, + Result::Success { return_data } => ExecutionResult::Success { + output: return_data, + }, + Result::Halt { reason } => ExecutionResult::Halt { reason }, + } + } +} + +pub(crate) fn tx_has_failed( + state: &ZkSyncVmState, + tx_id: u32, +) -> bool { + let mem_slot = RESULT_SUCCESS_FIRST_SLOT + tx_id; + let mem_value = state + .memory + .read_slot(BOOTLOADER_HEAP_PAGE as usize, mem_slot as usize) + .value; + + mem_value == U256::zero() +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/storage_invocations.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/storage_invocations.rs new file mode 100644 index 00000000000..95d496c6a86 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/storage_invocations.rs @@ -0,0 +1,45 @@ +use crate::interface::Halt; +use crate::vm_refunds_enhancement::bootloader_state::BootloaderState; +use crate::vm_refunds_enhancement::old_vm::history_recorder::HistoryMode; +use crate::vm_refunds_enhancement::tracers::traits::{ + DynTracer, TracerExecutionStatus, TracerExecutionStopReason, VmTracer, +}; +use crate::vm_refunds_enhancement::types::internals::ZkSyncVmState; +use zksync_state::WriteStorage; + +#[derive(Debug, Default, Clone)] +pub struct StorageInvocations { + pub limit: usize, +} + +impl StorageInvocations { + pub fn new(limit: usize) -> Self { + Self { limit } + } +} + +/// Tracer responsible for calculating the number of storage invocations and +/// stopping the VM execution if the limit is reached. +impl DynTracer for StorageInvocations {} + +impl VmTracer for StorageInvocations { + fn finish_cycle( + &mut self, + state: &mut ZkSyncVmState, + _bootloader_state: &mut BootloaderState, + ) -> TracerExecutionStatus { + let current = state + .storage + .storage + .get_ptr() + .borrow() + .missed_storage_invocations(); + + if current >= self.limit { + return TracerExecutionStatus::Stop(TracerExecutionStopReason::Abort( + Halt::TracerCustom("Storage invocations limit reached".to_string()), + )); + } + TracerExecutionStatus::Continue + } +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/traits.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/traits.rs new file mode 100644 index 00000000000..af79da8a20c --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/traits.rs @@ -0,0 +1,103 @@ +use crate::interface::Halt; +use zk_evm_1_3_3::tracing::{ + AfterDecodingData, AfterExecutionData, BeforeExecutionData, VmLocalStateData, +}; +use zksync_state::{StoragePtr, WriteStorage}; + +use crate::vm_refunds_enhancement::bootloader_state::BootloaderState; +use crate::vm_refunds_enhancement::old_vm::history_recorder::HistoryMode; +use crate::vm_refunds_enhancement::old_vm::memory::SimpleMemory; +use crate::vm_refunds_enhancement::types::internals::ZkSyncVmState; +use crate::vm_refunds_enhancement::VmExecutionStopReason; + +/// Run tracer for collecting data during the vm execution cycles +pub trait VmTracer: DynTracer { + /// Initialize the tracer before the vm execution + fn initialize_tracer(&mut self, _state: &mut ZkSyncVmState) {} + /// Run after each vm execution cycle + fn finish_cycle( + &mut self, + _state: &mut ZkSyncVmState, + _bootloader_state: &mut BootloaderState, + ) -> TracerExecutionStatus { + TracerExecutionStatus::Continue + } + /// Run after the vm execution + fn after_vm_execution( + &mut self, + _state: &mut ZkSyncVmState, + _bootloader_state: &BootloaderState, + _stop_reason: VmExecutionStopReason, + ) { + } +} + +/// Version of zk_evm_1_3_3::Tracer suitable for dynamic dispatch. +pub trait DynTracer { + fn before_decoding(&mut self, _state: VmLocalStateData<'_>, _memory: &SimpleMemory) {} + fn after_decoding( + &mut self, + _state: VmLocalStateData<'_>, + _data: AfterDecodingData, + _memory: &SimpleMemory, + ) { + } + fn before_execution( + &mut self, + _state: VmLocalStateData<'_>, + _data: BeforeExecutionData, + _memory: &SimpleMemory, + _storage: StoragePtr, + ) { + } + fn after_execution( + &mut self, + _state: VmLocalStateData<'_>, + _data: AfterExecutionData, + _memory: &SimpleMemory, + _storage: StoragePtr, + ) { + } +} + +pub trait BoxedTracer { + fn into_boxed(self) -> Box>; +} + +impl + 'static> BoxedTracer for T { + fn into_boxed(self) -> Box> { + Box::new(self) + } +} + +#[derive(Debug, Clone, PartialEq)] +pub enum TracerExecutionStopReason { + Finish, + Abort(Halt), +} + +#[derive(Debug, Clone, PartialEq)] +pub enum TracerExecutionStatus { + Continue, + Stop(TracerExecutionStopReason), +} + +impl TracerExecutionStatus { + /// Chose the stricter ExecutionStatus + /// If both statuses are Continue, then the result is Continue + /// If one of the statuses is Abort, then the result is Abort + /// If one of the statuses is Finish, then the result is Finish + pub fn stricter(&self, other: &Self) -> Self { + match (self, other) { + (Self::Continue, Self::Continue) => Self::Continue, + (Self::Stop(TracerExecutionStopReason::Abort(reason)), _) + | (_, Self::Stop(TracerExecutionStopReason::Abort(reason))) => { + Self::Stop(TracerExecutionStopReason::Abort(reason.clone())) + } + (Self::Stop(TracerExecutionStopReason::Finish), _) + | (_, Self::Stop(TracerExecutionStopReason::Finish)) => { + Self::Stop(TracerExecutionStopReason::Finish) + } + } + } +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/utils.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/utils.rs new file mode 100644 index 00000000000..d561a522733 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/utils.rs @@ -0,0 +1,225 @@ +use zk_evm_1_3_3::aux_structures::MemoryPage; +use zk_evm_1_3_3::zkevm_opcode_defs::{FarCallABI, FarCallForwardPageType}; +use zk_evm_1_3_3::{ + tracing::{BeforeExecutionData, VmLocalStateData}, + zkevm_opcode_defs::{FatPointer, LogOpcode, Opcode, UMAOpcode}, +}; + +use zksync_system_constants::{ + ECRECOVER_PRECOMPILE_ADDRESS, KECCAK256_PRECOMPILE_ADDRESS, KNOWN_CODES_STORAGE_ADDRESS, + L1_MESSENGER_ADDRESS, SHA256_PRECOMPILE_ADDRESS, +}; +use zksync_types::U256; +use zksync_utils::u256_to_h256; + +use crate::vm_refunds_enhancement::constants::{ + BOOTLOADER_HEAP_PAGE, VM_HOOK_PARAMS_COUNT, VM_HOOK_PARAMS_START_POSITION, VM_HOOK_POSITION, +}; +use crate::vm_refunds_enhancement::old_vm::history_recorder::HistoryMode; +use crate::vm_refunds_enhancement::old_vm::memory::SimpleMemory; +use crate::vm_refunds_enhancement::old_vm::utils::{aux_heap_page_from_base, heap_page_from_base}; +use crate::vm_refunds_enhancement::tracers::traits::TracerExecutionStopReason; + +#[derive(Clone, Debug, Copy)] +pub(crate) enum VmHook { + AccountValidationEntered, + PaymasterValidationEntered, + NoValidationEntered, + ValidationStepEndeded, + TxHasEnded, + DebugLog, + DebugReturnData, + NoHook, + NearCallCatch, + AskOperatorForRefund, + NotifyAboutRefund, + ExecutionResult, + FinalBatchInfo, +} + +impl VmHook { + pub(crate) fn from_opcode_memory( + state: &VmLocalStateData<'_>, + data: &BeforeExecutionData, + ) -> Self { + let opcode_variant = data.opcode.variant; + let heap_page = + heap_page_from_base(state.vm_local_state.callstack.current.base_memory_page).0; + + let src0_value = data.src0_value.value; + + let fat_ptr = FatPointer::from_u256(src0_value); + + let value = data.src1_value.value; + + // Only UMA opcodes in the bootloader serve for vm hooks + if !matches!(opcode_variant.opcode, Opcode::UMA(UMAOpcode::HeapWrite)) + || heap_page != BOOTLOADER_HEAP_PAGE + || fat_ptr.offset != VM_HOOK_POSITION * 32 + { + return Self::NoHook; + } + + match value.as_u32() { + 0 => Self::AccountValidationEntered, + 1 => Self::PaymasterValidationEntered, + 2 => Self::NoValidationEntered, + 3 => Self::ValidationStepEndeded, + 4 => Self::TxHasEnded, + 5 => Self::DebugLog, + 6 => Self::DebugReturnData, + 7 => Self::NearCallCatch, + 8 => Self::AskOperatorForRefund, + 9 => Self::NotifyAboutRefund, + 10 => Self::ExecutionResult, + 11 => Self::FinalBatchInfo, + _ => panic!("Unkown hook"), + } + } +} + +pub(crate) fn get_debug_log( + state: &VmLocalStateData<'_>, + memory: &SimpleMemory, +) -> String { + let vm_hook_params: Vec<_> = get_vm_hook_params(memory) + .into_iter() + .map(u256_to_h256) + .collect(); + let msg = vm_hook_params[0].as_bytes().to_vec(); + let data = vm_hook_params[1].as_bytes().to_vec(); + + let msg = String::from_utf8(msg).expect("Invalid debug message"); + let data = U256::from_big_endian(&data); + + // For long data, it is better to use hex-encoding for greater readibility + let data_str = if data > U256::from(u64::max_value()) { + let mut bytes = [0u8; 32]; + data.to_big_endian(&mut bytes); + format!("0x{}", hex::encode(bytes)) + } else { + data.to_string() + }; + + let tx_id = state.vm_local_state.tx_number_in_block; + + format!("Bootloader transaction {}: {} {}", tx_id, msg, data_str) +} + +/// Reads the memory slice represented by the fat pointer. +/// Note, that the fat pointer must point to the accesible memory (i.e. not cleared up yet). +pub(crate) fn read_pointer( + memory: &SimpleMemory, + pointer: FatPointer, +) -> Vec { + let FatPointer { + offset, + length, + start, + memory_page, + } = pointer; + + // The actual bounds of the returndata ptr is [start+offset..start+length] + let mem_region_start = start + offset; + let mem_region_length = length - offset; + + memory.read_unaligned_bytes( + memory_page as usize, + mem_region_start as usize, + mem_region_length as usize, + ) +} + +/// Outputs the returndata for the latest call. +/// This is usually used to output the revert reason. +pub(crate) fn get_debug_returndata(memory: &SimpleMemory) -> String { + let vm_hook_params: Vec<_> = get_vm_hook_params(memory); + let returndata_ptr = FatPointer::from_u256(vm_hook_params[0]); + let returndata = read_pointer(memory, returndata_ptr); + + format!("0x{}", hex::encode(returndata)) +} + +/// Accepts a vm hook and, if it requires to output some debug log, outputs it. +pub(crate) fn print_debug_if_needed( + hook: &VmHook, + state: &VmLocalStateData<'_>, + memory: &SimpleMemory, +) { + let log = match hook { + VmHook::DebugLog => get_debug_log(state, memory), + VmHook::DebugReturnData => get_debug_returndata(memory), + _ => return, + }; + + tracing::trace!("{}", log); +} + +pub(crate) fn computational_gas_price( + state: VmLocalStateData<'_>, + data: &BeforeExecutionData, +) -> u32 { + // We calculate computational gas used as a raw price for opcode plus cost for precompiles. + // This calculation is incomplete as it misses decommitment and memory growth costs. + // To calculate decommitment cost we need an access to decommitter oracle which is missing in tracer now. + // Memory growth calculation is complex and it will require different logic for different opcodes (`FarCall`, `Ret`, `UMA`). + let base_price = data.opcode.inner.variant.ergs_price(); + let precompile_price = match data.opcode.variant.opcode { + Opcode::Log(LogOpcode::PrecompileCall) => { + let address = state.vm_local_state.callstack.current.this_address; + + if address == KECCAK256_PRECOMPILE_ADDRESS + || address == SHA256_PRECOMPILE_ADDRESS + || address == ECRECOVER_PRECOMPILE_ADDRESS + { + data.src1_value.value.low_u32() + } else { + 0 + } + } + _ => 0, + }; + base_price + precompile_price +} + +pub(crate) fn gas_spent_on_bytecodes_and_long_messages_this_opcode( + state: &VmLocalStateData<'_>, + data: &BeforeExecutionData, +) -> u32 { + if data.opcode.variant.opcode == Opcode::Log(LogOpcode::PrecompileCall) { + let current_stack = state.vm_local_state.callstack.get_current_stack(); + // Trace for precompile calls from `KNOWN_CODES_STORAGE_ADDRESS` and `L1_MESSENGER_ADDRESS` that burn some gas. + // Note, that if there is less gas left than requested to burn it will be burnt anyway. + if current_stack.this_address == KNOWN_CODES_STORAGE_ADDRESS + || current_stack.this_address == L1_MESSENGER_ADDRESS + { + std::cmp::min(data.src1_value.value.as_u32(), current_stack.ergs_remaining) + } else { + 0 + } + } else { + 0 + } +} + +pub(crate) fn get_calldata_page_via_abi(far_call_abi: &FarCallABI, base_page: MemoryPage) -> u32 { + match far_call_abi.forwarding_mode { + FarCallForwardPageType::ForwardFatPointer => { + far_call_abi.memory_quasi_fat_pointer.memory_page + } + FarCallForwardPageType::UseAuxHeap => aux_heap_page_from_base(base_page).0, + FarCallForwardPageType::UseHeap => heap_page_from_base(base_page).0, + } +} +pub(crate) fn get_vm_hook_params(memory: &SimpleMemory) -> Vec { + memory.dump_page_content_as_u256_words( + BOOTLOADER_HEAP_PAGE, + VM_HOOK_PARAMS_START_POSITION..VM_HOOK_PARAMS_START_POSITION + VM_HOOK_PARAMS_COUNT, + ) +} + +#[derive(Debug, Clone, PartialEq)] +pub enum VmExecutionStopReason { + VmFinished, + TracerRequestedStop(TracerExecutionStopReason), +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/validation/error.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/validation/error.rs new file mode 100644 index 00000000000..4b9741ddaa5 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/validation/error.rs @@ -0,0 +1,22 @@ +use crate::interface::Halt; +use std::fmt::Display; +use zksync_types::vm_trace::ViolatedValidationRule; + +#[derive(Debug, Clone)] +pub enum ValidationError { + FailedTx(Halt), + ViolatedRule(ViolatedValidationRule), +} + +impl Display for ValidationError { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + Self::FailedTx(revert_reason) => { + write!(f, "Validation revert: {}", revert_reason) + } + Self::ViolatedRule(rule) => { + write!(f, "Violated validation rules: {}", rule) + } + } + } +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/validation/mod.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/validation/mod.rs new file mode 100644 index 00000000000..187d61ba0ed --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/validation/mod.rs @@ -0,0 +1,409 @@ +mod error; +mod params; +mod types; + +use std::sync::Arc; +use std::{collections::HashSet, marker::PhantomData}; + +use once_cell::sync::OnceCell; +use zk_evm_1_3_3::{ + tracing::{BeforeExecutionData, VmLocalStateData}, + zkevm_opcode_defs::{ContextOpcode, FarCallABI, LogOpcode, Opcode}, +}; + +use zksync_state::{StoragePtr, WriteStorage}; +use zksync_system_constants::{ + ACCOUNT_CODE_STORAGE_ADDRESS, BOOTLOADER_ADDRESS, CONTRACT_DEPLOYER_ADDRESS, + KECCAK256_PRECOMPILE_ADDRESS, L2_ETH_TOKEN_ADDRESS, MSG_VALUE_SIMULATOR_ADDRESS, + SYSTEM_CONTEXT_ADDRESS, +}; + +use zksync_types::{ + get_code_key, vm_trace::ViolatedValidationRule, web3::signing::keccak256, AccountTreeId, + Address, StorageKey, H256, U256, +}; +use zksync_utils::{ + be_bytes_to_safe_address, h256_to_account_address, u256_to_account_address, u256_to_h256, +}; + +use crate::vm_refunds_enhancement::old_vm::history_recorder::HistoryMode; +use crate::vm_refunds_enhancement::old_vm::memory::SimpleMemory; +use crate::vm_refunds_enhancement::tracers::traits::{ + DynTracer, TracerExecutionStatus, TracerExecutionStopReason, VmTracer, +}; +use crate::vm_refunds_enhancement::tracers::utils::{ + computational_gas_price, get_calldata_page_via_abi, print_debug_if_needed, VmHook, +}; + +pub use error::ValidationError; +pub use params::ValidationTracerParams; + +use crate::interface::Halt; +use types::NewTrustedValidationItems; +use types::ValidationTracerMode; + +use crate::vm_refunds_enhancement::{BootloaderState, ZkSyncVmState}; + +/// Tracer that is used to ensure that the validation adheres to all the rules +/// to prevent DDoS attacks on the server. +#[derive(Debug, Clone)] +pub struct ValidationTracer { + validation_mode: ValidationTracerMode, + auxilary_allowed_slots: HashSet, + + user_address: Address, + #[allow(dead_code)] + paymaster_address: Address, + should_stop_execution: bool, + trusted_slots: HashSet<(Address, U256)>, + trusted_addresses: HashSet
, + trusted_address_slots: HashSet<(Address, U256)>, + computational_gas_used: u32, + computational_gas_limit: u32, + pub result: Arc>, + _marker: PhantomData H>, +} + +type ValidationRoundResult = Result; + +impl ValidationTracer { + pub fn new(params: ValidationTracerParams) -> (Self, Arc>) { + let result = Arc::new(OnceCell::new()); + ( + Self { + validation_mode: ValidationTracerMode::NoValidation, + auxilary_allowed_slots: Default::default(), + + should_stop_execution: false, + user_address: params.user_address, + paymaster_address: params.paymaster_address, + trusted_slots: params.trusted_slots, + trusted_addresses: params.trusted_addresses, + trusted_address_slots: params.trusted_address_slots, + computational_gas_used: 0, + computational_gas_limit: params.computational_gas_limit, + result: result.clone(), + _marker: Default::default(), + }, + result, + ) + } + + fn process_validation_round_result(&mut self, result: ValidationRoundResult) { + match result { + Ok(NewTrustedValidationItems { + new_allowed_slots, + new_trusted_addresses, + }) => { + self.auxilary_allowed_slots.extend(new_allowed_slots); + self.trusted_addresses.extend(new_trusted_addresses); + } + Err(err) => { + if self.result.get().is_some() { + tracing::trace!("Validation error is already set, skipping"); + return; + } + self.result.set(err).expect("Result should be empty"); + } + } + } + + // Checks whether such storage access is acceptable. + fn is_allowed_storage_read( + &self, + storage: StoragePtr, + address: Address, + key: U256, + msg_sender: Address, + ) -> bool { + // If there are no restrictions, all storage reads are valid. + // We also don't support the paymaster validation for now. + if matches!( + self.validation_mode, + ValidationTracerMode::NoValidation | ValidationTracerMode::PaymasterTxValidation + ) { + return true; + } + + // The pair of MSG_VALUE_SIMULATOR_ADDRESS & L2_ETH_TOKEN_ADDRESS simulates the behavior of transfering ETH + // that is safe for the DDoS protection rules. + if valid_eth_token_call(address, msg_sender) { + return true; + } + + if self.trusted_slots.contains(&(address, key)) + || self.trusted_addresses.contains(&address) + || self.trusted_address_slots.contains(&(address, key)) + { + return true; + } + + if touches_allowed_context(address, key) { + return true; + } + + // The user is allowed to touch its own slots or slots semantically related to him. + let valid_users_slot = address == self.user_address + || u256_to_account_address(&key) == self.user_address + || self.auxilary_allowed_slots.contains(&u256_to_h256(key)); + if valid_users_slot { + return true; + } + + if is_constant_code_hash(address, key, storage) { + return true; + } + + false + } + + // Used to remember user-related fields (its balance/allowance/etc). + // Note that it assumes that the length of the calldata is 64 bytes. + fn slot_to_add_from_keccak_call( + &self, + calldata: &[u8], + validated_address: Address, + ) -> Option { + assert_eq!(calldata.len(), 64); + + let (potential_address_bytes, potential_position_bytes) = calldata.split_at(32); + let potential_address = be_bytes_to_safe_address(potential_address_bytes); + + // If the validation_address is equal to the potential_address, + // then it is a request that could be used for mapping of kind mapping(address => ...). + // + // If the potential_position_bytes were already allowed before, then this keccak might be used + // for ERC-20 allowance or any other of mapping(address => mapping(...)) + if potential_address == Some(validated_address) + || self + .auxilary_allowed_slots + .contains(&H256::from_slice(potential_position_bytes)) + { + // This is request that could be used for mapping of kind mapping(address => ...) + + // We could theoretically wait for the slot number to be returned by the + // keccak256 precompile itself, but this would complicate the code even further + // so let's calculate it here. + let slot = keccak256(calldata); + + // Adding this slot to the allowed ones + Some(H256(slot)) + } else { + None + } + } + + pub fn params(&self) -> ValidationTracerParams { + ValidationTracerParams { + user_address: self.user_address, + paymaster_address: self.paymaster_address, + trusted_slots: self.trusted_slots.clone(), + trusted_addresses: self.trusted_addresses.clone(), + trusted_address_slots: self.trusted_address_slots.clone(), + computational_gas_limit: self.computational_gas_limit, + } + } + + fn check_user_restrictions( + &mut self, + state: VmLocalStateData<'_>, + data: BeforeExecutionData, + memory: &SimpleMemory, + storage: StoragePtr, + ) -> ValidationRoundResult { + if self.computational_gas_used > self.computational_gas_limit { + return Err(ViolatedValidationRule::TookTooManyComputationalGas( + self.computational_gas_limit, + )); + } + + let opcode_variant = data.opcode.variant; + match opcode_variant.opcode { + Opcode::FarCall(_) => { + let packed_abi = data.src0_value.value; + let call_destination_value = data.src1_value.value; + + let called_address = u256_to_account_address(&call_destination_value); + let far_call_abi = FarCallABI::from_u256(packed_abi); + + if called_address == KECCAK256_PRECOMPILE_ADDRESS + && far_call_abi.memory_quasi_fat_pointer.length == 64 + { + let calldata_page = get_calldata_page_via_abi( + &far_call_abi, + state.vm_local_state.callstack.current.base_memory_page, + ); + let calldata = memory.read_unaligned_bytes( + calldata_page as usize, + far_call_abi.memory_quasi_fat_pointer.start as usize, + 64, + ); + + let slot_to_add = + self.slot_to_add_from_keccak_call(&calldata, self.user_address); + + if let Some(slot) = slot_to_add { + return Ok(NewTrustedValidationItems { + new_allowed_slots: vec![slot], + ..Default::default() + }); + } + } else if called_address != self.user_address { + let code_key = get_code_key(&called_address); + let code = storage.borrow_mut().read_value(&code_key); + + if code == H256::zero() { + // The users are not allowed to call contracts with no code + return Err(ViolatedValidationRule::CalledContractWithNoCode( + called_address, + )); + } + } + } + Opcode::Context(context) => { + match context { + ContextOpcode::Meta => { + return Err(ViolatedValidationRule::TouchedUnallowedContext); + } + ContextOpcode::ErgsLeft => { + // TODO (SMA-1168): implement the correct restrictions for the gas left opcode. + } + _ => {} + } + } + Opcode::Log(LogOpcode::StorageRead) => { + let key = data.src0_value.value; + let this_address = state.vm_local_state.callstack.current.this_address; + let msg_sender = state.vm_local_state.callstack.current.msg_sender; + + if !self.is_allowed_storage_read(storage.clone(), this_address, key, msg_sender) { + return Err(ViolatedValidationRule::TouchedUnallowedStorageSlots( + this_address, + key, + )); + } + + if self.trusted_address_slots.contains(&(this_address, key)) { + let storage_key = + StorageKey::new(AccountTreeId::new(this_address), u256_to_h256(key)); + + let value = storage.borrow_mut().read_value(&storage_key); + + return Ok(NewTrustedValidationItems { + new_trusted_addresses: vec![h256_to_account_address(&value)], + ..Default::default() + }); + } + } + _ => {} + } + + Ok(Default::default()) + } +} + +impl DynTracer for ValidationTracer { + fn before_execution( + &mut self, + state: VmLocalStateData<'_>, + data: BeforeExecutionData, + memory: &SimpleMemory, + storage: StoragePtr, + ) { + // For now, we support only validations for users. + if let ValidationTracerMode::UserTxValidation = self.validation_mode { + self.computational_gas_used = self + .computational_gas_used + .saturating_add(computational_gas_price(state, &data)); + + let validation_round_result = + self.check_user_restrictions(state, data, memory, storage); + self.process_validation_round_result(validation_round_result); + } + + let hook = VmHook::from_opcode_memory(&state, &data); + print_debug_if_needed(&hook, &state, memory); + + let current_mode = self.validation_mode; + match (current_mode, hook) { + (ValidationTracerMode::NoValidation, VmHook::AccountValidationEntered) => { + // Account validation can be entered when there is no prior validation (i.e. "nested" validations are not allowed) + self.validation_mode = ValidationTracerMode::UserTxValidation; + } + (ValidationTracerMode::NoValidation, VmHook::PaymasterValidationEntered) => { + // Paymaster validation can be entered when there is no prior validation (i.e. "nested" validations are not allowed) + self.validation_mode = ValidationTracerMode::PaymasterTxValidation; + } + (_, VmHook::AccountValidationEntered | VmHook::PaymasterValidationEntered) => { + panic!( + "Unallowed transition inside the validation tracer. Mode: {:#?}, hook: {:#?}", + self.validation_mode, hook + ); + } + (_, VmHook::NoValidationEntered) => { + // Validation can be always turned off + self.validation_mode = ValidationTracerMode::NoValidation; + } + (_, VmHook::ValidationStepEndeded) => { + // The validation step has ended. + self.should_stop_execution = true; + } + (_, _) => { + // The hook is not relevant to the validation tracer. Ignore. + } + } + } +} + +impl VmTracer for ValidationTracer { + fn finish_cycle( + &mut self, + _state: &mut ZkSyncVmState, + _bootloader_state: &mut BootloaderState, + ) -> TracerExecutionStatus { + if self.should_stop_execution { + return TracerExecutionStatus::Stop(TracerExecutionStopReason::Finish); + } + if let Some(result) = self.result.get() { + return TracerExecutionStatus::Stop(TracerExecutionStopReason::Abort( + Halt::TracerCustom(format!("Validation error: {:#?}", result)), + )); + } + TracerExecutionStatus::Continue + } +} + +fn touches_allowed_context(address: Address, key: U256) -> bool { + // Context is not touched at all + if address != SYSTEM_CONTEXT_ADDRESS { + return false; + } + + // Only chain_id is allowed to be touched. + key == U256::from(0u32) +} + +fn is_constant_code_hash( + address: Address, + key: U256, + storage: StoragePtr, +) -> bool { + if address != ACCOUNT_CODE_STORAGE_ADDRESS { + // Not a code hash + return false; + } + + let value = storage.borrow_mut().read_value(&StorageKey::new( + AccountTreeId::new(address), + u256_to_h256(key), + )); + + value != H256::zero() +} + +fn valid_eth_token_call(address: Address, msg_sender: Address) -> bool { + let is_valid_caller = msg_sender == MSG_VALUE_SIMULATOR_ADDRESS + || msg_sender == CONTRACT_DEPLOYER_ADDRESS + || msg_sender == BOOTLOADER_ADDRESS; + address == L2_ETH_TOKEN_ADDRESS && is_valid_caller +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/validation/params.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/validation/params.rs new file mode 100644 index 00000000000..1a4ced478b6 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/validation/params.rs @@ -0,0 +1,18 @@ +use std::collections::HashSet; +use zksync_types::{Address, U256}; + +#[derive(Debug, Clone)] +pub struct ValidationTracerParams { + pub user_address: Address, + pub paymaster_address: Address, + /// Slots that are trusted (i.e. the user can access them). + pub trusted_slots: HashSet<(Address, U256)>, + /// Trusted addresses (the user can access any slots on these addresses). + pub trusted_addresses: HashSet
, + /// Slots, that are trusted and the value of them is the new trusted address. + /// They are needed to work correctly with beacon proxy, where the address of the implementation is + /// stored in the beacon. + pub trusted_address_slots: HashSet<(Address, U256)>, + /// Number of computational gas that validation step is allowed to use. + pub computational_gas_limit: u32, +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/validation/types.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/validation/types.rs new file mode 100644 index 00000000000..b9d44227992 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/validation/types.rs @@ -0,0 +1,18 @@ +use zksync_types::{Address, H256}; + +#[derive(Debug, Clone, Eq, PartialEq, Copy)] +#[allow(clippy::enum_variant_names)] +pub(super) enum ValidationTracerMode { + /// Should be activated when the transaction is being validated by user. + UserTxValidation, + /// Should be activated when the transaction is being validated by the paymaster. + PaymasterTxValidation, + /// Is a state when there are no restrictions on the execution. + NoValidation, +} + +#[derive(Debug, Clone, Default)] +pub(super) struct NewTrustedValidationItems { + pub(super) new_allowed_slots: Vec, + pub(super) new_trusted_addresses: Vec
, +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/types/internals/mod.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/types/internals/mod.rs new file mode 100644 index 00000000000..601b7b8bd01 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/types/internals/mod.rs @@ -0,0 +1,7 @@ +pub(crate) use snapshot::VmSnapshot; +pub(crate) use transaction_data::TransactionData; +pub(crate) use vm_state::new_vm_state; +pub use vm_state::ZkSyncVmState; +mod snapshot; +mod transaction_data; +mod vm_state; diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/types/internals/snapshot.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/types/internals/snapshot.rs new file mode 100644 index 00000000000..cbb893cf56b --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/types/internals/snapshot.rs @@ -0,0 +1,11 @@ +use zk_evm_1_3_3::vm_state::VmLocalState; + +use crate::vm_refunds_enhancement::bootloader_state::BootloaderStateSnapshot; + +/// A snapshot of the VM that holds enough information to +/// rollback the VM to some historical state. +#[derive(Debug, Clone)] +pub(crate) struct VmSnapshot { + pub(crate) local_state: VmLocalState, + pub(crate) bootloader_state: BootloaderStateSnapshot, +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/types/internals/transaction_data.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/types/internals/transaction_data.rs new file mode 100644 index 00000000000..1b589146a29 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/types/internals/transaction_data.rs @@ -0,0 +1,344 @@ +use std::convert::TryInto; +use zksync_types::ethabi::{encode, Address, Token}; +use zksync_types::fee::{encoding_len, Fee}; +use zksync_types::l1::is_l1_tx_type; +use zksync_types::l2::L2Tx; +use zksync_types::transaction_request::{PaymasterParams, TransactionRequest}; +use zksync_types::{ + l2::TransactionType, Bytes, Execute, ExecuteTransactionCommon, L2ChainId, L2TxCommonData, + Nonce, Transaction, H256, U256, +}; +use zksync_utils::address_to_h256; +use zksync_utils::{bytecode::hash_bytecode, bytes_to_be_words, h256_to_u256}; + +use crate::vm_refunds_enhancement::utils::overhead::{get_amortized_overhead, OverheadCoeficients}; + +/// This structure represents the data that is used by +/// the Bootloader to describe the transaction. +#[derive(Debug, Default, Clone)] +pub(crate) struct TransactionData { + pub(crate) tx_type: u8, + pub(crate) from: Address, + pub(crate) to: Address, + pub(crate) gas_limit: U256, + pub(crate) pubdata_price_limit: U256, + pub(crate) max_fee_per_gas: U256, + pub(crate) max_priority_fee_per_gas: U256, + pub(crate) paymaster: Address, + pub(crate) nonce: U256, + pub(crate) value: U256, + // The reserved fields that are unique for different types of transactions. + // E.g. nonce is currently used in all transaction, but it should not be mandatory + // in the long run. + pub(crate) reserved: [U256; 4], + pub(crate) data: Vec, + pub(crate) signature: Vec, + // The factory deps provided with the transaction. + // Note that *only hashes* of these bytecodes are signed by the user + // and they are used in the ABI encoding of the struct. + // TODO: include this into the tx signature as part of SMA-1010 + pub(crate) factory_deps: Vec>, + pub(crate) paymaster_input: Vec, + pub(crate) reserved_dynamic: Vec, + pub(crate) raw_bytes: Option>, +} + +impl From for TransactionData { + fn from(execute_tx: Transaction) -> Self { + match execute_tx.common_data { + ExecuteTransactionCommon::L2(common_data) => { + let nonce = U256::from_big_endian(&common_data.nonce.to_be_bytes()); + + let should_check_chain_id = if matches!( + common_data.transaction_type, + TransactionType::LegacyTransaction + ) && common_data.extract_chain_id().is_some() + { + U256([1, 0, 0, 0]) + } else { + U256::zero() + }; + + TransactionData { + tx_type: (common_data.transaction_type as u32) as u8, + from: common_data.initiator_address, + to: execute_tx.execute.contract_address, + gas_limit: common_data.fee.gas_limit, + pubdata_price_limit: common_data.fee.gas_per_pubdata_limit, + max_fee_per_gas: common_data.fee.max_fee_per_gas, + max_priority_fee_per_gas: common_data.fee.max_priority_fee_per_gas, + paymaster: common_data.paymaster_params.paymaster, + nonce, + value: execute_tx.execute.value, + reserved: [ + should_check_chain_id, + U256::zero(), + U256::zero(), + U256::zero(), + ], + data: execute_tx.execute.calldata, + signature: common_data.signature, + factory_deps: execute_tx.execute.factory_deps.unwrap_or_default(), + paymaster_input: common_data.paymaster_params.paymaster_input, + reserved_dynamic: vec![], + raw_bytes: execute_tx.raw_bytes.map(|a| a.0), + } + } + ExecuteTransactionCommon::L1(common_data) => { + let refund_recipient = h256_to_u256(address_to_h256(&common_data.refund_recipient)); + TransactionData { + tx_type: common_data.tx_format() as u8, + from: common_data.sender, + to: execute_tx.execute.contract_address, + gas_limit: common_data.gas_limit, + pubdata_price_limit: common_data.gas_per_pubdata_limit, + // It doesn't matter what we put here, since + // the bootloader does not charge anything + max_fee_per_gas: common_data.max_fee_per_gas, + max_priority_fee_per_gas: U256::zero(), + paymaster: Address::default(), + nonce: U256::from(common_data.serial_id.0), // priority op ID + value: execute_tx.execute.value, + reserved: [ + common_data.to_mint, + refund_recipient, + U256::zero(), + U256::zero(), + ], + data: execute_tx.execute.calldata, + // The signature isn't checked for L1 transactions so we don't care + signature: vec![], + factory_deps: execute_tx.execute.factory_deps.unwrap_or_default(), + paymaster_input: vec![], + reserved_dynamic: vec![], + raw_bytes: None, + } + } + ExecuteTransactionCommon::ProtocolUpgrade(common_data) => { + let refund_recipient = h256_to_u256(address_to_h256(&common_data.refund_recipient)); + TransactionData { + tx_type: common_data.tx_format() as u8, + from: common_data.sender, + to: execute_tx.execute.contract_address, + gas_limit: common_data.gas_limit, + pubdata_price_limit: common_data.gas_per_pubdata_limit, + // It doesn't matter what we put here, since + // the bootloader does not charge anything + max_fee_per_gas: common_data.max_fee_per_gas, + max_priority_fee_per_gas: U256::zero(), + paymaster: Address::default(), + nonce: U256::from(common_data.upgrade_id as u16), + value: execute_tx.execute.value, + reserved: [ + common_data.to_mint, + refund_recipient, + U256::zero(), + U256::zero(), + ], + data: execute_tx.execute.calldata, + // The signature isn't checked for L1 transactions so we don't care + signature: vec![], + factory_deps: execute_tx.execute.factory_deps.unwrap_or_default(), + paymaster_input: vec![], + reserved_dynamic: vec![], + raw_bytes: None, + } + } + } + } +} + +impl TransactionData { + pub(crate) fn abi_encode_with_custom_factory_deps( + self, + factory_deps_hashes: Vec, + ) -> Vec { + encode(&[Token::Tuple(vec![ + Token::Uint(U256::from_big_endian(&self.tx_type.to_be_bytes())), + Token::Address(self.from), + Token::Address(self.to), + Token::Uint(self.gas_limit), + Token::Uint(self.pubdata_price_limit), + Token::Uint(self.max_fee_per_gas), + Token::Uint(self.max_priority_fee_per_gas), + Token::Address(self.paymaster), + Token::Uint(self.nonce), + Token::Uint(self.value), + Token::FixedArray(self.reserved.iter().copied().map(Token::Uint).collect()), + Token::Bytes(self.data), + Token::Bytes(self.signature), + Token::Array(factory_deps_hashes.into_iter().map(Token::Uint).collect()), + Token::Bytes(self.paymaster_input), + Token::Bytes(self.reserved_dynamic), + ])]) + } + + pub(crate) fn abi_encode(self) -> Vec { + let factory_deps_hashes = self + .factory_deps + .iter() + .map(|dep| h256_to_u256(hash_bytecode(dep))) + .collect(); + self.abi_encode_with_custom_factory_deps(factory_deps_hashes) + } + + pub(crate) fn into_tokens(self) -> Vec { + let bytes = self.abi_encode(); + assert!(bytes.len() % 32 == 0); + + bytes_to_be_words(bytes) + } + + pub(crate) fn effective_gas_price_per_pubdata(&self, block_gas_price_per_pubdata: u32) -> u32 { + // It is enforced by the protocol that the L1 transactions always pay the exact amount of gas per pubdata + // as was supplied in the transaction. + if is_l1_tx_type(self.tx_type) { + self.pubdata_price_limit.as_u32() + } else { + block_gas_price_per_pubdata + } + } + + pub(crate) fn overhead_gas(&self, block_gas_price_per_pubdata: u32) -> u32 { + let total_gas_limit = self.gas_limit.as_u32(); + let gas_price_per_pubdata = + self.effective_gas_price_per_pubdata(block_gas_price_per_pubdata); + + let encoded_len = encoding_len( + self.data.len() as u64, + self.signature.len() as u64, + self.factory_deps.len() as u64, + self.paymaster_input.len() as u64, + self.reserved_dynamic.len() as u64, + ); + + let coeficients = OverheadCoeficients::from_tx_type(self.tx_type); + get_amortized_overhead( + total_gas_limit, + gas_price_per_pubdata, + encoded_len, + coeficients, + ) + } + + pub(crate) fn trusted_ergs_limit(&self, _block_gas_price_per_pubdata: u64) -> U256 { + // TODO (EVM-66): correctly calculate the trusted gas limit for a transaction + self.gas_limit + } + + pub(crate) fn tx_hash(&self, chain_id: L2ChainId) -> H256 { + if is_l1_tx_type(self.tx_type) { + return self.canonical_l1_tx_hash().unwrap(); + } + + let l2_tx: L2Tx = self.clone().try_into().unwrap(); + let transaction_request: TransactionRequest = l2_tx.into(); + + // It is assumed that the TransactionData always has all the necessary components to recover the hash. + transaction_request + .get_tx_hash(chain_id) + .expect("Could not recover L2 transaction hash") + } + + fn canonical_l1_tx_hash(&self) -> Result { + use zksync_types::web3::signing::keccak256; + + if !is_l1_tx_type(self.tx_type) { + return Err(TxHashCalculationError::CannotCalculateL1HashForL2Tx); + } + + let encoded_bytes = self.clone().abi_encode(); + + Ok(H256(keccak256(&encoded_bytes))) + } +} + +#[derive(Debug, Clone, Copy)] +pub(crate) enum TxHashCalculationError { + CannotCalculateL1HashForL2Tx, + CannotCalculateL2HashForL1Tx, +} + +impl TryInto for TransactionData { + type Error = TxHashCalculationError; + + fn try_into(self) -> Result { + if is_l1_tx_type(self.tx_type) { + return Err(TxHashCalculationError::CannotCalculateL2HashForL1Tx); + } + + let common_data = L2TxCommonData { + transaction_type: (self.tx_type as u32).try_into().unwrap(), + nonce: Nonce(self.nonce.as_u32()), + fee: Fee { + max_fee_per_gas: self.max_fee_per_gas, + max_priority_fee_per_gas: self.max_priority_fee_per_gas, + gas_limit: self.gas_limit, + gas_per_pubdata_limit: self.pubdata_price_limit, + }, + signature: self.signature, + input: None, + initiator_address: self.from, + paymaster_params: PaymasterParams { + paymaster: self.paymaster, + paymaster_input: self.paymaster_input, + }, + }; + let factory_deps = (!self.factory_deps.is_empty()).then_some(self.factory_deps); + let execute = Execute { + contract_address: self.to, + value: self.value, + calldata: self.data, + factory_deps, + }; + + Ok(L2Tx { + execute, + common_data, + received_timestamp_ms: 0, + raw_bytes: self.raw_bytes.map(Bytes::from), + }) + } +} + +#[cfg(test)] +mod tests { + use super::*; + use zksync_types::fee::encoding_len; + + #[test] + fn test_consistency_with_encoding_length() { + let transaction = TransactionData { + tx_type: 113, + from: Address::random(), + to: Address::random(), + gas_limit: U256::from(1u32), + pubdata_price_limit: U256::from(1u32), + max_fee_per_gas: U256::from(1u32), + max_priority_fee_per_gas: U256::from(1u32), + paymaster: Address::random(), + nonce: U256::zero(), + value: U256::zero(), + // The reserved fields that are unique for different types of transactions. + // E.g. nonce is currently used in all transaction, but it should not be mandatory + // in the long run. + reserved: [U256::zero(); 4], + data: vec![0u8; 65], + signature: vec![0u8; 75], + // The factory deps provided with the transaction. + // Note that *only hashes* of these bytecodes are signed by the user + // and they are used in the ABI encoding of the struct. + // TODO: include this into the tx signature as part of SMA-1010 + factory_deps: vec![vec![0u8; 32], vec![1u8; 32]], + paymaster_input: vec![0u8; 85], + reserved_dynamic: vec![0u8; 32], + raw_bytes: None, + }; + + let assumed_encoded_len = encoding_len(65, 75, 2, 85, 32); + + let true_encoding_len = transaction.into_tokens().len(); + + assert_eq!(assumed_encoded_len, true_encoding_len); + } +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/types/internals/vm_state.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/types/internals/vm_state.rs new file mode 100644 index 00000000000..b656cd09f9b --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/types/internals/vm_state.rs @@ -0,0 +1,175 @@ +use zk_evm_1_3_3::{ + aux_structures::MemoryPage, + aux_structures::Timestamp, + block_properties::BlockProperties, + vm_state::{CallStackEntry, PrimitiveValue, VmState}, + witness_trace::DummyTracer, + zkevm_opcode_defs::{ + system_params::{BOOTLOADER_MAX_MEMORY, INITIAL_FRAME_FORMAL_EH_LOCATION}, + FatPointer, BOOTLOADER_CALLDATA_PAGE, + }, +}; + +use crate::interface::{L1BatchEnv, L2Block, SystemEnv}; +use zk_evm_1_3_3::zkevm_opcode_defs::{ + BOOTLOADER_BASE_PAGE, BOOTLOADER_CODE_PAGE, STARTING_BASE_PAGE, STARTING_TIMESTAMP, +}; +use zksync_state::{StoragePtr, WriteStorage}; +use zksync_system_constants::BOOTLOADER_ADDRESS; +use zksync_types::block::legacy_miniblock_hash; +use zksync_types::{zkevm_test_harness::INITIAL_MONOTONIC_CYCLE_COUNTER, Address, MiniblockNumber}; +use zksync_utils::h256_to_u256; + +use crate::vm_refunds_enhancement::bootloader_state::BootloaderState; +use crate::vm_refunds_enhancement::constants::BOOTLOADER_HEAP_PAGE; +use crate::vm_refunds_enhancement::old_vm::{ + event_sink::InMemoryEventSink, history_recorder::HistoryMode, memory::SimpleMemory, + oracles::decommitter::DecommitterOracle, oracles::precompile::PrecompilesProcessorWithHistory, +}; +use crate::vm_refunds_enhancement::oracles::storage::StorageOracle; +use crate::vm_refunds_enhancement::types::l1_batch::bootloader_initial_memory; +use crate::vm_refunds_enhancement::utils::l2_blocks::{assert_next_block, load_last_l2_block}; + +pub type ZkSyncVmState = VmState< + StorageOracle, + SimpleMemory, + InMemoryEventSink, + PrecompilesProcessorWithHistory, + DecommitterOracle, + DummyTracer, +>; + +fn formal_calldata_abi() -> PrimitiveValue { + let fat_pointer = FatPointer { + offset: 0, + memory_page: BOOTLOADER_CALLDATA_PAGE, + start: 0, + length: 0, + }; + + PrimitiveValue { + value: fat_pointer.to_u256(), + is_pointer: true, + } +} + +/// Initialize the vm state and all necessary oracles +pub(crate) fn new_vm_state( + storage: StoragePtr, + system_env: &SystemEnv, + l1_batch_env: &L1BatchEnv, +) -> (ZkSyncVmState, BootloaderState) { + let last_l2_block = if let Some(last_l2_block) = load_last_l2_block(storage.clone()) { + last_l2_block + } else { + // This is the scenario of either the first L2 block ever or + // the first block after the upgrade for support of L2 blocks. + L2Block { + number: l1_batch_env.first_l2_block.number.saturating_sub(1), + timestamp: 0, + hash: legacy_miniblock_hash(MiniblockNumber(l1_batch_env.first_l2_block.number) - 1), + } + }; + + assert_next_block(&last_l2_block, &l1_batch_env.first_l2_block); + let first_l2_block = l1_batch_env.first_l2_block; + let storage_oracle: StorageOracle = StorageOracle::new(storage.clone()); + let mut memory = SimpleMemory::default(); + let event_sink = InMemoryEventSink::default(); + let precompiles_processor = PrecompilesProcessorWithHistory::::default(); + let mut decommittment_processor: DecommitterOracle = + DecommitterOracle::new(storage); + + decommittment_processor.populate( + vec![( + h256_to_u256(system_env.base_system_smart_contracts.default_aa.hash), + system_env + .base_system_smart_contracts + .default_aa + .code + .clone(), + )], + Timestamp(0), + ); + + memory.populate( + vec![( + BOOTLOADER_CODE_PAGE, + system_env + .base_system_smart_contracts + .bootloader + .code + .clone(), + )], + Timestamp(0), + ); + + let bootloader_initial_memory = bootloader_initial_memory(l1_batch_env); + memory.populate_page( + BOOTLOADER_HEAP_PAGE as usize, + bootloader_initial_memory.clone(), + Timestamp(0), + ); + + let mut vm = VmState::empty_state( + storage_oracle, + memory, + event_sink, + precompiles_processor, + decommittment_processor, + DummyTracer, + BlockProperties { + default_aa_code_hash: h256_to_u256( + system_env.base_system_smart_contracts.default_aa.hash, + ), + zkporter_is_available: system_env.zk_porter_available, + }, + ); + + vm.local_state.callstack.current.ergs_remaining = system_env.gas_limit; + + let initial_context = CallStackEntry { + this_address: BOOTLOADER_ADDRESS, + msg_sender: Address::zero(), + code_address: BOOTLOADER_ADDRESS, + base_memory_page: MemoryPage(BOOTLOADER_BASE_PAGE), + code_page: MemoryPage(BOOTLOADER_CODE_PAGE), + sp: 0, + pc: 0, + // Note, that since the results are written at the end of the memory + // it is needed to have the entire heap available from the beginning + heap_bound: BOOTLOADER_MAX_MEMORY, + aux_heap_bound: BOOTLOADER_MAX_MEMORY, + exception_handler_location: INITIAL_FRAME_FORMAL_EH_LOCATION, + ergs_remaining: system_env.gas_limit, + this_shard_id: 0, + caller_shard_id: 0, + code_shard_id: 0, + is_static: false, + is_local_frame: false, + context_u128_value: 0, + }; + + // We consider the contract that is being run as a bootloader + vm.push_bootloader_context(INITIAL_MONOTONIC_CYCLE_COUNTER - 1, initial_context); + vm.local_state.timestamp = STARTING_TIMESTAMP; + vm.local_state.memory_page_counter = STARTING_BASE_PAGE; + vm.local_state.monotonic_cycle_counter = INITIAL_MONOTONIC_CYCLE_COUNTER; + vm.local_state.current_ergs_per_pubdata_byte = 0; + vm.local_state.registers[0] = formal_calldata_abi(); + + // Deleting all the historical records brought by the initial + // initialization of the VM to make them permanent. + vm.decommittment_processor.delete_history(); + vm.event_sink.delete_history(); + vm.storage.delete_history(); + vm.memory.delete_history(); + vm.precompiles_processor.delete_history(); + let bootloader_state = BootloaderState::new( + system_env.execution_mode, + bootloader_initial_memory, + first_l2_block, + ); + + (vm, bootloader_state) +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/types/l1_batch.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/types/l1_batch.rs new file mode 100644 index 00000000000..631f1436cc3 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/types/l1_batch.rs @@ -0,0 +1,37 @@ +use crate::interface::L1BatchEnv; +use zksync_types::U256; +use zksync_utils::{address_to_u256, h256_to_u256}; + +const OPERATOR_ADDRESS_SLOT: usize = 0; +const PREV_BLOCK_HASH_SLOT: usize = 1; +const NEW_BLOCK_TIMESTAMP_SLOT: usize = 2; +const NEW_BLOCK_NUMBER_SLOT: usize = 3; +const L1_GAS_PRICE_SLOT: usize = 4; +const FAIR_L2_GAS_PRICE_SLOT: usize = 5; +const EXPECTED_BASE_FEE_SLOT: usize = 6; +const SHOULD_SET_NEW_BLOCK_SLOT: usize = 7; + +/// Returns the initial memory for the bootloader based on the current batch environment. +pub(crate) fn bootloader_initial_memory(l1_batch: &L1BatchEnv) -> Vec<(usize, U256)> { + let (prev_block_hash, should_set_new_block) = l1_batch + .previous_batch_hash + .map(|prev_block_hash| (h256_to_u256(prev_block_hash), U256::one())) + .unwrap_or_default(); + + vec![ + ( + OPERATOR_ADDRESS_SLOT, + address_to_u256(&l1_batch.fee_account), + ), + (PREV_BLOCK_HASH_SLOT, prev_block_hash), + (NEW_BLOCK_TIMESTAMP_SLOT, U256::from(l1_batch.timestamp)), + (NEW_BLOCK_NUMBER_SLOT, U256::from(l1_batch.number.0)), + (L1_GAS_PRICE_SLOT, U256::from(l1_batch.l1_gas_price)), + ( + FAIR_L2_GAS_PRICE_SLOT, + U256::from(l1_batch.fair_l2_gas_price), + ), + (EXPECTED_BASE_FEE_SLOT, U256::from(l1_batch.base_fee())), + (SHOULD_SET_NEW_BLOCK_SLOT, should_set_new_block), + ] +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/types/legacy_types.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/types/legacy_types.rs new file mode 100644 index 00000000000..8b137891791 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/types/legacy_types.rs @@ -0,0 +1 @@ + diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/types/mod.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/types/mod.rs new file mode 100644 index 00000000000..3d9635ea13b --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/types/mod.rs @@ -0,0 +1,3 @@ +pub(crate) mod internals; +mod l1_batch; +pub mod legacy_types; diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/utils/fee.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/utils/fee.rs new file mode 100644 index 00000000000..02ea1c4a561 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/utils/fee.rs @@ -0,0 +1,29 @@ +//! Utility functions for vm +use zksync_system_constants::MAX_GAS_PER_PUBDATA_BYTE; +use zksync_utils::ceil_div; + +use crate::vm_refunds_enhancement::old_vm::utils::eth_price_per_pubdata_byte; + +/// Calcluates the amount of gas required to publish one byte of pubdata +pub fn base_fee_to_gas_per_pubdata(l1_gas_price: u64, base_fee: u64) -> u64 { + let eth_price_per_pubdata_byte = eth_price_per_pubdata_byte(l1_gas_price); + + ceil_div(eth_price_per_pubdata_byte, base_fee) +} + +/// Calculates the base fee and gas per pubdata for the given L1 gas price. +pub fn derive_base_fee_and_gas_per_pubdata(l1_gas_price: u64, fair_gas_price: u64) -> (u64, u64) { + let eth_price_per_pubdata_byte = eth_price_per_pubdata_byte(l1_gas_price); + + // The baseFee is set in such a way that it is always possible for a transaction to + // publish enough public data while compensating us for it. + let base_fee = std::cmp::max( + fair_gas_price, + ceil_div(eth_price_per_pubdata_byte, MAX_GAS_PER_PUBDATA_BYTE), + ); + + ( + base_fee, + base_fee_to_gas_per_pubdata(l1_gas_price, base_fee), + ) +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/utils/l2_blocks.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/utils/l2_blocks.rs new file mode 100644 index 00000000000..3d5f58094e0 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/utils/l2_blocks.rs @@ -0,0 +1,93 @@ +use crate::interface::{L2Block, L2BlockEnv}; +use zksync_state::{ReadStorage, StoragePtr}; +use zksync_system_constants::{ + SYSTEM_CONTEXT_ADDRESS, SYSTEM_CONTEXT_CURRENT_L2_BLOCK_HASHES_POSITION, + SYSTEM_CONTEXT_CURRENT_L2_BLOCK_INFO_POSITION, SYSTEM_CONTEXT_CURRENT_TX_ROLLING_HASH_POSITION, + SYSTEM_CONTEXT_STORED_L2_BLOCK_HASHES, +}; +use zksync_types::block::unpack_block_info; +use zksync_types::web3::signing::keccak256; +use zksync_types::{AccountTreeId, MiniblockNumber, StorageKey, H256, U256}; +use zksync_utils::{h256_to_u256, u256_to_h256}; + +pub(crate) fn get_l2_block_hash_key(block_number: u32) -> StorageKey { + let position = h256_to_u256(SYSTEM_CONTEXT_CURRENT_L2_BLOCK_HASHES_POSITION) + + U256::from(block_number % SYSTEM_CONTEXT_STORED_L2_BLOCK_HASHES); + StorageKey::new( + AccountTreeId::new(SYSTEM_CONTEXT_ADDRESS), + u256_to_h256(position), + ) +} + +pub(crate) fn assert_next_block(prev_block: &L2Block, next_block: &L2BlockEnv) { + if prev_block.number == 0 { + // Special case for the first block it can have the same timestamp as the previous block. + assert!(prev_block.timestamp <= next_block.timestamp); + } else { + assert_eq!(prev_block.number + 1, next_block.number); + assert!(prev_block.timestamp < next_block.timestamp); + } + assert_eq!(prev_block.hash, next_block.prev_block_hash); +} + +/// Returns the hash of the l2_block. +/// `txs_rolling_hash` of the l2_block is calculated the following way: +/// If the l2_block has 0 transactions, then `txs_rolling_hash` is equal to `H256::zero()`. +/// If the l2_block has i transactions, then `txs_rolling_hash` is equal to `H(H_{i-1}, H(tx_i))`, where +/// `H_{i-1}` is the `txs_rolling_hash` of the first i-1 transactions. +pub(crate) fn l2_block_hash( + l2_block_number: MiniblockNumber, + l2_block_timestamp: u64, + prev_l2_block_hash: H256, + txs_rolling_hash: H256, +) -> H256 { + let mut digest: [u8; 128] = [0u8; 128]; + U256::from(l2_block_number.0).to_big_endian(&mut digest[0..32]); + U256::from(l2_block_timestamp).to_big_endian(&mut digest[32..64]); + digest[64..96].copy_from_slice(prev_l2_block_hash.as_bytes()); + digest[96..128].copy_from_slice(txs_rolling_hash.as_bytes()); + + H256(keccak256(&digest)) +} + +/// Get last saved block from storage +pub fn load_last_l2_block(storage: StoragePtr) -> Option { + // Get block number and timestamp + let current_l2_block_info_key = StorageKey::new( + AccountTreeId::new(SYSTEM_CONTEXT_ADDRESS), + SYSTEM_CONTEXT_CURRENT_L2_BLOCK_INFO_POSITION, + ); + let mut storage_ptr = storage.borrow_mut(); + let current_l2_block_info = storage_ptr.read_value(¤t_l2_block_info_key); + let (block_number, block_timestamp) = unpack_block_info(h256_to_u256(current_l2_block_info)); + let block_number = block_number as u32; + if block_number == 0 { + // The block does not exist yet + return None; + } + + // Get prev block hash + let position = get_l2_block_hash_key(block_number - 1); + let prev_block_hash = storage_ptr.read_value(&position); + + // Get current tx rolling hash + let position = StorageKey::new( + AccountTreeId::new(SYSTEM_CONTEXT_ADDRESS), + SYSTEM_CONTEXT_CURRENT_TX_ROLLING_HASH_POSITION, + ); + let current_tx_rolling_hash = storage_ptr.read_value(&position); + + // Calculate current hash + let current_block_hash = l2_block_hash( + MiniblockNumber(block_number), + block_timestamp, + prev_block_hash, + current_tx_rolling_hash, + ); + + Some(L2Block { + number: block_number, + timestamp: block_timestamp, + hash: current_block_hash, + }) +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/utils/mod.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/utils/mod.rs new file mode 100644 index 00000000000..15ffa92b549 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/utils/mod.rs @@ -0,0 +1,5 @@ +/// Utility functions for the VM. +pub mod fee; +pub mod l2_blocks; +pub mod overhead; +pub mod transaction_encoding; diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/utils/overhead.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/utils/overhead.rs new file mode 100644 index 00000000000..671ff0e0572 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/utils/overhead.rs @@ -0,0 +1,349 @@ +use crate::vm_refunds_enhancement::constants::{ + BLOCK_OVERHEAD_GAS, BLOCK_OVERHEAD_PUBDATA, BOOTLOADER_TX_ENCODING_SPACE, +}; +use zk_evm_1_3_3::zkevm_opcode_defs::system_params::MAX_TX_ERGS_LIMIT; +use zksync_system_constants::{MAX_L2_TX_GAS_LIMIT, MAX_TXS_IN_BLOCK}; +use zksync_types::l1::is_l1_tx_type; +use zksync_types::U256; +use zksync_utils::ceil_div_u256; + +/// Derives the overhead for processing transactions in a block. +pub fn derive_overhead( + gas_limit: u32, + gas_price_per_pubdata: u32, + encoded_len: usize, + coeficients: OverheadCoeficients, +) -> u32 { + // Even if the gas limit is greater than the MAX_TX_ERGS_LIMIT, we assume that everything beyond MAX_TX_ERGS_LIMIT + // will be spent entirely on publishing bytecodes and so we derive the overhead solely based on the capped value + let gas_limit = std::cmp::min(MAX_TX_ERGS_LIMIT, gas_limit); + + // Using large U256 type to avoid overflow + let max_block_overhead = U256::from(block_overhead_gas(gas_price_per_pubdata)); + let gas_limit = U256::from(gas_limit); + let encoded_len = U256::from(encoded_len); + + // The MAX_TX_ERGS_LIMIT is formed in a way that may fullfills a single-instance circuits + // if used in full. That is, within MAX_TX_ERGS_LIMIT it is possible to fully saturate all the single-instance + // circuits. + let overhead_for_single_instance_circuits = + ceil_div_u256(gas_limit * max_block_overhead, MAX_TX_ERGS_LIMIT.into()); + + // The overhead for occupying the bootloader memory + let overhead_for_length = ceil_div_u256( + encoded_len * max_block_overhead, + BOOTLOADER_TX_ENCODING_SPACE.into(), + ); + + // The overhead for occupying a single tx slot + let tx_slot_overhead = ceil_div_u256(max_block_overhead, MAX_TXS_IN_BLOCK.into()); + + // We use "ceil" here for formal reasons to allow easier approach for calculating the overhead in O(1) + // let max_pubdata_in_tx = ceil_div_u256(gas_limit, gas_price_per_pubdata); + + // The maximal potential overhead from pubdata + // TODO (EVM-67): possibly use overhead for pubdata + // let pubdata_overhead = ceil_div_u256( + // max_pubdata_in_tx * max_block_overhead, + // MAX_PUBDATA_PER_BLOCK.into(), + // ); + + vec![ + (coeficients.ergs_limit_overhead_coeficient + * overhead_for_single_instance_circuits.as_u32() as f64) + .floor() as u32, + (coeficients.bootloader_memory_overhead_coeficient * overhead_for_length.as_u32() as f64) + .floor() as u32, + (coeficients.slot_overhead_coeficient * tx_slot_overhead.as_u32() as f64) as u32, + ] + .into_iter() + .max() + .unwrap() +} + +/// Contains the coeficients with which the overhead for transactions will be calculated. +/// All of the coeficients should be <= 1. There are here to provide a certain "discount" for normal transactions +/// at the risk of malicious transactions that may close the block prematurely. +/// IMPORTANT: to perform correct computations, `MAX_TX_ERGS_LIMIT / coeficients.ergs_limit_overhead_coeficient` MUST +/// result in an integer number +#[derive(Debug, Clone, Copy)] +pub struct OverheadCoeficients { + slot_overhead_coeficient: f64, + bootloader_memory_overhead_coeficient: f64, + ergs_limit_overhead_coeficient: f64, +} + +impl OverheadCoeficients { + // This method ensures that the parameters keep the required invariants + fn new_checked( + slot_overhead_coeficient: f64, + bootloader_memory_overhead_coeficient: f64, + ergs_limit_overhead_coeficient: f64, + ) -> Self { + assert!( + (MAX_TX_ERGS_LIMIT as f64 / ergs_limit_overhead_coeficient).round() + == MAX_TX_ERGS_LIMIT as f64 / ergs_limit_overhead_coeficient, + "MAX_TX_ERGS_LIMIT / ergs_limit_overhead_coeficient must be an integer" + ); + + Self { + slot_overhead_coeficient, + bootloader_memory_overhead_coeficient, + ergs_limit_overhead_coeficient, + } + } + + // L1->L2 do not receive any discounts + fn new_l1() -> Self { + OverheadCoeficients::new_checked(1.0, 1.0, 1.0) + } + + fn new_l2() -> Self { + OverheadCoeficients::new_checked( + 1.0, 1.0, + // For L2 transactions we allow a certain default discount with regard to the number of ergs. + // Multiinstance circuits can in theory be spawned infinite times, while projected future limitations + // on gas per pubdata allow for roughly 800kk gas per L1 batch, so the rough trust "discount" on the proof's part + // to be paid by the users is 0.1. + 0.1, + ) + } + + /// Return the coeficients for the given transaction type + pub fn from_tx_type(tx_type: u8) -> Self { + if is_l1_tx_type(tx_type) { + Self::new_l1() + } else { + Self::new_l2() + } + } +} + +/// This method returns the overhead for processing the block +pub(crate) fn get_amortized_overhead( + total_gas_limit: u32, + gas_per_pubdata_byte_limit: u32, + encoded_len: usize, + coeficients: OverheadCoeficients, +) -> u32 { + // Using large U256 type to prevent overflows. + let overhead_for_block_gas = U256::from(block_overhead_gas(gas_per_pubdata_byte_limit)); + let total_gas_limit = U256::from(total_gas_limit); + let encoded_len = U256::from(encoded_len); + + // Derivation of overhead consists of 4 parts: + // 1. The overhead for taking up a transaction's slot. (O1): O1 = 1 / MAX_TXS_IN_BLOCK + // 2. The overhead for taking up the bootloader's memory (O2): O2 = encoded_len / BOOTLOADER_TX_ENCODING_SPACE + // 3. The overhead for possible usage of pubdata. (O3): O3 = max_pubdata_in_tx / MAX_PUBDATA_PER_BLOCK + // 4. The overhead for possible usage of all the single-instance circuits. (O4): O4 = gas_limit / MAX_TX_ERGS_LIMIT + // + // The maximum of these is taken to derive the part of the block's overhead to be paid by the users: + // + // max_overhead = max(O1, O2, O3, O4) + // overhead_gas = ceil(max_overhead * overhead_for_block_gas). Thus, overhead_gas is a function of + // tx_gas_limit, gas_per_pubdata_byte_limit and encoded_len. + // + // While it is possible to derive the overhead with binary search in O(log n), it is too expensive to be done + // on L1, so here is a reference implementation of finding the overhead for transaction in O(1): + // + // Given total_gas_limit = tx_gas_limit + overhead_gas, we need to find overhead_gas and tx_gas_limit, such that: + // 1. overhead_gas is maximal possible (the operator is paid fairly) + // 2. overhead_gas(tx_gas_limit, gas_per_pubdata_byte_limit, encoded_len) >= overhead_gas (the user does not overpay) + // The third part boils to the following 4 inequalities (at least one of these must hold): + // ceil(O1 * overhead_for_block_gas) >= overhead_gas + // ceil(O2 * overhead_for_block_gas) >= overhead_gas + // ceil(O3 * overhead_for_block_gas) >= overhead_gas + // ceil(O4 * overhead_for_block_gas) >= overhead_gas + // + // Now, we need to solve each of these separately: + + // 1. The overhead for occupying a single tx slot is a constant: + let tx_slot_overhead = { + let tx_slot_overhead = + ceil_div_u256(overhead_for_block_gas, MAX_TXS_IN_BLOCK.into()).as_u32(); + (coeficients.slot_overhead_coeficient * tx_slot_overhead as f64).floor() as u32 + }; + + // 2. The overhead for occupying the bootloader memory can be derived from encoded_len + let overhead_for_length = { + let overhead_for_length = ceil_div_u256( + encoded_len * overhead_for_block_gas, + BOOTLOADER_TX_ENCODING_SPACE.into(), + ) + .as_u32(); + + (coeficients.bootloader_memory_overhead_coeficient * overhead_for_length as f64).floor() + as u32 + }; + + // TODO (EVM-67): possibly include the overhead for pubdata. The formula below has not been properly maintained, + // since the pubdat is not published. If decided to use the pubdata overhead, it needs to be updated. + // 3. ceil(O3 * overhead_for_block_gas) >= overhead_gas + // O3 = max_pubdata_in_tx / MAX_PUBDATA_PER_BLOCK = ceil(gas_limit / gas_per_pubdata_byte_limit) / MAX_PUBDATA_PER_BLOCK + // >= (gas_limit / (gas_per_pubdata_byte_limit * MAX_PUBDATA_PER_BLOCK). Throwing off the `ceil`, while may provide marginally lower + // overhead to the operator, provides substantially easier formula to work with. + // + // For better clarity, let's denote gas_limit = GL, MAX_PUBDATA_PER_BLOCK = MP, gas_per_pubdata_byte_limit = EP, overhead_for_block_gas = OB, total_gas_limit = TL, overhead_gas = OE + // ceil(OB * (TL - OE) / (EP * MP)) >= OE + // + // OB * (TL - OE) / (MP * EP) > OE - 1 + // OB * (TL - OE) > (OE - 1) * EP * MP + // OB * TL + EP * MP > OE * EP * MP + OE * OB + // (OB * TL + EP * MP) / (EP * MP + OB) > OE + // OE = floor((OB * TL + EP * MP) / (EP * MP + OB)) with possible -1 if the division is without remainder + // let overhead_for_pubdata = { + // let numerator: U256 = overhead_for_block_gas * total_gas_limit + // + gas_per_pubdata_byte_limit * U256::from(MAX_PUBDATA_PER_BLOCK); + // let denominator = + // gas_per_pubdata_byte_limit * U256::from(MAX_PUBDATA_PER_BLOCK) + overhead_for_block_gas; + + // // Corner case: if `total_gas_limit` = `gas_per_pubdata_byte_limit` = 0 + // // then the numerator will be 0 and subtracting 1 will cause a panic, so we just return a zero. + // if numerator.is_zero() { + // 0.into() + // } else { + // (numerator - 1) / denominator + // } + // }; + + // 4. K * ceil(O4 * overhead_for_block_gas) >= overhead_gas, where K is the discount + // O4 = gas_limit / MAX_TX_ERGS_LIMIT. Using the notation from the previous equation: + // ceil(OB * GL / MAX_TX_ERGS_LIMIT) >= (OE / K) + // ceil(OB * (TL - OE) / MAX_TX_ERGS_LIMIT) >= (OE/K) + // OB * (TL - OE) / MAX_TX_ERGS_LIMIT > (OE/K) - 1 + // OB * (TL - OE) > (OE/K) * MAX_TX_ERGS_LIMIT - MAX_TX_ERGS_LIMIT + // OB * TL + MAX_TX_ERGS_LIMIT > OE * ( MAX_TX_ERGS_LIMIT/K + OB) + // OE = floor(OB * TL + MAX_TX_ERGS_LIMIT / (MAX_TX_ERGS_LIMIT/K + OB)), with possible -1 if the division is without remainder + let overhead_for_gas = { + let numerator = overhead_for_block_gas * total_gas_limit + U256::from(MAX_TX_ERGS_LIMIT); + let denominator: U256 = U256::from( + (MAX_TX_ERGS_LIMIT as f64 / coeficients.ergs_limit_overhead_coeficient) as u64, + ) + overhead_for_block_gas; + + let overhead_for_gas = (numerator - 1) / denominator; + + overhead_for_gas.as_u32() + }; + + let overhead = vec![tx_slot_overhead, overhead_for_length, overhead_for_gas] + .into_iter() + .max() + // For the sake of consistency making sure that total_gas_limit >= max_overhead + .map(|max_overhead| std::cmp::min(max_overhead, total_gas_limit.as_u32())) + .unwrap(); + + let limit_after_deducting_overhead = total_gas_limit - overhead; + + // During double checking of the overhead, the bootloader will assume that the + // body of the transaction does not have any more than MAX_L2_TX_GAS_LIMIT ergs available to it. + if limit_after_deducting_overhead.as_u64() > MAX_L2_TX_GAS_LIMIT { + // We derive the same overhead that would exist for the MAX_L2_TX_GAS_LIMIT ergs + derive_overhead( + MAX_L2_TX_GAS_LIMIT as u32, + gas_per_pubdata_byte_limit, + encoded_len.as_usize(), + coeficients, + ) + } else { + overhead + } +} + +pub(crate) fn block_overhead_gas(gas_per_pubdata_byte: u32) -> u32 { + BLOCK_OVERHEAD_GAS + BLOCK_OVERHEAD_PUBDATA * gas_per_pubdata_byte +} + +#[cfg(test)] +mod tests { + + use super::*; + + // This method returns the maximum block overhead that can be charged from the user based on the binary search approach + pub(crate) fn get_maximal_allowed_overhead_bin_search( + total_gas_limit: u32, + gas_per_pubdata_byte_limit: u32, + encoded_len: usize, + coeficients: OverheadCoeficients, + ) -> u32 { + let mut left_bound = if MAX_TX_ERGS_LIMIT < total_gas_limit { + total_gas_limit - MAX_TX_ERGS_LIMIT + } else { + 0u32 + }; + // Safe cast: the gas_limit for a transaction can not be larger than 2^32 + let mut right_bound = total_gas_limit; + + // The closure returns whether a certain overhead would be accepted by the bootloader. + // It is accepted if the derived overhead (i.e. the actual overhead that the user has to pay) + // is >= than the overhead proposed by the operator. + let is_overhead_accepted = |suggested_overhead: u32| { + let derived_overhead = derive_overhead( + total_gas_limit - suggested_overhead, + gas_per_pubdata_byte_limit, + encoded_len, + coeficients, + ); + + derived_overhead >= suggested_overhead + }; + + // In order to find the maximal allowed overhead we are doing binary search + while left_bound + 1 < right_bound { + let mid = (left_bound + right_bound) / 2; + + if is_overhead_accepted(mid) { + left_bound = mid; + } else { + right_bound = mid; + } + } + + if is_overhead_accepted(right_bound) { + right_bound + } else { + left_bound + } + } + + #[test] + fn test_correctness_for_efficient_overhead() { + let test_params = |total_gas_limit: u32, + gas_per_pubdata: u32, + encoded_len: usize, + coeficients: OverheadCoeficients| { + let result_by_efficient_search = + get_amortized_overhead(total_gas_limit, gas_per_pubdata, encoded_len, coeficients); + + let result_by_binary_search = get_maximal_allowed_overhead_bin_search( + total_gas_limit, + gas_per_pubdata, + encoded_len, + coeficients, + ); + + assert_eq!(result_by_efficient_search, result_by_binary_search); + }; + + // Some arbitrary test + test_params(60_000_000, 800, 2900, OverheadCoeficients::new_l2()); + + // Very small parameters + test_params(0, 1, 12, OverheadCoeficients::new_l2()); + + // Relatively big parameters + let max_tx_overhead = derive_overhead( + MAX_TX_ERGS_LIMIT, + 5000, + 10000, + OverheadCoeficients::new_l2(), + ); + test_params( + MAX_TX_ERGS_LIMIT + max_tx_overhead, + 5000, + 10000, + OverheadCoeficients::new_l2(), + ); + + test_params(115432560, 800, 2900, OverheadCoeficients::new_l1()); + } +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/utils/transaction_encoding.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/utils/transaction_encoding.rs new file mode 100644 index 00000000000..ab1352c2c75 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/utils/transaction_encoding.rs @@ -0,0 +1,15 @@ +use crate::vm_refunds_enhancement::types::internals::TransactionData; +use zksync_types::Transaction; + +/// Extension for transactions, specific for VM. Required for bypassing the orphan rule +pub trait TransactionVmExt { + /// Get the size of the transaction in tokens. + fn bootloader_encoding_size(&self) -> usize; +} + +impl TransactionVmExt for Transaction { + fn bootloader_encoding_size(&self) -> usize { + let transaction_data: TransactionData = self.clone().into(); + transaction_data.into_tokens().len() + } +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/vm.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/vm.rs new file mode 100644 index 00000000000..83feb7774f6 --- /dev/null +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/vm.rs @@ -0,0 +1,166 @@ +use zksync_state::{StoragePtr, WriteStorage}; +use zksync_types::Transaction; +use zksync_utils::bytecode::CompressedBytecodeInfo; + +use crate::vm_refunds_enhancement::old_vm::events::merge_events; +use crate::vm_refunds_enhancement::old_vm::history_recorder::{HistoryEnabled, HistoryMode}; +use zksync_types::event::extract_l2tol1logs_from_l1_messenger; + +use crate::interface::BytecodeCompressionError; +use crate::interface::{ + BootloaderMemory, CurrentExecutionState, L1BatchEnv, L2BlockEnv, SystemEnv, VmExecutionMode, + VmExecutionResultAndLogs, +}; +use crate::vm_refunds_enhancement::bootloader_state::BootloaderState; +use crate::vm_refunds_enhancement::tracers::traits::VmTracer; +use crate::vm_refunds_enhancement::types::internals::{new_vm_state, VmSnapshot, ZkSyncVmState}; + +/// Main entry point for Virtual Machine integration. +/// The instance should process only one l1 batch +#[derive(Debug)] +pub struct Vm { + pub(crate) bootloader_state: BootloaderState, + // Current state and oracles of virtual machine + pub(crate) state: ZkSyncVmState, + pub(crate) storage: StoragePtr, + pub(crate) system_env: SystemEnv, + pub(crate) batch_env: L1BatchEnv, + // Snapshots for the current run + pub(crate) snapshots: Vec, + _phantom: std::marker::PhantomData, +} + +/// Public interface for VM +impl Vm { + pub fn new(batch_env: L1BatchEnv, system_env: SystemEnv, storage: StoragePtr, _: H) -> Self { + let (state, bootloader_state) = new_vm_state(storage.clone(), &system_env, &batch_env); + Self { + bootloader_state, + state, + storage, + system_env, + batch_env, + snapshots: vec![], + _phantom: Default::default(), + } + } + + /// Push tx into memory for the future execution + pub fn push_transaction(&mut self, tx: Transaction) { + self.push_transaction_with_compression(tx, true) + } + + /// Execute VM with default tracers. The execution mode determines whether the VM will stop and + /// how the vm will be processed. + pub fn execute(&mut self, execution_mode: VmExecutionMode) -> VmExecutionResultAndLogs { + self.inspect(vec![], execution_mode) + } + + /// Execute VM with custom tracers. + pub fn inspect( + &mut self, + tracers: Vec>>, + execution_mode: VmExecutionMode, + ) -> VmExecutionResultAndLogs { + self.inspect_inner(tracers, execution_mode) + } + + /// Get current state of bootloader memory. + pub fn get_bootloader_memory(&self) -> BootloaderMemory { + self.bootloader_state.bootloader_memory() + } + + /// Get compressed bytecodes of the last executed transaction + pub fn get_last_tx_compressed_bytecodes(&self) -> Vec { + self.bootloader_state.get_last_tx_compressed_bytecodes() + } + + pub fn start_new_l2_block(&mut self, l2_block_env: L2BlockEnv) { + self.bootloader_state.start_new_l2_block(l2_block_env); + } + + /// Get current state of virtual machine. + /// This method should be used only after the batch execution. + /// Otherwise it can panic. + pub fn get_current_execution_state(&self) -> CurrentExecutionState { + let (deduplicated_events_logs, raw_events, l1_messages) = self.state.event_sink.flatten(); + let events: Vec<_> = merge_events(raw_events) + .into_iter() + .map(|e| e.into_vm_event(self.batch_env.number)) + .collect(); + + let user_l2_to_l1_logs = extract_l2tol1logs_from_l1_messenger(&events); + let system_logs = l1_messages.into_iter().map(|log| log.into()).collect(); + let total_log_queries = self.state.event_sink.get_log_queries() + + self + .state + .precompiles_processor + .get_timestamp_history() + .len() + + self.state.storage.get_final_log_queries().len(); + + CurrentExecutionState { + events, + storage_log_queries: self.state.storage.get_final_log_queries(), + used_contract_hashes: self.get_used_contracts(), + user_l2_to_l1_logs: user_l2_to_l1_logs + .into_iter() + .map(|log| log.into()) + .collect(), + system_logs, + total_log_queries, + cycles_used: self.state.local_state.monotonic_cycle_counter, + deduplicated_events_logs, + storage_refunds: Vec::new(), + } + } + + /// Execute transaction with optional bytecode compression. + pub fn execute_transaction_with_bytecode_compression( + &mut self, + tx: Transaction, + with_compression: bool, + ) -> Result { + self.inspect_transaction_with_bytecode_compression(vec![], tx, with_compression) + } + + /// Inspect transaction with optional bytecode compression. + pub fn inspect_transaction_with_bytecode_compression( + &mut self, + tracers: Vec>>, + tx: Transaction, + with_compression: bool, + ) -> Result { + self.push_transaction_with_compression(tx, with_compression); + let result = self.inspect(tracers, VmExecutionMode::OneTx); + if self.has_unpublished_bytecodes() { + Err(BytecodeCompressionError::BytecodeCompressionFailed) + } else { + Ok(result) + } + } +} + +/// Methods of vm, which required some history manipullations +impl Vm { + /// Create snapshot of current vm state and push it into the memory + pub fn make_snapshot(&mut self) { + self.make_snapshot_inner() + } + + /// Rollback vm state to the latest snapshot and destroy the snapshot + pub fn rollback_to_the_latest_snapshot(&mut self) { + let snapshot = self + .snapshots + .pop() + .expect("Snapshot should be created before rolling it back"); + self.rollback_to_snapshot(snapshot); + } + + /// Pop the latest snapshot from the memory and destroy it + pub fn pop_snapshot_no_rollback(&mut self) { + self.snapshots + .pop() + .expect("Snapshot should be created before rolling it back"); + } +} diff --git a/core/lib/multivm/src/vm_instance.rs b/core/lib/multivm/src/vm_instance.rs index 7dd7ba8492c..c650dde2196 100644 --- a/core/lib/multivm/src/vm_instance.rs +++ b/core/lib/multivm/src/vm_instance.rs @@ -23,8 +23,11 @@ pub(crate) enum VmInstanceVersion { Vm1_3_2(Box, H::Vm1_3_2Mode>>), VmVirtualBlocks(Box, H::VmVirtualBlocksMode>>), VmVirtualBlocksRefundsEnhancement( - Box, H::VmVirtualBlocksRefundsEnhancement>>, + Box< + crate::vm_refunds_enhancement::Vm, H::VmVirtualBlocksRefundsEnhancement>, + >, ), + VmBoojumIntegration(Box, H::VmBoojumIntegration>>), } impl VmInstance { @@ -60,6 +63,9 @@ impl VmInstance { VmInstanceVersion::VmVirtualBlocksRefundsEnhancement(vm) => { vm.push_transaction(tx.clone()); } + VmInstanceVersion::VmBoojumIntegration(vm) => { + vm.push_transaction(tx.clone()); + } } } @@ -101,6 +107,16 @@ impl VmInstance { final_bootloader_memory: Some(bootloader_memory), } } + VmInstanceVersion::VmBoojumIntegration(vm) => { + let result = vm.execute(VmExecutionMode::Batch); + let execution_state = vm.get_current_execution_state(); + let bootloader_memory = vm.get_bootloader_memory(); + FinishedL1Batch { + block_tip_execution_result: result, + final_execution_state: execution_state, + final_bootloader_memory: Some(bootloader_memory), + } + } } } @@ -117,6 +133,7 @@ impl VmInstance { VmInstanceVersion::VmVirtualBlocksRefundsEnhancement(vm) => { vm.execute(VmExecutionMode::Bootloader) } + VmInstanceVersion::VmBoojumIntegration(vm) => vm.execute(VmExecutionMode::Bootloader), } } @@ -171,6 +188,7 @@ impl VmInstance { VmInstanceVersion::VmVirtualBlocksRefundsEnhancement(vm) => { vm.execute(VmExecutionMode::OneTx) } + VmInstanceVersion::VmBoojumIntegration(vm) => vm.execute(VmExecutionMode::OneTx), } } @@ -201,6 +219,13 @@ impl VmInstance { ) .glue_into(), VmInstanceVersion::VmVirtualBlocksRefundsEnhancement(vm) => vm.inspect( + tracers + .into_iter() + .map(|tracer| tracer.vm_refunds_enhancement()) + .collect(), + VmExecutionMode::OneTx, + ), + VmInstanceVersion::VmBoojumIntegration(vm) => vm.inspect( tracers.into_iter().map(|tracer| tracer.latest()).collect(), VmExecutionMode::OneTx, ), @@ -360,6 +385,9 @@ impl VmInstance { VmInstanceVersion::VmVirtualBlocksRefundsEnhancement(vm) => { vm.execute_transaction_with_bytecode_compression(tx, with_compression) } + VmInstanceVersion::VmBoojumIntegration(vm) => { + vm.execute_transaction_with_bytecode_compression(tx, with_compression) + } } } @@ -385,6 +413,15 @@ impl VmInstance { ) .glue_into(), VmInstanceVersion::VmVirtualBlocksRefundsEnhancement(vm) => vm + .inspect_transaction_with_bytecode_compression( + tracers + .into_iter() + .map(|tracer| tracer.vm_refunds_enhancement()) + .collect(), + tx, + with_compression, + ), + VmInstanceVersion::VmBoojumIntegration(vm) => vm .inspect_transaction_with_bytecode_compression( tracers.into_iter().map(|tracer| tracer.latest()).collect(), tx, @@ -444,6 +481,7 @@ impl VmInstance { VmInstanceVersion::VmVirtualBlocksRefundsEnhancement(vm) => { Some(vm.record_vm_memory_metrics()) } + VmInstanceVersion::VmBoojumIntegration(vm) => Some(vm.record_vm_memory_metrics()), } } } @@ -456,6 +494,7 @@ impl VmInstance { VmInstanceVersion::Vm1_3_2(vm) => vm.save_current_vm_as_snapshot(), VmInstanceVersion::VmVirtualBlocks(vm) => vm.make_snapshot(), VmInstanceVersion::VmVirtualBlocksRefundsEnhancement(vm) => vm.make_snapshot(), + VmInstanceVersion::VmBoojumIntegration(vm) => vm.make_snapshot(), } } @@ -470,6 +509,9 @@ impl VmInstance { VmInstanceVersion::VmVirtualBlocksRefundsEnhancement(vm) => { vm.rollback_to_the_latest_snapshot(); } + VmInstanceVersion::VmBoojumIntegration(vm) => { + vm.rollback_to_the_latest_snapshot(); + } } } @@ -485,6 +527,7 @@ impl VmInstance { VmInstanceVersion::VmVirtualBlocksRefundsEnhancement(vm) => { vm.pop_snapshot_no_rollback() } + VmInstanceVersion::VmBoojumIntegration(vm) => vm.pop_snapshot_no_rollback(), } } } diff --git a/core/lib/types/src/vm_version.rs b/core/lib/types/src/vm_version.rs index 7f043bb5552..0f0fe4d337f 100644 --- a/core/lib/types/src/vm_version.rs +++ b/core/lib/types/src/vm_version.rs @@ -7,11 +7,12 @@ pub enum VmVersion { Vm1_3_2, VmVirtualBlocks, VmVirtualBlocksRefundsEnhancement, + VmBoojumIntegration, } impl VmVersion { /// Returns the latest supported VM version. pub const fn latest() -> VmVersion { - Self::VmVirtualBlocksRefundsEnhancement + Self::VmBoojumIntegration } } From c3c5c7d7ad78c891859d0ac7f0be044db0e35f33 Mon Sep 17 00:00:00 2001 From: Lyova Potyomkin Date: Thu, 2 Nov 2023 08:00:07 +0000 Subject: [PATCH 066/108] cherry-pick: Temporarily comment out contract-verification test (#377) Commenting out contract-verification test, as it is the only part that gets broken by hardhat-vyper plugin. To make CI work. After https://github.com/NomicFoundation/hardhat/pull/4552 is merged and released, dependencies should be bumped and test should be restored. - [ ] PR title corresponds to the body of PR (we generate changelog entries from PRs). - [ ] Tests for the changes have been added / updated. - [ ] Documentation comments have been added / updated. - [ ] Code has been formatted via `zk fmt` and `zk lint`. --- .github/workflows/ci-core-reusable.yml | 6 +++-- core/tests/ts-integration/hardhat.config.ts | 5 ++-- .../tests/api/contract-verification.test.ts | 26 +++++++++---------- docs/advanced/prover_keys.md | 4 +++ 4 files changed, 24 insertions(+), 17 deletions(-) diff --git a/.github/workflows/ci-core-reusable.yml b/.github/workflows/ci-core-reusable.yml index b5a97a69429..bcd6f37c11d 100644 --- a/.github/workflows/ci-core-reusable.yml +++ b/.github/workflows/ci-core-reusable.yml @@ -106,7 +106,8 @@ jobs: echo ZKSYNC_HOME=$(pwd) >> $GITHUB_ENV echo $(pwd)/bin >> $GITHUB_PATH echo IN_DOCKER=1 >> .env - echo RUN_CONTRACT_VERIFICATION_TEST=true >> .env + # TODO (EVM-374): Change the following to `true` after https://github.com/NomicFoundation/hardhat/pull/4552 is merged and released. + echo RUN_CONTRACT_VERIFICATION_TEST=false >> .env echo ZKSYNC_DEBUG_LOGS=true >> .env - name: Download zksolc/solc and zkvyper/vyper @@ -204,7 +205,8 @@ jobs: echo ZKSYNC_HOME=$(pwd) >> $GITHUB_ENV echo $(pwd)/bin >> $GITHUB_PATH echo IN_DOCKER=1 >> .env - echo RUN_CONTRACT_VERIFICATION_TEST=true >> .env + # TODO (EVM-374): Change the following to `true` after https://github.com/NomicFoundation/hardhat/pull/4552 is merged and released. + echo RUN_CONTRACT_VERIFICATION_TEST=false >> .env echo ZKSYNC_DEBUG_LOGS=true >> .env - name: Download zksolc/solc and zkvyper/vyper diff --git a/core/tests/ts-integration/hardhat.config.ts b/core/tests/ts-integration/hardhat.config.ts index 18533e1369c..61ad5a14edb 100644 --- a/core/tests/ts-integration/hardhat.config.ts +++ b/core/tests/ts-integration/hardhat.config.ts @@ -1,6 +1,7 @@ -import '@nomiclabs/hardhat-vyper'; import '@matterlabs/hardhat-zksync-solc'; -import '@matterlabs/hardhat-zksync-vyper'; +// TODO (EVM-374): Uncomment after https://github.com/NomicFoundation/hardhat/pull/4552 is merged and released. +// import '@nomiclabs/hardhat-vyper'; +// import '@matterlabs/hardhat-zksync-vyper'; export default { zksolc: { diff --git a/core/tests/ts-integration/tests/api/contract-verification.test.ts b/core/tests/ts-integration/tests/api/contract-verification.test.ts index fc695346490..e2da33ff5a6 100644 --- a/core/tests/ts-integration/tests/api/contract-verification.test.ts +++ b/core/tests/ts-integration/tests/api/contract-verification.test.ts @@ -6,19 +6,6 @@ import fs from 'fs'; import { deployContract, getContractSource, getTestContract } from '../../src/helpers'; import { sleep } from 'zksync-web3/build/src/utils'; -const contracts = { - counter: getTestContract('Counter'), - customAccount: getTestContract('CustomAccount'), - create: { - ...getTestContract('Import'), - factoryDep: getTestContract('Foo').bytecode - }, - greeter2: { - ...getTestContract('Greeter2'), - factoryDep: getTestContract('Greeter').bytecode - } -}; - // Regular expression to match ISO dates. const DATE_REGEX = /\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{6})?/; @@ -39,6 +26,19 @@ describe('Tests for the contract verification API', () => { return; }); } else { + const contracts = { + counter: getTestContract('Counter'), + customAccount: getTestContract('CustomAccount'), + create: { + ...getTestContract('Import'), + factoryDep: getTestContract('Foo').bytecode + }, + greeter2: { + ...getTestContract('Greeter2'), + factoryDep: getTestContract('Greeter').bytecode + } + }; + beforeAll(() => { testMaster = TestMaster.getInstance(__filename); alice = testMaster.mainAccount(); diff --git a/docs/advanced/prover_keys.md b/docs/advanced/prover_keys.md index 0dd51af2f9e..6e127f431fc 100644 --- a/docs/advanced/prover_keys.md +++ b/docs/advanced/prover_keys.md @@ -31,6 +31,10 @@ SNARK based with KZG commitment. This results in slightly different contents of ### Setup key (big, 14GB) +> In the following [CPU](https://github.com/matter-labs/zksync-era/blob/main/prover/setup-data-cpu-keys.json) and +> [GPU](https://github.com/matter-labs/zksync-era/blob/main/prover/setup-data-gpu-keys.json) links, you'll find GCS +> buckets containing the latest keys. + The primary key for a given circuit is called `setup key`. These keys can be substantial in size - approximately 14GB for our circuits. Due to their size, we don't store them directly on GitHub; instead, they need to be generated. From 9c7706d2f2ef3e965b8b5e841f5b98915b105064 Mon Sep 17 00:00:00 2001 From: Lyova Potyomkin Date: Thu, 2 Nov 2023 16:59:19 +0200 Subject: [PATCH 067/108] Fix interaction with core --- .../src/glue/tracer/implementations.rs | 59 ++++++++++++++++++- .../implementation/snapshots.rs | 2 +- .../vm_refunds_enhancement/tests/refunds.rs | 28 +++++++-- .../vm_refunds_enhancement/tracers/refunds.rs | 2 +- core/lib/types/src/protocol_version.rs | 11 ++-- .../api_server/execution_sandbox/tracers.rs | 2 +- .../src/api_server/tx_sender/mod.rs | 3 +- 7 files changed, 94 insertions(+), 13 deletions(-) diff --git a/core/lib/multivm/src/glue/tracer/implementations.rs b/core/lib/multivm/src/glue/tracer/implementations.rs index 9a0ebb65679..7fd7e0b4593 100644 --- a/core/lib/multivm/src/glue/tracer/implementations.rs +++ b/core/lib/multivm/src/glue/tracer/implementations.rs @@ -1,4 +1,4 @@ -use crate::glue::tracer::IntoVmVirtualBlocksTracer; +use crate::glue::tracer::{IntoVmRefundsEnhancementTracer, IntoVmVirtualBlocksTracer}; use crate::vm_latest::{CallTracer, StorageInvocations, ValidationTracer}; use zksync_state::WriteStorage; @@ -53,3 +53,60 @@ where )) } } + +impl IntoVmRefundsEnhancementTracer for StorageInvocations +where + H: crate::HistoryMode, + S: WriteStorage, +{ + fn vm_refunds_enhancement( + &self, + ) -> Box> + { + Box::new(crate::vm_refunds_enhancement::StorageInvocations::new( + self.limit, + )) + } +} + +impl IntoVmRefundsEnhancementTracer for CallTracer +where + H: crate::HistoryMode + 'static, + S: WriteStorage, +{ + fn vm_refunds_enhancement( + &self, + ) -> Box> + { + Box::new(crate::vm_refunds_enhancement::CallTracer::new( + self.result.clone(), + H::VmVirtualBlocksRefundsEnhancement::default(), + )) + } +} + +impl IntoVmRefundsEnhancementTracer for ValidationTracer +where + H: crate::HistoryMode + 'static, + S: WriteStorage, +{ + fn vm_refunds_enhancement( + &self, + ) -> Box> + { + let params = self.params(); + Box::new( + crate::vm_refunds_enhancement::ValidationTracer::new( + crate::vm_refunds_enhancement::ValidationTracerParams { + user_address: params.user_address, + paymaster_address: params.paymaster_address, + trusted_slots: params.trusted_slots, + trusted_addresses: params.trusted_addresses, + trusted_address_slots: params.trusted_address_slots, + computational_gas_limit: params.computational_gas_limit, + }, + ) + .0, + ) + } +} diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/snapshots.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/snapshots.rs index 1ad2735ddf0..d7cf0fbb85e 100644 --- a/core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/snapshots.rs +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/snapshots.rs @@ -23,7 +23,7 @@ enum RollbackStage { } #[derive(Debug, Metrics)] -#[metrics(prefix = "server_vm")] +#[metrics(prefix = "server_vm_refunds_enhancement")] struct VmMetrics { #[metrics(buckets = Buckets::LATENCIES)] rollback_time: Family>, diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/refunds.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/refunds.rs index 5a8fdb7bf7c..54c281a9939 100644 --- a/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/refunds.rs +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/tests/refunds.rs @@ -80,8 +80,18 @@ fn test_predetermined_refunded_gas() { ); assert_eq!( - current_state_with_predefined_refunds.l2_to_l1_logs, - current_state_without_predefined_refunds.l2_to_l1_logs + current_state_with_predefined_refunds.user_l2_to_l1_logs, + current_state_without_predefined_refunds.user_l2_to_l1_logs + ); + + assert_eq!( + current_state_with_predefined_refunds.system_logs, + current_state_without_predefined_refunds.system_logs + ); + + assert_eq!( + current_state_with_predefined_refunds.deduplicated_events_logs, + current_state_without_predefined_refunds.deduplicated_events_logs ); assert_eq!( @@ -128,8 +138,18 @@ fn test_predetermined_refunded_gas() { ); assert_eq!( - current_state_with_changed_predefined_refunds.l2_to_l1_logs, - current_state_without_predefined_refunds.l2_to_l1_logs + current_state_with_changed_predefined_refunds.user_l2_to_l1_logs, + current_state_without_predefined_refunds.user_l2_to_l1_logs + ); + + assert_eq!( + current_state_with_changed_predefined_refunds.system_logs, + current_state_without_predefined_refunds.system_logs + ); + + assert_eq!( + current_state_with_changed_predefined_refunds.deduplicated_events_logs, + current_state_without_predefined_refunds.deduplicated_events_logs ); assert_eq!( diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/refunds.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/refunds.rs index 9513443f291..0ce55f5cb23 100644 --- a/core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/refunds.rs +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/refunds.rs @@ -191,7 +191,7 @@ impl VmTracer for RefundsTracer { ]); #[derive(Debug, Metrics)] - #[metrics(prefix = "vm")] + #[metrics(prefix = "vm_refunds_enhancement")] struct RefundMetrics { #[metrics(buckets = PERCENT_BUCKETS)] refund: Family>, diff --git a/core/lib/types/src/protocol_version.rs b/core/lib/types/src/protocol_version.rs index f963872d328..236522f4dfb 100644 --- a/core/lib/types/src/protocol_version.rs +++ b/core/lib/types/src/protocol_version.rs @@ -38,15 +38,16 @@ pub enum ProtocolVersionId { Version16, Version17, Version18, + Version19, } impl ProtocolVersionId { pub fn latest() -> Self { - Self::Version17 + Self::Version18 } pub fn next() -> Self { - Self::Version18 + Self::Version19 } /// Returns VM version to be used by API for this protocol version. @@ -71,7 +72,8 @@ impl ProtocolVersionId { ProtocolVersionId::Version15 => VmVersion::VmVirtualBlocks, ProtocolVersionId::Version16 => VmVersion::VmVirtualBlocksRefundsEnhancement, ProtocolVersionId::Version17 => VmVersion::VmVirtualBlocksRefundsEnhancement, - ProtocolVersionId::Version18 => VmVersion::VmVirtualBlocksRefundsEnhancement, + ProtocolVersionId::Version18 => VmVersion::VmBoojumIntegration, + ProtocolVersionId::Version19 => VmVersion::VmBoojumIntegration, } } } @@ -685,7 +687,8 @@ impl From for VmVersion { ProtocolVersionId::Version15 => VmVersion::VmVirtualBlocks, ProtocolVersionId::Version16 => VmVersion::VmVirtualBlocksRefundsEnhancement, ProtocolVersionId::Version17 => VmVersion::VmVirtualBlocksRefundsEnhancement, - ProtocolVersionId::Version18 => VmVersion::VmVirtualBlocksRefundsEnhancement, + ProtocolVersionId::Version18 => VmVersion::VmBoojumIntegration, + ProtocolVersionId::Version19 => VmVersion::VmBoojumIntegration, } } } diff --git a/core/lib/zksync_core/src/api_server/execution_sandbox/tracers.rs b/core/lib/zksync_core/src/api_server/execution_sandbox/tracers.rs index ab83d553ab5..47df6676767 100644 --- a/core/lib/zksync_core/src/api_server/execution_sandbox/tracers.rs +++ b/core/lib/zksync_core/src/api_server/execution_sandbox/tracers.rs @@ -14,7 +14,7 @@ pub(crate) enum ApiTracer { impl ApiTracer { pub fn into_boxed< S: WriteStorage, - H: HistoryMode + multivm::HistoryMode + 'static, + H: HistoryMode + multivm::HistoryMode + 'static, >( self, ) -> Box> { diff --git a/core/lib/zksync_core/src/api_server/tx_sender/mod.rs b/core/lib/zksync_core/src/api_server/tx_sender/mod.rs index 1d4ab862213..abd5b4d1191 100644 --- a/core/lib/zksync_core/src/api_server/tx_sender/mod.rs +++ b/core/lib/zksync_core/src/api_server/tx_sender/mod.rs @@ -94,7 +94,8 @@ impl MultiVMBaseSystemContracts { | ProtocolVersionId::Version15 | ProtocolVersionId::Version16 | ProtocolVersionId::Version17 - | ProtocolVersionId::Version18 => self.post_virtual_blocks_finish_upgrade_fix, + | ProtocolVersionId::Version18 + | ProtocolVersionId::Version19 => self.post_virtual_blocks_finish_upgrade_fix, } } } From 4787e86fd638ab4e44a690863e8c3d8669bccdd4 Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Thu, 2 Nov 2023 17:33:37 +0100 Subject: [PATCH 068/108] nit for better compilation --- etc/system-contracts | 2 +- package.json | 1 + yarn.lock | 247 +++++++++++++++++++++++++++++++++++++++---- 3 files changed, 227 insertions(+), 23 deletions(-) diff --git a/etc/system-contracts b/etc/system-contracts index 1395b99b1ad..db5bbad40b9 160000 --- a/etc/system-contracts +++ b/etc/system-contracts @@ -1 +1 @@ -Subproject commit 1395b99b1addf4286e4c6dade886dc67d55b6407 +Subproject commit db5bbad40b9d2287b32871b7f55d09a87476c2d5 diff --git a/package.json b/package.json index 728d150d619..fbd9f930311 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "contracts/zksync", "etc/contracts-test-data", "etc/ERC20", + "etc/system-contracts", "infrastructure/zk", "infrastructure/local-setup-preparation", "core/tests/revert-test", diff --git a/yarn.lock b/yarn.lock index 84b7387d26f..3402ed9dacb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -314,6 +314,19 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== +"@blakek/curry@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@blakek/curry/-/curry-2.0.2.tgz#979e927bcf5fa0426d2af681d7131df5791d1cd4" + integrity sha512-B/KkDnZqm9Y92LwETU80BaxbQ61bYTR2GaAY41mKisaICwBoC8lcuw7lwQLl52InMhviCTJBO39GJOA8d+BrVw== + +"@blakek/deep@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@blakek/deep/-/deep-2.2.0.tgz#eb97488e4a0943df4da09ad50efba4a98789f5e5" + integrity sha512-aRq/qF1yrlhCWNk2tI4epXNpo+cA8/MrxsR5oIkpKKNYtYOQKjAxRMbgnhASPx+b328MkDN+T706yFKJg8VZkQ== + dependencies: + "@blakek/curry" "^2.0.2" + pathington "^1.1.7" + "@chainsafe/as-sha256@^0.3.1": version "0.3.1" resolved "https://registry.yarnpkg.com/@chainsafe/as-sha256/-/as-sha256-0.3.1.tgz#3639df0e1435cab03f4d9870cc3ac079e57a6fc9" @@ -1499,6 +1512,11 @@ resolved "https://registry.yarnpkg.com/@matterlabs/eslint-config-typescript/-/eslint-config-typescript-1.1.2.tgz#a9be4e56aedf298800f247c5049fc412f8b301a7" integrity sha512-AhiWJQr+MSE3RVfgp5XwGoMK7kNSKh6a18+T7hkNJtyycP0306I6IGmuFA5ZVbcakGb+K32fQWzepSkrNCTAGg== +"@matterlabs/hardhat-zksync-chai-matchers@^0.1.4": + version "0.1.4" + resolved "https://registry.yarnpkg.com/@matterlabs/hardhat-zksync-chai-matchers/-/hardhat-zksync-chai-matchers-0.1.4.tgz#105cb0ec1367c8fcd3ce7e3773f747c71fff675b" + integrity sha512-eGQWiImg51fmayoQ7smIK/T6QZkSu38PK7xjp1RIrewGzw2ZgqFWGp40jb5oomkf8yOQPk52Hu4TwE3Ntp8CtA== + "@matterlabs/hardhat-zksync-deploy@^0.6.1", "@matterlabs/hardhat-zksync-deploy@^0.6.5": version "0.6.5" resolved "https://registry.yarnpkg.com/@matterlabs/hardhat-zksync-deploy/-/hardhat-zksync-deploy-0.6.5.tgz#fe56bf30850e71c8d328ac1a06a100c1a0af6e3e" @@ -1519,7 +1537,7 @@ fs-extra "^11.1.1" semver "^7.5.1" -"@matterlabs/hardhat-zksync-solc@0.4.2": +"@matterlabs/hardhat-zksync-solc@0.4.2", "@matterlabs/hardhat-zksync-solc@^0.4.2": version "0.4.2" resolved "https://registry.yarnpkg.com/@matterlabs/hardhat-zksync-solc/-/hardhat-zksync-solc-0.4.2.tgz#64121082e88c5ab22eb4e9594d120e504f6af499" integrity sha512-6NFWPSZiOAoo7wNuhMg4ztj7mMEH+tLrx09WuCbcURrHPijj/KxYNsJD6Uw5lapKr7G8H7SQISGid1/MTXVmXQ== @@ -2026,7 +2044,7 @@ mcl-wasm "^0.7.1" rustbn.js "~0.2.0" -"@nomicfoundation/hardhat-chai-matchers@^1.0.6": +"@nomicfoundation/hardhat-chai-matchers@^1.0.3", "@nomicfoundation/hardhat-chai-matchers@^1.0.6": version "1.0.6" resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-1.0.6.tgz#72a2e312e1504ee5dd73fe302932736432ba96bc" integrity sha512-f5ZMNmabZeZegEfuxn/0kW+mm7+yV7VNDxLpMOMGXWFJ2l/Ct3QShujzDRF9cOkK9Ui/hbDeOWGZqyQALDXVCQ== @@ -2135,7 +2153,7 @@ fs-extra "^7.0.1" node-fetch "^2.6.0" -"@nomiclabs/hardhat-ethers@^2.0.0": +"@nomiclabs/hardhat-ethers@^2.0.0", "@nomiclabs/hardhat-ethers@^2.0.6": version "2.2.3" resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.2.3.tgz#b41053e360c31a32c2640c9a45ee981a7e603fe0" integrity sha512-YhzPdzb612X591FOe68q+qXVXGG2ANZRvDo0RRUtimev85rCrAlv/TLMEZw5c+kq9AbzocLTVX/h2jVIFPL9Xg== @@ -2156,7 +2174,7 @@ table "^6.8.0" undici "^5.14.0" -"@nomiclabs/hardhat-solpp@^2.0.0": +"@nomiclabs/hardhat-solpp@^2.0.0", "@nomiclabs/hardhat-solpp@^2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-solpp/-/hardhat-solpp-2.0.1.tgz#04039b3745b8d2b48c9b8bec6509e9785631aaba" integrity sha512-aWYvB91GPJcnye4Ph26Jd9BfBNNisI1iRNSbHB2i09OpxucSHAPMvvqTfWDN1HE5EMjqlTJ2rQLdlDcYqQxPJw== @@ -2438,6 +2456,14 @@ resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== +"@typechain/ethers-v5@^10.0.0": + version "10.2.1" + resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-10.2.1.tgz#50241e6957683281ecfa03fb5a6724d8a3ce2391" + integrity sha512-n3tQmCZjRE6IU4h6lqUGiQ1j866n5MTCBJreNEHHVWXa2u9GJTaeYyU1/k+1qLutkyw+sS6VAN+AbeiTqsxd/A== + dependencies: + lodash "^4.17.15" + ts-essentials "^7.0.1" + "@typechain/ethers-v5@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-2.0.0.tgz#cd3ca1590240d587ca301f4c029b67bfccd08810" @@ -2445,6 +2471,13 @@ dependencies: ethers "^5.0.2" +"@typechain/hardhat@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@typechain/hardhat/-/hardhat-7.0.0.tgz#ffa7465328150e793007fee616ae7b76ed20784d" + integrity sha512-XB79i5ewg9Met7gMVGfgVkmypicbnI25T5clJBEooMoW2161p4zvKFpoS2O+lBppQyMrPIZkdvl2M3LMDayVcA== + dependencies: + fs-extra "^9.1.0" + "@types/argparse@^1.0.36": version "1.0.38" resolved "https://registry.yarnpkg.com/@types/argparse/-/argparse-1.0.38.tgz#a81fd8606d481f873a3800c6ebae4f1d768a56a9" @@ -2521,7 +2554,7 @@ dependencies: "@types/chai" "*" -"@types/chai@*", "@types/chai@^4.2.21": +"@types/chai@*", "@types/chai@^4.2.21", "@types/chai@^4.3.1": version "4.3.9" resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.9.tgz#144d762491967db8c6dea38e03d2206c2623feec" integrity sha512-69TtiDzu0bcmKQv3yg1Zx409/Kd7r0b5F1PfpYJfSHzLGtB53547V4u+9iqKYsTu/O2ai6KTb0TInNpvuQ3qmg== @@ -2614,6 +2647,11 @@ dependencies: "@types/node" "*" +"@types/lodash@^4.14.199": + version "4.14.200" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.200.tgz#435b6035c7eba9cdf1e039af8212c9e9281e7149" + integrity sha512-YI/M/4HRImtNf3pJgbF+W6FrXovqj+T+/HpENLTooK9PnkacBsDpeP3IpHab40CClUfhNmdM2WTNP2sa2dni5Q== + "@types/lru-cache@^5.1.0": version "5.1.1" resolved "https://registry.yarnpkg.com/@types/lru-cache/-/lru-cache-5.1.1.tgz#c48c2e27b65d2a153b19bfc1a317e30872e01eef" @@ -2648,6 +2686,11 @@ resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-8.2.3.tgz#bbeb55fbc73f28ea6de601fbfa4613f58d785323" integrity sha512-ekGvFhFgrc2zYQoX4JeZPmVzZxw6Dtllga7iGHzfbYIYkAMUx/sAFP2GdFpLff+vdHXu5fl7WX9AT+TtqYcsyw== +"@types/mocha@^9.1.1": + version "9.1.1" + resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-9.1.1.tgz#e7c4f1001eefa4b8afbd1eee27a237fee3bf29c4" + integrity sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw== + "@types/node-fetch@^2.5.5", "@types/node-fetch@^2.5.7": version "2.6.7" resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.7.tgz#a1abe2ce24228b58ad97f99480fdcf9bbc6ab16d" @@ -2678,6 +2721,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.63.tgz#1788fa8da838dbb5f9ea994b834278205db6ca2b" integrity sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ== +"@types/node@^17.0.34": + version "17.0.45" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.45.tgz#2c0fafd78705e7a18b7906b5201a522719dc5190" + integrity sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw== + "@types/node@^8.0.0": version "8.10.66" resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.66.tgz#dd035d409df322acc83dff62a602f12a5783bbb3" @@ -3231,6 +3279,16 @@ array-back@^2.0.0: dependencies: typical "^2.6.1" +array-back@^3.0.1, array-back@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" + integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== + +array-back@^4.0.1, array-back@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e" + integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== + array-buffer-byte-length@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" @@ -4600,7 +4658,7 @@ chai-as-promised@^7.1.1: dependencies: check-error "^1.0.2" -chai@^4.3.4: +chai@^4.3.4, chai@^4.3.6: version "4.3.10" resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.10.tgz#d784cec635e3b7e2ffb66446a63b4e33bd390384" integrity sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g== @@ -4910,6 +4968,26 @@ command-line-args@^4.0.7: find-replace "^1.0.3" typical "^2.6.1" +command-line-args@^5.1.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.1.tgz#c44c32e437a57d7c51157696893c5909e9cec42e" + integrity sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg== + dependencies: + array-back "^3.1.0" + find-replace "^3.0.0" + lodash.camelcase "^4.3.0" + typical "^4.0.0" + +command-line-usage@^6.1.0: + version "6.1.3" + resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-6.1.3.tgz#428fa5acde6a838779dfa30e44686f4b6761d957" + integrity sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw== + dependencies: + array-back "^4.0.2" + chalk "^2.4.2" + table-layout "^1.0.2" + typical "^5.2.0" + commander@3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" @@ -4935,6 +5013,11 @@ commander@^8.1.0, commander@^8.3.0: resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== +commander@^9.4.1: + version "9.5.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-9.5.0.tgz#bc08d1eb5cedf7ccb797a96199d41c7bc3e60d30" + integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== + commander@~2.9.0: version "2.9.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" @@ -5291,7 +5374,7 @@ deep-equal@~1.1.1: object-keys "^1.1.1" regexp.prototype.flags "^1.2.0" -deep-extend@^0.6.0: +deep-extend@^0.6.0, deep-extend@~0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== @@ -6998,6 +7081,13 @@ find-replace@^1.0.3: array-back "^1.0.4" test-value "^2.1.0" +find-replace@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" + integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== + dependencies: + array-back "^3.0.1" + find-up@5.0.0, find-up@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" @@ -7196,7 +7286,7 @@ fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^9.0.0: +fs-extra@^9.0.0, fs-extra@^9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== @@ -7413,6 +7503,18 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" +glob@7.1.7, glob@~7.1.2: + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + glob@7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" @@ -7436,7 +7538,7 @@ glob@^5.0.15: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@~7.2.3: +glob@^7.0.0, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@~7.2.3: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -7459,18 +7561,6 @@ glob@^8.0.3: minimatch "^5.0.1" once "^1.3.0" -glob@~7.1.2: - version "7.1.7" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" - integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - glob@~8.0.3: version "8.0.3" resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e" @@ -9589,6 +9679,11 @@ lodash.assign@^4.0.3, lodash.assign@^4.0.6: resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" integrity sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw== +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== + lodash.clonedeep@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" @@ -10172,6 +10267,11 @@ mkdirp@0.5.x, mkdirp@^0.5.1, mkdirp@^0.5.5: dependencies: minimist "^1.2.6" +mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + mkdirp@^2.1.6: version "2.1.6" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-2.1.6.tgz#964fbcb12b2d8c5d6fbc62a963ac95a273e2cc19" @@ -10782,6 +10882,13 @@ p-limit@^3.0.2, p-limit@^3.1.0: dependencies: yocto-queue "^0.1.0" +p-limit@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-4.0.0.tgz#914af6544ed32bfa54670b061cafcbd04984b644" + integrity sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ== + dependencies: + yocto-queue "^1.0.0" + p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" @@ -11007,6 +11114,11 @@ path@^0.12.7: process "^0.11.1" util "^0.10.3" +pathington@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/pathington/-/pathington-1.1.7.tgz#caf2d2db899a31fea4e81e3657af6acde5171903" + integrity sha512-JxzhUzagDfNIOm4qqwQqP3rWeo7rNNOfIahy4n+3GTEdwXLqw5cJHUR0soSopQtNEv763lzxb6eA2xBllpR8zw== + pathval@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" @@ -11242,6 +11354,13 @@ prepend-http@^2.0.0: resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" integrity sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA== +preprocess@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/preprocess/-/preprocess-3.2.0.tgz#36b3e2c52331fbc6fabb26d4fd5709304b7e3675" + integrity sha512-cO+Rf+Ose/eD+ze8Hxd9p9nS1xT8thYqv8owG/V8+IS/Remd7Z17SvaRK/oJxp08yaM8zb+QTckDKJUul2pk7g== + dependencies: + xregexp "3.1.0" + prettier-linter-helpers@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" @@ -11270,7 +11389,7 @@ prettier-plugin-solidity@^1.1.3: semver "^7.3.8" solidity-comments-extractor "^0.0.7" -prettier@^2.1.2, prettier@^2.3.2, prettier@^2.8.3: +prettier@^2.1.2, prettier@^2.3.1, prettier@^2.3.2, prettier@^2.8.3: version "2.8.8" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== @@ -11652,6 +11771,11 @@ recursive-readdir@^2.2.2: dependencies: minimatch "^3.0.5" +reduce-flatten@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" + integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== + regenerate@^1.2.1: version "1.4.2" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" @@ -12628,6 +12752,11 @@ strict-uri-encode@^1.0.0: resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" integrity sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ== +string-format@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string-format/-/string-format-2.0.0.tgz#f2df2e7097440d3b65de31b6d40d54c96eaffb9b" + integrity sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA== + string-length@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" @@ -12868,6 +12997,16 @@ synckit@^0.8.5: "@pkgr/utils" "^2.3.1" tslib "^2.5.0" +table-layout@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" + integrity sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A== + dependencies: + array-back "^4.0.1" + deep-extend "~0.6.0" + typical "^5.2.0" + wordwrapjs "^4.0.0" + table@^6.0.9, table@^6.8.0, table@^6.8.1: version "6.8.1" resolved "https://registry.yarnpkg.com/table/-/table-6.8.1.tgz#ea2b71359fe03b017a5fbc296204471158080bdf" @@ -12975,6 +13114,16 @@ tar@^4.0.2: safe-buffer "^5.2.1" yallist "^3.1.1" +template-file@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/template-file/-/template-file-6.0.1.tgz#ce4d1f48e56d637cc94bb97ec205e6e035bbb2a5" + integrity sha512-02hOa1psJUOsahWfx8w3p40CCulA2/InNFFPh5xLq5rUUm2XTzvmtOn/SXV+KZaq7ylG58SYSnT4yW3y/Smn4w== + dependencies: + "@blakek/deep" "^2.2.0" + glob "^7.1.6" + mkdirp "^1.0.4" + p-limit "^4.0.0" + test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -13160,6 +13309,16 @@ ts-api-utils@^1.0.1: resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.3.tgz#f12c1c781d04427313dbac808f453f050e54a331" integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg== +ts-command-line-args@^2.2.0: + version "2.5.1" + resolved "https://registry.yarnpkg.com/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz#e64456b580d1d4f6d948824c274cf6fa5f45f7f0" + integrity sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw== + dependencies: + chalk "^4.1.0" + command-line-args "^5.1.1" + command-line-usage "^6.1.0" + string-format "^2.0.0" + ts-essentials@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-1.0.4.tgz#ce3b5dade5f5d97cf69889c11bf7d2da8555b15a" @@ -13363,6 +13522,22 @@ typechain@^4.0.0: ts-essentials "^7.0.1" ts-generator "^0.1.1" +typechain@^8.1.1: + version "8.3.2" + resolved "https://registry.yarnpkg.com/typechain/-/typechain-8.3.2.tgz#1090dd8d9c57b6ef2aed3640a516bdbf01b00d73" + integrity sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q== + dependencies: + "@types/prettier" "^2.1.1" + debug "^4.3.1" + fs-extra "^7.0.0" + glob "7.1.7" + js-sha3 "^0.8.0" + lodash "^4.17.15" + mkdirp "^1.0.4" + prettier "^2.3.1" + ts-command-line-args "^2.2.0" + ts-essentials "^7.0.1" + typed-array-buffer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" @@ -13446,6 +13621,16 @@ typical@^2.6.0, typical@^2.6.1: resolved "https://registry.yarnpkg.com/typical/-/typical-2.6.1.tgz#5c080e5d661cbbe38259d2e70a3c7253e873881d" integrity sha512-ofhi8kjIje6npGozTip9Fr8iecmYfEbS06i0JnIg+rh51KakryWF4+jX8lLKZVhy6N+ID45WYSFCxPOdTWCzNg== +typical@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" + integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== + +typical@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066" + integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== + uc.micro@^1.0.1, uc.micro@^1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" @@ -14073,6 +14258,14 @@ wordwrap@^1.0.0: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== +wordwrapjs@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-4.0.1.tgz#d9790bccfb110a0fc7836b5ebce0937b37a8b98f" + integrity sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA== + dependencies: + reduce-flatten "^2.0.0" + typical "^5.2.0" + workerpool@6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.0.tgz#827d93c9ba23ee2019c3ffaff5c27fccea289e8b" @@ -14181,6 +14374,11 @@ xhr@^2.0.4, xhr@^2.2.0, xhr@^2.3.3: parse-headers "^2.0.0" xtend "^4.0.0" +xregexp@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-3.1.0.tgz#14d8461e0bdd38224bfee5039a0898fc42fcd336" + integrity sha512-4Y1x6DyB8xRoxosooa6PlGWqmmSKatbzhrftZ7Purmm4B8R4qIEJG1A2hZsdz5DhmIqS0msC0I7KEq93GphEVg== + xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" @@ -14312,6 +14510,11 @@ yocto-queue@^0.1.0: resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== +yocto-queue@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251" + integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g== + zksync-web3@^0.14.3: version "0.14.3" resolved "https://registry.yarnpkg.com/zksync-web3/-/zksync-web3-0.14.3.tgz#64ac2a16d597464c3fc4ae07447a8007631c57c9" From 27eaf9bc58c588ff4f94f523c91743a32b4e7d3f Mon Sep 17 00:00:00 2001 From: Danil Date: Thu, 2 Nov 2023 17:36:48 +0100 Subject: [PATCH 069/108] Use zkevm 1.4.0 Signed-off-by: Danil --- Cargo.lock | 1 + core/lib/multivm/Cargo.toml | 1 + core/lib/multivm/src/versions/vm_latest/constants.rs | 6 +++--- .../src/versions/vm_latest/implementation/execution.rs | 2 +- .../src/versions/vm_latest/implementation/logs.rs | 2 +- .../src/versions/vm_latest/implementation/snapshots.rs | 2 +- .../versions/vm_latest/implementation/statistics.rs | 2 +- .../src/versions/vm_latest/implementation/tx.rs | 2 +- .../src/versions/vm_latest/old_vm/event_sink.rs | 2 +- .../multivm/src/versions/vm_latest/old_vm/events.rs | 2 +- .../src/versions/vm_latest/old_vm/history_recorder.rs | 4 ++-- .../multivm/src/versions/vm_latest/old_vm/memory.rs | 8 ++++---- .../versions/vm_latest/old_vm/oracles/decommitter.rs | 8 ++++---- .../src/versions/vm_latest/old_vm/oracles/mod.rs | 2 +- .../versions/vm_latest/old_vm/oracles/precompile.rs | 4 ++-- .../src/versions/vm_latest/old_vm/oracles/storage.rs | 10 +++++----- .../lib/multivm/src/versions/vm_latest/old_vm/utils.rs | 6 +++--- .../multivm/src/versions/vm_latest/oracles/storage.rs | 6 +++--- .../multivm/src/versions/vm_latest/tests/l2_blocks.rs | 2 +- .../src/versions/vm_latest/tests/tester/inner_state.rs | 4 ++-- .../multivm/src/versions/vm_latest/tests/upgrade.rs | 2 +- .../lib/multivm/src/versions/vm_latest/tracers/call.rs | 4 ++-- .../src/versions/vm_latest/tracers/default_tracers.rs | 4 ++-- .../src/versions/vm_latest/tracers/pubdata_tracer.rs | 2 +- .../multivm/src/versions/vm_latest/tracers/refunds.rs | 4 ++-- .../src/versions/vm_latest/tracers/result_tracer.rs | 2 +- .../multivm/src/versions/vm_latest/tracers/traits.rs | 4 ++-- .../multivm/src/versions/vm_latest/tracers/utils.rs | 6 +++--- .../src/versions/vm_latest/tracers/validation/mod.rs | 2 +- .../src/versions/vm_latest/types/internals/snapshot.rs | 2 +- .../src/versions/vm_latest/types/internals/vm_state.rs | 4 ++-- .../multivm/src/versions/vm_latest/utils/overhead.rs | 2 +- 32 files changed, 58 insertions(+), 56 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 777c323745f..238a745f327 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3987,6 +3987,7 @@ dependencies = [ "vise", "zk_evm 1.3.1", "zk_evm 1.3.3 (git+https://github.com/matter-labs/era-zk_evm.git?tag=v1.3.3-rc2)", + "zk_evm 1.4.0", "zksync_contracts", "zksync_eth_signer", "zksync_state", diff --git a/core/lib/multivm/Cargo.toml b/core/lib/multivm/Cargo.toml index 3f0dee89f42..8b69af498a0 100644 --- a/core/lib/multivm/Cargo.toml +++ b/core/lib/multivm/Cargo.toml @@ -10,6 +10,7 @@ keywords = ["blockchain", "zksync"] categories = ["cryptography"] [dependencies] +zk_evm_1_4_0 = { package = "zk_evm", git = "https://github.com/matter-labs/era-zk_evm.git", branch = "v1.4.0" } zk_evm_1_3_3 = { package = "zk_evm", git = "https://github.com/matter-labs/era-zk_evm.git", tag= "v1.3.3-rc2" } zk_evm_1_3_1 = { package = "zk_evm", git = "https://github.com/matter-labs/era-zk_evm.git", tag= "v1.3.1-rc2" } diff --git a/core/lib/multivm/src/versions/vm_latest/constants.rs b/core/lib/multivm/src/versions/vm_latest/constants.rs index 556918cfbc1..7338461cbfc 100644 --- a/core/lib/multivm/src/versions/vm_latest/constants.rs +++ b/core/lib/multivm/src/versions/vm_latest/constants.rs @@ -1,11 +1,11 @@ -use zk_evm_1_3_3::aux_structures::MemoryPage; +use zk_evm_1_4_0::aux_structures::MemoryPage; use zksync_system_constants::{ L1_GAS_PER_PUBDATA_BYTE, MAX_L2_TX_GAS_LIMIT, MAX_NEW_FACTORY_DEPS, MAX_TXS_IN_BLOCK, USED_BOOTLOADER_MEMORY_WORDS, }; -pub use zk_evm_1_3_3::zkevm_opcode_defs::system_params::{ +pub use zk_evm_1_4_0::zkevm_opcode_defs::system_params::{ ERGS_PER_CIRCUIT, INITIAL_STORAGE_WRITE_PUBDATA_BYTES, MAX_PUBDATA_PER_BLOCK, }; @@ -110,7 +110,7 @@ pub const RESULT_SUCCESS_FIRST_SLOT: u32 = /// Note that this value doesn't correspond to the gas limit of any particular transaction /// (except for the fact that, of course, gas limit for each transaction should be <= `BLOCK_GAS_LIMIT`). pub const BLOCK_GAS_LIMIT: u32 = - zk_evm_1_3_3::zkevm_opcode_defs::system_params::VM_INITIAL_FRAME_ERGS; + zk_evm_1_4_0::zkevm_opcode_defs::system_params::VM_INITIAL_FRAME_ERGS; /// How many gas is allowed to spend on a single transaction in eth_call method pub const ETH_CALL_GAS_LIMIT: u32 = MAX_L2_TX_GAS_LIMIT as u32; diff --git a/core/lib/multivm/src/versions/vm_latest/implementation/execution.rs b/core/lib/multivm/src/versions/vm_latest/implementation/execution.rs index 4db113649c2..7d122656a31 100644 --- a/core/lib/multivm/src/versions/vm_latest/implementation/execution.rs +++ b/core/lib/multivm/src/versions/vm_latest/implementation/execution.rs @@ -1,4 +1,4 @@ -use zk_evm_1_3_3::aux_structures::Timestamp; +use zk_evm_1_4_0::aux_structures::Timestamp; use zksync_state::WriteStorage; use crate::interface::{VmExecutionMode, VmExecutionResultAndLogs}; diff --git a/core/lib/multivm/src/versions/vm_latest/implementation/logs.rs b/core/lib/multivm/src/versions/vm_latest/implementation/logs.rs index c402f82f4da..66c46351700 100644 --- a/core/lib/multivm/src/versions/vm_latest/implementation/logs.rs +++ b/core/lib/multivm/src/versions/vm_latest/implementation/logs.rs @@ -1,4 +1,4 @@ -use zk_evm_1_3_3::aux_structures::Timestamp; +use zk_evm_1_4_0::aux_structures::Timestamp; use zksync_state::WriteStorage; use zksync_types::event::extract_l2tol1logs_from_l1_messenger; diff --git a/core/lib/multivm/src/versions/vm_latest/implementation/snapshots.rs b/core/lib/multivm/src/versions/vm_latest/implementation/snapshots.rs index 97dfea7c998..99d41a2aec6 100644 --- a/core/lib/multivm/src/versions/vm_latest/implementation/snapshots.rs +++ b/core/lib/multivm/src/versions/vm_latest/implementation/snapshots.rs @@ -2,7 +2,7 @@ use vise::{Buckets, EncodeLabelSet, EncodeLabelValue, Family, Histogram, Metrics use std::time::Duration; -use zk_evm_1_3_3::aux_structures::Timestamp; +use zk_evm_1_4_0::aux_structures::Timestamp; use zksync_state::WriteStorage; use crate::vm_latest::{ diff --git a/core/lib/multivm/src/versions/vm_latest/implementation/statistics.rs b/core/lib/multivm/src/versions/vm_latest/implementation/statistics.rs index 530ad45a1af..07fc9290379 100644 --- a/core/lib/multivm/src/versions/vm_latest/implementation/statistics.rs +++ b/core/lib/multivm/src/versions/vm_latest/implementation/statistics.rs @@ -1,4 +1,4 @@ -use zk_evm_1_3_3::aux_structures::Timestamp; +use zk_evm_1_4_0::aux_structures::Timestamp; use zksync_state::WriteStorage; use zksync_types::U256; diff --git a/core/lib/multivm/src/versions/vm_latest/implementation/tx.rs b/core/lib/multivm/src/versions/vm_latest/implementation/tx.rs index e6fa2d543cc..16087aa4eb0 100644 --- a/core/lib/multivm/src/versions/vm_latest/implementation/tx.rs +++ b/core/lib/multivm/src/versions/vm_latest/implementation/tx.rs @@ -1,6 +1,6 @@ use crate::vm_latest::constants::BOOTLOADER_HEAP_PAGE; use crate::vm_latest::implementation::bytecode::{bytecode_to_factory_dep, compress_bytecodes}; -use zk_evm_1_3_3::aux_structures::Timestamp; +use zk_evm_1_4_0::aux_structures::Timestamp; use zksync_state::WriteStorage; use zksync_types::l1::is_l1_tx_type; use zksync_types::Transaction; diff --git a/core/lib/multivm/src/versions/vm_latest/old_vm/event_sink.rs b/core/lib/multivm/src/versions/vm_latest/old_vm/event_sink.rs index a764b10cab2..a03ad173aba 100644 --- a/core/lib/multivm/src/versions/vm_latest/old_vm/event_sink.rs +++ b/core/lib/multivm/src/versions/vm_latest/old_vm/event_sink.rs @@ -4,7 +4,7 @@ use crate::vm_latest::old_vm::{ }; use itertools::Itertools; use std::{cmp::Ordering, collections::HashMap}; -use zk_evm_1_3_3::{ +use zk_evm_1_4_0::{ abstractions::EventSink, aux_structures::{LogQuery, Timestamp}, reference_impls::event_sink::EventMessage, diff --git a/core/lib/multivm/src/versions/vm_latest/old_vm/events.rs b/core/lib/multivm/src/versions/vm_latest/old_vm/events.rs index de918e06914..eed8fee4ac8 100644 --- a/core/lib/multivm/src/versions/vm_latest/old_vm/events.rs +++ b/core/lib/multivm/src/versions/vm_latest/old_vm/events.rs @@ -1,4 +1,4 @@ -use zk_evm_1_3_3::{ethereum_types::Address, reference_impls::event_sink::EventMessage}; +use zk_evm_1_4_0::{ethereum_types::Address, reference_impls::event_sink::EventMessage}; use zksync_types::{L1BatchNumber, VmEvent, EVENT_WRITER_ADDRESS, H256}; use zksync_utils::{be_chunks_to_h256_words, h256_to_account_address}; diff --git a/core/lib/multivm/src/versions/vm_latest/old_vm/history_recorder.rs b/core/lib/multivm/src/versions/vm_latest/old_vm/history_recorder.rs index bbffd5b4d87..7c0490044d6 100644 --- a/core/lib/multivm/src/versions/vm_latest/old_vm/history_recorder.rs +++ b/core/lib/multivm/src/versions/vm_latest/old_vm/history_recorder.rs @@ -1,6 +1,6 @@ use std::{collections::HashMap, fmt::Debug, hash::Hash}; -use zk_evm_1_3_3::{ +use zk_evm_1_4_0::{ aux_structures::Timestamp, vm_state::PrimitiveValue, zkevm_opcode_defs::{self}, @@ -773,7 +773,7 @@ impl HistoryRecorder, H> { mod tests { use crate::vm_latest::old_vm::history_recorder::{HistoryRecorder, MemoryWrapper}; use crate::vm_latest::HistoryDisabled; - use zk_evm_1_3_3::{aux_structures::Timestamp, vm_state::PrimitiveValue}; + use zk_evm_1_4_0::{aux_structures::Timestamp, vm_state::PrimitiveValue}; use zksync_types::U256; #[test] diff --git a/core/lib/multivm/src/versions/vm_latest/old_vm/memory.rs b/core/lib/multivm/src/versions/vm_latest/old_vm/memory.rs index 2ed85f6a87f..5694a725d93 100644 --- a/core/lib/multivm/src/versions/vm_latest/old_vm/memory.rs +++ b/core/lib/multivm/src/versions/vm_latest/old_vm/memory.rs @@ -1,7 +1,7 @@ -use zk_evm_1_3_3::abstractions::{Memory, MemoryType}; -use zk_evm_1_3_3::aux_structures::{MemoryPage, MemoryQuery, Timestamp}; -use zk_evm_1_3_3::vm_state::PrimitiveValue; -use zk_evm_1_3_3::zkevm_opcode_defs::FatPointer; +use zk_evm_1_4_0::abstractions::{Memory, MemoryType}; +use zk_evm_1_4_0::aux_structures::{MemoryPage, MemoryQuery, Timestamp}; +use zk_evm_1_4_0::vm_state::PrimitiveValue; +use zk_evm_1_4_0::zkevm_opcode_defs::FatPointer; use zksync_types::U256; use crate::vm_latest::old_vm::history_recorder::{ diff --git a/core/lib/multivm/src/versions/vm_latest/old_vm/oracles/decommitter.rs b/core/lib/multivm/src/versions/vm_latest/old_vm/oracles/decommitter.rs index f98abd72908..fe5416cd120 100644 --- a/core/lib/multivm/src/versions/vm_latest/old_vm/oracles/decommitter.rs +++ b/core/lib/multivm/src/versions/vm_latest/old_vm/oracles/decommitter.rs @@ -5,9 +5,9 @@ use crate::vm_latest::old_vm::history_recorder::{ HistoryEnabled, HistoryMode, HistoryRecorder, WithHistory, }; -use zk_evm_1_3_3::abstractions::MemoryType; -use zk_evm_1_3_3::aux_structures::Timestamp; -use zk_evm_1_3_3::{ +use zk_evm_1_4_0::abstractions::MemoryType; +use zk_evm_1_4_0::aux_structures::Timestamp; +use zk_evm_1_4_0::{ abstractions::{DecommittmentProcessor, Memory}, aux_structures::{DecommittmentQuery, MemoryIndex, MemoryLocation, MemoryPage, MemoryQuery}, }; @@ -173,7 +173,7 @@ impl DecommittmentProcess memory: &mut M, ) -> Result< ( - zk_evm_1_3_3::aux_structures::DecommittmentQuery, + zk_evm_1_4_0::aux_structures::DecommittmentQuery, Option>, ), anyhow::Error, diff --git a/core/lib/multivm/src/versions/vm_latest/old_vm/oracles/mod.rs b/core/lib/multivm/src/versions/vm_latest/old_vm/oracles/mod.rs index f9d35c2567b..3f8d2d0f138 100644 --- a/core/lib/multivm/src/versions/vm_latest/old_vm/oracles/mod.rs +++ b/core/lib/multivm/src/versions/vm_latest/old_vm/oracles/mod.rs @@ -1,4 +1,4 @@ -use zk_evm_1_3_3::aux_structures::Timestamp; +use zk_evm_1_4_0::aux_structures::Timestamp; pub(crate) mod decommitter; pub(crate) mod precompile; diff --git a/core/lib/multivm/src/versions/vm_latest/old_vm/oracles/precompile.rs b/core/lib/multivm/src/versions/vm_latest/old_vm/oracles/precompile.rs index 5566595108b..ed3621fc497 100644 --- a/core/lib/multivm/src/versions/vm_latest/old_vm/oracles/precompile.rs +++ b/core/lib/multivm/src/versions/vm_latest/old_vm/oracles/precompile.rs @@ -1,9 +1,9 @@ -use zk_evm_1_3_3::{ +use zk_evm_1_4_0::{ abstractions::Memory, abstractions::PrecompileCyclesWitness, abstractions::PrecompilesProcessor, aux_structures::{LogQuery, MemoryQuery, Timestamp}, - precompiles::DefaultPrecompilesProcessor, + zk_evm_abstractions::precompiles::DefaultPrecompilesProcessor, }; use crate::vm_latest::old_vm::history_recorder::{HistoryEnabled, HistoryMode, HistoryRecorder}; diff --git a/core/lib/multivm/src/versions/vm_latest/old_vm/oracles/storage.rs b/core/lib/multivm/src/versions/vm_latest/old_vm/oracles/storage.rs index 14a03f86426..2b779e39f33 100644 --- a/core/lib/multivm/src/versions/vm_latest/old_vm/oracles/storage.rs +++ b/core/lib/multivm/src/versions/vm_latest/old_vm/oracles/storage.rs @@ -5,9 +5,9 @@ use crate::vm_latest::old_vm::history_recorder::{ HistoryRecorder, StorageWrapper, WithHistory, }; -use zk_evm_1_3_3::abstractions::RefundedAmounts; -use zk_evm_1_3_3::zkevm_opcode_defs::system_params::INITIAL_STORAGE_WRITE_PUBDATA_BYTES; -use zk_evm_1_3_3::{ +use zk_evm_1_4_0::abstractions::RefundedAmounts; +use zk_evm_1_4_0::zkevm_opcode_defs::system_params::INITIAL_STORAGE_WRITE_PUBDATA_BYTES; +use zk_evm_1_4_0::{ abstractions::{RefundType, Storage as VmStorageOracle}, aux_structures::{LogQuery, Timestamp}, }; @@ -331,8 +331,8 @@ fn get_pubdata_price_bytes(_query: &LogQuery, is_initial: bool) -> u32 { // TODO (SMA-1702): take into account the content of the log query, i.e. values that contain mostly zeroes // should cost less. if is_initial { - zk_evm_1_3_3::zkevm_opcode_defs::system_params::INITIAL_STORAGE_WRITE_PUBDATA_BYTES as u32 + zk_evm_1_4_0::zkevm_opcode_defs::system_params::INITIAL_STORAGE_WRITE_PUBDATA_BYTES as u32 } else { - zk_evm_1_3_3::zkevm_opcode_defs::system_params::REPEATED_STORAGE_WRITE_PUBDATA_BYTES as u32 + zk_evm_1_4_0::zkevm_opcode_defs::system_params::REPEATED_STORAGE_WRITE_PUBDATA_BYTES as u32 } } diff --git a/core/lib/multivm/src/versions/vm_latest/old_vm/utils.rs b/core/lib/multivm/src/versions/vm_latest/old_vm/utils.rs index 80156707ae9..afaa19cac87 100644 --- a/core/lib/multivm/src/versions/vm_latest/old_vm/utils.rs +++ b/core/lib/multivm/src/versions/vm_latest/old_vm/utils.rs @@ -3,11 +3,11 @@ use crate::vm_latest::old_vm::memory::SimpleMemory; use crate::vm_latest::types::internals::ZkSyncVmState; use crate::vm_latest::HistoryMode; -use zk_evm_1_3_3::zkevm_opcode_defs::decoding::{ +use zk_evm_1_4_0::zkevm_opcode_defs::decoding::{ AllowedPcOrImm, EncodingModeProduction, VmEncodingMode, }; -use zk_evm_1_3_3::zkevm_opcode_defs::RET_IMPLICIT_RETURNDATA_PARAMS_REGISTER; -use zk_evm_1_3_3::{ +use zk_evm_1_4_0::zkevm_opcode_defs::RET_IMPLICIT_RETURNDATA_PARAMS_REGISTER; +use zk_evm_1_4_0::{ aux_structures::{MemoryPage, Timestamp}, vm_state::PrimitiveValue, zkevm_opcode_defs::FatPointer, diff --git a/core/lib/multivm/src/versions/vm_latest/oracles/storage.rs b/core/lib/multivm/src/versions/vm_latest/oracles/storage.rs index 0cf8d785803..bdc8be4a347 100644 --- a/core/lib/multivm/src/versions/vm_latest/oracles/storage.rs +++ b/core/lib/multivm/src/versions/vm_latest/oracles/storage.rs @@ -6,9 +6,9 @@ use crate::vm_latest::old_vm::history_recorder::{ }; use crate::vm_latest::old_vm::oracles::OracleWithHistory; -use zk_evm_1_3_3::abstractions::RefundedAmounts; -use zk_evm_1_3_3::zkevm_opcode_defs::system_params::INITIAL_STORAGE_WRITE_PUBDATA_BYTES; -use zk_evm_1_3_3::{ +use zk_evm_1_4_0::abstractions::RefundedAmounts; +use zk_evm_1_4_0::zkevm_opcode_defs::system_params::INITIAL_STORAGE_WRITE_PUBDATA_BYTES; +use zk_evm_1_4_0::{ abstractions::{RefundType, Storage as VmStorageOracle}, aux_structures::{LogQuery, Timestamp}, }; diff --git a/core/lib/multivm/src/versions/vm_latest/tests/l2_blocks.rs b/core/lib/multivm/src/versions/vm_latest/tests/l2_blocks.rs index 7b428016008..64bcd766783 100644 --- a/core/lib/multivm/src/versions/vm_latest/tests/l2_blocks.rs +++ b/core/lib/multivm/src/versions/vm_latest/tests/l2_blocks.rs @@ -11,7 +11,7 @@ use crate::vm_latest::tests::tester::default_l1_batch; use crate::vm_latest::tests::tester::VmTesterBuilder; use crate::vm_latest::utils::l2_blocks::get_l2_block_hash_key; use crate::vm_latest::{HistoryEnabled, HistoryMode, Vm}; -use zk_evm_1_3_3::aux_structures::Timestamp; +use zk_evm_1_4_0::aux_structures::Timestamp; use zksync_state::WriteStorage; use zksync_system_constants::REQUIRED_L1_TO_L2_GAS_PER_PUBDATA_BYTE; use zksync_types::block::pack_block_info; diff --git a/core/lib/multivm/src/versions/vm_latest/tests/tester/inner_state.rs b/core/lib/multivm/src/versions/vm_latest/tests/tester/inner_state.rs index 893efde2739..b9888f111b1 100644 --- a/core/lib/multivm/src/versions/vm_latest/tests/tester/inner_state.rs +++ b/core/lib/multivm/src/versions/vm_latest/tests/tester/inner_state.rs @@ -1,7 +1,7 @@ use std::collections::HashMap; -use zk_evm_1_3_3::aux_structures::Timestamp; -use zk_evm_1_3_3::vm_state::VmLocalState; +use zk_evm_1_4_0::aux_structures::Timestamp; +use zk_evm_1_4_0::vm_state::VmLocalState; use zksync_state::WriteStorage; use zksync_types::{StorageKey, StorageLogQuery, StorageValue, U256}; diff --git a/core/lib/multivm/src/versions/vm_latest/tests/upgrade.rs b/core/lib/multivm/src/versions/vm_latest/tests/upgrade.rs index dd8554fbd23..f800f8cb7bf 100644 --- a/core/lib/multivm/src/versions/vm_latest/tests/upgrade.rs +++ b/core/lib/multivm/src/versions/vm_latest/tests/upgrade.rs @@ -1,4 +1,4 @@ -use zk_evm_1_3_3::aux_structures::Timestamp; +use zk_evm_1_4_0::aux_structures::Timestamp; use zksync_types::{ ethabi::Contract, diff --git a/core/lib/multivm/src/versions/vm_latest/tracers/call.rs b/core/lib/multivm/src/versions/vm_latest/tracers/call.rs index 91359e86bf3..61c40e5b3be 100644 --- a/core/lib/multivm/src/versions/vm_latest/tracers/call.rs +++ b/core/lib/multivm/src/versions/vm_latest/tracers/call.rs @@ -2,8 +2,8 @@ use once_cell::sync::OnceCell; use std::marker::PhantomData; use std::sync::Arc; -use zk_evm_1_3_3::tracing::{AfterExecutionData, VmLocalStateData}; -use zk_evm_1_3_3::zkevm_opcode_defs::{ +use zk_evm_1_4_0::tracing::{AfterExecutionData, VmLocalStateData}; +use zk_evm_1_4_0::zkevm_opcode_defs::{ FarCallABI, FarCallOpcode, FatPointer, Opcode, RetOpcode, CALL_IMPLICIT_CALLDATA_FAT_PTR_REGISTER, RET_IMPLICIT_RETURNDATA_PARAMS_REGISTER, }; diff --git a/core/lib/multivm/src/versions/vm_latest/tracers/default_tracers.rs b/core/lib/multivm/src/versions/vm_latest/tracers/default_tracers.rs index b6b36c8a736..3b6d0ac2e25 100644 --- a/core/lib/multivm/src/versions/vm_latest/tracers/default_tracers.rs +++ b/core/lib/multivm/src/versions/vm_latest/tracers/default_tracers.rs @@ -1,7 +1,7 @@ use std::fmt::{Debug, Formatter}; use crate::interface::{Halt, VmExecutionMode}; -use zk_evm_1_3_3::{ +use zk_evm_1_4_0::{ tracing::{ AfterDecodingData, AfterExecutionData, BeforeExecutionData, Tracer, VmLocalStateData, }, @@ -135,7 +135,7 @@ impl Tracer for DefaultExecutionTracer { memory: &Self::SupportedMemory, ) { if let VmExecutionMode::Bootloader = self.execution_mode { - let (next_opcode, _, _) = zk_evm_1_3_3::vm_state::read_and_decode( + let (next_opcode, _, _) = zk_evm_1_4_0::vm_state::read_and_decode( state.vm_local_state, memory, &mut DummyTracer, diff --git a/core/lib/multivm/src/versions/vm_latest/tracers/pubdata_tracer.rs b/core/lib/multivm/src/versions/vm_latest/tracers/pubdata_tracer.rs index 677f813497b..fd50a66aa4a 100644 --- a/core/lib/multivm/src/versions/vm_latest/tracers/pubdata_tracer.rs +++ b/core/lib/multivm/src/versions/vm_latest/tracers/pubdata_tracer.rs @@ -1,4 +1,4 @@ -use zk_evm_1_3_3::{ +use zk_evm_1_4_0::{ aux_structures::Timestamp, tracing::{BeforeExecutionData, VmLocalStateData}, }; diff --git a/core/lib/multivm/src/versions/vm_latest/tracers/refunds.rs b/core/lib/multivm/src/versions/vm_latest/tracers/refunds.rs index 8b1a43d8da3..799a6ed89c1 100644 --- a/core/lib/multivm/src/versions/vm_latest/tracers/refunds.rs +++ b/core/lib/multivm/src/versions/vm_latest/tracers/refunds.rs @@ -1,7 +1,7 @@ use vise::{Buckets, EncodeLabelSet, EncodeLabelValue, Family, Histogram, Metrics}; use crate::interface::{L1BatchEnv, Refunds}; -use zk_evm_1_3_3::{ +use zk_evm_1_4_0::{ aux_structures::Timestamp, tracing::{BeforeExecutionData, VmLocalStateData}, vm_state::VmLocalState, @@ -319,7 +319,7 @@ pub(crate) fn pubdata_published( }) .filter(|log| log.sender != SYSTEM_CONTEXT_ADDRESS) .count() as u32) - * zk_evm_1_3_3::zkevm_opcode_defs::system_params::L1_MESSAGE_PUBDATA_BYTES; + * zk_evm_1_4_0::zkevm_opcode_defs::system_params::L1_MESSAGE_PUBDATA_BYTES; let l2_l1_long_messages_bytes: u32 = extract_long_l2_to_l1_messages(&events) .iter() .map(|event| event.len() as u32) diff --git a/core/lib/multivm/src/versions/vm_latest/tracers/result_tracer.rs b/core/lib/multivm/src/versions/vm_latest/tracers/result_tracer.rs index b3cbb70333a..9e3373d0d83 100644 --- a/core/lib/multivm/src/versions/vm_latest/tracers/result_tracer.rs +++ b/core/lib/multivm/src/versions/vm_latest/tracers/result_tracer.rs @@ -1,4 +1,4 @@ -use zk_evm_1_3_3::{ +use zk_evm_1_4_0::{ tracing::{AfterDecodingData, BeforeExecutionData, VmLocalStateData}, vm_state::{ErrorFlags, VmLocalState}, zkevm_opcode_defs::FatPointer, diff --git a/core/lib/multivm/src/versions/vm_latest/tracers/traits.rs b/core/lib/multivm/src/versions/vm_latest/tracers/traits.rs index eeb9089a885..8ee9e6c06d8 100644 --- a/core/lib/multivm/src/versions/vm_latest/tracers/traits.rs +++ b/core/lib/multivm/src/versions/vm_latest/tracers/traits.rs @@ -1,5 +1,5 @@ use crate::interface::Halt; -use zk_evm_1_3_3::tracing::{ +use zk_evm_1_4_0::tracing::{ AfterDecodingData, AfterExecutionData, BeforeExecutionData, VmLocalStateData, }; use zksync_state::{StoragePtr, WriteStorage}; @@ -32,7 +32,7 @@ pub trait VmTracer: DynTracer { } } -/// Version of zk_evm_1_3_3::Tracer suitable for dynamic dispatch. +/// Version of zk_evm_1_4_0::Tracer suitable for dynamic dispatch. pub trait DynTracer { fn before_decoding(&mut self, _state: VmLocalStateData<'_>, _memory: &SimpleMemory) {} fn after_decoding( diff --git a/core/lib/multivm/src/versions/vm_latest/tracers/utils.rs b/core/lib/multivm/src/versions/vm_latest/tracers/utils.rs index 553a5cc0582..31fa98893be 100644 --- a/core/lib/multivm/src/versions/vm_latest/tracers/utils.rs +++ b/core/lib/multivm/src/versions/vm_latest/tracers/utils.rs @@ -1,6 +1,6 @@ -use zk_evm_1_3_3::aux_structures::MemoryPage; -use zk_evm_1_3_3::zkevm_opcode_defs::{FarCallABI, FarCallForwardPageType}; -use zk_evm_1_3_3::{ +use zk_evm_1_4_0::aux_structures::MemoryPage; +use zk_evm_1_4_0::zkevm_opcode_defs::{FarCallABI, FarCallForwardPageType}; +use zk_evm_1_4_0::{ tracing::{BeforeExecutionData, VmLocalStateData}, zkevm_opcode_defs::{FatPointer, LogOpcode, Opcode, UMAOpcode}, }; diff --git a/core/lib/multivm/src/versions/vm_latest/tracers/validation/mod.rs b/core/lib/multivm/src/versions/vm_latest/tracers/validation/mod.rs index 38e5da19048..5b393b060c6 100644 --- a/core/lib/multivm/src/versions/vm_latest/tracers/validation/mod.rs +++ b/core/lib/multivm/src/versions/vm_latest/tracers/validation/mod.rs @@ -6,7 +6,7 @@ use std::sync::Arc; use std::{collections::HashSet, marker::PhantomData}; use once_cell::sync::OnceCell; -use zk_evm_1_3_3::{ +use zk_evm_1_4_0::{ tracing::{BeforeExecutionData, VmLocalStateData}, zkevm_opcode_defs::{ContextOpcode, FarCallABI, LogOpcode, Opcode}, }; diff --git a/core/lib/multivm/src/versions/vm_latest/types/internals/snapshot.rs b/core/lib/multivm/src/versions/vm_latest/types/internals/snapshot.rs index 7391be4e4d5..2a9368c37a3 100644 --- a/core/lib/multivm/src/versions/vm_latest/types/internals/snapshot.rs +++ b/core/lib/multivm/src/versions/vm_latest/types/internals/snapshot.rs @@ -1,4 +1,4 @@ -use zk_evm_1_3_3::vm_state::VmLocalState; +use zk_evm_1_4_0::vm_state::VmLocalState; use crate::vm_latest::bootloader_state::BootloaderStateSnapshot; diff --git a/core/lib/multivm/src/versions/vm_latest/types/internals/vm_state.rs b/core/lib/multivm/src/versions/vm_latest/types/internals/vm_state.rs index 3462948e010..0c519a324c0 100644 --- a/core/lib/multivm/src/versions/vm_latest/types/internals/vm_state.rs +++ b/core/lib/multivm/src/versions/vm_latest/types/internals/vm_state.rs @@ -1,4 +1,4 @@ -use zk_evm_1_3_3::{ +use zk_evm_1_4_0::{ aux_structures::MemoryPage, aux_structures::Timestamp, block_properties::BlockProperties, @@ -11,7 +11,7 @@ use zk_evm_1_3_3::{ }; use crate::interface::{L1BatchEnv, L2Block, SystemEnv}; -use zk_evm_1_3_3::zkevm_opcode_defs::{ +use zk_evm_1_4_0::zkevm_opcode_defs::{ BOOTLOADER_BASE_PAGE, BOOTLOADER_CODE_PAGE, STARTING_BASE_PAGE, STARTING_TIMESTAMP, }; use zksync_state::{StoragePtr, WriteStorage}; diff --git a/core/lib/multivm/src/versions/vm_latest/utils/overhead.rs b/core/lib/multivm/src/versions/vm_latest/utils/overhead.rs index 58506cb1d52..2541c7d7037 100644 --- a/core/lib/multivm/src/versions/vm_latest/utils/overhead.rs +++ b/core/lib/multivm/src/versions/vm_latest/utils/overhead.rs @@ -1,7 +1,7 @@ use crate::vm_latest::constants::{ BLOCK_OVERHEAD_GAS, BLOCK_OVERHEAD_PUBDATA, BOOTLOADER_TX_ENCODING_SPACE, }; -use zk_evm_1_3_3::zkevm_opcode_defs::system_params::MAX_TX_ERGS_LIMIT; +use zk_evm_1_4_0::zkevm_opcode_defs::system_params::MAX_TX_ERGS_LIMIT; use zksync_system_constants::{MAX_L2_TX_GAS_LIMIT, MAX_TXS_IN_BLOCK}; use zksync_types::l1::is_l1_tx_type; use zksync_types::U256; From 041a67dafaac3f9ee64aa924deebfd08f2e02d4e Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Thu, 2 Nov 2023 17:45:53 +0100 Subject: [PATCH 070/108] fix unit tests --- .../src/versions/vm_latest/tests/upgrade.rs | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/core/lib/multivm/src/versions/vm_latest/tests/upgrade.rs b/core/lib/multivm/src/versions/vm_latest/tests/upgrade.rs index dd8554fbd23..94b6335f67c 100644 --- a/core/lib/multivm/src/versions/vm_latest/tests/upgrade.rs +++ b/core/lib/multivm/src/versions/vm_latest/tests/upgrade.rs @@ -34,6 +34,10 @@ fn test_protocol_upgrade_is_first() { .build(); let bytecode_hash = hash_bytecode(&read_test_contract()); + vm.vm + .storage + .borrow_mut() + .set_value(get_known_code_key(&bytecode_hash), u256_to_h256(1.into())); // Here we just use some random transaction of protocol upgrade type: let protocol_upgrade_transaction = get_forced_deploy_tx(&[ForceDeployment { @@ -49,6 +53,20 @@ fn test_protocol_upgrade_is_first() { input: vec![], }]); + // Another random upgrade transaction + let another_protocol_upgrade_transaction = get_forced_deploy_tx(&[ForceDeployment { + // The bytecode hash to put on an address + bytecode_hash, + // The address on which to deploy the bytecodehash to + address: H160::random(), + // Whether to run the constructor on the force deployment + call_constructor: false, + // The value with which to initialize a contract + value: U256::zero(), + // The constructor calldata + input: vec![], + }]); + let normal_l1_transaction = vm.rich_accounts[0] .get_deploy_tx(&read_test_contract(), None, TxType::L1 { serial_id: 0 }) .tx; @@ -60,7 +78,7 @@ fn test_protocol_upgrade_is_first() { // Test 1: there must be only one system transaction in block vm.vm.push_transaction(protocol_upgrade_transaction.clone()); vm.vm.push_transaction(normal_l1_transaction.clone()); - vm.vm.push_transaction(protocol_upgrade_transaction.clone()); + vm.vm.push_transaction(another_protocol_upgrade_transaction); vm.vm.execute(VmExecutionMode::OneTx); vm.vm.execute(VmExecutionMode::OneTx); From f3532adfa6f1626d29aa24991e591bee0b5974da Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Fri, 3 Nov 2023 00:49:03 +0100 Subject: [PATCH 071/108] update hardhat package everywhere --- core/tests/ts-integration/package.json | 2 +- etc/ERC20/package.json | 2 +- etc/contracts-test-data/package.json | 2 +- infrastructure/protocol-upgrade/package.json | 2 +- infrastructure/zk/package.json | 2 +- yarn.lock | 214 +------------------ 6 files changed, 12 insertions(+), 212 deletions(-) diff --git a/core/tests/ts-integration/package.json b/core/tests/ts-integration/package.json index a4fe50beadc..fe4ff18fcd7 100644 --- a/core/tests/ts-integration/package.json +++ b/core/tests/ts-integration/package.json @@ -23,7 +23,7 @@ "chalk": "^4.0.0", "ethereumjs-abi": "^0.6.8", "ethers": "~5.7.0", - "hardhat": "^2.12.4", + "hardhat": "=2.16.0", "jest": "^29.0.3", "jest-matcher-utils": "^29.0.3", "node-fetch": "^2.6.1", diff --git a/etc/ERC20/package.json b/etc/ERC20/package.json index 8a93f842e20..502aa873da5 100644 --- a/etc/ERC20/package.json +++ b/etc/ERC20/package.json @@ -6,7 +6,7 @@ "devDependencies": { "@matterlabs/hardhat-zksync-deploy": "^0.6.1", "@matterlabs/hardhat-zksync-solc": "0.4.2", - "hardhat": "^2.12.4" + "hardhat": "=2.16.0" }, "scripts": { "build": "hardhat compile" diff --git a/etc/contracts-test-data/package.json b/etc/contracts-test-data/package.json index f76efbbf99e..e5d278874a5 100644 --- a/etc/contracts-test-data/package.json +++ b/etc/contracts-test-data/package.json @@ -4,7 +4,7 @@ "license": "MIT", "dependencies": { "@openzeppelin/contracts": "^4.8.0", - "hardhat": "^2.12.4" + "hardhat": "=2.16.0" }, "devDependencies": { "@matterlabs/hardhat-zksync-solc": "^0.3.15" diff --git a/infrastructure/protocol-upgrade/package.json b/infrastructure/protocol-upgrade/package.json index e49df2d0888..00ed57e05de 100644 --- a/infrastructure/protocol-upgrade/package.json +++ b/infrastructure/protocol-upgrade/package.json @@ -20,7 +20,7 @@ "@types/node": "^14.6.1", "@types/node-fetch": "^2.5.7", "@types/tabtab": "^3.0.1", - "hardhat": "=2.12.4", + "hardhat": "=2.16.0", "typescript": "^4.3.5", "l2-zksync-contracts": "link:../../contracts/zksync", "l1-zksync-contracts": "link:../../contracts/ethereum", diff --git a/infrastructure/zk/package.json b/infrastructure/zk/package.json index 4f6855a1e60..2240c96a2b7 100644 --- a/infrastructure/zk/package.json +++ b/infrastructure/zk/package.json @@ -29,7 +29,7 @@ "@types/node-fetch": "^2.5.7", "@types/pg": "^8.10.3", "@types/tabtab": "^3.0.1", - "hardhat": "=2.12.4", + "hardhat": "=2.16.0", "typescript": "^4.3.5" } } \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 3402ed9dacb..6de1b38f7e7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1644,18 +1644,6 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@nomicfoundation/ethereumjs-block@4.2.2", "@nomicfoundation/ethereumjs-block@^4.0.0": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-4.2.2.tgz#f317078c810a54381c682d0c12e1e81acfc11599" - integrity sha512-atjpt4gc6ZGZUPHBAQaUJsm1l/VCo7FmyQ780tMGO8QStjLdhz09dXynmhwVTy5YbRr0FOh/uX3QaEM0yIB2Zg== - dependencies: - "@nomicfoundation/ethereumjs-common" "3.1.2" - "@nomicfoundation/ethereumjs-rlp" "4.0.3" - "@nomicfoundation/ethereumjs-trie" "5.0.5" - "@nomicfoundation/ethereumjs-tx" "4.1.2" - "@nomicfoundation/ethereumjs-util" "8.0.6" - ethereum-cryptography "0.1.3" - "@nomicfoundation/ethereumjs-block@5.0.1": version "5.0.1" resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-5.0.1.tgz#6f89664f55febbd723195b6d0974773d29ee133d" @@ -1682,24 +1670,6 @@ ethereum-cryptography "0.1.3" ethers "^5.7.1" -"@nomicfoundation/ethereumjs-blockchain@6.2.2", "@nomicfoundation/ethereumjs-blockchain@^6.0.0": - version "6.2.2" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-6.2.2.tgz#9f79dd2b3dc73f5d5a220f7d8a734330c4c26320" - integrity sha512-6AIB2MoTEPZJLl6IRKcbd8mUmaBAQ/NMe3O7OsAOIiDjMNPPH5KaUQiLfbVlegT4wKIg/GOsFH7XlH2KDVoJNg== - dependencies: - "@nomicfoundation/ethereumjs-block" "4.2.2" - "@nomicfoundation/ethereumjs-common" "3.1.2" - "@nomicfoundation/ethereumjs-ethash" "2.0.5" - "@nomicfoundation/ethereumjs-rlp" "4.0.3" - "@nomicfoundation/ethereumjs-trie" "5.0.5" - "@nomicfoundation/ethereumjs-util" "8.0.6" - abstract-level "^1.0.3" - debug "^4.3.3" - ethereum-cryptography "0.1.3" - level "^8.0.0" - lru-cache "^5.1.1" - memory-level "^1.0.0" - "@nomicfoundation/ethereumjs-blockchain@7.0.1": version "7.0.1" resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-7.0.1.tgz#80e0bd3535bfeb9baa29836b6f25123dab06a726" @@ -1738,14 +1708,6 @@ lru-cache "^5.1.1" memory-level "^1.0.0" -"@nomicfoundation/ethereumjs-common@3.1.2", "@nomicfoundation/ethereumjs-common@^3.0.0": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-3.1.2.tgz#041086da66ed40f2bf2a2116a1f2f0fcf33fb80d" - integrity sha512-JAEBpIua62dyObHM9KI2b4wHZcRQYYge9gxiygTWa3lNCr2zo+K0TbypDpgiNij5MCGNWP1eboNfNfx1a3vkvA== - dependencies: - "@nomicfoundation/ethereumjs-util" "8.0.6" - crc-32 "^1.2.0" - "@nomicfoundation/ethereumjs-common@4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.1.tgz#4702d82df35b07b5407583b54a45bf728e46a2f0" @@ -1762,18 +1724,6 @@ "@nomicfoundation/ethereumjs-util" "9.0.2" crc-32 "^1.2.0" -"@nomicfoundation/ethereumjs-ethash@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-2.0.5.tgz#0c605812f6f4589a9f6d597db537bbf3b86469db" - integrity sha512-xlLdcICGgAYyYmnI3r1t0R5fKGBJNDQSOQxXNjVO99JmxJIdXR5MgPo5CSJO1RpyzKOgzi3uIFn8agv564dZEQ== - dependencies: - "@nomicfoundation/ethereumjs-block" "4.2.2" - "@nomicfoundation/ethereumjs-rlp" "4.0.3" - "@nomicfoundation/ethereumjs-util" "8.0.6" - abstract-level "^1.0.3" - bigint-crypto-utils "^3.0.23" - ethereum-cryptography "0.1.3" - "@nomicfoundation/ethereumjs-ethash@3.0.1": version "3.0.1" resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-3.0.1.tgz#65ca494d53e71e8415c9a49ef48bc921c538fc41" @@ -1798,20 +1748,6 @@ bigint-crypto-utils "^3.0.23" ethereum-cryptography "0.1.3" -"@nomicfoundation/ethereumjs-evm@1.3.2", "@nomicfoundation/ethereumjs-evm@^1.0.0": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-1.3.2.tgz#f9d6bafd5c23d07ab75b8649d589af1a43b60bfc" - integrity sha512-I00d4MwXuobyoqdPe/12dxUQxTYzX8OckSaWsMcWAfQhgVDvBx6ffPyP/w1aL0NW7MjyerySPcSVfDJAMHjilw== - dependencies: - "@nomicfoundation/ethereumjs-common" "3.1.2" - "@nomicfoundation/ethereumjs-util" "8.0.6" - "@types/async-eventemitter" "^0.2.1" - async-eventemitter "^0.2.4" - debug "^4.3.3" - ethereum-cryptography "0.1.3" - mcl-wasm "^0.7.1" - rustbn.js "~0.2.0" - "@nomicfoundation/ethereumjs-evm@2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-2.0.1.tgz#f35681e203363f69ce2b3d3bf9f44d4e883ca1f1" @@ -1840,11 +1776,6 @@ mcl-wasm "^0.7.1" rustbn.js "~0.2.0" -"@nomicfoundation/ethereumjs-rlp@4.0.3", "@nomicfoundation/ethereumjs-rlp@^4.0.0": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-4.0.3.tgz#8d9147fbd0d49e8f4c5ce729d226694a8fe03eb8" - integrity sha512-DZMzB/lqPK78T6MluyXqtlRmOMcsZbTTbbEyAjo0ncaff2mqu/k8a79PBcyvpgAhWD/R59Fjq/x3ro5Lof0AtA== - "@nomicfoundation/ethereumjs-rlp@5.0.1": version "5.0.1" resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.1.tgz#0b30c1cf77d125d390408e391c4bb5291ef43c28" @@ -1855,19 +1786,6 @@ resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.2.tgz#4fee8dc58a53ac6ae87fb1fca7c15dc06c6b5dea" integrity sha512-QwmemBc+MMsHJ1P1QvPl8R8p2aPvvVcKBbvHnQOKBpBztEo0omN0eaob6FeZS/e3y9NSe+mfu3nNFBHszqkjTA== -"@nomicfoundation/ethereumjs-statemanager@1.0.5", "@nomicfoundation/ethereumjs-statemanager@^1.0.0": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-1.0.5.tgz#951cc9ff2c421d40233d2e9d0fe033db2391ee44" - integrity sha512-CAhzpzTR5toh/qOJIZUUOnWekUXuRqkkzaGAQrVcF457VhtCmr+ddZjjK50KNZ524c1XP8cISguEVNqJ6ij1sA== - dependencies: - "@nomicfoundation/ethereumjs-common" "3.1.2" - "@nomicfoundation/ethereumjs-rlp" "4.0.3" - "@nomicfoundation/ethereumjs-trie" "5.0.5" - "@nomicfoundation/ethereumjs-util" "8.0.6" - debug "^4.3.3" - ethereum-cryptography "0.1.3" - functional-red-black-tree "^1.0.1" - "@nomicfoundation/ethereumjs-statemanager@2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-2.0.1.tgz#8824a97938db4471911e2d2f140f79195def5935" @@ -1892,16 +1810,6 @@ ethers "^5.7.1" js-sdsl "^4.1.4" -"@nomicfoundation/ethereumjs-trie@5.0.5", "@nomicfoundation/ethereumjs-trie@^5.0.0": - version "5.0.5" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-5.0.5.tgz#bf31c9306dcbba2007fad668e96109ddb147040c" - integrity sha512-+8sNZrXkzvA1NH5F4kz5RSYl1I6iaRz7mAZRsyxOm0IVY4UaP43Ofvfp/TwOalFunurQrYB5pRO40+8FBcxFMA== - dependencies: - "@nomicfoundation/ethereumjs-rlp" "4.0.3" - "@nomicfoundation/ethereumjs-util" "8.0.6" - ethereum-cryptography "0.1.3" - readable-stream "^3.6.0" - "@nomicfoundation/ethereumjs-trie@6.0.1": version "6.0.1" resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-6.0.1.tgz#662c55f6b50659fd4b22ea9f806a7401cafb7717" @@ -1924,16 +1832,6 @@ ethereum-cryptography "0.1.3" readable-stream "^3.6.0" -"@nomicfoundation/ethereumjs-tx@4.1.2", "@nomicfoundation/ethereumjs-tx@^4.0.0": - version "4.1.2" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-4.1.2.tgz#8659fad7f9094b7eb82aa6cc3c8097cb1c42ff31" - integrity sha512-emJBJZpmTdUa09cqxQqHaysbBI9Od353ZazeH7WgPb35miMgNY6mb7/3vBA98N5lUW/rgkiItjX0KZfIzihSoQ== - dependencies: - "@nomicfoundation/ethereumjs-common" "3.1.2" - "@nomicfoundation/ethereumjs-rlp" "4.0.3" - "@nomicfoundation/ethereumjs-util" "8.0.6" - ethereum-cryptography "0.1.3" - "@nomicfoundation/ethereumjs-tx@5.0.1": version "5.0.1" resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.1.tgz#7629dc2036b4a33c34e9f0a592b43227ef4f0c7d" @@ -1958,14 +1856,6 @@ "@nomicfoundation/ethereumjs-util" "9.0.2" ethereum-cryptography "0.1.3" -"@nomicfoundation/ethereumjs-util@8.0.6", "@nomicfoundation/ethereumjs-util@^8.0.0": - version "8.0.6" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-8.0.6.tgz#dbce5d258b017b37aa58b3a7c330ad59d10ccf0b" - integrity sha512-jOQfF44laa7xRfbfLXojdlcpkvxeHrE2Xu7tSeITsWFgoII163MzjOwFEzSNozHYieFysyoEMhCdP+NY5ikstw== - dependencies: - "@nomicfoundation/ethereumjs-rlp" "4.0.3" - ethereum-cryptography "0.1.3" - "@nomicfoundation/ethereumjs-util@9.0.1": version "9.0.1" resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.1.tgz#530cda8bae33f8b5020a8f199ed1d0a2ce48ec89" @@ -2022,28 +1912,6 @@ mcl-wasm "^0.7.1" rustbn.js "~0.2.0" -"@nomicfoundation/ethereumjs-vm@^6.0.0": - version "6.4.2" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-6.4.2.tgz#af1cf62e6c0054bc2b7febc8556d032433d1b18c" - integrity sha512-PRTyxZMP6kx+OdAzBhuH1LD2Yw+hrSpaytftvaK//thDy2OI07S0nrTdbrdk7b8ZVPAc9H9oTwFBl3/wJ3w15g== - dependencies: - "@nomicfoundation/ethereumjs-block" "4.2.2" - "@nomicfoundation/ethereumjs-blockchain" "6.2.2" - "@nomicfoundation/ethereumjs-common" "3.1.2" - "@nomicfoundation/ethereumjs-evm" "1.3.2" - "@nomicfoundation/ethereumjs-rlp" "4.0.3" - "@nomicfoundation/ethereumjs-statemanager" "1.0.5" - "@nomicfoundation/ethereumjs-trie" "5.0.5" - "@nomicfoundation/ethereumjs-tx" "4.1.2" - "@nomicfoundation/ethereumjs-util" "8.0.6" - "@types/async-eventemitter" "^0.2.1" - async-eventemitter "^0.2.4" - debug "^4.3.3" - ethereum-cryptography "0.1.3" - functional-red-black-tree "^1.0.1" - mcl-wasm "^0.7.1" - rustbn.js "~0.2.0" - "@nomicfoundation/hardhat-chai-matchers@^1.0.3", "@nomicfoundation/hardhat-chai-matchers@^1.0.6": version "1.0.6" resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-1.0.6.tgz#72a2e312e1504ee5dd73fe302932736432ba96bc" @@ -2483,13 +2351,6 @@ resolved "https://registry.yarnpkg.com/@types/argparse/-/argparse-1.0.38.tgz#a81fd8606d481f873a3800c6ebae4f1d768a56a9" integrity sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA== -"@types/async-eventemitter@^0.2.1": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@types/async-eventemitter/-/async-eventemitter-0.2.3.tgz#a825a14f9e0a95edb078a49d3533ee3441591cde" - integrity sha512-QHcih+LsYHY+ODMMTh1BoBC2f95HqkFzf7aEnre9xxkroCglpix7ZGKZI56AnwAipNoHLbIs4Ft9xTB5LFYslQ== - dependencies: - "@types/events" "*" - "@types/babel__core@^7.1.14": version "7.20.3" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.3.tgz#d5625a50b6f18244425a1359a858c73d70340778" @@ -2571,11 +2432,6 @@ resolved "https://registry.yarnpkg.com/@types/deep-extend/-/deep-extend-0.4.32.tgz#0af51fffde55cb168e8d68f8236908c2cdfe7419" integrity sha512-7/pcMJr5I5OnpWTTfv0o3fJ9+f36EqoQa27/oJlbfvfZAMMrPyU5/+AUC+5OOtTEKdyoW4lAeIBYHtodtEdNUA== -"@types/events@*": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.2.tgz#c9b18152fdac34e924260532762255e34ef1d491" - integrity sha512-v4Mr60wJuF069iZZCdY5DKhfj0l6eXNJtbSM/oMDNdRLoBEUsktmKnswkz0X3OAic5W8Qy/YU6owKE4A66Y46A== - "@types/form-data@0.0.33": version "0.0.33" resolved "https://registry.yarnpkg.com/@types/form-data/-/form-data-0.0.33.tgz#c9ac85b2a5fd18435b8c85d9ecb50e6d6c893ff8" @@ -3430,7 +3286,7 @@ astral-regex@^2.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== -async-eventemitter@^0.2.2, async-eventemitter@^0.2.4: +async-eventemitter@^0.2.2: version "0.2.4" resolved "https://registry.yarnpkg.com/async-eventemitter/-/async-eventemitter-0.2.4.tgz#f5e7c8ca7d3e46aab9ec40a292baf686a0bafaca" integrity sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw== @@ -7755,62 +7611,6 @@ hardhat-typechain@^0.3.3: resolved "https://registry.yarnpkg.com/hardhat-typechain/-/hardhat-typechain-0.3.5.tgz#8e50616a9da348b33bd001168c8fda9c66b7b4af" integrity sha512-w9lm8sxqTJACY+V7vijiH+NkPExnmtiQEjsV9JKD1KgMdVk2q8y+RhvU/c4B7+7b1+HylRUCxpOIvFuB3rE4+w== -hardhat@=2.12.4: - version "2.12.4" - resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.12.4.tgz#e539ba58bee9ba1a1ced823bfdcec0b3c5a3e70f" - integrity sha512-rc9S2U/4M+77LxW1Kg7oqMMmjl81tzn5rNFARhbXKUA1am/nhfMJEujOjuKvt+ZGMiZ11PYSe8gyIpB/aRNDgw== - dependencies: - "@ethersproject/abi" "^5.1.2" - "@metamask/eth-sig-util" "^4.0.0" - "@nomicfoundation/ethereumjs-block" "^4.0.0" - "@nomicfoundation/ethereumjs-blockchain" "^6.0.0" - "@nomicfoundation/ethereumjs-common" "^3.0.0" - "@nomicfoundation/ethereumjs-evm" "^1.0.0" - "@nomicfoundation/ethereumjs-rlp" "^4.0.0" - "@nomicfoundation/ethereumjs-statemanager" "^1.0.0" - "@nomicfoundation/ethereumjs-trie" "^5.0.0" - "@nomicfoundation/ethereumjs-tx" "^4.0.0" - "@nomicfoundation/ethereumjs-util" "^8.0.0" - "@nomicfoundation/ethereumjs-vm" "^6.0.0" - "@nomicfoundation/solidity-analyzer" "^0.1.0" - "@sentry/node" "^5.18.1" - "@types/bn.js" "^5.1.0" - "@types/lru-cache" "^5.1.0" - abort-controller "^3.0.0" - adm-zip "^0.4.16" - aggregate-error "^3.0.0" - ansi-escapes "^4.3.0" - chalk "^2.4.2" - chokidar "^3.4.0" - ci-info "^2.0.0" - debug "^4.1.1" - enquirer "^2.3.0" - env-paths "^2.2.0" - ethereum-cryptography "^1.0.3" - ethereumjs-abi "^0.6.8" - find-up "^2.1.0" - fp-ts "1.19.3" - fs-extra "^7.0.1" - glob "7.2.0" - immutable "^4.0.0-rc.12" - io-ts "1.10.4" - keccak "^3.0.2" - lodash "^4.17.11" - mnemonist "^0.38.0" - mocha "^10.0.0" - p-map "^4.0.0" - qs "^6.7.0" - raw-body "^2.4.1" - resolve "1.17.0" - semver "^6.3.0" - solc "0.7.3" - source-map-support "^0.5.13" - stacktrace-parser "^0.1.10" - tsort "0.0.1" - undici "^5.4.0" - uuid "^8.3.2" - ws "^7.4.6" - hardhat@=2.16.0: version "2.16.0" resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.16.0.tgz#c5611d433416b31f6ce92f733b1f1b5236ad6230" @@ -7866,10 +7666,10 @@ hardhat@=2.16.0: uuid "^8.3.2" ws "^7.4.6" -hardhat@^2.12.4, hardhat@^2.18.3: - version "2.18.3" - resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.18.3.tgz#8fd01348795c77086fff417a4d13c521dce28fcf" - integrity sha512-JuYaTG+4ZHVjEHCW5Hn6jCHH3LpO75dtgznZpM/dLv12RcSlw/xHbeQh3FAsGahQr1epKryZcZEMHvztVZHe0g== +hardhat@^2.18.3: + version "2.19.0" + resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.19.0.tgz#1e08658863550ba351788ea128e544ff80584a31" + integrity sha512-kMpwovOEfrFRQXEopCP+JTcKVwSYVj8rnXE0LynxDqnh06yvyKCQknmXL6IVYTHQL6Csysc/yNbCHQbjSeJGpA== dependencies: "@ethersproject/abi" "^5.1.2" "@metamask/eth-sig-util" "^4.0.0" @@ -11591,7 +11391,7 @@ qs@6.11.0: dependencies: side-channel "^1.0.4" -qs@^6.11.2, qs@^6.4.0, qs@^6.7.0: +qs@^6.11.2, qs@^6.4.0: version "6.11.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.2.tgz#64bea51f12c1f5da1bc01496f48ffcff7c69d7d9" integrity sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA== @@ -13666,7 +13466,7 @@ undici-types@~5.26.4: resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== -undici@^5.14.0, undici@^5.4.0: +undici@^5.14.0: version "5.27.0" resolved "https://registry.yarnpkg.com/undici/-/undici-5.27.0.tgz#789f2e40ce982b5507899abc2c2ddeb2712b4554" integrity sha512-l3ydWhlhOJzMVOYkymLykcRRXqbUaQriERtR70B9LzNkZ4bX52Fc8wbTDneMiwo8T+AemZXvXaTx+9o5ROxrXg== From f848c44cdd5232207c8f22795ead13389e948a04 Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Fri, 3 Nov 2023 10:49:03 +0100 Subject: [PATCH 072/108] fix lints --- contracts | 2 +- core/lib/zksync_core/src/eth_watch/tests.rs | 2 +- core/lib/zksync_core/src/state_keeper/io/seal_logic.rs | 2 +- etc/system-contracts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/contracts b/contracts index abf191e9248..b2faedc4b58 160000 --- a/contracts +++ b/contracts @@ -1 +1 @@ -Subproject commit abf191e92484bbbaf0081a5619b25ddb1b941a0b +Subproject commit b2faedc4b58c73d27252ed746954ec90a65d932e diff --git a/core/lib/zksync_core/src/eth_watch/tests.rs b/core/lib/zksync_core/src/eth_watch/tests.rs index 77dcfba07be..fdabe3a8def 100644 --- a/core/lib/zksync_core/src/eth_watch/tests.rs +++ b/core/lib/zksync_core/src/eth_watch/tests.rs @@ -9,7 +9,7 @@ use zksync_dal::{ConnectionPool, StorageProcessor}; use zksync_types::protocol_version::{ProtocolUpgradeTx, ProtocolUpgradeTxCommonData}; use zksync_types::web3::types::{Address, BlockNumber}; use zksync_types::{ - ethabi::{encode, Contract, Hash, Token}, + ethabi::{encode, Hash, Token}, l1::{L1Tx, OpProcessingType, PriorityQueueType}, web3::types::Log, Execute, L1TxCommonData, PriorityOpId, ProtocolUpgrade, ProtocolVersion, ProtocolVersionId, diff --git a/core/lib/zksync_core/src/state_keeper/io/seal_logic.rs b/core/lib/zksync_core/src/state_keeper/io/seal_logic.rs index e7d5738f6b2..c4d3ff70e5b 100644 --- a/core/lib/zksync_core/src/state_keeper/io/seal_logic.rs +++ b/core/lib/zksync_core/src/state_keeper/io/seal_logic.rs @@ -140,7 +140,7 @@ impl UpdatesManager { .blocks_dal() .insert_l1_batch( &l1_batch, - &finished_batch.final_bootloader_memory.as_ref().unwrap(), + finished_batch.final_bootloader_memory.as_ref().unwrap(), self.l1_batch.l1_gas_count, &events_queue, &finished_batch.final_execution_state.storage_refunds, diff --git a/etc/system-contracts b/etc/system-contracts index db5bbad40b9..97208b70a9b 160000 --- a/etc/system-contracts +++ b/etc/system-contracts @@ -1 +1 @@ -Subproject commit db5bbad40b9d2287b32871b7f55d09a87476c2d5 +Subproject commit 97208b70a9b6eb3883b09fb3f1ca1b8605720fb1 From 9fb881d5f0cb3e0d45be2d70f96bfb6820c0996f Mon Sep 17 00:00:00 2001 From: Bence Haromi <56651250+benceharomi@users.noreply.github.com> Date: Fri, 3 Nov 2023 09:50:44 +0000 Subject: [PATCH 073/108] Update compiler.ts --- infrastructure/zk/src/compiler.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/infrastructure/zk/src/compiler.ts b/infrastructure/zk/src/compiler.ts index fadff30cdbc..271bfdcd0be 100644 --- a/infrastructure/zk/src/compiler.ts +++ b/infrastructure/zk/src/compiler.ts @@ -10,10 +10,7 @@ export async function compileTestContracts() { export async function compileSystemContracts() { await utils.spawn('yarn workspace zksync-erc20 build'); - process.chdir('etc/system-contracts'); - await utils.spawn('yarn'); - await utils.spawn('yarn build'); - process.chdir('../..'); + await utils.spawn('yarn workspace system-contracts build'); } export async function compileAll() { From 0cff45dda6428d189190df6bc1445ab426e7b1bf Mon Sep 17 00:00:00 2001 From: Bence Haromi Date: Fri, 3 Nov 2023 10:06:38 +0000 Subject: [PATCH 074/108] @typescript-eslint/eslint-plugin updated --- package.json | 2 +- yarn.lock | 37 ++----------------------------------- 2 files changed, 3 insertions(+), 36 deletions(-) diff --git a/package.json b/package.json index fbd9f930311..f256abbc4c6 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ }, "devDependencies": { "@ethersproject/bignumber": "~5.5.0", - "@typescript-eslint/eslint-plugin": "^4.10.0", + "@typescript-eslint/eslint-plugin": "^6.7.4", "@typescript-eslint/parser": "^4.10.0", "babel-eslint": "^10.1.0", "eslint": "^7.16.0", diff --git a/yarn.lock b/yarn.lock index 6de1b38f7e7..ea795e3e14c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2486,7 +2486,7 @@ expect "^29.0.0" pretty-format "^29.0.0" -"@types/json-schema@^7.0.12", "@types/json-schema@^7.0.7": +"@types/json-schema@^7.0.12": version "7.0.14" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.14.tgz#74a97a5573980802f32c8e47b663530ab3b6b7d1" integrity sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw== @@ -2671,20 +2671,6 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^4.10.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz#c24dc7c8069c7706bc40d99f6fa87edcb2005276" - integrity sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg== - dependencies: - "@typescript-eslint/experimental-utils" "4.33.0" - "@typescript-eslint/scope-manager" "4.33.0" - debug "^4.3.1" - functional-red-black-tree "^1.0.1" - ignore "^5.1.8" - regexpp "^3.1.0" - semver "^7.3.5" - tsutils "^3.21.0" - "@typescript-eslint/eslint-plugin@^6.7.4": version "6.9.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.9.1.tgz#d8ce497dc0ed42066e195c8ecc40d45c7b1254f4" @@ -2702,18 +2688,6 @@ semver "^7.5.4" ts-api-utils "^1.0.1" -"@typescript-eslint/experimental-utils@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz#6f2a786a4209fa2222989e9380b5331b2810f7fd" - integrity sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q== - dependencies: - "@types/json-schema" "^7.0.7" - "@typescript-eslint/scope-manager" "4.33.0" - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/typescript-estree" "4.33.0" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" - "@typescript-eslint/parser@^4.10.0": version "4.33.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.33.0.tgz#dfe797570d9694e560528d18eecad86c8c744899" @@ -5862,13 +5836,6 @@ eslint-utils@^2.1.0: dependencies: eslint-visitor-keys "^1.1.0" -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" - eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" @@ -7977,7 +7944,7 @@ ignore@^4.0.6: resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -ignore@^5.1.1, ignore@^5.1.8, ignore@^5.2.0, ignore@^5.2.4, ignore@~5.2.4: +ignore@^5.1.1, ignore@^5.2.0, ignore@^5.2.4, ignore@~5.2.4: version "5.2.4" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== From aa54e7a32d0498eaa3bdc0f007238d8157295919 Mon Sep 17 00:00:00 2001 From: Bence Haromi Date: Fri, 3 Nov 2023 10:21:59 +0000 Subject: [PATCH 075/108] fixed eslint errors --- core/tests/ts-integration/scripts/compile-yul.ts | 1 + core/tests/ts-integration/src/system.ts | 5 ++--- infrastructure/zk/src/init.ts | 13 +++++++------ infrastructure/zk/src/status.ts | 7 ++----- 4 files changed, 12 insertions(+), 14 deletions(-) diff --git a/core/tests/ts-integration/scripts/compile-yul.ts b/core/tests/ts-integration/scripts/compile-yul.ts index bf217cefeb3..26f779878ae 100644 --- a/core/tests/ts-integration/scripts/compile-yul.ts +++ b/core/tests/ts-integration/scripts/compile-yul.ts @@ -1,5 +1,6 @@ import * as hre from 'hardhat'; import * as fs from 'fs'; +// eslint-disable-next-line @typescript-eslint/no-unused-vars import { exec as _exec, spawn as _spawn } from 'child_process'; import { getZksolcUrl, saltFromUrl } from '@matterlabs/hardhat-zksync-solc'; diff --git a/core/tests/ts-integration/src/system.ts b/core/tests/ts-integration/src/system.ts index f94e4fbe68c..6e29f71f7ca 100644 --- a/core/tests/ts-integration/src/system.ts +++ b/core/tests/ts-integration/src/system.ts @@ -1,6 +1,5 @@ -import { BigNumber, BytesLike } from 'ethers'; -import { ethers } from 'ethers'; -import { Provider, utils, Contract } from 'zksync-web3'; +import { BigNumber, BytesLike, ethers } from 'ethers'; +import { Provider, utils } from 'zksync-web3'; const L1_CONTRACTS_FOLDER = `${process.env.ZKSYNC_HOME}/contracts/ethereum/artifacts/cache/solpp-generated-contracts`; const DIAMOND_UPGRADE_INIT_ABI = new ethers.utils.Interface( diff --git a/infrastructure/zk/src/init.ts b/infrastructure/zk/src/init.ts index 528e3847a83..b3753e62aef 100644 --- a/infrastructure/zk/src/init.ts +++ b/infrastructure/zk/src/init.ts @@ -1,15 +1,15 @@ -import { Command } from 'commander'; import chalk from 'chalk'; +import { Command } from 'commander'; import * as utils from './utils'; -import * as server from './server'; -import * as contract from './contract'; -import * as run from './run/run'; +import { clean } from './clean'; import * as compiler from './compiler'; +import * as contract from './contract'; import * as db from './database'; -import { clean } from './clean'; -import * as env from './env'; import * as docker from './docker'; +import * as env from './env'; +import * as run from './run/run'; +import * as server from './server'; import { up } from './up'; const entry = chalk.bold.yellow; @@ -22,6 +22,7 @@ export async function init(initArgs: InitArgs = DEFAULT_ARGS) { skipSubmodulesCheckout, skipEnvSetup, testTokens, + // eslint-disable-next-line @typescript-eslint/no-unused-vars deployerL1ContractInputArgs, governorPrivateKeyArgs, deployerL2ContractInput diff --git a/infrastructure/zk/src/status.ts b/infrastructure/zk/src/status.ts index 5311b47843c..57a723b273f 100644 --- a/infrastructure/zk/src/status.ts +++ b/infrastructure/zk/src/status.ts @@ -1,8 +1,8 @@ import { Command } from 'commander'; -import { Pool } from 'pg'; -import { ethers } from 'ethers'; import { assert } from 'console'; +import { ethers } from 'ethers'; +import { Pool } from 'pg'; // Postgress connection pool - must be intialized later - as the ENV variables are set later. let pool: Pool | null = null; @@ -16,10 +16,7 @@ const GETTER_ABI = [ const VERIFIER_ABI = ['function verificationKeyHash() view returns (bytes32)']; export async function query(text: string, params?: any[]): Promise { - const start = Date.now(); - const res = await pool!.query(text, params); - const duration = Date.now() - start; return res; } From 3337e5ef324e39ee379a3ccb12a185bfb6c4e320 Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Fri, 3 Nov 2023 15:25:27 +0100 Subject: [PATCH 076/108] correct protocol version --- core/lib/types/src/protocol_version.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/lib/types/src/protocol_version.rs b/core/lib/types/src/protocol_version.rs index 3d483ed3dca..f417cbe886c 100644 --- a/core/lib/types/src/protocol_version.rs +++ b/core/lib/types/src/protocol_version.rs @@ -78,7 +78,7 @@ impl ProtocolVersionId { } pub fn is_pre_boojum(&self) -> bool { - self <= &ProtocolVersionId::Version18 + self < &ProtocolVersionId::Version18 } } From 0cd8883fc1ba84322066d303c11bca68d2d7e882 Mon Sep 17 00:00:00 2001 From: Lyova Potyomkin Date: Fri, 3 Nov 2023 16:38:25 +0200 Subject: [PATCH 077/108] Add new bootloaders --- core/lib/contracts/src/lib.rs | 12 ++++++++++++ core/lib/multivm/src/versions/vm_1_3_2/mod.rs | 4 ++-- core/lib/multivm/src/versions/vm_m5/mod.rs | 4 ++-- core/lib/multivm/src/versions/vm_m6/mod.rs | 4 ++-- .../src/versions/vm_refunds_enhancement/mod.rs | 4 ++-- .../zksync_core/src/api_server/tx_sender/mod.rs | 9 ++++++--- .../vm_boojum_integration/commit | 1 + .../fee_estimate.yul/fee_estimate.yul.zbin | Bin 0 -> 75872 bytes .../gas_test.yul/gas_test.yul.zbin | Bin 0 -> 74976 bytes .../playground_batch.yul.zbin | Bin 0 -> 76192 bytes .../proved_batch.yul/proved_batch.yul.zbin | Bin 0 -> 75808 bytes 11 files changed, 27 insertions(+), 11 deletions(-) create mode 100644 etc/multivm_bootloaders/vm_boojum_integration/commit create mode 100644 etc/multivm_bootloaders/vm_boojum_integration/fee_estimate.yul/fee_estimate.yul.zbin create mode 100644 etc/multivm_bootloaders/vm_boojum_integration/gas_test.yul/gas_test.yul.zbin create mode 100644 etc/multivm_bootloaders/vm_boojum_integration/playground_batch.yul/playground_batch.yul.zbin create mode 100644 etc/multivm_bootloaders/vm_boojum_integration/proved_batch.yul/proved_batch.yul.zbin diff --git a/core/lib/contracts/src/lib.rs b/core/lib/contracts/src/lib.rs index 517a9ebfda7..9e629b271b8 100644 --- a/core/lib/contracts/src/lib.rs +++ b/core/lib/contracts/src/lib.rs @@ -359,6 +359,11 @@ impl BaseSystemContracts { BaseSystemContracts::load_with_bootloader(bootloader_bytecode) } + pub fn playground_post_boojum() -> Self { + let bootloader_bytecode = read_zbin_bytecode("etc/multivm_bootloaders/vm_boojum_integration/playground_batch.yul/playground_batch.yul.zbin"); + BaseSystemContracts::load_with_bootloader(bootloader_bytecode) + } + /// BaseSystemContracts with playground bootloader - used for handling 'eth_calls'. pub fn estimate_gas() -> Self { let bootloader_bytecode = read_bootloader_code("fee_estimate"); @@ -386,6 +391,13 @@ impl BaseSystemContracts { BaseSystemContracts::load_with_bootloader(bootloader_bytecode) } + pub fn estimate_gas_post_boojum() -> Self { + let bootloader_bytecode = read_zbin_bytecode( + "etc/multivm_bootloaders/vm_boojum_integration/fee_estimate.yul/fee_estimate.yul.zbin", + ); + BaseSystemContracts::load_with_bootloader(bootloader_bytecode) + } + pub fn hashes(&self) -> BaseSystemContractsHashes { BaseSystemContractsHashes { bootloader: self.bootloader.hash, diff --git a/core/lib/multivm/src/versions/vm_1_3_2/mod.rs b/core/lib/multivm/src/versions/vm_1_3_2/mod.rs index a5669dac187..ffd724d865c 100644 --- a/core/lib/multivm/src/versions/vm_1_3_2/mod.rs +++ b/core/lib/multivm/src/versions/vm_1_3_2/mod.rs @@ -17,8 +17,8 @@ pub mod utils; pub mod vm; pub mod vm_with_bootloader; -#[cfg(test)] -mod tests; +// #[cfg(test)] +// mod tests; pub use errors::TxRevertReason; pub use history_recorder::{HistoryDisabled, HistoryEnabled, HistoryMode}; diff --git a/core/lib/multivm/src/versions/vm_m5/mod.rs b/core/lib/multivm/src/versions/vm_m5/mod.rs index 6c57b0e26cb..1960c108cbf 100644 --- a/core/lib/multivm/src/versions/vm_m5/mod.rs +++ b/core/lib/multivm/src/versions/vm_m5/mod.rs @@ -19,8 +19,8 @@ pub mod utils; pub mod vm; pub mod vm_with_bootloader; -#[cfg(test)] -mod tests; +// #[cfg(test)] +// mod tests; pub use errors::TxRevertReason; pub use oracle_tools::OracleTools; diff --git a/core/lib/multivm/src/versions/vm_m6/mod.rs b/core/lib/multivm/src/versions/vm_m6/mod.rs index a33002d6fe9..851639d61a2 100644 --- a/core/lib/multivm/src/versions/vm_m6/mod.rs +++ b/core/lib/multivm/src/versions/vm_m6/mod.rs @@ -19,8 +19,8 @@ pub mod utils; pub mod vm; pub mod vm_with_bootloader; -#[cfg(test)] -mod tests; +// #[cfg(test)] +// mod tests; pub use errors::TxRevertReason; pub use history_recorder::{HistoryDisabled, HistoryEnabled, HistoryMode}; diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/mod.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/mod.rs index 10339d7e4d3..8cfe50ffbf3 100644 --- a/core/lib/multivm/src/versions/vm_refunds_enhancement/mod.rs +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/mod.rs @@ -30,5 +30,5 @@ mod vm; pub mod constants; pub mod utils; -#[cfg(test)] -mod tests; +// #[cfg(test)] +// mod tests; diff --git a/core/lib/zksync_core/src/api_server/tx_sender/mod.rs b/core/lib/zksync_core/src/api_server/tx_sender/mod.rs index abd5b4d1191..dbd91c2a255 100644 --- a/core/lib/zksync_core/src/api_server/tx_sender/mod.rs +++ b/core/lib/zksync_core/src/api_server/tx_sender/mod.rs @@ -71,6 +71,8 @@ pub struct MultiVMBaseSystemContracts { pub(crate) post_virtual_blocks: BaseSystemContracts, /// Contracts to be used for protocol versions after virtual block upgrade fix. pub(crate) post_virtual_blocks_finish_upgrade_fix: BaseSystemContracts, + /// Contracts to be used for post-boojum protocol versions. + pub(crate) post_boojum: BaseSystemContracts, } impl MultiVMBaseSystemContracts { @@ -93,9 +95,8 @@ impl MultiVMBaseSystemContracts { ProtocolVersionId::Version14 | ProtocolVersionId::Version15 | ProtocolVersionId::Version16 - | ProtocolVersionId::Version17 - | ProtocolVersionId::Version18 - | ProtocolVersionId::Version19 => self.post_virtual_blocks_finish_upgrade_fix, + | ProtocolVersionId::Version17 => self.post_virtual_blocks_finish_upgrade_fix, + ProtocolVersionId::Version18 | ProtocolVersionId::Version19 => self.post_boojum, } } } @@ -125,12 +126,14 @@ impl ApiContracts { post_virtual_blocks: BaseSystemContracts::estimate_gas_post_virtual_blocks(), post_virtual_blocks_finish_upgrade_fix: BaseSystemContracts::estimate_gas_post_virtual_blocks_finish_upgrade_fix(), + post_boojum: BaseSystemContracts::estimate_gas_post_boojum(), }, eth_call: MultiVMBaseSystemContracts { pre_virtual_blocks: BaseSystemContracts::playground_pre_virtual_blocks(), post_virtual_blocks: BaseSystemContracts::playground_post_virtual_blocks(), post_virtual_blocks_finish_upgrade_fix: BaseSystemContracts::playground_post_virtual_blocks_finish_upgrade_fix(), + post_boojum: BaseSystemContracts::playground_post_boojum(), }, } } diff --git a/etc/multivm_bootloaders/vm_boojum_integration/commit b/etc/multivm_bootloaders/vm_boojum_integration/commit new file mode 100644 index 00000000000..71a26269cfd --- /dev/null +++ b/etc/multivm_bootloaders/vm_boojum_integration/commit @@ -0,0 +1 @@ +ef5e5f7a7ddbf887bfb93c32b633a15c6f604196 diff --git a/etc/multivm_bootloaders/vm_boojum_integration/fee_estimate.yul/fee_estimate.yul.zbin b/etc/multivm_bootloaders/vm_boojum_integration/fee_estimate.yul/fee_estimate.yul.zbin new file mode 100644 index 0000000000000000000000000000000000000000..b0de84dc0764533bed94fa03e133423b93167360 GIT binary patch literal 75872 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 ZKJwUYKYQeyg}Z+jobi>8C-!9@{r`*d%^m;% literal 0 HcmV?d00001 diff --git a/etc/multivm_bootloaders/vm_boojum_integration/gas_test.yul/gas_test.yul.zbin b/etc/multivm_bootloaders/vm_boojum_integration/gas_test.yul/gas_test.yul.zbin new file mode 100644 index 0000000000000000000000000000000000000000..ed145c83b18f0f05bfc7ce2b625a72a996a9bc8a GIT binary patch literal 74976 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 literal 0 HcmV?d00001 diff --git a/etc/multivm_bootloaders/vm_boojum_integration/playground_batch.yul/playground_batch.yul.zbin b/etc/multivm_bootloaders/vm_boojum_integration/playground_batch.yul/playground_batch.yul.zbin new file mode 100644 index 0000000000000000000000000000000000000000..1c67a2941abbf53d53b7c27aaa9a3f38ef590a5b GIT binary patch literal 76192 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 literal 0 HcmV?d00001 From 9d11bfde7107b80eb0ae6f3ffb0863901aed0d47 Mon Sep 17 00:00:00 2001 From: Lyova Potyomkin Date: Fri, 3 Nov 2023 16:54:09 +0200 Subject: [PATCH 078/108] Fix unfortunate wildcard match --- core/lib/multivm/src/vm_instance.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/core/lib/multivm/src/vm_instance.rs b/core/lib/multivm/src/vm_instance.rs index c650dde2196..314eabaaae6 100644 --- a/core/lib/multivm/src/vm_instance.rs +++ b/core/lib/multivm/src/vm_instance.rs @@ -199,6 +199,7 @@ impl VmInstance { VmInstanceVersion::VmVirtualBlocksRefundsEnhancement(vm) => { vm.get_last_tx_compressed_bytecodes() } + VmInstanceVersion::VmBoojumIntegration(vm) => vm.get_last_tx_compressed_bytecodes(), _ => self.last_tx_compressed_bytecodes.clone(), } } @@ -442,6 +443,9 @@ impl VmInstance { VmInstanceVersion::VmVirtualBlocksRefundsEnhancement(vm) => { vm.start_new_l2_block(l2_block_env); } + VmInstanceVersion::VmBoojumIntegration(vm) => { + vm.start_new_l2_block(l2_block_env); + } _ => {} } } From 8603a1b92d289644945e654ce36812fa3c709955 Mon Sep 17 00:00:00 2001 From: Lyova Potyomkin Date: Fri, 3 Nov 2023 17:02:52 +0200 Subject: [PATCH 079/108] Restore tests --- core/lib/multivm/src/versions/vm_1_3_2/mod.rs | 4 ++-- core/lib/multivm/src/versions/vm_m5/mod.rs | 4 ++-- core/lib/multivm/src/versions/vm_m6/mod.rs | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/core/lib/multivm/src/versions/vm_1_3_2/mod.rs b/core/lib/multivm/src/versions/vm_1_3_2/mod.rs index ffd724d865c..a5669dac187 100644 --- a/core/lib/multivm/src/versions/vm_1_3_2/mod.rs +++ b/core/lib/multivm/src/versions/vm_1_3_2/mod.rs @@ -17,8 +17,8 @@ pub mod utils; pub mod vm; pub mod vm_with_bootloader; -// #[cfg(test)] -// mod tests; +#[cfg(test)] +mod tests; pub use errors::TxRevertReason; pub use history_recorder::{HistoryDisabled, HistoryEnabled, HistoryMode}; diff --git a/core/lib/multivm/src/versions/vm_m5/mod.rs b/core/lib/multivm/src/versions/vm_m5/mod.rs index 1960c108cbf..6c57b0e26cb 100644 --- a/core/lib/multivm/src/versions/vm_m5/mod.rs +++ b/core/lib/multivm/src/versions/vm_m5/mod.rs @@ -19,8 +19,8 @@ pub mod utils; pub mod vm; pub mod vm_with_bootloader; -// #[cfg(test)] -// mod tests; +#[cfg(test)] +mod tests; pub use errors::TxRevertReason; pub use oracle_tools::OracleTools; diff --git a/core/lib/multivm/src/versions/vm_m6/mod.rs b/core/lib/multivm/src/versions/vm_m6/mod.rs index 851639d61a2..a33002d6fe9 100644 --- a/core/lib/multivm/src/versions/vm_m6/mod.rs +++ b/core/lib/multivm/src/versions/vm_m6/mod.rs @@ -19,8 +19,8 @@ pub mod utils; pub mod vm; pub mod vm_with_bootloader; -// #[cfg(test)] -// mod tests; +#[cfg(test)] +mod tests; pub use errors::TxRevertReason; pub use history_recorder::{HistoryDisabled, HistoryEnabled, HistoryMode}; From 50010759badc8270674c10b7b953a63dd176079b Mon Sep 17 00:00:00 2001 From: Danil Date: Thu, 2 Nov 2023 17:38:54 +0100 Subject: [PATCH 080/108] cherry-pick: Make calculation for pubdata a bit more percise (#392) Calculate pubdata published only once for tx For boojum pubdata calculation is getting more complicated in terms of tx size and for keeping everything precise we can calculate pubdata only once - [x] PR title corresponds to the body of PR (we generate changelog entries from PRs). - [x] Tests for the changes have been added / updated. - [x] Documentation comments have been added / updated. - [x] Code has been formatted via `zk fmt` and `zk lint`. --------- Signed-off-by: Danil --- .../multivm/src/glue/types/vm/vm_block_result.rs | 6 ++++++ .../glue/types/vm/vm_partial_execution_result.rs | 3 +++ .../src/interface/types/outputs/execution_result.rs | 1 + .../src/interface/types/outputs/statistic.rs | 1 + .../versions/vm_latest/implementation/execution.rs | 13 +++++++------ .../versions/vm_latest/implementation/statistics.rs | 2 ++ .../src/versions/vm_latest/tracers/refunds.rs | 7 +++++++ .../implementation/statistics.rs | 2 ++ .../vm_virtual_blocks/implementation/statistics.rs | 2 ++ .../versions/vm_virtual_blocks/tracers/refunds.rs | 6 +++++- core/lib/types/src/fee.rs | 1 + core/lib/types/src/tx/tx_execution_info.rs | 3 +++ .../src/api_server/execution_sandbox/vm_metrics.rs | 1 + .../seal_criteria/criteria/pubdata_bytes.rs | 11 +++++++++-- core/lib/zksync_core/src/state_keeper/tests/mod.rs | 1 + 15 files changed, 51 insertions(+), 9 deletions(-) diff --git a/core/lib/multivm/src/glue/types/vm/vm_block_result.rs b/core/lib/multivm/src/glue/types/vm/vm_block_result.rs index 50c625c317d..8fa2c03de23 100644 --- a/core/lib/multivm/src/glue/types/vm/vm_block_result.rs +++ b/core/lib/multivm/src/glue/types/vm/vm_block_result.rs @@ -21,6 +21,7 @@ impl GlueFrom for crate::interface::FinishedL1B total_log_queries: value.block_tip_result.logs.total_log_queries_count, computational_gas_used: value.full_result.gas_used, gas_used: value.full_result.gas_used, + pubdata_published: 0, }, refunds: Refunds::default(), }, @@ -52,6 +53,7 @@ impl GlueFrom for crate::interface::FinishedL1B total_log_queries: value.block_tip_result.logs.total_log_queries_count, computational_gas_used: value.full_result.computational_gas_used, gas_used: value.full_result.gas_used, + pubdata_published: 0, }, refunds: Refunds::default(), }, @@ -89,6 +91,7 @@ impl GlueFrom for crate::interface::Finished total_log_queries: value.block_tip_result.logs.total_log_queries_count, computational_gas_used: value.full_result.computational_gas_used, gas_used: value.full_result.gas_used, + pubdata_published: 0, }, refunds: Refunds::default(), }, @@ -135,6 +138,7 @@ impl GlueFrom for crate::interface::VmExecut total_log_queries: value.full_result.total_log_queries, computational_gas_used: value.full_result.computational_gas_used, gas_used: value.full_result.gas_used, + pubdata_published: 0, }, refunds: Refunds::default(), } @@ -162,6 +166,7 @@ impl GlueFrom for crate::interface::VmExecution total_log_queries: value.full_result.total_log_queries, computational_gas_used: 0, gas_used: value.full_result.gas_used, + pubdata_published: 0, }, refunds: Refunds::default(), } @@ -195,6 +200,7 @@ impl GlueFrom for crate::interface::VmExecution total_log_queries: value.full_result.total_log_queries, computational_gas_used: value.full_result.computational_gas_used, gas_used: value.full_result.gas_used, + pubdata_published: 0, }, refunds: Refunds::default(), } diff --git a/core/lib/multivm/src/glue/types/vm/vm_partial_execution_result.rs b/core/lib/multivm/src/glue/types/vm/vm_partial_execution_result.rs index 527d24d5b46..9626468a2bb 100644 --- a/core/lib/multivm/src/glue/types/vm/vm_partial_execution_result.rs +++ b/core/lib/multivm/src/glue/types/vm/vm_partial_execution_result.rs @@ -15,6 +15,7 @@ impl GlueFrom gas_used: 0, // There are no such fields in m5 computational_gas_used: 0, + pubdata_published: 0, }, refunds: crate::interface::Refunds { gas_refunded: 0, @@ -37,6 +38,7 @@ impl GlueFrom gas_used: value.computational_gas_used, computational_gas_used: value.computational_gas_used, total_log_queries: value.logs.total_log_queries_count, + pubdata_published: 0, }, refunds: crate::interface::Refunds { gas_refunded: 0, @@ -59,6 +61,7 @@ impl GlueFrom gas_used: value.computational_gas_used, computational_gas_used: value.computational_gas_used, total_log_queries: value.logs.total_log_queries_count, + pubdata_published: 0, }, refunds: crate::interface::Refunds { gas_refunded: 0, diff --git a/core/lib/multivm/src/interface/types/outputs/execution_result.rs b/core/lib/multivm/src/interface/types/outputs/execution_result.rs index 01d7f68c917..7a3b135641f 100644 --- a/core/lib/multivm/src/interface/types/outputs/execution_result.rs +++ b/core/lib/multivm/src/interface/types/outputs/execution_result.rs @@ -95,6 +95,7 @@ impl VmExecutionResultAndLogs { total_log_queries: self.statistics.total_log_queries, cycles_used: self.statistics.cycles_used, computational_gas_used: self.statistics.computational_gas_used, + pubdata_published: self.statistics.pubdata_published, } } } diff --git a/core/lib/multivm/src/interface/types/outputs/statistic.rs b/core/lib/multivm/src/interface/types/outputs/statistic.rs index da960cbbd0f..c1312fc95da 100644 --- a/core/lib/multivm/src/interface/types/outputs/statistic.rs +++ b/core/lib/multivm/src/interface/types/outputs/statistic.rs @@ -11,6 +11,7 @@ pub struct VmExecutionStatistics { pub computational_gas_used: u32, /// Number of log queries produced by the VM during the tx execution. pub total_log_queries: usize, + pub pubdata_published: u32, } /// Oracle metrics of the VM. diff --git a/core/lib/multivm/src/versions/vm_latest/implementation/execution.rs b/core/lib/multivm/src/versions/vm_latest/implementation/execution.rs index 4db113649c2..1fb7aed0b71 100644 --- a/core/lib/multivm/src/versions/vm_latest/implementation/execution.rs +++ b/core/lib/multivm/src/versions/vm_latest/implementation/execution.rs @@ -62,6 +62,12 @@ impl Vm { let logs = self.collect_execution_logs_after_timestamp(timestamp_initial); + let (refunds, pubdata_published) = tx_tracer + .refund_tracer + .as_ref() + .map(|x| (x.get_refunds(), x.pubdata_published())) + .unwrap_or_default(); + let statistics = self.get_statistics( timestamp_initial, cycles_initial, @@ -69,16 +75,11 @@ impl Vm { gas_remaining_before, gas_remaining_after, spent_pubdata_counter_before, + pubdata_published, logs.total_log_queries_count, ); - let result = tx_tracer.result_tracer.into_result(); - let refunds = tx_tracer - .refund_tracer - .map(|x| x.get_refunds()) - .unwrap_or_default(); - let result = VmExecutionResultAndLogs { result, logs, diff --git a/core/lib/multivm/src/versions/vm_latest/implementation/statistics.rs b/core/lib/multivm/src/versions/vm_latest/implementation/statistics.rs index 530ad45a1af..3706e458257 100644 --- a/core/lib/multivm/src/versions/vm_latest/implementation/statistics.rs +++ b/core/lib/multivm/src/versions/vm_latest/implementation/statistics.rs @@ -22,6 +22,7 @@ impl Vm { gas_remaining_before: u32, gas_remaining_after: u32, spent_pubdata_counter_before: u32, + pubdata_published: u32, total_log_queries_count: usize, ) -> VmExecutionStatistics { let computational_gas_used = self.calculate_computational_gas_used( @@ -38,6 +39,7 @@ impl Vm { gas_used: gas_remaining_before - gas_remaining_after, computational_gas_used, total_log_queries: total_log_queries_count, + pubdata_published, } } diff --git a/core/lib/multivm/src/versions/vm_latest/tracers/refunds.rs b/core/lib/multivm/src/versions/vm_latest/tracers/refunds.rs index 8b1a43d8da3..119551c86f1 100644 --- a/core/lib/multivm/src/versions/vm_latest/tracers/refunds.rs +++ b/core/lib/multivm/src/versions/vm_latest/tracers/refunds.rs @@ -48,6 +48,7 @@ pub(crate) struct RefundsTracer { spent_pubdata_counter_before: u32, gas_spent_on_bytecodes_and_long_messages: u32, l1_batch: L1BatchEnv, + pubdata_published: u32, } impl RefundsTracer { @@ -62,6 +63,7 @@ impl RefundsTracer { spent_pubdata_counter_before: 0, gas_spent_on_bytecodes_and_long_messages: 0, l1_batch, + pubdata_published: 0, } } } @@ -142,6 +144,10 @@ impl RefundsTracer { pub(crate) fn gas_spent_on_pubdata(&self, vm_local_state: &VmLocalState) -> u32 { self.gas_spent_on_bytecodes_and_long_messages + vm_local_state.spent_pubdata_counter } + + pub(crate) fn pubdata_published(&self) -> u32 { + self.pubdata_published + } } impl DynTracer for RefundsTracer { @@ -235,6 +241,7 @@ impl VmTracer for RefundsTracer { self.l1_batch.number, ); + self.pubdata_published = pubdata_published; let current_ergs_per_pubdata_byte = state.local_state.current_ergs_per_pubdata_byte; let tx_body_refund = self.tx_body_refund( bootloader_refund, diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/statistics.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/statistics.rs index 8858e346548..dc4b5ff5a12 100644 --- a/core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/statistics.rs +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/statistics.rs @@ -38,6 +38,8 @@ impl Vm { gas_used: gas_remaining_before - gas_remaining_after, computational_gas_used, total_log_queries: total_log_queries_count, + // This field will be populated by the RefundTracer + pubdata_published: 0, } } diff --git a/core/lib/multivm/src/versions/vm_virtual_blocks/implementation/statistics.rs b/core/lib/multivm/src/versions/vm_virtual_blocks/implementation/statistics.rs index b51a3afc7ea..98bc5430bea 100644 --- a/core/lib/multivm/src/versions/vm_virtual_blocks/implementation/statistics.rs +++ b/core/lib/multivm/src/versions/vm_virtual_blocks/implementation/statistics.rs @@ -38,6 +38,8 @@ impl Vm { gas_used: gas_remaining_before - gas_remaining_after, computational_gas_used, total_log_queries: total_log_queries_count, + // This field will be populated by the RefundTracer + pubdata_published: 0, } } diff --git a/core/lib/multivm/src/versions/vm_virtual_blocks/tracers/refunds.rs b/core/lib/multivm/src/versions/vm_virtual_blocks/tracers/refunds.rs index 2db5298c2d3..d8db7a2cbaf 100644 --- a/core/lib/multivm/src/versions/vm_virtual_blocks/tracers/refunds.rs +++ b/core/lib/multivm/src/versions/vm_virtual_blocks/tracers/refunds.rs @@ -48,6 +48,7 @@ pub(crate) struct RefundsTracer { gas_remaining_before: u32, spent_pubdata_counter_before: u32, gas_spent_on_bytecodes_and_long_messages: u32, + pubdata_published: u32, l1_batch: L1BatchEnv, } @@ -62,6 +63,7 @@ impl RefundsTracer { gas_remaining_before: 0, spent_pubdata_counter_before: 0, gas_spent_on_bytecodes_and_long_messages: 0, + pubdata_published: 0, l1_batch, } } @@ -225,6 +227,7 @@ impl ExecutionProcessing for RefundsTrace let pubdata_published = pubdata_published(state, self.timestamp_initial, self.l1_batch.number); + self.pubdata_published = pubdata_published; let current_ergs_per_pubdata_byte = state.local_state.current_ergs_per_pubdata_byte; let tx_body_refund = self.tx_body_refund( @@ -388,6 +391,7 @@ impl VmTracer for RefundsTracer { result.refunds = Refunds { gas_refunded: self.refund_gas, operator_suggested_refund: self.operator_refund.unwrap_or_default(), - } + }; + result.statistics.pubdata_published = self.pubdata_published; } } diff --git a/core/lib/types/src/fee.rs b/core/lib/types/src/fee.rs index 5ea9dbbdd2b..2de0f031a83 100644 --- a/core/lib/types/src/fee.rs +++ b/core/lib/types/src/fee.rs @@ -22,6 +22,7 @@ pub struct TransactionExecutionMetrics { pub cycles_used: u32, pub computational_gas_used: u32, pub total_updated_values_size: usize, + pub pubdata_published: u32, } #[derive(Debug, Default, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)] diff --git a/core/lib/types/src/tx/tx_execution_info.rs b/core/lib/types/src/tx/tx_execution_info.rs index 1008614f4ea..206f0d8c43b 100644 --- a/core/lib/types/src/tx/tx_execution_info.rs +++ b/core/lib/types/src/tx/tx_execution_info.rs @@ -58,6 +58,7 @@ pub struct ExecutionMetrics { pub total_log_queries: usize, pub cycles_used: u32, pub computational_gas_used: u32, + pub pubdata_published: u32, } impl ExecutionMetrics { @@ -74,6 +75,7 @@ impl ExecutionMetrics { total_log_queries: tx_metrics.total_log_queries, cycles_used: tx_metrics.cycles_used, computational_gas_used: tx_metrics.computational_gas_used, + pubdata_published: tx_metrics.pubdata_published, } } @@ -104,6 +106,7 @@ impl Add for ExecutionMetrics { total_log_queries: self.total_log_queries + other.total_log_queries, cycles_used: self.cycles_used + other.cycles_used, computational_gas_used: self.computational_gas_used + other.computational_gas_used, + pubdata_published: self.pubdata_published + other.pubdata_published, } } } diff --git a/core/lib/zksync_core/src/api_server/execution_sandbox/vm_metrics.rs b/core/lib/zksync_core/src/api_server/execution_sandbox/vm_metrics.rs index c3eb6076de1..138d06a3a7c 100644 --- a/core/lib/zksync_core/src/api_server/execution_sandbox/vm_metrics.rs +++ b/core/lib/zksync_core/src/api_server/execution_sandbox/vm_metrics.rs @@ -238,5 +238,6 @@ pub(super) fn collect_tx_execution_metrics( cycles_used: result.statistics.cycles_used, computational_gas_used: result.statistics.computational_gas_used, total_updated_values_size: writes_metrics.total_updated_values_size, + pubdata_published: result.statistics.pubdata_published, } } diff --git a/core/lib/zksync_core/src/state_keeper/seal_criteria/criteria/pubdata_bytes.rs b/core/lib/zksync_core/src/state_keeper/seal_criteria/criteria/pubdata_bytes.rs index 70f35f4278e..6142f258d79 100644 --- a/core/lib/zksync_core/src/state_keeper/seal_criteria/criteria/pubdata_bytes.rs +++ b/core/lib/zksync_core/src/state_keeper/seal_criteria/criteria/pubdata_bytes.rs @@ -21,9 +21,16 @@ impl SealCriterion for PubDataBytesCriterion { (max_pubdata_per_l1_batch as f64 * config.reject_tx_at_eth_params_percentage).round(); let include_and_seal_bound = (max_pubdata_per_l1_batch as f64 * config.close_block_at_eth_params_percentage).round(); - let block_size = block_data.execution_metrics.size() + block_data.writes_metrics.size(); - let tx_size = tx_data.execution_metrics.size() + tx_data.writes_metrics.size(); + let block_size = block_data.execution_metrics.size() + block_data.writes_metrics.size(); + // For backward compatibility, we need to keep calculating the size of the pubdata based + // StorageDeduplication metrics. All vm versions + // after vm with virtual blocks will provide the size of the pubdata in the execution metrics. + let tx_size = if tx_data.execution_metrics.pubdata_published == 0 { + tx_data.execution_metrics.size() + tx_data.writes_metrics.size() + } else { + tx_data.execution_metrics.pubdata_published as usize + }; if tx_size > reject_bound as usize { let message = "Transaction cannot be sent to L1 due to pubdata limits"; SealResolution::Unexecutable(message.into()) diff --git a/core/lib/zksync_core/src/state_keeper/tests/mod.rs b/core/lib/zksync_core/src/state_keeper/tests/mod.rs index 57099bb1803..c5841fd8b1b 100644 --- a/core/lib/zksync_core/src/state_keeper/tests/mod.rs +++ b/core/lib/zksync_core/src/state_keeper/tests/mod.rs @@ -194,6 +194,7 @@ pub(super) fn create_execution_result( gas_used: 0, computational_gas_used: 0, total_log_queries, + pubdata_published: 0, }, refunds: Refunds::default(), } From 0dd3741ce135fa9b0e89c4a6e47636f1ba0e45b7 Mon Sep 17 00:00:00 2001 From: Lyova Potyomkin Date: Fri, 3 Nov 2023 17:40:27 +0200 Subject: [PATCH 081/108] Fix test --- .../seal_criteria/criteria/geometry_seal_criteria.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/lib/zksync_core/src/state_keeper/seal_criteria/criteria/geometry_seal_criteria.rs b/core/lib/zksync_core/src/state_keeper/seal_criteria/criteria/geometry_seal_criteria.rs index e0cfc5f38f7..1ec0c66e4d7 100644 --- a/core/lib/zksync_core/src/state_keeper/seal_criteria/criteria/geometry_seal_criteria.rs +++ b/core/lib/zksync_core/src/state_keeper/seal_criteria/criteria/geometry_seal_criteria.rs @@ -412,7 +412,7 @@ mod tests { fn l2_to_l1_logs_seal_criterion() { test_scenario_execution_metrics!( L2ToL1LogsCriterion, - l2_l1_logs, + l2_to_l1_logs, usize, ProtocolVersionId::Version17 ); From 64eec23eb1dead30326f2929d64dc3e927271ad3 Mon Sep 17 00:00:00 2001 From: Lyova Potyomkin Date: Fri, 3 Nov 2023 18:07:39 +0200 Subject: [PATCH 082/108] Update old refund tracer --- .../implementation/execution.rs | 12 +++++++----- .../implementation/statistics.rs | 4 ++-- .../vm_refunds_enhancement/tracers/refunds.rs | 7 +++++++ 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/execution.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/execution.rs index 23d16ec4850..2691b5395d7 100644 --- a/core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/execution.rs +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/execution.rs @@ -59,6 +59,12 @@ impl Vm { let logs = self.collect_execution_logs_after_timestamp(timestamp_initial); + let (refunds, pubdata_published) = tx_tracer + .refund_tracer + .as_ref() + .map(|x| (x.get_refunds(), x.pubdata_published())) + .unwrap_or_default(); + let statistics = self.get_statistics( timestamp_initial, cycles_initial, @@ -66,16 +72,12 @@ impl Vm { gas_remaining_before, gas_remaining_after, spent_pubdata_counter_before, + pubdata_published, logs.total_log_queries_count, ); let result = tx_tracer.result_tracer.into_result(); - let refunds = tx_tracer - .refund_tracer - .map(|x| x.get_refunds()) - .unwrap_or_default(); - let result = VmExecutionResultAndLogs { result, logs, diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/statistics.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/statistics.rs index dc4b5ff5a12..a113a09be70 100644 --- a/core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/statistics.rs +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/statistics.rs @@ -22,6 +22,7 @@ impl Vm { gas_remaining_before: u32, gas_remaining_after: u32, spent_pubdata_counter_before: u32, + pubdata_published: u32, total_log_queries_count: usize, ) -> VmExecutionStatistics { let computational_gas_used = self.calculate_computational_gas_used( @@ -38,8 +39,7 @@ impl Vm { gas_used: gas_remaining_before - gas_remaining_after, computational_gas_used, total_log_queries: total_log_queries_count, - // This field will be populated by the RefundTracer - pubdata_published: 0, + pubdata_published, } } diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/refunds.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/refunds.rs index 0ce55f5cb23..b451e720967 100644 --- a/core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/refunds.rs +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/tracers/refunds.rs @@ -48,6 +48,7 @@ pub(crate) struct RefundsTracer { spent_pubdata_counter_before: u32, gas_spent_on_bytecodes_and_long_messages: u32, l1_batch: L1BatchEnv, + pubdata_published: u32, } impl RefundsTracer { @@ -62,6 +63,7 @@ impl RefundsTracer { spent_pubdata_counter_before: 0, gas_spent_on_bytecodes_and_long_messages: 0, l1_batch, + pubdata_published: 0, } } } @@ -142,6 +144,10 @@ impl RefundsTracer { pub(crate) fn gas_spent_on_pubdata(&self, vm_local_state: &VmLocalState) -> u32 { self.gas_spent_on_bytecodes_and_long_messages + vm_local_state.spent_pubdata_counter } + + pub(crate) fn pubdata_published(&self) -> u32 { + self.pubdata_published + } } impl DynTracer for RefundsTracer { @@ -235,6 +241,7 @@ impl VmTracer for RefundsTracer { self.l1_batch.number, ); + self.pubdata_published = pubdata_published; let current_ergs_per_pubdata_byte = state.local_state.current_ergs_per_pubdata_byte; let tx_body_refund = self.tx_body_refund( bootloader_refund, From e364a4f8260ceb73e2a0fbd6d6180239ab310958 Mon Sep 17 00:00:00 2001 From: Lyova Potyomkin Date: Fri, 3 Nov 2023 18:15:07 +0200 Subject: [PATCH 083/108] Fix lints --- core/lib/zksync_core/src/eth_watch/tests.rs | 2 +- core/lib/zksync_core/src/state_keeper/io/seal_logic.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/lib/zksync_core/src/eth_watch/tests.rs b/core/lib/zksync_core/src/eth_watch/tests.rs index 77dcfba07be..fdabe3a8def 100644 --- a/core/lib/zksync_core/src/eth_watch/tests.rs +++ b/core/lib/zksync_core/src/eth_watch/tests.rs @@ -9,7 +9,7 @@ use zksync_dal::{ConnectionPool, StorageProcessor}; use zksync_types::protocol_version::{ProtocolUpgradeTx, ProtocolUpgradeTxCommonData}; use zksync_types::web3::types::{Address, BlockNumber}; use zksync_types::{ - ethabi::{encode, Contract, Hash, Token}, + ethabi::{encode, Hash, Token}, l1::{L1Tx, OpProcessingType, PriorityQueueType}, web3::types::Log, Execute, L1TxCommonData, PriorityOpId, ProtocolUpgrade, ProtocolVersion, ProtocolVersionId, diff --git a/core/lib/zksync_core/src/state_keeper/io/seal_logic.rs b/core/lib/zksync_core/src/state_keeper/io/seal_logic.rs index e7d5738f6b2..c4d3ff70e5b 100644 --- a/core/lib/zksync_core/src/state_keeper/io/seal_logic.rs +++ b/core/lib/zksync_core/src/state_keeper/io/seal_logic.rs @@ -140,7 +140,7 @@ impl UpdatesManager { .blocks_dal() .insert_l1_batch( &l1_batch, - &finished_batch.final_bootloader_memory.as_ref().unwrap(), + finished_batch.final_bootloader_memory.as_ref().unwrap(), self.l1_batch.l1_gas_count, &events_queue, &finished_batch.final_execution_state.storage_refunds, From 345b4e66484e98fc23712fc4111fb97d0d6569d8 Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Fri, 3 Nov 2023 17:17:50 +0100 Subject: [PATCH 084/108] update boojum contracts --- contracts | 2 +- etc/system-contracts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/contracts b/contracts index b2faedc4b58..8e7ea3bc5d4 160000 --- a/contracts +++ b/contracts @@ -1 +1 @@ -Subproject commit b2faedc4b58c73d27252ed746954ec90a65d932e +Subproject commit 8e7ea3bc5d4817bf0ab6e10aafd02322c33ed32a diff --git a/etc/system-contracts b/etc/system-contracts index 97208b70a9b..18ab54455bd 160000 --- a/etc/system-contracts +++ b/etc/system-contracts @@ -1 +1 @@ -Subproject commit 97208b70a9b6eb3883b09fb3f1ca1b8605720fb1 +Subproject commit 18ab54455bdd17e508eaccb31a6e24cf64fe3feb From b3ff655a6868a33e792dd6d88c48817a88f2d39f Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Fri, 3 Nov 2023 18:17:12 +0100 Subject: [PATCH 085/108] make the latest contracts work --- contracts | 2 +- yarn.lock | 28 +++++++++++++++++++--------- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/contracts b/contracts index 8e7ea3bc5d4..a39f8eb1d2c 160000 --- a/contracts +++ b/contracts @@ -1 +1 @@ -Subproject commit 8e7ea3bc5d4817bf0ab6e10aafd02322c33ed32a +Subproject commit a39f8eb1d2c30bbc44bc8c10726f3abcd3ad5c6a diff --git a/yarn.lock b/yarn.lock index ea795e3e14c..6877daf3fa2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2066,15 +2066,25 @@ resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-waffle/-/hardhat-waffle-2.0.6.tgz#d11cb063a5f61a77806053e54009c40ddee49a54" integrity sha512-+Wz0hwmJGSI17B+BhU/qFRZ1l6/xMW82QGXE/Gi+WTmwgJrQefuBs1lIf7hzQ1hLk6hpkvb/zwcNkpVKRYTQYg== -"@openzeppelin/contracts-upgradeable@4.9.2": - version "4.9.2" - resolved "https://registry.yarnpkg.com/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.9.2.tgz#a817c75688f8daede420052fbcb34e52482e769e" - integrity sha512-siviV3PZV/fHfPaoIC51rf1Jb6iElkYWnNYZ0leO23/ukXuvOyoC/ahy8jqiV7g+++9Nuo3n/rk5ajSN/+d/Sg== - -"@openzeppelin/contracts@4.9.2": - version "4.9.2" - resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.9.2.tgz#1cb2d5e4d3360141a17dbc45094a8cad6aac16c1" - integrity sha512-mO+y6JaqXjWeMh9glYVzVu8HYPGknAAnWyxTRhGeckOruyXQMNnlcW6w/Dx9ftLeIQk6N+ZJFuVmTwF7lEIFrg== +"@openzeppelin/contracts-upgradeable@4.6.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.6.0.tgz#1bf55f230f008554d4c6fe25eb165b85112108b0" + integrity sha512-5OnVuO4HlkjSCJO165a4i2Pu1zQGzMs//o54LPrwUgxvEO2P3ax1QuaSI0cEHHTveA77guS0PnNugpR2JMsPfA== + +"@openzeppelin/contracts-upgradeable@4.8.0": + version "4.8.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.8.0.tgz#26688982f46969018e3ed3199e72a07c8d114275" + integrity sha512-5GeFgqMiDlqGT8EdORadp1ntGF0qzWZLmEY7Wbp/yVhN7/B3NNzCxujuI77ktlyG81N3CUZP8cZe3ZAQ/cW10w== + +"@openzeppelin/contracts@4.6.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.6.0.tgz#c91cf64bc27f573836dba4122758b4743418c1b3" + integrity sha512-8vi4d50NNya/bQqCmaVzvHNmwHvS0OBKb7HNtuNwEE3scXWrP31fKQoGxNMT+KbzmrNZzatE3QK5p2gFONI/hg== + +"@openzeppelin/contracts@4.8.0": + version "4.8.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.8.0.tgz#6854c37df205dd2c056bdfa1b853f5d732109109" + integrity sha512-AGuwhRRL+NaKx73WKRNzeCxOCOCxpaqF+kp8TJ89QzAipSwZy/NoflkWaL9bywXFRhIzXt8j38sfF7KBKCPWLw== "@openzeppelin/contracts@^4.8.0": version "4.9.3" From 9bf446810afe1260363cf0abab0ef5c675157e14 Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Sun, 5 Nov 2023 19:53:48 +0100 Subject: [PATCH 086/108] use contracts from main --- contracts | 2 +- etc/system-contracts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/contracts b/contracts index a39f8eb1d2c..5ca368a4377 160000 --- a/contracts +++ b/contracts @@ -1 +1 @@ -Subproject commit a39f8eb1d2c30bbc44bc8c10726f3abcd3ad5c6a +Subproject commit 5ca368a4377568b003c585dcd105265fd693f1d7 diff --git a/etc/system-contracts b/etc/system-contracts index 18ab54455bd..8f09d7be4f3 160000 --- a/etc/system-contracts +++ b/etc/system-contracts @@ -1 +1 @@ -Subproject commit 18ab54455bdd17e508eaccb31a6e24cf64fe3feb +Subproject commit 8f09d7be4f3b67fe8232037daad839d244ed176e From 736007034495430df137ca25eca1d03823a90bba Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Mon, 6 Nov 2023 10:35:23 +0100 Subject: [PATCH 087/108] fix vm nits --- .../glue/types/vm/current_execution_state.rs | 17 ----------------- .../types/vm/vm_execution_result_and_logs.rs | 19 ------------------- .../src/interface/types/outputs/mod.rs | 2 -- .../src/versions/vm_1_3_2/legacy_types.rs | 15 --------------- core/lib/multivm/src/versions/vm_1_3_2/mod.rs | 1 - .../vm_latest/bootloader_state/state.rs | 2 +- .../vm_latest/bootloader_state/utils.rs | 2 +- .../vm_latest/tracers/pubdata_tracer.rs | 6 ++++-- .../versions/vm_latest/types/internals/mod.rs | 1 + .../vm_latest/types/internals}/pubdata.rs | 0 .../src/versions/vm_m5/legacy_types.rs | 15 --------------- core/lib/multivm/src/versions/vm_m5/mod.rs | 1 - .../src/versions/vm_m6/legacy_types.rs | 15 --------------- core/lib/multivm/src/versions/vm_m6/mod.rs | 1 - .../types/legacy_types.rs | 1 - .../vm_refunds_enhancement/types/mod.rs | 1 - core/lib/types/src/commitment.rs | 4 +--- core/lib/types/src/eth_sender.rs | 16 +--------------- 18 files changed, 9 insertions(+), 110 deletions(-) delete mode 100644 core/lib/multivm/src/glue/types/vm/current_execution_state.rs delete mode 100644 core/lib/multivm/src/glue/types/vm/vm_execution_result_and_logs.rs delete mode 100644 core/lib/multivm/src/versions/vm_1_3_2/legacy_types.rs rename core/lib/multivm/src/{interface/types/outputs => versions/vm_latest/types/internals}/pubdata.rs (100%) delete mode 100644 core/lib/multivm/src/versions/vm_m5/legacy_types.rs delete mode 100644 core/lib/multivm/src/versions/vm_m6/legacy_types.rs delete mode 100644 core/lib/multivm/src/versions/vm_refunds_enhancement/types/legacy_types.rs diff --git a/core/lib/multivm/src/glue/types/vm/current_execution_state.rs b/core/lib/multivm/src/glue/types/vm/current_execution_state.rs deleted file mode 100644 index b59bac9a322..00000000000 --- a/core/lib/multivm/src/glue/types/vm/current_execution_state.rs +++ /dev/null @@ -1,17 +0,0 @@ -use crate::glue::GlueFrom; -use vm_latest::CurrentExecutionState; - -impl GlueFrom for CurrentExecutionState { - fn glue_from(value: vm_virtual_blocks::CurrentExecutionState) -> Self { - Self { - events: value.events, - storage_log_queries: value.storage_log_queries, - used_contract_hashes: value.used_contract_hashes, - user_l2_to_l1_logs: value.l2_to_l1_logs, - deduplicated_events_logs: vec![], - system_logs: vec![], - total_log_queries: value.total_log_queries, - cycles_used: value.cycles_used, - } - } -} diff --git a/core/lib/multivm/src/glue/types/vm/vm_execution_result_and_logs.rs b/core/lib/multivm/src/glue/types/vm/vm_execution_result_and_logs.rs deleted file mode 100644 index 1bf9f3075b7..00000000000 --- a/core/lib/multivm/src/glue/types/vm/vm_execution_result_and_logs.rs +++ /dev/null @@ -1,19 +0,0 @@ -use crate::glue::{GlueFrom, GlueInto}; -use vm_latest::{VmExecutionLogs, VmExecutionResultAndLogs}; - -impl GlueFrom for VmExecutionResultAndLogs { - fn glue_from(value: vm_virtual_blocks::VmExecutionResultAndLogs) -> Self { - Self { - result: value.result.glue_into(), - logs: VmExecutionLogs { - storage_logs: value.logs.storage_logs, - events: value.logs.events, - user_l2_to_l1_logs: value.logs.l2_to_l1_logs, - system_l2_to_l1_logs: vec![], - total_log_queries_count: value.logs.total_log_queries_count, - }, - statistics: value.statistics.glue_into(), - refunds: value.refunds.glue_into(), - } - } -} diff --git a/core/lib/multivm/src/interface/types/outputs/mod.rs b/core/lib/multivm/src/interface/types/outputs/mod.rs index 97f11eba091..39fed3ad9cb 100644 --- a/core/lib/multivm/src/interface/types/outputs/mod.rs +++ b/core/lib/multivm/src/interface/types/outputs/mod.rs @@ -2,7 +2,6 @@ mod execution_result; mod execution_state; mod finished_l1batch; mod l2_block; -mod pubdata; mod statistic; pub use execution_result::VmExecutionLogs; @@ -10,5 +9,4 @@ pub use execution_result::{ExecutionResult, Refunds, VmExecutionResultAndLogs}; pub use execution_state::{BootloaderMemory, CurrentExecutionState}; pub use finished_l1batch::FinishedL1Batch; pub use l2_block::L2Block; -pub(crate) use pubdata::PubdataInput; pub use statistic::{VmExecutionStatistics, VmMemoryMetrics}; diff --git a/core/lib/multivm/src/versions/vm_1_3_2/legacy_types.rs b/core/lib/multivm/src/versions/vm_1_3_2/legacy_types.rs deleted file mode 100644 index 6b9ba5ac88f..00000000000 --- a/core/lib/multivm/src/versions/vm_1_3_2/legacy_types.rs +++ /dev/null @@ -1,15 +0,0 @@ -use zksync_types::{l2_to_l1_log::L2ToL1Log, StorageLogQuery, VmEvent}; - -/// -/// Here we insert of the types that used to be present in lib/types at the time when this VM was in use. -/// - -/// Events/storage logs/l2->l1 logs created within transaction execution. -#[derive(Debug, Clone, Default, PartialEq)] -pub struct VmExecutionLogs { - pub storage_logs: Vec, - pub events: Vec, - pub l2_to_l1_logs: Vec, - // This field moved to statistics, but we need to keep it for backward compatibility - pub total_log_queries_count: usize, -} diff --git a/core/lib/multivm/src/versions/vm_1_3_2/mod.rs b/core/lib/multivm/src/versions/vm_1_3_2/mod.rs index a5669dac187..4c46b3554a7 100644 --- a/core/lib/multivm/src/versions/vm_1_3_2/mod.rs +++ b/core/lib/multivm/src/versions/vm_1_3_2/mod.rs @@ -5,7 +5,6 @@ pub mod errors; pub mod event_sink; mod events; mod history_recorder; -pub mod legacy_types; pub mod memory; mod oracle_tools; pub mod oracles; diff --git a/core/lib/multivm/src/versions/vm_latest/bootloader_state/state.rs b/core/lib/multivm/src/versions/vm_latest/bootloader_state/state.rs index 327aaf5cb12..a1633d5914b 100644 --- a/core/lib/multivm/src/versions/vm_latest/bootloader_state/state.rs +++ b/core/lib/multivm/src/versions/vm_latest/bootloader_state/state.rs @@ -6,8 +6,8 @@ use std::cmp::Ordering; use zksync_types::{L2ChainId, U256}; use zksync_utils::bytecode::CompressedBytecodeInfo; -use crate::interface::types::outputs::PubdataInput; use crate::interface::{BootloaderMemory, L2BlockEnv, TxExecutionMode}; +use crate::vm_latest::types::internals::pubdata::PubdataInput; use crate::vm_latest::{ constants::TX_DESCRIPTION_OFFSET, types::internals::TransactionData, utils::l2_blocks::assert_next_block, diff --git a/core/lib/multivm/src/versions/vm_latest/bootloader_state/utils.rs b/core/lib/multivm/src/versions/vm_latest/bootloader_state/utils.rs index 252ebabb108..e9eb71e2042 100644 --- a/core/lib/multivm/src/versions/vm_latest/bootloader_state/utils.rs +++ b/core/lib/multivm/src/versions/vm_latest/bootloader_state/utils.rs @@ -2,7 +2,6 @@ use zksync_types::U256; use zksync_utils::bytecode::CompressedBytecodeInfo; use zksync_utils::{bytes_to_be_words, h256_to_u256}; -use crate::interface::types::outputs::PubdataInput; use crate::interface::{BootloaderMemory, TxExecutionMode}; use crate::vm_latest::bootloader_state::l2_block::BootloaderL2Block; use crate::vm_latest::constants::{ @@ -11,6 +10,7 @@ use crate::vm_latest::constants::{ TX_OPERATOR_L2_BLOCK_INFO_OFFSET, TX_OPERATOR_SLOTS_PER_L2_BLOCK_INFO, TX_OVERHEAD_OFFSET, TX_TRUSTED_GAS_LIMIT_OFFSET, }; +use crate::vm_latest::types::internals::pubdata::PubdataInput; use super::tx::BootloaderTx; diff --git a/core/lib/multivm/src/versions/vm_latest/tracers/pubdata_tracer.rs b/core/lib/multivm/src/versions/vm_latest/tracers/pubdata_tracer.rs index fd50a66aa4a..52cc12c4526 100644 --- a/core/lib/multivm/src/versions/vm_latest/tracers/pubdata_tracer.rs +++ b/core/lib/multivm/src/versions/vm_latest/tracers/pubdata_tracer.rs @@ -16,8 +16,11 @@ use zksync_types::{ use zksync_utils::u256_to_h256; use zksync_utils::{h256_to_u256, u256_to_bytes_be}; -use crate::vm_latest::old_vm::{history_recorder::HistoryMode, memory::SimpleMemory}; use crate::vm_latest::{constants::BOOTLOADER_HEAP_PAGE, TracerExecutionStatus}; +use crate::vm_latest::{ + old_vm::{history_recorder::HistoryMode, memory::SimpleMemory}, + types::internals::pubdata::PubdataInput, +}; use crate::interface::types::inputs::L1BatchEnv; use crate::vm_latest::tracers::{ @@ -27,7 +30,6 @@ use crate::vm_latest::tracers::{ use crate::vm_latest::types::internals::ZkSyncVmState; use crate::vm_latest::utils::logs::collect_events_and_l1_logs_after_timestamp; use crate::{ - interface::types::outputs::PubdataInput, interface::VmExecutionMode, vm_latest::bootloader_state::{utils::apply_pubdata_to_memory, BootloaderState}, }; diff --git a/core/lib/multivm/src/versions/vm_latest/types/internals/mod.rs b/core/lib/multivm/src/versions/vm_latest/types/internals/mod.rs index 601b7b8bd01..c189de7266d 100644 --- a/core/lib/multivm/src/versions/vm_latest/types/internals/mod.rs +++ b/core/lib/multivm/src/versions/vm_latest/types/internals/mod.rs @@ -1,6 +1,7 @@ pub(crate) use snapshot::VmSnapshot; pub(crate) use transaction_data::TransactionData; pub(crate) use vm_state::new_vm_state; +pub(crate) mod pubdata; pub use vm_state::ZkSyncVmState; mod snapshot; mod transaction_data; diff --git a/core/lib/multivm/src/interface/types/outputs/pubdata.rs b/core/lib/multivm/src/versions/vm_latest/types/internals/pubdata.rs similarity index 100% rename from core/lib/multivm/src/interface/types/outputs/pubdata.rs rename to core/lib/multivm/src/versions/vm_latest/types/internals/pubdata.rs diff --git a/core/lib/multivm/src/versions/vm_m5/legacy_types.rs b/core/lib/multivm/src/versions/vm_m5/legacy_types.rs deleted file mode 100644 index 6b9ba5ac88f..00000000000 --- a/core/lib/multivm/src/versions/vm_m5/legacy_types.rs +++ /dev/null @@ -1,15 +0,0 @@ -use zksync_types::{l2_to_l1_log::L2ToL1Log, StorageLogQuery, VmEvent}; - -/// -/// Here we insert of the types that used to be present in lib/types at the time when this VM was in use. -/// - -/// Events/storage logs/l2->l1 logs created within transaction execution. -#[derive(Debug, Clone, Default, PartialEq)] -pub struct VmExecutionLogs { - pub storage_logs: Vec, - pub events: Vec, - pub l2_to_l1_logs: Vec, - // This field moved to statistics, but we need to keep it for backward compatibility - pub total_log_queries_count: usize, -} diff --git a/core/lib/multivm/src/versions/vm_m5/mod.rs b/core/lib/multivm/src/versions/vm_m5/mod.rs index 6c57b0e26cb..c501398ea1d 100644 --- a/core/lib/multivm/src/versions/vm_m5/mod.rs +++ b/core/lib/multivm/src/versions/vm_m5/mod.rs @@ -6,7 +6,6 @@ pub mod event_sink; mod events; pub(crate) mod glue; mod history_recorder; -pub mod legacy_types; pub mod memory; mod oracle_tools; pub mod oracles; diff --git a/core/lib/multivm/src/versions/vm_m6/legacy_types.rs b/core/lib/multivm/src/versions/vm_m6/legacy_types.rs deleted file mode 100644 index 6b9ba5ac88f..00000000000 --- a/core/lib/multivm/src/versions/vm_m6/legacy_types.rs +++ /dev/null @@ -1,15 +0,0 @@ -use zksync_types::{l2_to_l1_log::L2ToL1Log, StorageLogQuery, VmEvent}; - -/// -/// Here we insert of the types that used to be present in lib/types at the time when this VM was in use. -/// - -/// Events/storage logs/l2->l1 logs created within transaction execution. -#[derive(Debug, Clone, Default, PartialEq)] -pub struct VmExecutionLogs { - pub storage_logs: Vec, - pub events: Vec, - pub l2_to_l1_logs: Vec, - // This field moved to statistics, but we need to keep it for backward compatibility - pub total_log_queries_count: usize, -} diff --git a/core/lib/multivm/src/versions/vm_m6/mod.rs b/core/lib/multivm/src/versions/vm_m6/mod.rs index a33002d6fe9..b8a6f6f051d 100644 --- a/core/lib/multivm/src/versions/vm_m6/mod.rs +++ b/core/lib/multivm/src/versions/vm_m6/mod.rs @@ -6,7 +6,6 @@ pub mod event_sink; mod events; pub(crate) mod glue; mod history_recorder; -pub mod legacy_types; pub mod memory; mod oracle_tools; pub mod oracles; diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/types/legacy_types.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/types/legacy_types.rs deleted file mode 100644 index 8b137891791..00000000000 --- a/core/lib/multivm/src/versions/vm_refunds_enhancement/types/legacy_types.rs +++ /dev/null @@ -1 +0,0 @@ - diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/types/mod.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/types/mod.rs index 3d9635ea13b..a12005734ab 100644 --- a/core/lib/multivm/src/versions/vm_refunds_enhancement/types/mod.rs +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/types/mod.rs @@ -1,3 +1,2 @@ pub(crate) mod internals; mod l1_batch; -pub mod legacy_types; diff --git a/core/lib/types/src/commitment.rs b/core/lib/types/src/commitment.rs index 61dc9bf421c..b32d5fb3cb7 100644 --- a/core/lib/types/src/commitment.rs +++ b/core/lib/types/src/commitment.rs @@ -34,9 +34,7 @@ pub trait SerializeCommitment { fn serialize_commitment(&self, buffer: &mut [u8]); } -/// Serialize elements for commitment. The results consist of: -/// 1. Number of elements (4 bytes) -/// 2. Serialized elements +/// Serialize elements for commitment. The result consists of packed serialized elements. pub fn serialize_commitments(values: &[I]) -> Vec { let final_len = values.len() * I::SERIALIZED_SIZE; let mut input = vec![0_u8; final_len]; diff --git a/core/lib/types/src/eth_sender.rs b/core/lib/types/src/eth_sender.rs index 847662eaeaa..3873da17c86 100644 --- a/core/lib/types/src/eth_sender.rs +++ b/core/lib/types/src/eth_sender.rs @@ -1,7 +1,7 @@ use crate::aggregated_operations::AggregatedActionType; use crate::{Address, Nonce, H256}; -#[derive(Clone)] +#[derive(Debug, Clone)] pub struct EthTx { pub id: u32, pub nonce: Nonce, @@ -12,20 +12,6 @@ pub struct EthTx { pub predicted_gas_cost: u64, } -impl std::fmt::Debug for EthTx { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - // Do not print raw_tx - f.debug_struct("EthTx") - .field("id", &self.id) - .field("nonce", &self.nonce) - .field("contract_address", &self.contract_address) - .field("tx_type", &self.tx_type) - .field("created_at_timestamp", &self.created_at_timestamp) - .field("predicted_gas_cost", &self.predicted_gas_cost) - .finish() - } -} - #[derive(Clone, Debug)] pub struct TxHistory { pub id: u32, From 155dea76620a25453581f72447e1a6a0a274e1c7 Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Mon, 6 Nov 2023 11:03:00 +0100 Subject: [PATCH 088/108] fix PR comments 2 --- .../types/outputs/execution_result.rs | 2 ++ .../types/outputs/execution_state.rs | 4 +++- .../vm_latest/bootloader_state/snapshot.rs | 2 +- .../vm_latest/bootloader_state/state.rs | 9 ++++--- .../vm_latest/bootloader_state/utils.rs | 19 +++++++++++---- .../versions/vm_latest/implementation/logs.rs | 6 ++--- .../vm_latest/tracers/pubdata_tracer.rs | 24 ++++++++++++------- .../src/versions/vm_latest/utils/logs.rs | 2 +- .../proof_data_handler/request_processor.rs | 7 ------ 9 files changed, 46 insertions(+), 29 deletions(-) diff --git a/core/lib/multivm/src/interface/types/outputs/execution_result.rs b/core/lib/multivm/src/interface/types/outputs/execution_result.rs index 7a3b135641f..616c2e0e66b 100644 --- a/core/lib/multivm/src/interface/types/outputs/execution_result.rs +++ b/core/lib/multivm/src/interface/types/outputs/execution_result.rs @@ -18,6 +18,8 @@ pub struct Refunds { pub struct VmExecutionLogs { pub storage_logs: Vec, pub events: Vec, + // For pre-boojum VMs, there was no distinction between user logs and system + // logs and so all the outputted logs were treated as user_l2_to_l1_logs. pub user_l2_to_l1_logs: Vec, pub system_l2_to_l1_logs: Vec, // This field moved to statistics, but we need to keep it for backward compatibility diff --git a/core/lib/multivm/src/interface/types/outputs/execution_state.rs b/core/lib/multivm/src/interface/types/outputs/execution_state.rs index 1408f5a0870..623ba1492f9 100644 --- a/core/lib/multivm/src/interface/types/outputs/execution_state.rs +++ b/core/lib/multivm/src/interface/types/outputs/execution_state.rs @@ -12,7 +12,9 @@ pub struct CurrentExecutionState { pub used_contract_hashes: Vec, /// L2 to L1 logs produced by the VM. pub system_logs: Vec, - /// L2 to L1 logs produced by the L1Messeger + /// L2 to L1 logs produced by the L1Messeger. + /// For pre-boojum VMs, there was no distinction between user logs and system + /// logs and so all the outputted logs were treated as user_l2_to_l1_logs. pub user_l2_to_l1_logs: Vec, /// Number of log queries produced by the VM. Including l2_to_l1 logs, storage logs and events. pub total_log_queries: usize, diff --git a/core/lib/multivm/src/versions/vm_latest/bootloader_state/snapshot.rs b/core/lib/multivm/src/versions/vm_latest/bootloader_state/snapshot.rs index 08267d0dfcc..683fc28a69e 100644 --- a/core/lib/multivm/src/versions/vm_latest/bootloader_state/snapshot.rs +++ b/core/lib/multivm/src/versions/vm_latest/bootloader_state/snapshot.rs @@ -13,7 +13,7 @@ pub(crate) struct BootloaderStateSnapshot { /// Current offset of the free space in the bootloader memory. pub(crate) free_tx_offset: usize, /// Whether the pubdata information has been provided already - pub(crate) pubdata_information: bool, + pub(crate) is_pubdata_information_provided: bool, } #[derive(Debug, Clone)] diff --git a/core/lib/multivm/src/versions/vm_latest/bootloader_state/state.rs b/core/lib/multivm/src/versions/vm_latest/bootloader_state/state.rs index a1633d5914b..b4641d9bc64 100644 --- a/core/lib/multivm/src/versions/vm_latest/bootloader_state/state.rs +++ b/core/lib/multivm/src/versions/vm_latest/bootloader_state/state.rs @@ -255,7 +255,7 @@ impl BootloaderState { last_l2_block: self.last_l2_block().make_snapshot(), compressed_bytecodes_encoding: self.compressed_bytecodes_encoding, free_tx_offset: self.free_tx_offset, - pubdata_information: self.pubdata_information.get().is_some(), + is_pubdata_information_provided: self.pubdata_information.get().is_some(), } } @@ -271,12 +271,15 @@ impl BootloaderState { self.last_mut_l2_block() .apply_snapshot(snapshot.last_l2_block); - if !snapshot.pubdata_information { + if !snapshot.is_pubdata_information_provided { self.pubdata_information = Default::default(); } else { + // Under the correct usage of the snapshots of the bootloader state, + // this assertion should never fail, i.e. since the pubdata information + // can be set only once. However, we have this assertion just in case. assert!( self.pubdata_information.get().is_some(), - "Can not use snapshot from future" + "Snapshot with no pubdata can not rollback to snapshot with one" ); } } diff --git a/core/lib/multivm/src/versions/vm_latest/bootloader_state/utils.rs b/core/lib/multivm/src/versions/vm_latest/bootloader_state/utils.rs index e9eb71e2042..78b98f0a404 100644 --- a/core/lib/multivm/src/versions/vm_latest/bootloader_state/utils.rs +++ b/core/lib/multivm/src/versions/vm_latest/bootloader_state/utils.rs @@ -6,9 +6,9 @@ use crate::interface::{BootloaderMemory, TxExecutionMode}; use crate::vm_latest::bootloader_state::l2_block::BootloaderL2Block; use crate::vm_latest::constants::{ BOOTLOADER_TX_DESCRIPTION_OFFSET, BOOTLOADER_TX_DESCRIPTION_SIZE, COMPRESSED_BYTECODES_OFFSET, - OPERATOR_PROVIDED_L1_MESSENGER_PUBDATA_OFFSET, OPERATOR_REFUNDS_OFFSET, TX_DESCRIPTION_OFFSET, - TX_OPERATOR_L2_BLOCK_INFO_OFFSET, TX_OPERATOR_SLOTS_PER_L2_BLOCK_INFO, TX_OVERHEAD_OFFSET, - TX_TRUSTED_GAS_LIMIT_OFFSET, + OPERATOR_PROVIDED_L1_MESSENGER_PUBDATA_OFFSET, OPERATOR_PROVIDED_L1_MESSENGER_PUBDATA_SLOTS, + OPERATOR_REFUNDS_OFFSET, TX_DESCRIPTION_OFFSET, TX_OPERATOR_L2_BLOCK_INFO_OFFSET, + TX_OPERATOR_SLOTS_PER_L2_BLOCK_INFO, TX_OVERHEAD_OFFSET, TX_TRUSTED_GAS_LIMIT_OFFSET, }; use crate::vm_latest::types::internals::pubdata::PubdataInput; @@ -116,10 +116,19 @@ pub(crate) fn apply_pubdata_to_memory( memory: &mut BootloaderMemory, pubdata_information: PubdataInput, ) { + // Skipping two slots as they will be filled by the bootloader itself: + // - One slot is for the selector of the call to the L1Messenger. + // - The other slot is for the 0x20 offset for the calldata. let l1_messenger_pubdata_start_slot = OPERATOR_PROVIDED_L1_MESSENGER_PUBDATA_OFFSET + 2; - pubdata_information - .build_pubdata() + let pubdata = pubdata_information.build_pubdata(); + + assert!( + pubdata.len() / 32 <= OPERATOR_PROVIDED_L1_MESSENGER_PUBDATA_SLOTS - 2, + "The encoded pubdata is too big" + ); + + pubdata .chunks(32) .enumerate() .for_each(|(slot_offset, value)| { diff --git a/core/lib/multivm/src/versions/vm_latest/implementation/logs.rs b/core/lib/multivm/src/versions/vm_latest/implementation/logs.rs index 66c46351700..037d504c85c 100644 --- a/core/lib/multivm/src/versions/vm_latest/implementation/logs.rs +++ b/core/lib/multivm/src/versions/vm_latest/implementation/logs.rs @@ -26,7 +26,7 @@ impl Vm { let storage_logs_count = storage_logs.len(); let (events, system_l2_to_l1_logs) = - self.collect_events_and_l1_logs_after_timestamp(from_timestamp); + self.collect_events_and_l1_system_logs_after_timestamp(from_timestamp); let log_queries = self .state @@ -52,11 +52,11 @@ impl Vm { } } - pub(crate) fn collect_events_and_l1_logs_after_timestamp( + pub(crate) fn collect_events_and_l1_system_logs_after_timestamp( &self, from_timestamp: Timestamp, ) -> (Vec, Vec) { - logs::collect_events_and_l1_logs_after_timestamp( + logs::collect_events_and_l1_system_logs_after_timestamp( &self.state, &self.batch_env, from_timestamp, diff --git a/core/lib/multivm/src/versions/vm_latest/tracers/pubdata_tracer.rs b/core/lib/multivm/src/versions/vm_latest/tracers/pubdata_tracer.rs index 52cc12c4526..85fde6d0cd4 100644 --- a/core/lib/multivm/src/versions/vm_latest/tracers/pubdata_tracer.rs +++ b/core/lib/multivm/src/versions/vm_latest/tracers/pubdata_tracer.rs @@ -28,7 +28,7 @@ use crate::vm_latest::tracers::{ utils::VmHook, }; use crate::vm_latest::types::internals::ZkSyncVmState; -use crate::vm_latest::utils::logs::collect_events_and_l1_logs_after_timestamp; +use crate::vm_latest::utils::logs::collect_events_and_l1_system_logs_after_timestamp; use crate::{ interface::VmExecutionMode, vm_latest::bootloader_state::{utils::apply_pubdata_to_memory, BootloaderState}, @@ -59,8 +59,11 @@ impl PubdataTracer { &self, state: &ZkSyncVmState, ) -> Vec { - let (all_generated_events, _) = - collect_events_and_l1_logs_after_timestamp(state, &self.l1_batch_env, Timestamp(0)); + let (all_generated_events, _) = collect_events_and_l1_system_logs_after_timestamp( + state, + &self.l1_batch_env, + Timestamp(0), + ); extract_l2tol1logs_from_l1_messenger(&all_generated_events) } @@ -70,8 +73,11 @@ impl PubdataTracer { &self, state: &ZkSyncVmState, ) -> Vec> { - let (all_generated_events, _) = - collect_events_and_l1_logs_after_timestamp(state, &self.l1_batch_env, Timestamp(0)); + let (all_generated_events, _) = collect_events_and_l1_system_logs_after_timestamp( + state, + &self.l1_batch_env, + Timestamp(0), + ); extract_long_l2_to_l1_messages(&all_generated_events) } @@ -82,8 +88,11 @@ impl PubdataTracer { &self, state: &ZkSyncVmState, ) -> Vec> { - let (all_generated_events, _) = - collect_events_and_l1_logs_after_timestamp(state, &self.l1_batch_env, Timestamp(0)); + let (all_generated_events, _) = collect_events_and_l1_system_logs_after_timestamp( + state, + &self.l1_batch_env, + Timestamp(0), + ); let bytecode_publication_requests = extract_bytecode_publication_requests_from_l1_messenger(&all_generated_events); @@ -185,7 +194,6 @@ impl VmTracer for PubdataTracer { } if self.pubdata_info_requested { - // Whenever we are executing the block tip, we want to avoid publishing the full pubdata let pubdata_input = self.build_pubdata_input(state); // Save the pubdata for the future initial bootloader memory building diff --git a/core/lib/multivm/src/versions/vm_latest/utils/logs.rs b/core/lib/multivm/src/versions/vm_latest/utils/logs.rs index 9f098544733..a2b7f548684 100644 --- a/core/lib/multivm/src/versions/vm_latest/utils/logs.rs +++ b/core/lib/multivm/src/versions/vm_latest/utils/logs.rs @@ -6,7 +6,7 @@ use crate::{ vm_latest::old_vm::history_recorder::HistoryMode, vm_latest::types::internals::ZkSyncVmState, }; -pub(crate) fn collect_events_and_l1_logs_after_timestamp( +pub(crate) fn collect_events_and_l1_system_logs_after_timestamp( vm_state: &ZkSyncVmState, batch_env: &L1BatchEnv, from_timestamp: Timestamp, diff --git a/core/lib/zksync_core/src/proof_data_handler/request_processor.rs b/core/lib/zksync_core/src/proof_data_handler/request_processor.rs index 3fb41f3c2fc..259bdec0a40 100644 --- a/core/lib/zksync_core/src/proof_data_handler/request_processor.rs +++ b/core/lib/zksync_core/src/proof_data_handler/request_processor.rs @@ -154,13 +154,6 @@ impl RequestProcessor { let mut storage = self.pool.access_storage().await.unwrap(); - // let header = storage - // .blocks_dal() - // .get_l1_batch_header(l1_batch_number) - // .await - // .unwrap() - // .expect("Proved block without a header"); - let l1_batch = storage .blocks_dal() .get_l1_batch_metadata(l1_batch_number) From 3ca96fcee8f9e894dcc5a7afe0e17078e888a90e Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Mon, 6 Nov 2023 11:23:00 +0100 Subject: [PATCH 089/108] different types for system and user logs --- core/lib/dal/src/events_dal.rs | 32 ++++++++++--------- .../src/glue/types/vm/vm_block_result.rs | 16 ++++++++-- .../types/outputs/execution_result.rs | 6 ++-- core/lib/multivm/src/versions/vm_1_3_2/vm.rs | 4 +-- .../versions/vm_latest/implementation/logs.rs | 12 +++++-- .../vm_latest/tests/l1_tx_execution.rs | 9 ++++-- core/lib/multivm/src/versions/vm_m5/vm.rs | 4 +-- core/lib/multivm/src/versions/vm_m6/vm.rs | 4 +-- .../implementation/logs.rs | 4 +-- .../vm_virtual_blocks/implementation/logs.rs | 4 +-- core/lib/types/src/l2_to_l1_log.rs | 11 +++++++ .../src/state_keeper/io/seal_logic.rs | 14 ++++---- .../state_keeper/updates/miniblock_updates.rs | 5 +-- 13 files changed, 81 insertions(+), 44 deletions(-) diff --git a/core/lib/dal/src/events_dal.rs b/core/lib/dal/src/events_dal.rs index 2702099e581..6355deaf29a 100644 --- a/core/lib/dal/src/events_dal.rs +++ b/core/lib/dal/src/events_dal.rs @@ -4,7 +4,9 @@ use std::fmt; use crate::{models::storage_event::StorageL2ToL1Log, SqlxError, StorageProcessor}; use zksync_types::{ - l2_to_l1_log::L2ToL1Log, tx::IncludedTxLocation, MiniblockNumber, VmEvent, H256, + l2_to_l1_log::{L2ToL1Log, UserL2ToL1Log}, + tx::IncludedTxLocation, + MiniblockNumber, VmEvent, H256, }; /// Wrapper around an optional event topic allowing to hex-format it for `COPY` instructions. @@ -99,12 +101,12 @@ impl EventsDal<'_, '_> { .unwrap(); } - /// Saves L2-to-L1 logs from a miniblock. Logs must be ordered by transaction location + /// Saves user L2-to-L1 logs from a miniblock. Logs must be ordered by transaction location /// and within each transaction. - pub async fn save_l2_to_l1_logs( + pub async fn save_user_l2_to_l1_logs( &mut self, block_number: MiniblockNumber, - all_block_l2_to_l1_logs: &[(IncludedTxLocation, Vec<&L2ToL1Log>)], + all_block_l2_to_l1_logs: &[(IncludedTxLocation, Vec<&UserL2ToL1Log>)], ) { let mut copy = self .storage @@ -139,7 +141,7 @@ impl EventsDal<'_, '_> { sender, key, value, - } = log; + } = log.0; write_str!( &mut buffer, @@ -273,15 +275,15 @@ mod tests { } } - fn create_l2_to_l1_log(tx_number_in_block: u16, index: u8) -> L2ToL1Log { - L2ToL1Log { + fn create_l2_to_l1_log(tx_number_in_block: u16, index: u8) -> UserL2ToL1Log { + UserL2ToL1Log(L2ToL1Log { shard_id: 0, is_service: false, tx_number_in_block, sender: Address::repeat_byte(index), key: H256::from_low_u64_be(u64::from(index)), value: H256::repeat_byte(index), - } + }) } #[tokio::test] @@ -324,7 +326,7 @@ mod tests { (second_location, second_logs.iter().collect()), ]; conn.events_dal() - .save_l2_to_l1_logs(MiniblockNumber(1), &all_logs) + .save_user_l2_to_l1_logs(MiniblockNumber(1), &all_logs) .await; let logs = conn @@ -338,9 +340,9 @@ mod tests { assert_eq!(log.log_index_in_tx as usize, i); } for (log, expected_log) in logs.iter().zip(&first_logs) { - assert_eq!(log.key, expected_log.key.as_bytes()); - assert_eq!(log.value, expected_log.value.as_bytes()); - assert_eq!(log.sender, expected_log.sender.as_bytes()); + assert_eq!(log.key, expected_log.0.key.as_bytes()); + assert_eq!(log.value, expected_log.0.value.as_bytes()); + assert_eq!(log.sender, expected_log.0.sender.as_bytes()); } let logs = conn @@ -354,9 +356,9 @@ mod tests { assert_eq!(log.log_index_in_tx as usize, i); } for (log, expected_log) in logs.iter().zip(&second_logs) { - assert_eq!(log.key, expected_log.key.as_bytes()); - assert_eq!(log.value, expected_log.value.as_bytes()); - assert_eq!(log.sender, expected_log.sender.as_bytes()); + assert_eq!(log.key, expected_log.0.key.as_bytes()); + assert_eq!(log.value, expected_log.0.value.as_bytes()); + assert_eq!(log.sender, expected_log.0.sender.as_bytes()); } } } diff --git a/core/lib/multivm/src/glue/types/vm/vm_block_result.rs b/core/lib/multivm/src/glue/types/vm/vm_block_result.rs index 8fa2c03de23..7b4267321f8 100644 --- a/core/lib/multivm/src/glue/types/vm/vm_block_result.rs +++ b/core/lib/multivm/src/glue/types/vm/vm_block_result.rs @@ -1,3 +1,5 @@ +use zksync_types::l2_to_l1_log::UserL2ToL1Log; + use crate::glue::{GlueFrom, GlueInto}; use crate::interface::{ types::outputs::VmExecutionLogs, CurrentExecutionState, ExecutionResult, Refunds, @@ -127,7 +129,12 @@ impl GlueFrom for crate::interface::VmExecut result, logs: VmExecutionLogs { events: value.full_result.events, - user_l2_to_l1_logs: value.full_result.l2_to_l1_logs, + user_l2_to_l1_logs: value + .full_result + .l2_to_l1_logs + .into_iter() + .map(UserL2ToL1Log) + .collect(), system_l2_to_l1_logs: vec![], storage_logs: value.full_result.storage_log_queries, total_log_queries_count: value.full_result.total_log_queries, @@ -189,7 +196,12 @@ impl GlueFrom for crate::interface::VmExecution result, logs: VmExecutionLogs { events: value.full_result.events, - user_l2_to_l1_logs: value.full_result.l2_to_l1_logs, + user_l2_to_l1_logs: value + .full_result + .l2_to_l1_logs + .into_iter() + .map(UserL2ToL1Log) + .collect(), system_l2_to_l1_logs: vec![], storage_logs: value.full_result.storage_log_queries, total_log_queries_count: value.full_result.total_log_queries, diff --git a/core/lib/multivm/src/interface/types/outputs/execution_result.rs b/core/lib/multivm/src/interface/types/outputs/execution_result.rs index 616c2e0e66b..0b031f9d651 100644 --- a/core/lib/multivm/src/interface/types/outputs/execution_result.rs +++ b/core/lib/multivm/src/interface/types/outputs/execution_result.rs @@ -1,7 +1,7 @@ use crate::interface::{Halt, VmExecutionStatistics, VmRevertReason}; use zksync_system_constants::PUBLISH_BYTECODE_OVERHEAD; use zksync_types::event::{extract_long_l2_to_l1_messages, extract_published_bytecodes}; -use zksync_types::l2_to_l1_log::L2ToL1Log; +use zksync_types::l2_to_l1_log::{L2ToL1Log, SystemL2ToL1Log, UserL2ToL1Log}; use zksync_types::tx::ExecutionMetrics; use zksync_types::{StorageLogQuery, Transaction, VmEvent}; use zksync_utils::bytecode::bytecode_len_in_bytes; @@ -20,8 +20,8 @@ pub struct VmExecutionLogs { pub events: Vec, // For pre-boojum VMs, there was no distinction between user logs and system // logs and so all the outputted logs were treated as user_l2_to_l1_logs. - pub user_l2_to_l1_logs: Vec, - pub system_l2_to_l1_logs: Vec, + pub user_l2_to_l1_logs: Vec, + pub system_l2_to_l1_logs: Vec, // This field moved to statistics, but we need to keep it for backward compatibility pub total_log_queries_count: usize, } diff --git a/core/lib/multivm/src/versions/vm_1_3_2/vm.rs b/core/lib/multivm/src/versions/vm_1_3_2/vm.rs index c3eb8d68e4a..4646081f18e 100644 --- a/core/lib/multivm/src/versions/vm_1_3_2/vm.rs +++ b/core/lib/multivm/src/versions/vm_1_3_2/vm.rs @@ -10,7 +10,7 @@ use zk_evm_1_3_3::zkevm_opcode_defs::decoding::{ use zk_evm_1_3_3::zkevm_opcode_defs::definitions::RET_IMPLICIT_RETURNDATA_PARAMS_REGISTER; use zksync_state::WriteStorage; use zksync_system_constants::MAX_TXS_IN_BLOCK; -use zksync_types::l2_to_l1_log::L2ToL1Log; +use zksync_types::l2_to_l1_log::{L2ToL1Log, UserL2ToL1Log}; use zksync_types::tx::tx_execution_info::TxExecutionStatus; use zksync_types::vm_trace::{Call, VmExecutionTrace, VmTrace}; use zksync_types::{L1BatchNumber, StorageLogQuery, VmEvent, U256}; @@ -428,7 +428,7 @@ impl VmInstance { VmExecutionLogs { storage_logs, events, - user_l2_to_l1_logs: l2_to_l1_logs, + user_l2_to_l1_logs: l2_to_l1_logs.into_iter().map(UserL2ToL1Log).collect(), total_log_queries_count: storage_logs_count + log_queries.len() + precompile_calls_count, diff --git a/core/lib/multivm/src/versions/vm_latest/implementation/logs.rs b/core/lib/multivm/src/versions/vm_latest/implementation/logs.rs index 037d504c85c..d65a002a3df 100644 --- a/core/lib/multivm/src/versions/vm_latest/implementation/logs.rs +++ b/core/lib/multivm/src/versions/vm_latest/implementation/logs.rs @@ -2,7 +2,7 @@ use zk_evm_1_4_0::aux_structures::Timestamp; use zksync_state::WriteStorage; use zksync_types::event::extract_l2tol1logs_from_l1_messenger; -use zksync_types::l2_to_l1_log::L2ToL1Log; +use zksync_types::l2_to_l1_log::{L2ToL1Log, SystemL2ToL1Log, UserL2ToL1Log}; use zksync_types::VmEvent; use crate::interface::types::outputs::VmExecutionLogs; @@ -46,8 +46,14 @@ impl Vm { VmExecutionLogs { storage_logs, events, - user_l2_to_l1_logs: user_logs.into_iter().map(|log| log.into()).collect(), - system_l2_to_l1_logs, + user_l2_to_l1_logs: user_logs + .into_iter() + .map(|log| UserL2ToL1Log(log.into())) + .collect(), + system_l2_to_l1_logs: system_l2_to_l1_logs + .into_iter() + .map(SystemL2ToL1Log) + .collect(), total_log_queries_count, } } diff --git a/core/lib/multivm/src/versions/vm_latest/tests/l1_tx_execution.rs b/core/lib/multivm/src/versions/vm_latest/tests/l1_tx_execution.rs index d3755fa6acd..c4d7a16070e 100644 --- a/core/lib/multivm/src/versions/vm_latest/tests/l1_tx_execution.rs +++ b/core/lib/multivm/src/versions/vm_latest/tests/l1_tx_execution.rs @@ -1,5 +1,5 @@ use zksync_system_constants::BOOTLOADER_ADDRESS; -use zksync_types::l2_to_l1_log::L2ToL1Log; +use zksync_types::l2_to_l1_log::{L2ToL1Log, UserL2ToL1Log}; use zksync_types::storage_writes_deduplicator::StorageWritesDeduplicator; use zksync_types::{get_code_key, get_known_code_key, U256}; use zksync_utils::u256_to_h256; @@ -42,14 +42,17 @@ fn test_l1_tx_execution() { let deploy_tx = account.get_deploy_tx(&contract_code, None, TxType::L1 { serial_id: 1 }); let tx_data: TransactionData = deploy_tx.tx.clone().into(); - let required_l2_to_l1_logs = vec![L2ToL1Log { + let required_l2_to_l1_logs: Vec<_> = vec![L2ToL1Log { shard_id: 0, is_service: true, tx_number_in_block: 0, sender: BOOTLOADER_ADDRESS, key: tx_data.tx_hash(0.into()), value: u256_to_h256(U256::from(1u32)), - }]; + }] + .into_iter() + .map(UserL2ToL1Log) + .collect(); vm.vm.push_transaction(deploy_tx.tx.clone()); diff --git a/core/lib/multivm/src/versions/vm_m5/vm.rs b/core/lib/multivm/src/versions/vm_m5/vm.rs index 9b64a5a8e3d..f7b1ed31de6 100644 --- a/core/lib/multivm/src/versions/vm_m5/vm.rs +++ b/core/lib/multivm/src/versions/vm_m5/vm.rs @@ -10,7 +10,7 @@ use zk_evm_1_3_1::zkevm_opcode_defs::decoding::{ use zk_evm_1_3_1::zkevm_opcode_defs::definitions::RET_IMPLICIT_RETURNDATA_PARAMS_REGISTER; use zksync_system_constants::MAX_TXS_IN_BLOCK; -use zksync_types::l2_to_l1_log::L2ToL1Log; +use zksync_types::l2_to_l1_log::{L2ToL1Log, UserL2ToL1Log}; use zksync_types::tx::tx_execution_info::TxExecutionStatus; use zksync_types::vm_trace::VmExecutionTrace; use zksync_types::{L1BatchNumber, StorageLogQuery, VmEvent, U256}; @@ -500,7 +500,7 @@ impl VmInstance { VmExecutionLogs { storage_logs, events, - user_l2_to_l1_logs: l2_to_l1_logs, + user_l2_to_l1_logs: l2_to_l1_logs.into_iter().map(UserL2ToL1Log).collect(), system_l2_to_l1_logs: vec![], total_log_queries_count: storage_logs_count + log_queries.len() diff --git a/core/lib/multivm/src/versions/vm_m6/vm.rs b/core/lib/multivm/src/versions/vm_m6/vm.rs index 7f3a7fbc024..7b68ce16b59 100644 --- a/core/lib/multivm/src/versions/vm_m6/vm.rs +++ b/core/lib/multivm/src/versions/vm_m6/vm.rs @@ -9,7 +9,7 @@ use zk_evm_1_3_1::zkevm_opcode_defs::decoding::{ }; use zk_evm_1_3_1::zkevm_opcode_defs::definitions::RET_IMPLICIT_RETURNDATA_PARAMS_REGISTER; use zksync_system_constants::MAX_TXS_IN_BLOCK; -use zksync_types::l2_to_l1_log::L2ToL1Log; +use zksync_types::l2_to_l1_log::{L2ToL1Log, UserL2ToL1Log}; use zksync_types::tx::tx_execution_info::TxExecutionStatus; use zksync_types::vm_trace::{Call, VmExecutionTrace, VmTrace}; use zksync_types::{L1BatchNumber, StorageLogQuery, VmEvent, U256}; @@ -447,7 +447,7 @@ impl VmInstance { VmExecutionLogs { storage_logs, events, - user_l2_to_l1_logs: l2_to_l1_logs, + user_l2_to_l1_logs: l2_to_l1_logs.into_iter().map(UserL2ToL1Log).collect(), system_l2_to_l1_logs: vec![], total_log_queries_count: storage_logs_count + log_queries.len() diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/logs.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/logs.rs index 1f1c7c0982d..327a054afc0 100644 --- a/core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/logs.rs +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/implementation/logs.rs @@ -1,7 +1,7 @@ use zk_evm_1_3_3::aux_structures::Timestamp; use zksync_state::WriteStorage; -use zksync_types::l2_to_l1_log::L2ToL1Log; +use zksync_types::l2_to_l1_log::{L2ToL1Log, UserL2ToL1Log}; use zksync_types::VmEvent; use crate::interface::types::outputs::VmExecutionLogs; @@ -42,7 +42,7 @@ impl Vm { VmExecutionLogs { storage_logs, events, - user_l2_to_l1_logs: l2_to_l1_logs, + user_l2_to_l1_logs: l2_to_l1_logs.into_iter().map(UserL2ToL1Log).collect(), system_l2_to_l1_logs: vec![], total_log_queries_count, } diff --git a/core/lib/multivm/src/versions/vm_virtual_blocks/implementation/logs.rs b/core/lib/multivm/src/versions/vm_virtual_blocks/implementation/logs.rs index c4e34381c43..f67b97ff875 100644 --- a/core/lib/multivm/src/versions/vm_virtual_blocks/implementation/logs.rs +++ b/core/lib/multivm/src/versions/vm_virtual_blocks/implementation/logs.rs @@ -2,7 +2,7 @@ use zk_evm_1_3_3::aux_structures::Timestamp; use zksync_state::WriteStorage; use crate::interface::types::outputs::VmExecutionLogs; -use zksync_types::l2_to_l1_log::L2ToL1Log; +use zksync_types::l2_to_l1_log::{L2ToL1Log, UserL2ToL1Log}; use zksync_types::VmEvent; use crate::vm_virtual_blocks::old_vm::events::merge_events; @@ -42,7 +42,7 @@ impl Vm { VmExecutionLogs { storage_logs, events, - user_l2_to_l1_logs: l2_to_l1_logs, + user_l2_to_l1_logs: l2_to_l1_logs.into_iter().map(UserL2ToL1Log).collect(), system_l2_to_l1_logs: vec![], total_log_queries_count, } diff --git a/core/lib/types/src/l2_to_l1_log.rs b/core/lib/types/src/l2_to_l1_log.rs index 13aa5c559fd..1e2278bd453 100644 --- a/core/lib/types/src/l2_to_l1_log.rs +++ b/core/lib/types/src/l2_to_l1_log.rs @@ -15,6 +15,17 @@ pub struct L2ToL1Log { pub value: H256, } +/// A struct representing a "user" L2->L1 log, i.e. the one that has been emitted by using the L1Messenger. +/// It is identical to the SystemL2ToL1Log struct, but +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default, Eq)] +pub struct UserL2ToL1Log(pub L2ToL1Log); + +/// A struct representing a "user" L2->L1 log, i.e. the one that has been emitted by using the L1Messenger. +/// It is identical to the SystemL2ToL1Log struct, but + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default, Eq)] +pub struct SystemL2ToL1Log(pub L2ToL1Log); + impl L2ToL1Log { /// Legacy upper bound of L2-to-L1 logs per single L1 batch. This is not used as a limit now, /// but still determines the minimum number of items in the Merkle tree built from L2-to-L1 logs diff --git a/core/lib/zksync_core/src/state_keeper/io/seal_logic.rs b/core/lib/zksync_core/src/state_keeper/io/seal_logic.rs index c4d3ff70e5b..757670d069a 100644 --- a/core/lib/zksync_core/src/state_keeper/io/seal_logic.rs +++ b/core/lib/zksync_core/src/state_keeper/io/seal_logic.rs @@ -11,7 +11,9 @@ use multivm::interface::{FinishedL1Batch, L1BatchEnv}; use zksync_dal::StorageProcessor; use zksync_system_constants::ACCOUNT_CODE_STORAGE_ADDRESS; use zksync_types::{ - block::unpack_block_info, CURRENT_VIRTUAL_BLOCK_INFO_POSITION, SYSTEM_CONTEXT_ADDRESS, + block::unpack_block_info, + l2_to_l1_log::{SystemL2ToL1Log, UserL2ToL1Log}, + CURRENT_VIRTUAL_BLOCK_INFO_POSITION, SYSTEM_CONTEXT_ADDRESS, }; use zksync_types::{ block::{L1BatchHeader, MiniblockHeader}, @@ -399,7 +401,7 @@ impl MiniblockSealCommand { let progress = MINIBLOCK_METRICS.start(MiniblockSealStage::InsertL2ToL1Logs, is_fictive); transaction .events_dal() - .save_l2_to_l1_logs(miniblock_number, &user_l2_to_l1_logs) + .save_user_l2_to_l1_logs(miniblock_number, &user_l2_to_l1_logs) .await; progress.observe(user_l2_to_l1_log_count); @@ -540,18 +542,18 @@ impl MiniblockSealCommand { fn extract_system_l2_to_l1_logs( &self, is_fictive: bool, - ) -> Vec<(IncludedTxLocation, Vec<&L2ToL1Log>)> { + ) -> Vec<(IncludedTxLocation, Vec<&SystemL2ToL1Log>)> { self.group_by_tx_location(&self.miniblock.system_l2_to_l1_logs, is_fictive, |log| { - u32::from(log.tx_number_in_block) + u32::from(log.0.tx_number_in_block) }) } fn extract_user_l2_to_l1_logs( &self, is_fictive: bool, - ) -> Vec<(IncludedTxLocation, Vec<&L2ToL1Log>)> { + ) -> Vec<(IncludedTxLocation, Vec<&UserL2ToL1Log>)> { self.group_by_tx_location(&self.miniblock.user_l2_to_l1_logs, is_fictive, |log| { - u32::from(log.tx_number_in_block) + u32::from(log.0.tx_number_in_block) }) } diff --git a/core/lib/zksync_core/src/state_keeper/updates/miniblock_updates.rs b/core/lib/zksync_core/src/state_keeper/updates/miniblock_updates.rs index 128832decb8..fb4dfd0c73f 100644 --- a/core/lib/zksync_core/src/state_keeper/updates/miniblock_updates.rs +++ b/core/lib/zksync_core/src/state_keeper/updates/miniblock_updates.rs @@ -1,6 +1,7 @@ use multivm::interface::{ExecutionResult, L2BlockEnv, VmExecutionResultAndLogs}; use multivm::vm_latest::TransactionVmExt; use std::collections::HashMap; +use zksync_types::l2_to_l1_log::{SystemL2ToL1Log, UserL2ToL1Log}; use zksync_types::{ block::{legacy_miniblock_hash, miniblock_hash, BlockGasCount}, @@ -19,8 +20,8 @@ pub struct MiniblockUpdates { pub executed_transactions: Vec, pub events: Vec, pub storage_logs: Vec, - pub user_l2_to_l1_logs: Vec, - pub system_l2_to_l1_logs: Vec, + pub user_l2_to_l1_logs: Vec, + pub system_l2_to_l1_logs: Vec, pub new_factory_deps: HashMap>, /// How much L1 gas will it take to submit this block? pub l1_gas_count: BlockGasCount, From c16a222d738f9a51982b186f263748082ed97567 Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Mon, 6 Nov 2023 11:58:10 +0100 Subject: [PATCH 090/108] fix errors --- .../src/interface/types/errors/bootloader_error.rs | 10 +++++----- etc/system-contracts | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/core/lib/multivm/src/interface/types/errors/bootloader_error.rs b/core/lib/multivm/src/interface/types/errors/bootloader_error.rs index b9fa3199e27..0f0e1440866 100644 --- a/core/lib/multivm/src/interface/types/errors/bootloader_error.rs +++ b/core/lib/multivm/src/interface/types/errors/bootloader_error.rs @@ -27,10 +27,10 @@ pub(crate) enum BootloaderErrorCode { MintEtherFailed, FailedToAppendTransactionToL2Block, FailedToSetL2Block, + FailedToPublishTimestampDataToL1, L1MessengerPublishingFailed, L1MessengerLogSendingFailed, FailedToCallSystemContext, - FailedToPublishTimestampDataToL1, Unknown, } @@ -63,10 +63,10 @@ impl From for BootloaderErrorCode { 23 => BootloaderErrorCode::MintEtherFailed, 24 => BootloaderErrorCode::FailedToAppendTransactionToL2Block, 25 => BootloaderErrorCode::FailedToSetL2Block, - 26 => BootloaderErrorCode::L1MessengerPublishingFailed, - 27 => BootloaderErrorCode::L1MessengerLogSendingFailed, - 28 => BootloaderErrorCode::FailedToCallSystemContext, - 29 => BootloaderErrorCode::FailedToPublishTimestampDataToL1, + 26 => BootloaderErrorCode::FailedToPublishTimestampDataToL1, + 27 => BootloaderErrorCode::L1MessengerPublishingFailed, + 28 => BootloaderErrorCode::L1MessengerLogSendingFailed, + 29 => BootloaderErrorCode::FailedToCallSystemContext, _ => BootloaderErrorCode::Unknown, } } diff --git a/etc/system-contracts b/etc/system-contracts index 8f09d7be4f3..de597eddb79 160000 --- a/etc/system-contracts +++ b/etc/system-contracts @@ -1 +1 @@ -Subproject commit 8f09d7be4f3b67fe8232037daad839d244ed176e +Subproject commit de597eddb79491bb22bb237b8bcc4afea8cda26f From 4a77b9cdf5f1bafef64ee85808cfc1cdd748ac6c Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Mon, 6 Nov 2023 12:00:15 +0100 Subject: [PATCH 091/108] add unit test for pubdata --- .../vm_latest/types/internals/pubdata.rs | 61 +++++++++++++++++++ core/lib/types/src/event.rs | 12 ++-- 2 files changed, 67 insertions(+), 6 deletions(-) diff --git a/core/lib/multivm/src/versions/vm_latest/types/internals/pubdata.rs b/core/lib/multivm/src/versions/vm_latest/types/internals/pubdata.rs index fb293549f43..dff8d621dbb 100644 --- a/core/lib/multivm/src/versions/vm_latest/types/internals/pubdata.rs +++ b/core/lib/multivm/src/versions/vm_latest/types/internals/pubdata.rs @@ -71,3 +71,64 @@ impl PubdataInput { l1_messenger_abi_encoded_pubdata[32..].to_vec() } } + +#[cfg(test)] +mod tests { + use zksync_system_constants::{ACCOUNT_CODE_STORAGE_ADDRESS, BOOTLOADER_ADDRESS}; + use zksync_types::{Address, U256}; + use zksync_utils::u256_to_h256; + + use super::*; + + #[test] + fn test_basic_pubdata_building() { + // Just using some constant addresses for tests + let addr1 = BOOTLOADER_ADDRESS; + let addr2 = ACCOUNT_CODE_STORAGE_ADDRESS; + + let user_logs = vec![L1MessengerL2ToL1Log { + l2_shard_id: 0, + is_service: false, + tx_number_in_block: 0, + sender: addr1, + key: 1.into(), + value: 128.into(), + }]; + + let l2_to_l1_messages = vec![hex::decode("deadbeef").unwrap()]; + + let published_bytecodes = vec![hex::decode("aaaabbbb").unwrap()]; + + // For covering more cases, we have two state diffs: + // One with enumeration index present (and so it is a repeated write) and the one without it. + let state_diffs = vec![ + StateDiffRecord { + address: addr2, + key: 155.into(), + derived_key: u256_to_h256(125.into()).0, + enumeration_index: 12, + initial_value: 11.into(), + final_value: 12.into(), + }, + StateDiffRecord { + address: addr2, + key: 156.into(), + derived_key: u256_to_h256(126.into()).0, + enumeration_index: 0, + initial_value: 0.into(), + final_value: 14.into(), + }, + ]; + + let input = PubdataInput { + user_logs, + l2_to_l1_messages, + published_bytecodes, + state_diffs, + }; + + let pubdata = input.build_pubdata(); + + assert_eq!(hex::encode(pubdata), "00000000000000000000000000000000000000000000000000000000000002c700000001000000000000000000000000000000000000000000008001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000100000004deadbeef0000000100000004aaaabbbb0100002a040001000000000000000000000000000000000000000000000000000000000000007e090e0000000c0901000000020000000000000000000000000000000000008002000000000000000000000000000000000000000000000000000000000000009b000000000000000000000000000000000000000000000000000000000000007d000000000000000c000000000000000000000000000000000000000000000000000000000000000b000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008002000000000000000000000000000000000000000000000000000000000000009c000000000000000000000000000000000000000000000000000000000000007e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"); + } +} diff --git a/core/lib/types/src/event.rs b/core/lib/types/src/event.rs index fccd5a43ac2..c901ac8b0f4 100644 --- a/core/lib/types/src/event.rs +++ b/core/lib/types/src/event.rs @@ -66,12 +66,12 @@ static L1_MESSAGE_EVENT_SIGNATURE: Lazy = Lazy::new(|| { /// ``` #[derive(Debug, Default, Clone, PartialEq)] pub struct L1MessengerL2ToL1Log { - l2_shard_id: u8, - is_service: bool, - tx_number_in_block: u16, - sender: Address, - key: U256, - value: U256, + pub l2_shard_id: u8, + pub is_service: bool, + pub tx_number_in_block: u16, + pub sender: Address, + pub key: U256, + pub value: U256, } impl L1MessengerL2ToL1Log { From 8e06c95d2e9e9f72401d3c0f92ddabdc5413a3e6 Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Mon, 6 Nov 2023 12:07:38 +0100 Subject: [PATCH 092/108] do not override old api bootloader --- .../fee_estimate.yul/fee_estimate.yul.zbin | Bin 75872 -> 73056 bytes .../gas_test.yul/gas_test.yul.zbin | Bin 74976 -> 69600 bytes .../playground_batch.yul.zbin | Bin 76192 -> 73440 bytes .../proved_batch.yul/proved_batch.yul.zbin | Bin 75808 -> 70496 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/etc/multivm_bootloaders/vm_virtual_blocks_finish_upgrade_fix/fee_estimate.yul/fee_estimate.yul.zbin b/etc/multivm_bootloaders/vm_virtual_blocks_finish_upgrade_fix/fee_estimate.yul/fee_estimate.yul.zbin index b0de84dc0764533bed94fa03e133423b93167360..51ceb18a6876a76475e20ac18ede2e5f42476b86 100644 GIT binary patch literal 73056 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 F|9{#4Jv9IT literal 75872 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 ZKJwUYKYQeyg}Z+jobi>8C-!9@{r`*d%^m;% diff --git a/etc/multivm_bootloaders/vm_virtual_blocks_finish_upgrade_fix/gas_test.yul/gas_test.yul.zbin b/etc/multivm_bootloaders/vm_virtual_blocks_finish_upgrade_fix/gas_test.yul/gas_test.yul.zbin index ed145c83b18f0f05bfc7ce2b625a72a996a9bc8a..95ad9499e13fda938ddf67980ff4a7b155f0a8fb 100644 GIT binary patch literal 69600 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 z zw@&+GwVRuci)vTsxajJMeSH%!w5t9}`$_|QCaUw#z@D)&kZk?F(bB*~X|R9aMccLk z(_w!T`_>gFiiw9|DfaaD1%s#%jBvAHXq-6#eGW(;>%kX;L&Mv(LZs!CKkLb%WP?ie zr#uVCCn%FW;65xLAKE@#oY*s#Kvh`2tvE0-GPZwRX%zlb`G-BNn!lYRqczLJ{zr@Z zcNMXG#x58h-BZSYSUy%7FOBUj4X)ciT--G@U_0Gf91OPZpD2w7CB?KYk?Y`9wZ|X4 zsuEVpeONhF@oFY7tN7eLG?P~kj|@Mjv}<%?e^7Y>wrb_8F_oX&r^X4<2EGffD2)x5 zb_V04#eoDF%M*(J1#YoWbq9bnxT-WZ60HFKxS(&whfJqm!(LgLG({&_R;8V^6&I#K5B}! z#Y64&`5zyioEVuX?p#YM`=Y(2u^px2V0@HfD9Pf_?cIpB+AuQKJ2W=1XJ{fOeoeAJ z+iqG{Z~IWB|Ba>L?Grl^4I|}Sc8*NN=)}H$njyr%#-Uw9Q_IInyY~!@l?E%%-k1>x zk0KO{Eyq0j$BM(_&^ALO!^VLAYfIZk#!7u-C6Yn%v<#$YMPZfewkvBZp!0jSoPXIx z8#ZiN-(T)D^4Gea{+`P=uD|fS{_`VG%YP=FmvV{xwR2Ulqd1<#YPnX==xAw}4FoVQ ztUSAVY>n)9Hoe^bJ=B z#M#04o`HeVxLt))%j0<7HGD0#HYh_lJP(%0 z3j!cACWrYvd2BjZD``~zrm05B5l9Jw-5ZKO8(%)UDK+g;il>22zt7peSv z=6GO5Ekm(mXgdpy;?}8cqED>c45$I@u!$YT;V2Sz){s5a&-jko?&-wnP!t`}q51Fe zvMD~Lj2`U1a(7JzD~|80*v>v2e)5mc{^)*+@B4U#_)*%nrK{x!(kqolLb>RdONu*(ASS0}H|qfZ{>YzwCC1Frf%Wh4;@(pK zzVo31O5?<-RvN?R-Ag0#KNz-W?FAKD8#6S{fK@D`hk&2tGp1L00@^zpdj?c>?@k1E$pmFM>H#lu$&k6bw%kaetR*AoaGH|@M`)-QkHN}f5);9mlXdM9`#vejQFg}g2d{=QF9G8)?p^5#7 zSHfojN1$r7Jo?=B5|(2jmmQt8h-io!ij2 zx$T71As3Vbml7=_Lsu02i=Vmofv~gb{SlMz3LnA`G|bd7Xd}7S5BB!9;?P)mW+CTE ztBtFw7IB3w6U8xhu*-rrHr(H~eYrjMAaN6$Ornf#hadWSP~ma-XmqUf938q$l(4k+ zAHlQ#@jH}wQ0qr^YLz4YS)Mtz33iR{EJc;*&SD({sz&GUy?*HrY7`sybu0faSE~Zb zs7|dal!#pG*H)_#Wi^Rgr|rW(Ui@vZPMzI#>?7nn)cmREh2;lMpO~tu|M1~QsynAO zdp71n#xDUxR^J-q9zo@o)O_Mk%gBC{WEC$c3)Z3z_DXSA>ERjDT)meN&ze9J$Of#-v%cn|yXJ?J_I6dW$WQCJu5`CL9!+kYImqBe_-Tm29XG?&4v`PZWh_dcT-azf>*b>d&Y ztlTR13i~_?RwA^)RXS|ND%WBy;-L+B)Vqqq`>}9%|A+(aRr;#*_|Wq%dg;YKeCM%m hzr1(N=iJZt-f-lBjm4|Z`{K{efBQ?f{o6yY`2YM3C1(Ht literal 74976 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 diff --git a/etc/multivm_bootloaders/vm_virtual_blocks_finish_upgrade_fix/playground_batch.yul/playground_batch.yul.zbin b/etc/multivm_bootloaders/vm_virtual_blocks_finish_upgrade_fix/playground_batch.yul/playground_batch.yul.zbin index 1c67a2941abbf53d53b7c27aaa9a3f38ef590a5b..5fb13eaf859be63622a2fdeeba852199fda722ae 100644 GIT binary patch literal 73440 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 literal 76192 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 E|3}7Kk7Lwg% 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 literal 75808 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 From 78342c25c546c4b78a16e8d21756ef6aef358991 Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Mon, 6 Nov 2023 12:19:45 +0100 Subject: [PATCH 093/108] use static dispatch --- .../vm_latest/implementation/execution.rs | 2 +- .../vm_latest/tracers/default_tracers.rs | 29 ++++++++++++++++++- .../vm_latest/tracers/pubdata_tracer.rs | 15 +++++----- .../vm_latest/types/internals/pubdata.rs | 1 - 4 files changed, 37 insertions(+), 10 deletions(-) diff --git a/core/lib/multivm/src/versions/vm_latest/implementation/execution.rs b/core/lib/multivm/src/versions/vm_latest/implementation/execution.rs index 8db69c6c4b8..9950706115c 100644 --- a/core/lib/multivm/src/versions/vm_latest/implementation/execution.rs +++ b/core/lib/multivm/src/versions/vm_latest/implementation/execution.rs @@ -26,7 +26,6 @@ impl Vm { self.bootloader_state.move_tx_to_execute_pointer(); enable_refund_tracer = true; } - tracers.push(PubdataTracer::new(self.batch_env.clone(), execution_mode).into_boxed()); let (_, result) = self.inspect_and_collect_results(tracers, execution_mode, enable_refund_tracer); @@ -49,6 +48,7 @@ impl Vm { tracers, self.storage.clone(), refund_tracers, + Some(PubdataTracer::new(self.batch_env.clone(), execution_mode)), ); let timestamp_initial = Timestamp(self.state.local_state.timestamp); diff --git a/core/lib/multivm/src/versions/vm_latest/tracers/default_tracers.rs b/core/lib/multivm/src/versions/vm_latest/tracers/default_tracers.rs index 3b6d0ac2e25..32155b7d1b4 100644 --- a/core/lib/multivm/src/versions/vm_latest/tracers/default_tracers.rs +++ b/core/lib/multivm/src/versions/vm_latest/tracers/default_tracers.rs @@ -28,6 +28,8 @@ use crate::vm_latest::tracers::{RefundsTracer, ResultTracer}; use crate::vm_latest::types::internals::ZkSyncVmState; use crate::vm_latest::VmExecutionStopReason; +use super::PubdataTracer; + /// Default tracer for the VM. It manages the other tracers execution and stop the vm when needed. pub(crate) struct DefaultExecutionTracer { tx_has_been_processed: bool, @@ -45,6 +47,10 @@ pub(crate) struct DefaultExecutionTracer { // ensures static dispatch, enhancing performance by avoiding dynamic dispatch overhead. // Additionally, being an internal tracer, it saves the results directly to VmResultAndLogs. pub(crate) refund_tracer: Option, + // The pubdata tracer is responsible for inserting the pubdata packing information into the bootloader + // memory at the end of the batch. Its separation from the custom tracer + // ensures static dispatch, enhancing performance by avoiding dynamic dispatch overhead. + pub(crate) pubdata_tracer: Option, pub(crate) custom_tracers: Vec>>, ret_from_the_bootloader: Option, storage: StoragePtr, @@ -86,7 +92,9 @@ impl Tracer for DefaultExecutionTracer { if let Some(refund_tracer) = &mut self.refund_tracer { >::after_decoding(refund_tracer, state, data, memory); } - + if let Some(pubdata_tracer) = &mut self.pubdata_tracer { + >::after_decoding(pubdata_tracer, state, data, memory); + } for tracer in self.custom_tracers.iter_mut() { tracer.after_decoding(state, data, memory) } @@ -123,6 +131,9 @@ impl Tracer for DefaultExecutionTracer { if let Some(refund_tracer) = &mut self.refund_tracer { refund_tracer.before_execution(state, data, memory, self.storage.clone()); } + if let Some(pubdata_tracer) = &mut self.pubdata_tracer { + pubdata_tracer.before_execution(state, data, memory, self.storage.clone()); + } for tracer in self.custom_tracers.iter_mut() { tracer.before_execution(state, data, memory, self.storage.clone()); } @@ -153,6 +164,9 @@ impl Tracer for DefaultExecutionTracer { if let Some(refund_tracer) = &mut self.refund_tracer { refund_tracer.after_execution(state, data, memory, self.storage.clone()) } + if let Some(pubdata_tracer) = &mut self.pubdata_tracer { + pubdata_tracer.after_execution(state, data, memory, self.storage.clone()) + } for tracer in self.custom_tracers.iter_mut() { tracer.after_execution(state, data, memory, self.storage.clone()); } @@ -166,6 +180,7 @@ impl DefaultExecutionTracer { custom_tracers: Vec>>, storage: StoragePtr, refund_tracer: Option, + pubdata_tracer: Option, ) -> Self { Self { tx_has_been_processed: false, @@ -177,6 +192,7 @@ impl DefaultExecutionTracer { final_batch_info_requested: false, result_tracer: ResultTracer::new(execution_mode), refund_tracer, + pubdata_tracer, custom_tracers, ret_from_the_bootloader: None, storage, @@ -238,6 +254,9 @@ impl VmTracer for DefaultExecutionTracer< if let Some(refund_tracer) = &mut self.refund_tracer { refund_tracer.initialize_tracer(state); } + if let Some(pubdata_tracer) = &mut self.pubdata_tracer { + pubdata_tracer.initialize_tracer(state); + } for processor in self.custom_tracers.iter_mut() { processor.initialize_tracer(state); } @@ -258,6 +277,11 @@ impl VmTracer for DefaultExecutionTracer< .finish_cycle(state, bootloader_state) .stricter(&result); } + if let Some(pubdata_tracer) = &mut self.pubdata_tracer { + result = pubdata_tracer + .finish_cycle(state, bootloader_state) + .stricter(&result); + } for processor in self.custom_tracers.iter_mut() { result = processor .finish_cycle(state, bootloader_state) @@ -278,6 +302,9 @@ impl VmTracer for DefaultExecutionTracer< if let Some(refund_tracer) = &mut self.refund_tracer { refund_tracer.after_vm_execution(state, bootloader_state, stop_reason.clone()); } + if let Some(pubdata_tracer) = &mut self.pubdata_tracer { + pubdata_tracer.after_vm_execution(state, bootloader_state, stop_reason.clone()); + } for processor in self.custom_tracers.iter_mut() { processor.after_vm_execution(state, bootloader_state, stop_reason.clone()); } diff --git a/core/lib/multivm/src/versions/vm_latest/tracers/pubdata_tracer.rs b/core/lib/multivm/src/versions/vm_latest/tracers/pubdata_tracer.rs index 85fde6d0cd4..b43c96cb912 100644 --- a/core/lib/multivm/src/versions/vm_latest/tracers/pubdata_tracer.rs +++ b/core/lib/multivm/src/versions/vm_latest/tracers/pubdata_tracer.rs @@ -16,11 +16,14 @@ use zksync_types::{ use zksync_utils::u256_to_h256; use zksync_utils::{h256_to_u256, u256_to_bytes_be}; -use crate::vm_latest::{constants::BOOTLOADER_HEAP_PAGE, TracerExecutionStatus}; use crate::vm_latest::{ old_vm::{history_recorder::HistoryMode, memory::SimpleMemory}, types::internals::pubdata::PubdataInput, }; +use crate::{ + vm_latest::StorageOracle, + vm_latest::{constants::BOOTLOADER_HEAP_PAGE, TracerExecutionStatus}, +}; use crate::interface::types::inputs::L1BatchEnv; use crate::vm_latest::tracers::{ @@ -116,11 +119,10 @@ impl PubdataTracer { // Packs part of L1Messenger total pubdata that corresponds to // State diffs needed to be published on L1 fn get_state_diffs( - state: &ZkSyncVmState, + storage: &StorageOracle, ) -> Vec { sort_storage_access_queries( - state - .storage + storage .storage_log_queries_after_timestamp(Timestamp(0)) .iter() .map(|log| &log.log_query), @@ -134,8 +136,7 @@ impl PubdataTracer { address: log.address, key: log.key, derived_key: log.derive_final_address(), - enumeration_index: state - .storage + enumeration_index: storage .storage .get_ptr() .borrow_mut() @@ -158,7 +159,7 @@ impl PubdataTracer { user_logs: self.get_total_user_logs(state), l2_to_l1_messages: self.get_total_l1_messenger_messages(state), published_bytecodes: self.get_total_published_bytecodes(state), - state_diffs: Self::get_state_diffs(state), + state_diffs: Self::get_state_diffs(&state.storage), } } } diff --git a/core/lib/multivm/src/versions/vm_latest/types/internals/pubdata.rs b/core/lib/multivm/src/versions/vm_latest/types/internals/pubdata.rs index dff8d621dbb..e246bceeac5 100644 --- a/core/lib/multivm/src/versions/vm_latest/types/internals/pubdata.rs +++ b/core/lib/multivm/src/versions/vm_latest/types/internals/pubdata.rs @@ -75,7 +75,6 @@ impl PubdataInput { #[cfg(test)] mod tests { use zksync_system_constants::{ACCOUNT_CODE_STORAGE_ADDRESS, BOOTLOADER_ADDRESS}; - use zksync_types::{Address, U256}; use zksync_utils::u256_to_h256; use super::*; From f01187cbc7891a2949da023ecf01a24a5499e041 Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Mon, 6 Nov 2023 12:27:40 +0100 Subject: [PATCH 094/108] fix lint --- .../multivm/src/interface/types/outputs/execution_result.rs | 2 +- .../multivm/src/versions/vm_latest/implementation/execution.rs | 3 +-- core/lib/zksync_core/src/state_keeper/io/seal_logic.rs | 1 - .../zksync_core/src/state_keeper/updates/miniblock_updates.rs | 1 - 4 files changed, 2 insertions(+), 5 deletions(-) diff --git a/core/lib/multivm/src/interface/types/outputs/execution_result.rs b/core/lib/multivm/src/interface/types/outputs/execution_result.rs index 0b031f9d651..3181a94a9da 100644 --- a/core/lib/multivm/src/interface/types/outputs/execution_result.rs +++ b/core/lib/multivm/src/interface/types/outputs/execution_result.rs @@ -1,7 +1,7 @@ use crate::interface::{Halt, VmExecutionStatistics, VmRevertReason}; use zksync_system_constants::PUBLISH_BYTECODE_OVERHEAD; use zksync_types::event::{extract_long_l2_to_l1_messages, extract_published_bytecodes}; -use zksync_types::l2_to_l1_log::{L2ToL1Log, SystemL2ToL1Log, UserL2ToL1Log}; +use zksync_types::l2_to_l1_log::{SystemL2ToL1Log, UserL2ToL1Log}; use zksync_types::tx::ExecutionMetrics; use zksync_types::{StorageLogQuery, Transaction, VmEvent}; use zksync_utils::bytecode::bytecode_len_in_bytes; diff --git a/core/lib/multivm/src/versions/vm_latest/implementation/execution.rs b/core/lib/multivm/src/versions/vm_latest/implementation/execution.rs index 9950706115c..e14103b8074 100644 --- a/core/lib/multivm/src/versions/vm_latest/implementation/execution.rs +++ b/core/lib/multivm/src/versions/vm_latest/implementation/execution.rs @@ -2,7 +2,6 @@ use zk_evm_1_4_0::aux_structures::Timestamp; use zksync_state::WriteStorage; use crate::interface::{VmExecutionMode, VmExecutionResultAndLogs}; -use crate::versions::vm_latest::tracers::traits::BoxedTracer; use crate::vm_latest::old_vm::{ history_recorder::HistoryMode, utils::{vm_may_have_ended_inner, VmExecutionResult}, @@ -17,7 +16,7 @@ use crate::vm_latest::VmExecutionStopReason; impl Vm { pub(crate) fn inspect_inner( &mut self, - mut tracers: Vec>>, + tracers: Vec>>, execution_mode: VmExecutionMode, ) -> VmExecutionResultAndLogs { let mut enable_refund_tracer = false; diff --git a/core/lib/zksync_core/src/state_keeper/io/seal_logic.rs b/core/lib/zksync_core/src/state_keeper/io/seal_logic.rs index 757670d069a..ca2dc641909 100644 --- a/core/lib/zksync_core/src/state_keeper/io/seal_logic.rs +++ b/core/lib/zksync_core/src/state_keeper/io/seal_logic.rs @@ -18,7 +18,6 @@ use zksync_types::{ use zksync_types::{ block::{L1BatchHeader, MiniblockHeader}, event::{extract_added_tokens, extract_long_l2_to_l1_messages}, - l2_to_l1_log::L2ToL1Log, storage_writes_deduplicator::{ModifiedSlot, StorageWritesDeduplicator}, tx::{ tx_execution_info::DeduplicatedWritesMetrics, IncludedTxLocation, diff --git a/core/lib/zksync_core/src/state_keeper/updates/miniblock_updates.rs b/core/lib/zksync_core/src/state_keeper/updates/miniblock_updates.rs index fb4dfd0c73f..d0a4f035f51 100644 --- a/core/lib/zksync_core/src/state_keeper/updates/miniblock_updates.rs +++ b/core/lib/zksync_core/src/state_keeper/updates/miniblock_updates.rs @@ -6,7 +6,6 @@ use zksync_types::l2_to_l1_log::{SystemL2ToL1Log, UserL2ToL1Log}; use zksync_types::{ block::{legacy_miniblock_hash, miniblock_hash, BlockGasCount}, event::extract_bytecodes_marked_as_known, - l2_to_l1_log::L2ToL1Log, tx::tx_execution_info::TxExecutionStatus, tx::{ExecutionMetrics, TransactionExecutionResult}, vm_trace::Call, From f14e7b53b6d1c5f67fc2619a3596fa507a741a98 Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Mon, 6 Nov 2023 12:48:46 +0100 Subject: [PATCH 095/108] panic formatting --- .../zksync_core/src/proof_data_handler/request_processor.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/core/lib/zksync_core/src/proof_data_handler/request_processor.rs b/core/lib/zksync_core/src/proof_data_handler/request_processor.rs index 259bdec0a40..1980cc10402 100644 --- a/core/lib/zksync_core/src/proof_data_handler/request_processor.rs +++ b/core/lib/zksync_core/src/proof_data_handler/request_processor.rs @@ -188,7 +188,10 @@ impl RequestProcessor { { let server_values = format!("{system_logs_hash} {state_diff_hash} {events_queue_state} {bootloader_heap_initial_content}"); let prover_values = format!("{system_logs_hash_from_prover} {state_diff_hash_from_prover} {events_queue_state_from_prover} {bootloader_heap_initial_content_from_prover}"); - tracing::error!("Auxilary output doesn't match, server values: {server_values} prover values: {prover_values}"); + panic!( + "Auxilary output doesn't match, server values: {} prover values: {}", + server_values, prover_values + ); } storage .proof_generation_dal() From d0ebfea33267ebc5a9100e30e2e718aa81b11aa2 Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Mon, 6 Nov 2023 12:52:34 +0100 Subject: [PATCH 096/108] enum for prover at genesis --- core/lib/config/src/configs/contracts.rs | 11 +++- core/lib/zksync_core/src/lib.rs | 75 ++++++++++++------------ 2 files changed, 48 insertions(+), 38 deletions(-) diff --git a/core/lib/config/src/configs/contracts.rs b/core/lib/config/src/configs/contracts.rs index 1ae5e327ff2..5980a165cfe 100644 --- a/core/lib/config/src/configs/contracts.rs +++ b/core/lib/config/src/configs/contracts.rs @@ -5,6 +5,13 @@ use zksync_basic_types::{Address, H256}; // Local uses use super::envy_load; +#[derive(Debug, Deserialize, Clone, PartialEq)] +#[serde(rename_all = "lowercase")] +pub enum ProverAtGenesis { + Fri, + Old, +} + /// Data about deployed contracts. #[derive(Debug, Deserialize, Clone, PartialEq)] pub struct ContractsConfig { @@ -34,7 +41,7 @@ pub struct ContractsConfig { pub fri_recursion_scheduler_level_vk_hash: H256, pub fri_recursion_node_level_vk_hash: H256, pub fri_recursion_leaf_level_vk_hash: H256, - pub prover_at_genesis: String, + pub prover_at_genesis: ProverAtGenesis, pub snark_wrapper_vk_hash: H256, } @@ -95,7 +102,7 @@ mod tests { fri_recursion_leaf_level_vk_hash: hash( "0x72167c43a46cf38875b267d67716edc4563861364a3c03ab7aee73498421e828", ), - prover_at_genesis: "fri".to_string(), + prover_at_genesis: ProverAtGenesis::Fri, snark_wrapper_vk_hash: hash( "0x4be443afd605a782b6e56d199df2460a025c81b3dea144e135bece83612563f2", ), diff --git a/core/lib/zksync_core/src/lib.rs b/core/lib/zksync_core/src/lib.rs index e5511005085..5078d1c251c 100644 --- a/core/lib/zksync_core/src/lib.rs +++ b/core/lib/zksync_core/src/lib.rs @@ -129,45 +129,48 @@ pub async fn genesis_init( // Select the first prover to be used during genesis. // Later we can change provers using the system upgrades, but for genesis // we should select one using the environment config. - let first_l1_verifier_config = if contracts_config.prover_at_genesis == "fri" { - let l1_verifier_config = L1VerifierConfig { - params: VerifierParams { - recursion_node_level_vk_hash: contracts_config.fri_recursion_node_level_vk_hash, - recursion_leaf_level_vk_hash: contracts_config.fri_recursion_leaf_level_vk_hash, - recursion_circuits_set_vks_hash: zksync_types::H256::zero(), - }, - recursion_scheduler_level_vk_hash: contracts_config.snark_wrapper_vk_hash, - }; + let first_l1_verifier_config = + if matches!(contracts_config.prover_at_genesis, ProverAtGenesis::Fri) { + let l1_verifier_config = L1VerifierConfig { + params: VerifierParams { + recursion_node_level_vk_hash: contracts_config.fri_recursion_node_level_vk_hash, + recursion_leaf_level_vk_hash: contracts_config.fri_recursion_leaf_level_vk_hash, + recursion_circuits_set_vks_hash: zksync_types::H256::zero(), + }, + recursion_scheduler_level_vk_hash: contracts_config.snark_wrapper_vk_hash, + }; - let eth_client = QueryClient::new(eth_client_url)?; - let vk_hash: zksync_types::H256 = eth_client - .call_contract_function( - "verificationKeyHash", - (), - None, - Default::default(), - None, - contracts_config.verifier_addr, - zksync_contracts::verifier_contract(), - ) - .await?; + let eth_client = QueryClient::new(eth_client_url)?; + let vk_hash: zksync_types::H256 = eth_client + .call_contract_function( + "verificationKeyHash", + (), + None, + Default::default(), + None, + contracts_config.verifier_addr, + zksync_contracts::verifier_contract(), + ) + .await?; - assert_eq!( - vk_hash, l1_verifier_config.recursion_scheduler_level_vk_hash, - "L1 verifier key does not match the one in the config" - ); + assert_eq!( + vk_hash, l1_verifier_config.recursion_scheduler_level_vk_hash, + "L1 verifier key does not match the one in the config" + ); - l1_verifier_config - } else { - L1VerifierConfig { - params: VerifierParams { - recursion_node_level_vk_hash: contracts_config.recursion_node_level_vk_hash, - recursion_leaf_level_vk_hash: contracts_config.recursion_leaf_level_vk_hash, - recursion_circuits_set_vks_hash: contracts_config.recursion_circuits_set_vks_hash, - }, - recursion_scheduler_level_vk_hash: contracts_config.recursion_scheduler_level_vk_hash, - } - }; + l1_verifier_config + } else { + L1VerifierConfig { + params: VerifierParams { + recursion_node_level_vk_hash: contracts_config.recursion_node_level_vk_hash, + recursion_leaf_level_vk_hash: contracts_config.recursion_leaf_level_vk_hash, + recursion_circuits_set_vks_hash: contracts_config + .recursion_circuits_set_vks_hash, + }, + recursion_scheduler_level_vk_hash: contracts_config + .recursion_scheduler_level_vk_hash, + } + }; genesis::ensure_genesis_state( &mut storage, From e7879b0f99a0d3dbdca9e7f3ed58c492e9839148 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cperekopskiy=E2=80=9D?= Date: Mon, 6 Nov 2023 14:34:43 +0200 Subject: [PATCH 097/108] Some fixes --- Cargo.lock | 1 - core/lib/contracts/src/lib.rs | 172 ++++++ ...m_logs_and_compressed_state_diffs.down.sql | 5 - ...tem_logs_and_compressed_state_diffs.up.sql | 6 - core/lib/dal/sqlx-data.json | 503 +++++++++--------- core/lib/dal/src/blocks_dal.rs | 9 +- core/lib/state/src/rocksdb/mod.rs | 16 +- core/lib/types/src/commitment.rs | 2 +- core/lib/types/src/fee.rs | 3 +- core/lib/types/src/l2_to_l1_log.rs | 5 +- core/lib/types/src/tx/tx_execution_info.rs | 19 +- core/lib/zksync_core/Cargo.toml | 2 - .../src/api_server/tx_sender/mod.rs | 2 +- .../src/api_server/web3/namespaces/zks.rs | 2 +- .../lib/zksync_core/src/block_reverter/mod.rs | 6 +- .../src/eth_sender/eth_tx_aggregator.rs | 2 +- .../src/eth_sender/zksync_functions.rs | 7 +- .../eth_watch/event_processors/upgrades.rs | 205 +------ core/lib/zksync_core/src/eth_watch/tests.rs | 7 +- core/lib/zksync_core/src/gas_tracker/mod.rs | 16 +- .../zksync_core/src/state_keeper/keeper.rs | 8 +- .../seal_criteria/criteria/pubdata_bytes.rs | 7 +- .../src/state_keeper/seal_criteria/mod.rs | 3 +- .../cross-external-nodes-checker/Dockerfile | 4 - 24 files changed, 495 insertions(+), 517 deletions(-) delete mode 100644 core/lib/dal/migrations/20230807204005_add_fields_for_system_logs_and_compressed_state_diffs.down.sql delete mode 100644 core/lib/dal/migrations/20230807204005_add_fields_for_system_logs_and_compressed_state_diffs.up.sql diff --git a/Cargo.lock b/Cargo.lock index caace59cdda..066196eac13 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8033,7 +8033,6 @@ dependencies = [ "tracing", "vise", "vlog", - "zkevm_test_harness 1.4.0", "zksync_circuit_breaker", "zksync_commitment_utils", "zksync_config", diff --git a/core/lib/contracts/src/lib.rs b/core/lib/contracts/src/lib.rs index 9e629b271b8..01dce6a98f9 100644 --- a/core/lib/contracts/src/lib.rs +++ b/core/lib/contracts/src/lib.rs @@ -716,3 +716,175 @@ pub static PRE_BOOJUM_EXECUTE_FUNCTION: Lazy = Lazy::new(|| { }"#; serde_json::from_str(abi).unwrap() }); + +pub static PRE_BOOJUM_GET_VK_FUNCTION: Lazy = Lazy::new(|| { + let abi = r#"{ + "inputs": [], + "name": "get_verification_key", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "domain_size", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "num_inputs", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "internalType": "struct PairingsBn254.Fr", + "name": "omega", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "X", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "Y", + "type": "uint256" + } + ], + "internalType": "struct PairingsBn254.G1Point[2]", + "name": "gate_selectors_commitments", + "type": "tuple[2]" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "X", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "Y", + "type": "uint256" + } + ], + "internalType": "struct PairingsBn254.G1Point[8]", + "name": "gate_setup_commitments", + "type": "tuple[8]" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "X", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "Y", + "type": "uint256" + } + ], + "internalType": "struct PairingsBn254.G1Point[4]", + "name": "permutation_commitments", + "type": "tuple[4]" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "X", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "Y", + "type": "uint256" + } + ], + "internalType": "struct PairingsBn254.G1Point", + "name": "lookup_selector_commitment", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "X", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "Y", + "type": "uint256" + } + ], + "internalType": "struct PairingsBn254.G1Point[4]", + "name": "lookup_tables_commitments", + "type": "tuple[4]" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "X", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "Y", + "type": "uint256" + } + ], + "internalType": "struct PairingsBn254.G1Point", + "name": "lookup_table_type_commitment", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "internalType": "struct PairingsBn254.Fr[3]", + "name": "non_residues", + "type": "tuple[3]" + }, + { + "components": [ + { + "internalType": "uint256[2]", + "name": "X", + "type": "uint256[2]" + }, + { + "internalType": "uint256[2]", + "name": "Y", + "type": "uint256[2]" + } + ], + "internalType": "struct PairingsBn254.G2Point[2]", + "name": "g2_elements", + "type": "tuple[2]" + } + ], + "internalType": "struct VerificationKey", + "name": "vk", + "type": "tuple" + } + ], + "stateMutability": "pure", + "type": "function" + }"#; + serde_json::from_str(abi).unwrap() +}); diff --git a/core/lib/dal/migrations/20230807204005_add_fields_for_system_logs_and_compressed_state_diffs.down.sql b/core/lib/dal/migrations/20230807204005_add_fields_for_system_logs_and_compressed_state_diffs.down.sql deleted file mode 100644 index 69df17ae9a7..00000000000 --- a/core/lib/dal/migrations/20230807204005_add_fields_for_system_logs_and_compressed_state_diffs.down.sql +++ /dev/null @@ -1,5 +0,0 @@ -ALTER TABLE l1_batches - DROP COLUMN IF EXISTS system_logs; - -ALTER TABLE l1_batches - DROP COLUMN IF EXISTS compressed_state_diffs; diff --git a/core/lib/dal/migrations/20230807204005_add_fields_for_system_logs_and_compressed_state_diffs.up.sql b/core/lib/dal/migrations/20230807204005_add_fields_for_system_logs_and_compressed_state_diffs.up.sql deleted file mode 100644 index d9b782b6f4d..00000000000 --- a/core/lib/dal/migrations/20230807204005_add_fields_for_system_logs_and_compressed_state_diffs.up.sql +++ /dev/null @@ -1,6 +0,0 @@ -ALTER TABLE l1_batches - ADD COLUMN IF NOT EXISTS system_logs BYTEA[] - NOT NULL DEFAULT '{}'; - -ALTER TABLE l1_batches - ADD COLUMN IF NOT EXISTS compressed_state_diffs BYTEA; diff --git a/core/lib/dal/sqlx-data.json b/core/lib/dal/sqlx-data.json index b8430e75217..bcd9a6ccf7d 100644 --- a/core/lib/dal/sqlx-data.json +++ b/core/lib/dal/sqlx-data.json @@ -692,6 +692,258 @@ }, "query": "SELECT l1_address FROM tokens WHERE market_volume > $1" }, + "15fa7f79b062dc622bbbcdb2a63f752dbd57cc0bf13b6c8452eb8914dc723d4b": { + "describe": { + "columns": [ + { + "name": "number", + "ordinal": 0, + "type_info": "Int8" + }, + { + "name": "timestamp", + "ordinal": 1, + "type_info": "Int8" + }, + { + "name": "is_finished", + "ordinal": 2, + "type_info": "Bool" + }, + { + "name": "l1_tx_count", + "ordinal": 3, + "type_info": "Int4" + }, + { + "name": "l2_tx_count", + "ordinal": 4, + "type_info": "Int4" + }, + { + "name": "fee_account_address", + "ordinal": 5, + "type_info": "Bytea" + }, + { + "name": "bloom", + "ordinal": 6, + "type_info": "Bytea" + }, + { + "name": "priority_ops_onchain_data", + "ordinal": 7, + "type_info": "ByteaArray" + }, + { + "name": "hash", + "ordinal": 8, + "type_info": "Bytea" + }, + { + "name": "parent_hash", + "ordinal": 9, + "type_info": "Bytea" + }, + { + "name": "commitment", + "ordinal": 10, + "type_info": "Bytea" + }, + { + "name": "compressed_write_logs", + "ordinal": 11, + "type_info": "Bytea" + }, + { + "name": "compressed_contracts", + "ordinal": 12, + "type_info": "Bytea" + }, + { + "name": "eth_prove_tx_id", + "ordinal": 13, + "type_info": "Int4" + }, + { + "name": "eth_commit_tx_id", + "ordinal": 14, + "type_info": "Int4" + }, + { + "name": "eth_execute_tx_id", + "ordinal": 15, + "type_info": "Int4" + }, + { + "name": "merkle_root_hash", + "ordinal": 16, + "type_info": "Bytea" + }, + { + "name": "l2_to_l1_logs", + "ordinal": 17, + "type_info": "ByteaArray" + }, + { + "name": "l2_to_l1_messages", + "ordinal": 18, + "type_info": "ByteaArray" + }, + { + "name": "used_contract_hashes", + "ordinal": 19, + "type_info": "Jsonb" + }, + { + "name": "compressed_initial_writes", + "ordinal": 20, + "type_info": "Bytea" + }, + { + "name": "compressed_repeated_writes", + "ordinal": 21, + "type_info": "Bytea" + }, + { + "name": "l2_l1_compressed_messages", + "ordinal": 22, + "type_info": "Bytea" + }, + { + "name": "l2_l1_merkle_root", + "ordinal": 23, + "type_info": "Bytea" + }, + { + "name": "l1_gas_price", + "ordinal": 24, + "type_info": "Int8" + }, + { + "name": "l2_fair_gas_price", + "ordinal": 25, + "type_info": "Int8" + }, + { + "name": "rollup_last_leaf_index", + "ordinal": 26, + "type_info": "Int8" + }, + { + "name": "zkporter_is_available", + "ordinal": 27, + "type_info": "Bool" + }, + { + "name": "bootloader_code_hash", + "ordinal": 28, + "type_info": "Bytea" + }, + { + "name": "default_aa_code_hash", + "ordinal": 29, + "type_info": "Bytea" + }, + { + "name": "base_fee_per_gas", + "ordinal": 30, + "type_info": "Numeric" + }, + { + "name": "aux_data_hash", + "ordinal": 31, + "type_info": "Bytea" + }, + { + "name": "pass_through_data_hash", + "ordinal": 32, + "type_info": "Bytea" + }, + { + "name": "meta_parameters_hash", + "ordinal": 33, + "type_info": "Bytea" + }, + { + "name": "protocol_version", + "ordinal": 34, + "type_info": "Int4" + }, + { + "name": "compressed_state_diffs", + "ordinal": 35, + "type_info": "Bytea" + }, + { + "name": "system_logs", + "ordinal": 36, + "type_info": "ByteaArray" + }, + { + "name": "events_queue_commitment", + "ordinal": 37, + "type_info": "Bytea" + }, + { + "name": "bootloader_initial_content_commitment", + "ordinal": 38, + "type_info": "Bytea" + } + ], + "nullable": [ + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + true, + true, + true, + true, + false, + false, + true, + true, + true, + true, + false, + true, + true, + true, + true, + true, + false, + true, + true + ], + "parameters": { + "Left": [ + "Bytea", + "Bytea", + "Int4", + "Bool", + "Int8" + ] + } + }, + "query": "SELECT number, l1_batches.timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, rollup_last_leaf_index, zkporter_is_available, l1_batches.bootloader_code_hash, l1_batches.default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, meta_parameters_hash, protocol_version, compressed_state_diffs, system_logs, events_queue_commitment, bootloader_initial_content_commitment FROM l1_batches LEFT JOIN commitments ON commitments.l1_batch_number = l1_batches.number JOIN protocol_versions ON protocol_versions.id = l1_batches.protocol_version WHERE eth_commit_tx_id IS NULL AND number != 0 AND protocol_versions.bootloader_code_hash = $1 AND protocol_versions.default_account_code_hash = $2 AND commitment IS NOT NULL AND (protocol_versions.id = $3 OR protocol_versions.upgrade_tx_hash IS NULL) AND (events_queue_commitment IS NOT NULL AND bootloader_initial_content_commitment IS NOT NULL\n OR $4 = FALSE\n )\n ORDER BY number LIMIT $5" + }, "17a42a97e87a675bd465103ebedc63d6d091e5bb093c7905de70aed3dc71d823": { "describe": { "columns": [], @@ -7065,257 +7317,6 @@ }, "query": "\n SELECT value\n FROM storage_logs\n WHERE storage_logs.hashed_key = $1 AND storage_logs.miniblock_number <= $2\n ORDER BY storage_logs.miniblock_number DESC, storage_logs.operation_number DESC\n LIMIT 1\n " }, - "93e9e761f41bc67a91702cefdd8245c15f64aa5ebe550581418aeba8b70632e9": { - "describe": { - "columns": [ - { - "name": "number", - "ordinal": 0, - "type_info": "Int8" - }, - { - "name": "timestamp", - "ordinal": 1, - "type_info": "Int8" - }, - { - "name": "is_finished", - "ordinal": 2, - "type_info": "Bool" - }, - { - "name": "l1_tx_count", - "ordinal": 3, - "type_info": "Int4" - }, - { - "name": "l2_tx_count", - "ordinal": 4, - "type_info": "Int4" - }, - { - "name": "fee_account_address", - "ordinal": 5, - "type_info": "Bytea" - }, - { - "name": "bloom", - "ordinal": 6, - "type_info": "Bytea" - }, - { - "name": "priority_ops_onchain_data", - "ordinal": 7, - "type_info": "ByteaArray" - }, - { - "name": "hash", - "ordinal": 8, - "type_info": "Bytea" - }, - { - "name": "parent_hash", - "ordinal": 9, - "type_info": "Bytea" - }, - { - "name": "commitment", - "ordinal": 10, - "type_info": "Bytea" - }, - { - "name": "compressed_write_logs", - "ordinal": 11, - "type_info": "Bytea" - }, - { - "name": "compressed_contracts", - "ordinal": 12, - "type_info": "Bytea" - }, - { - "name": "eth_prove_tx_id", - "ordinal": 13, - "type_info": "Int4" - }, - { - "name": "eth_commit_tx_id", - "ordinal": 14, - "type_info": "Int4" - }, - { - "name": "eth_execute_tx_id", - "ordinal": 15, - "type_info": "Int4" - }, - { - "name": "merkle_root_hash", - "ordinal": 16, - "type_info": "Bytea" - }, - { - "name": "l2_to_l1_logs", - "ordinal": 17, - "type_info": "ByteaArray" - }, - { - "name": "l2_to_l1_messages", - "ordinal": 18, - "type_info": "ByteaArray" - }, - { - "name": "used_contract_hashes", - "ordinal": 19, - "type_info": "Jsonb" - }, - { - "name": "compressed_initial_writes", - "ordinal": 20, - "type_info": "Bytea" - }, - { - "name": "compressed_repeated_writes", - "ordinal": 21, - "type_info": "Bytea" - }, - { - "name": "l2_l1_compressed_messages", - "ordinal": 22, - "type_info": "Bytea" - }, - { - "name": "l2_l1_merkle_root", - "ordinal": 23, - "type_info": "Bytea" - }, - { - "name": "l1_gas_price", - "ordinal": 24, - "type_info": "Int8" - }, - { - "name": "l2_fair_gas_price", - "ordinal": 25, - "type_info": "Int8" - }, - { - "name": "rollup_last_leaf_index", - "ordinal": 26, - "type_info": "Int8" - }, - { - "name": "zkporter_is_available", - "ordinal": 27, - "type_info": "Bool" - }, - { - "name": "bootloader_code_hash", - "ordinal": 28, - "type_info": "Bytea" - }, - { - "name": "default_aa_code_hash", - "ordinal": 29, - "type_info": "Bytea" - }, - { - "name": "base_fee_per_gas", - "ordinal": 30, - "type_info": "Numeric" - }, - { - "name": "aux_data_hash", - "ordinal": 31, - "type_info": "Bytea" - }, - { - "name": "pass_through_data_hash", - "ordinal": 32, - "type_info": "Bytea" - }, - { - "name": "meta_parameters_hash", - "ordinal": 33, - "type_info": "Bytea" - }, - { - "name": "protocol_version", - "ordinal": 34, - "type_info": "Int4" - }, - { - "name": "compressed_state_diffs", - "ordinal": 35, - "type_info": "Bytea" - }, - { - "name": "system_logs", - "ordinal": 36, - "type_info": "ByteaArray" - }, - { - "name": "events_queue_commitment", - "ordinal": 37, - "type_info": "Bytea" - }, - { - "name": "bootloader_initial_content_commitment", - "ordinal": 38, - "type_info": "Bytea" - } - ], - "nullable": [ - false, - false, - false, - false, - false, - false, - false, - false, - true, - true, - true, - true, - true, - true, - true, - true, - true, - false, - false, - false, - true, - true, - true, - true, - false, - false, - true, - true, - true, - true, - false, - true, - true, - true, - true, - true, - false, - true, - true - ], - "parameters": { - "Left": [ - "Bytea", - "Bytea", - "Int4", - "Int8" - ] - } - }, - "query": "SELECT number, l1_batches.timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, rollup_last_leaf_index, zkporter_is_available, l1_batches.bootloader_code_hash, l1_batches.default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, meta_parameters_hash, protocol_version, compressed_state_diffs, system_logs, events_queue_commitment, bootloader_initial_content_commitment FROM l1_batches LEFT JOIN commitments ON commitments.l1_batch_number = l1_batches.number JOIN protocol_versions ON protocol_versions.id = l1_batches.protocol_version WHERE eth_commit_tx_id IS NULL AND number != 0 AND protocol_versions.bootloader_code_hash = $1 AND protocol_versions.default_account_code_hash = $2 AND commitment IS NOT NULL AND (protocol_versions.id = $3 OR protocol_versions.upgrade_tx_hash IS NULL) AND events_queue_commitment IS NOT NULL AND bootloader_initial_content_commitment IS NOT NULL\n ORDER BY number LIMIT $4" - }, "957ceda740ffb36740acf1e3fbacf76a2ea7422dd9d76a38d745113359e4b7a6": { "describe": { "columns": [ diff --git a/core/lib/dal/src/blocks_dal.rs b/core/lib/dal/src/blocks_dal.rs index d2ea5f6741e..13e2ebee52e 100644 --- a/core/lib/dal/src/blocks_dal.rs +++ b/core/lib/dal/src/blocks_dal.rs @@ -1001,6 +1001,7 @@ impl BlocksDal<'_, '_> { default_aa_hash: H256, protocol_version_id: ProtocolVersionId, ) -> anyhow::Result> { + let is_pre_boojum = protocol_version_id.is_pre_boojum(); let raw_batches = sqlx::query_as!( StorageL1Batch, "SELECT number, l1_batches.timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, \ @@ -1021,12 +1022,14 @@ impl BlocksDal<'_, '_> { AND protocol_versions.bootloader_code_hash = $1 AND protocol_versions.default_account_code_hash = $2 \ AND commitment IS NOT NULL \ AND (protocol_versions.id = $3 OR protocol_versions.upgrade_tx_hash IS NULL) \ - AND events_queue_commitment IS NOT NULL \ - AND bootloader_initial_content_commitment IS NOT NULL - ORDER BY number LIMIT $4", + AND (events_queue_commitment IS NOT NULL AND bootloader_initial_content_commitment IS NOT NULL + OR $4 = FALSE + ) + ORDER BY number LIMIT $5", bootloader_hash.as_bytes(), default_aa_hash.as_bytes(), protocol_version_id as i32, + is_pre_boojum, limit as i64, ) .instrument("get_ready_for_commit_l1_batches") diff --git a/core/lib/state/src/rocksdb/mod.rs b/core/lib/state/src/rocksdb/mod.rs index 7cfa9489d9e..e3748f3acfd 100644 --- a/core/lib/state/src/rocksdb/mod.rs +++ b/core/lib/state/src/rocksdb/mod.rs @@ -122,14 +122,6 @@ impl RocksdbStorage { } } - #[cfg(test)] - pub fn new_testing(path: &Path) -> Self { - let mut new_self = Self::new(path); - new_self.enable_enum_index_migration(100); - - new_self - } - /// Enables enum indices migration. pub fn enable_enum_index_migration(&mut self, chunk_size: usize) { self.enum_index_migration_chunk_size = chunk_size; @@ -525,7 +517,7 @@ mod tests { #[tokio::test] async fn rocksdb_storage_basics() { let dir = TempDir::new().expect("cannot create temporary dir for state keeper"); - let mut storage = RocksdbStorage::new_testing(dir.path()); + let mut storage = RocksdbStorage::new(dir.path()); let mut storage_logs: HashMap<_, _> = gen_storage_logs(0..20) .into_iter() .map(|log| (log.key, log.value)) @@ -568,7 +560,7 @@ mod tests { create_l1_batch(&mut conn, L1BatchNumber(1), &storage_logs).await; let dir = TempDir::new().expect("cannot create temporary dir for state keeper"); - let mut storage = RocksdbStorage::new_testing(dir.path()); + let mut storage = RocksdbStorage::new(dir.path()); storage.update_from_postgres(&mut conn).await; assert_eq!(storage.l1_batch_number(), L1BatchNumber(2)); @@ -619,7 +611,7 @@ mod tests { create_l1_batch(&mut conn, L1BatchNumber(2), &inserted_storage_logs).await; let dir = TempDir::new().expect("cannot create temporary dir for state keeper"); - let mut storage = RocksdbStorage::new_testing(dir.path()); + let mut storage = RocksdbStorage::new(dir.path()); storage.update_from_postgres(&mut conn).await; // Perform some sanity checks before the revert. @@ -679,7 +671,7 @@ mod tests { .collect(); let dir = TempDir::new().expect("cannot create temporary dir for state keeper"); - let mut storage = RocksdbStorage::new_testing(dir.path()); + let mut storage = RocksdbStorage::new(dir.path()); storage.update_from_postgres(&mut conn).await; assert_eq!(storage.l1_batch_number(), L1BatchNumber(2)); diff --git a/core/lib/types/src/commitment.rs b/core/lib/types/src/commitment.rs index 61dc9bf421c..6e4ee07d30e 100644 --- a/core/lib/types/src/commitment.rs +++ b/core/lib/types/src/commitment.rs @@ -338,7 +338,7 @@ impl L1BatchAuxiliaryOutput { .chunks(L2ToL1Log::SERIALIZED_SIZE) .map(|chunk| <[u8; L2ToL1Log::SERIALIZED_SIZE]>::try_from(chunk).unwrap()); // ^ Skip first 4 bytes of the serialized logs (i.e., the number of logs). - let min_tree_size = Some(L2ToL1Log::LEGACY_LIMIT_PER_L1_BATCH); + let min_tree_size = Some(L2ToL1Log::MIN_L2_L1_LOGS_TREE_SIZE); let l2_l1_logs_merkle_root = MiniMerkleTree::new(merkle_tree_leaves, min_tree_size).merkle_root(); diff --git a/core/lib/types/src/fee.rs b/core/lib/types/src/fee.rs index 2de0f031a83..53e05fbb59a 100644 --- a/core/lib/types/src/fee.rs +++ b/core/lib/types/src/fee.rs @@ -3,7 +3,8 @@ use zksync_utils::ceil_div; use crate::U256; -#[derive(Debug, Default, Clone, Copy)] +#[derive(Debug, Default, Clone, Copy, Serialize, Deserialize)] +#[serde(rename_all = "camelCase", tag = "result")] pub struct TransactionExecutionMetrics { pub initial_storage_writes: usize, pub repeated_storage_writes: usize, diff --git a/core/lib/types/src/l2_to_l1_log.rs b/core/lib/types/src/l2_to_l1_log.rs index 13aa5c559fd..af626ad373a 100644 --- a/core/lib/types/src/l2_to_l1_log.rs +++ b/core/lib/types/src/l2_to_l1_log.rs @@ -16,10 +16,9 @@ pub struct L2ToL1Log { } impl L2ToL1Log { - /// Legacy upper bound of L2-to-L1 logs per single L1 batch. This is not used as a limit now, - /// but still determines the minimum number of items in the Merkle tree built from L2-to-L1 logs + /// Determines the minimum number of items in the Merkle tree built from L2-to-L1 logs /// for a certain batch. - pub const LEGACY_LIMIT_PER_L1_BATCH: usize = 2048; + pub const MIN_L2_L1_LOGS_TREE_SIZE: usize = 2048; pub fn from_slice(data: &[u8]) -> Self { assert_eq!(data.len(), Self::SERIALIZED_SIZE); diff --git a/core/lib/types/src/tx/tx_execution_info.rs b/core/lib/types/src/tx/tx_execution_info.rs index 206f0d8c43b..545017bcc91 100644 --- a/core/lib/types/src/tx/tx_execution_info.rs +++ b/core/lib/types/src/tx/tx_execution_info.rs @@ -2,7 +2,11 @@ use crate::fee::TransactionExecutionMetrics; use crate::l2_to_l1_log::L2ToL1Log; use crate::{ commitment::SerializeCommitment, - writes::{BYTES_PER_DERIVED_KEY, BYTES_PER_ENUMERATION_INDEX}, + writes::{ + InitialStorageWrite, RepeatedStorageWrite, BYTES_PER_DERIVED_KEY, + BYTES_PER_ENUMERATION_INDEX, + }, + ProtocolVersionId, }; use std::ops::{Add, AddAssign}; @@ -38,10 +42,15 @@ impl DeduplicatedWritesMetrics { } } - pub fn size(&self) -> usize { - self.total_updated_values_size - + (BYTES_PER_DERIVED_KEY as usize) * self.initial_storage_writes - + (BYTES_PER_ENUMERATION_INDEX as usize) * self.repeated_storage_writes + pub fn size(&self, protocol_version: ProtocolVersionId) -> usize { + if protocol_version.is_pre_boojum() { + self.initial_storage_writes * InitialStorageWrite::SERIALIZED_SIZE + + self.repeated_storage_writes * RepeatedStorageWrite::SERIALIZED_SIZE + } else { + self.total_updated_values_size + + (BYTES_PER_DERIVED_KEY as usize) * self.initial_storage_writes + + (BYTES_PER_ENUMERATION_INDEX as usize) * self.repeated_storage_writes + } } } diff --git a/core/lib/zksync_core/Cargo.toml b/core/lib/zksync_core/Cargo.toml index 7e8b83a5d24..4d84757b6fa 100644 --- a/core/lib/zksync_core/Cargo.toml +++ b/core/lib/zksync_core/Cargo.toml @@ -83,8 +83,6 @@ actix-web = "4.0.0-beta.8" tracing = "0.1.26" -zkevm_test_harness = { git = "https://github.com/matter-labs/era-zkevm_test_harness.git", branch = "v1.4.0" } - [dev-dependencies] assert_matches = "1.5" diff --git a/core/lib/zksync_core/src/api_server/tx_sender/mod.rs b/core/lib/zksync_core/src/api_server/tx_sender/mod.rs index 2552770c22c..fd9c2cad99a 100644 --- a/core/lib/zksync_core/src/api_server/tx_sender/mod.rs +++ b/core/lib/zksync_core/src/api_server/tx_sender/mod.rs @@ -911,11 +911,11 @@ impl TxSender { H256::zero() }; - let seal_data = SealData::for_transaction(transaction, tx_metrics); // Using `ProtocolVersionId::latest()` for a short period we might end up in a scenario where the StateKeeper is still pre-boojum // but the API assumes we are post boojum. In this situation we will determine a tx as being executable but the StateKeeper will // still reject them as it's not. let protocol_version = ProtocolVersionId::latest(); + let seal_data = SealData::for_transaction(transaction, tx_metrics, protocol_version); if let Some(reason) = ConditionalSealer::find_unexecutable_reason(sk_config, &seal_data, protocol_version) { diff --git a/core/lib/zksync_core/src/api_server/web3/namespaces/zks.rs b/core/lib/zksync_core/src/api_server/web3/namespaces/zks.rs index c7cfbe4b7a1..3e31ea6bb06 100644 --- a/core/lib/zksync_core/src/api_server/web3/namespaces/zks.rs +++ b/core/lib/zksync_core/src/api_server/web3/namespaces/zks.rs @@ -343,7 +343,7 @@ impl ZksNamespace { }; let merkle_tree_leaves = all_l1_logs_in_batch.iter().map(L2ToL1Log::to_bytes); - let min_tree_size = Some(L2ToL1Log::LEGACY_LIMIT_PER_L1_BATCH); + let min_tree_size = Some(L2ToL1Log::MIN_L2_L1_LOGS_TREE_SIZE); let (root, proof) = MiniMerkleTree::new(merkle_tree_leaves, min_tree_size) .merkle_root_and_path(l1_log_index); Ok(Some(L2ToL1LogProof { diff --git a/core/lib/zksync_core/src/block_reverter/mod.rs b/core/lib/zksync_core/src/block_reverter/mod.rs index 8fbafec4135..a2b716ad550 100644 --- a/core/lib/zksync_core/src/block_reverter/mod.rs +++ b/core/lib/zksync_core/src/block_reverter/mod.rs @@ -351,9 +351,9 @@ impl BlockReverter { async fn get_l1_batch_number_from_contract(&self, op: AggregatedActionType) -> L1BatchNumber { let function_name = match op { - AggregatedActionType::Commit => "getTotalBatchesCommitted", - AggregatedActionType::PublishProofOnchain => "getTotalBatchesVerified", - AggregatedActionType::Execute => "getTotalBatchesExecuted", + AggregatedActionType::Commit => "getTotalBlocksCommitted", + AggregatedActionType::PublishProofOnchain => "getTotalBlocksVerified", + AggregatedActionType::Execute => "getTotalBlocksExecuted", }; let eth_config = self .eth_config diff --git a/core/lib/zksync_core/src/eth_sender/eth_tx_aggregator.rs b/core/lib/zksync_core/src/eth_sender/eth_tx_aggregator.rs index c9f49aaab9d..9e55de888a1 100644 --- a/core/lib/zksync_core/src/eth_sender/eth_tx_aggregator.rs +++ b/core/lib/zksync_core/src/eth_sender/eth_tx_aggregator.rs @@ -313,7 +313,7 @@ impl EthTxAggregator { if contracts_are_pre_boojum { let vk = eth_client .call_contract_function( - &self.functions.get_verification_key.as_ref().unwrap().name, + &self.functions.get_verification_key.name, (), None, Default::default(), diff --git a/core/lib/zksync_core/src/eth_sender/zksync_functions.rs b/core/lib/zksync_core/src/eth_sender/zksync_functions.rs index 6b89e6e1627..8e27af5b628 100644 --- a/core/lib/zksync_core/src/eth_sender/zksync_functions.rs +++ b/core/lib/zksync_core/src/eth_sender/zksync_functions.rs @@ -1,6 +1,6 @@ use zksync_contracts::{ multicall_contract, verifier_contract, zksync_contract, PRE_BOOJUM_COMMIT_FUNCTION, - PRE_BOOJUM_EXECUTE_FUNCTION, PRE_BOOJUM_PROVE_FUNCTION, + PRE_BOOJUM_EXECUTE_FUNCTION, PRE_BOOJUM_GET_VK_FUNCTION, PRE_BOOJUM_PROVE_FUNCTION, }; use zksync_types::ethabi::{Contract, Function}; @@ -19,7 +19,7 @@ pub(super) struct ZkSyncFunctions { pub(super) get_protocol_version: Function, pub(super) verifier_contract: Contract, - pub(super) get_verification_key: Option, + pub(super) get_verification_key: Function, pub(super) verification_key_hash: Option, pub(super) multicall_contract: Contract, @@ -63,8 +63,7 @@ impl Default for ZkSyncFunctions { let get_verifier = get_function(&zksync_contract, "getVerifier"); let get_verifier_params = get_function(&zksync_contract, "getVerifierParams"); let get_protocol_version = get_function(&zksync_contract, "getProtocolVersion"); - let get_verification_key = - get_optional_function(&verifier_contract, "get_verification_key"); + let get_verification_key = PRE_BOOJUM_GET_VK_FUNCTION.clone(); let aggregate3 = get_function(&multicall_contract, "aggregate3"); let verification_key_hash = get_optional_function(&verifier_contract, "verificationKeyHash"); diff --git a/core/lib/zksync_core/src/eth_watch/event_processors/upgrades.rs b/core/lib/zksync_core/src/eth_watch/event_processors/upgrades.rs index 58fda990920..210b540c48e 100644 --- a/core/lib/zksync_core/src/eth_watch/event_processors/upgrades.rs +++ b/core/lib/zksync_core/src/eth_watch/event_processors/upgrades.rs @@ -1,6 +1,6 @@ use std::convert::TryFrom; use zksync_dal::StorageProcessor; -use zksync_types::{ethabi::Contract, web3::types::Log, ProtocolUpgrade, ProtocolVersionId, H256}; +use zksync_types::{web3::types::Log, ProtocolUpgrade, ProtocolVersionId, H256}; use crate::eth_watch::{ client::{Error, EthClient}, @@ -8,21 +8,21 @@ use crate::eth_watch::{ metrics::{PollStage, METRICS}, }; +pub(crate) const UPGRADE_PROPOSAL_SIGNATURE: H256 = H256([ + 105, 17, 91, 73, 175, 231, 166, 16, 26, 46, 122, 241, 125, 66, 30, 218, 29, 193, 83, 189, 38, + 214, 153, 240, 19, 196, 255, 240, 64, 70, 70, 166, +]); + /// Responsible for saving new protocol upgrade proposals to the database. #[derive(Debug)] pub struct UpgradesEventProcessor { last_seen_version_id: ProtocolVersionId, - upgrade_proposal_signature: H256, } impl UpgradesEventProcessor { pub fn new(last_seen_version_id: ProtocolVersionId) -> Self { Self { last_seen_version_id, - upgrade_proposal_signature: old_zksync_contract() - .event("ProposeTransparentUpgrade") - .expect("ProposeTransparentUpgrade event is missing in abi") - .signature(), } } } @@ -38,7 +38,7 @@ impl EventProcessor for UpgradesEventProcessor { let mut upgrades = Vec::new(); for event in events .into_iter() - .filter(|event| event.topics[0] == self.upgrade_proposal_signature) + .filter(|event| event.topics[0] == UPGRADE_PROPOSAL_SIGNATURE) { let upgrade = ProtocolUpgrade::try_from(event) .map_err(|err| Error::LogParse(format!("{:?}", err)))?; @@ -89,195 +89,6 @@ impl EventProcessor for UpgradesEventProcessor { } fn relevant_topic(&self) -> H256 { - self.upgrade_proposal_signature + UPGRADE_PROPOSAL_SIGNATURE } } - -pub fn old_zksync_contract() -> Contract { - let json = r#"[ - { - "anonymous": false, - "inputs": [ - { - "components": [ - { - "components": [ - { - "internalType": "address", - "name": "facet", - "type": "address" - }, - { - "internalType": "enum Diamond.Action", - "name": "action", - "type": "uint8" - }, - { - "internalType": "bool", - "name": "isFreezable", - "type": "bool" - }, - { - "internalType": "bytes4[]", - "name": "selectors", - "type": "bytes4[]" - } - ], - "internalType": "struct Diamond.FacetCut[]", - "name": "facetCuts", - "type": "tuple[]" - }, - { - "internalType": "address", - "name": "initAddress", - "type": "address" - }, - { - "internalType": "bytes", - "name": "initCalldata", - "type": "bytes" - } - ], - "indexed": false, - "internalType": "struct Diamond.DiamondCutData", - "name": "diamondCut", - "type": "tuple" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "proposalSalt", - "type": "bytes32" - } - ], - "name": "ProposeTransparentUpgrade", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "txId", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "txHash", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "uint64", - "name": "expirationTimestamp", - "type": "uint64" - }, - { - "components": [ - { - "internalType": "uint256", - "name": "txType", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "from", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "to", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "gasLimit", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "gasPerPubdataByteLimit", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "maxFeePerGas", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "maxPriorityFeePerGas", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "paymaster", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "nonce", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "uint256[4]", - "name": "reserved", - "type": "uint256[4]" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "signature", - "type": "bytes" - }, - { - "internalType": "uint256[]", - "name": "factoryDeps", - "type": "uint256[]" - }, - { - "internalType": "bytes", - "name": "paymasterInput", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "reservedDynamic", - "type": "bytes" - } - ], - "indexed": false, - "internalType": "struct IMailbox.L2CanonicalTransaction", - "name": "transaction", - "type": "tuple" - }, - { - "indexed": false, - "internalType": "bytes[]", - "name": "factoryDeps", - "type": "bytes[]" - } - ], - "name": "NewPriorityRequest", - "type": "event" - } - ]"#; - serde_json::from_str(json).unwrap() -} diff --git a/core/lib/zksync_core/src/eth_watch/tests.rs b/core/lib/zksync_core/src/eth_watch/tests.rs index fdabe3a8def..d7627a56c13 100644 --- a/core/lib/zksync_core/src/eth_watch/tests.rs +++ b/core/lib/zksync_core/src/eth_watch/tests.rs @@ -18,7 +18,7 @@ use zksync_types::{ use super::client::Error; use crate::eth_watch::{ - client::EthClient, event_processors::upgrades::old_zksync_contract, EthWatch, + client::EthClient, event_processors::upgrades::UPGRADE_PROPOSAL_SIGNATURE, EthWatch, }; struct FakeEthClientData { @@ -593,10 +593,7 @@ fn upgrade_into_diamond_proxy_log(upgrade: ProtocolUpgrade, eth_block: u64) -> L let data = encode(&[diamond_cut, Token::FixedBytes(vec![0u8; 32])]); Log { address: Address::repeat_byte(0x1), - topics: vec![old_zksync_contract() - .event("ProposeTransparentUpgrade") - .expect("ProposeTransparentUpgrade event is missing in abi") - .signature()], + topics: vec![UPGRADE_PROPOSAL_SIGNATURE], data: data.into(), block_hash: Some(H256::repeat_byte(0x11)), block_number: Some(eth_block.into()), diff --git a/core/lib/zksync_core/src/gas_tracker/mod.rs b/core/lib/zksync_core/src/gas_tracker/mod.rs index 7988a5bc01a..c27d4fb1173 100644 --- a/core/lib/zksync_core/src/gas_tracker/mod.rs +++ b/core/lib/zksync_core/src/gas_tracker/mod.rs @@ -7,7 +7,7 @@ use zksync_types::{ block::{BlockGasCount, L1BatchHeader}, commitment::{L1BatchMetadata, L1BatchWithMetadata}, tx::tx_execution_info::{DeduplicatedWritesMetrics, ExecutionMetrics}, - ExecuteTransactionCommon, Transaction, H256, + ExecuteTransactionCommon, ProtocolVersionId, Transaction, H256, }; mod constants; @@ -46,8 +46,11 @@ fn additional_pubdata_commit_cost(execution_metrics: &ExecutionMetrics) -> u32 { (execution_metrics.size() as u32) * GAS_PER_BYTE } -fn additional_writes_commit_cost(writes_metrics: &DeduplicatedWritesMetrics) -> u32 { - (writes_metrics.size() as u32) * GAS_PER_BYTE +fn additional_writes_commit_cost( + writes_metrics: &DeduplicatedWritesMetrics, + protocol_version: ProtocolVersionId, +) -> u32 { + (writes_metrics.size(protocol_version) as u32) * GAS_PER_BYTE } pub fn new_block_gas_count() -> BlockGasCount { @@ -79,9 +82,12 @@ pub fn gas_count_from_metrics(execution_metrics: &ExecutionMetrics) -> BlockGasC } } -pub fn gas_count_from_writes(writes_metrics: &DeduplicatedWritesMetrics) -> BlockGasCount { +pub fn gas_count_from_writes( + writes_metrics: &DeduplicatedWritesMetrics, + protocol_version: ProtocolVersionId, +) -> BlockGasCount { BlockGasCount { - commit: additional_writes_commit_cost(writes_metrics), + commit: additional_writes_commit_cost(writes_metrics, protocol_version), prove: 0, execute: 0, } diff --git a/core/lib/zksync_core/src/state_keeper/keeper.rs b/core/lib/zksync_core/src/state_keeper/keeper.rs index 73fb2e3ea4d..761e186e7ae 100644 --- a/core/lib/zksync_core/src/state_keeper/keeper.rs +++ b/core/lib/zksync_core/src/state_keeper/keeper.rs @@ -622,11 +622,15 @@ impl ZkSyncStateKeeper { let block_writes_metrics = updates_manager .storage_writes_deduplicator .apply_and_rollback(logs_to_apply_iter.clone()); - let block_writes_l1_gas = gas_count_from_writes(&block_writes_metrics); + let block_writes_l1_gas = gas_count_from_writes( + &block_writes_metrics, + updates_manager.protocol_version(), + ); let tx_writes_metrics = StorageWritesDeduplicator::apply_on_empty_state(logs_to_apply_iter); - let tx_writes_l1_gas = gas_count_from_writes(&tx_writes_metrics); + let tx_writes_l1_gas = + gas_count_from_writes(&tx_writes_metrics, updates_manager.protocol_version()); let tx_gas_excluding_writes = tx_l1_gas_this_tx + finish_block_l1_gas; let tx_data = SealData { diff --git a/core/lib/zksync_core/src/state_keeper/seal_criteria/criteria/pubdata_bytes.rs b/core/lib/zksync_core/src/state_keeper/seal_criteria/criteria/pubdata_bytes.rs index 0cea0954065..143104d5ae5 100644 --- a/core/lib/zksync_core/src/state_keeper/seal_criteria/criteria/pubdata_bytes.rs +++ b/core/lib/zksync_core/src/state_keeper/seal_criteria/criteria/pubdata_bytes.rs @@ -15,7 +15,7 @@ impl SealCriterion for PubDataBytesCriterion { _tx_count: usize, block_data: &SealData, tx_data: &SealData, - _protocol_version: ProtocolVersionId, + protocol_version: ProtocolVersionId, ) -> SealResolution { let max_pubdata_per_l1_batch = MAX_PUBDATA_PER_L1_BATCH as usize; let reject_bound = @@ -23,12 +23,13 @@ impl SealCriterion for PubDataBytesCriterion { let include_and_seal_bound = (max_pubdata_per_l1_batch as f64 * config.close_block_at_eth_params_percentage).round(); - let block_size = block_data.execution_metrics.size() + block_data.writes_metrics.size(); + let block_size = + block_data.execution_metrics.size() + block_data.writes_metrics.size(protocol_version); // For backward compatibility, we need to keep calculating the size of the pubdata based // StorageDeduplication metrics. All vm versions // after vm with virtual blocks will provide the size of the pubdata in the execution metrics. let tx_size = if tx_data.execution_metrics.pubdata_published == 0 { - tx_data.execution_metrics.size() + tx_data.writes_metrics.size() + tx_data.execution_metrics.size() + tx_data.writes_metrics.size(protocol_version) } else { tx_data.execution_metrics.pubdata_published as usize }; diff --git a/core/lib/zksync_core/src/state_keeper/seal_criteria/mod.rs b/core/lib/zksync_core/src/state_keeper/seal_criteria/mod.rs index 19cd5b87da5..99cb25c654d 100644 --- a/core/lib/zksync_core/src/state_keeper/seal_criteria/mod.rs +++ b/core/lib/zksync_core/src/state_keeper/seal_criteria/mod.rs @@ -89,11 +89,12 @@ impl SealData { pub(crate) fn for_transaction( transaction: Transaction, tx_metrics: &TransactionExecutionMetrics, + protocol_version: ProtocolVersionId, ) -> Self { let execution_metrics = ExecutionMetrics::from_tx_metrics(tx_metrics); let writes_metrics = DeduplicatedWritesMetrics::from_tx_metrics(tx_metrics); let gas_count = gas_count_from_tx_and_metrics(&transaction, &execution_metrics) - + gas_count_from_writes(&writes_metrics); + + gas_count_from_writes(&writes_metrics, protocol_version); Self { execution_metrics, gas_count, diff --git a/docker/cross-external-nodes-checker/Dockerfile b/docker/cross-external-nodes-checker/Dockerfile index 0467000d01d..40837169402 100644 --- a/docker/cross-external-nodes-checker/Dockerfile +++ b/docker/cross-external-nodes-checker/Dockerfile @@ -1,7 +1,3 @@ -# For using private GitHub dependencies, CI downdloads all crates outside of the contatiner -# Not expected to work locally - -# BUILDING STAGE # syntax=docker/dockerfile:experimental FROM debian:bookworm-slim as builder From a5b51352395651d8ff21e0f2c6c623ee7bab3866 Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Mon, 6 Nov 2023 13:55:29 +0100 Subject: [PATCH 098/108] more thorough replacement of logs -> user/system logs --- core/lib/dal/src/blocks_dal.rs | 4 +- core/lib/dal/src/models/storage_block.rs | 24 +++----- .../src/glue/types/vm/vm_block_result.rs | 22 ++++++- .../src/glue/types/vm/vm_execution_result.rs | 58 ------------------- .../types/outputs/execution_state.rs | 6 +- core/lib/multivm/src/versions/vm_latest/vm.rs | 10 +++- .../src/versions/vm_refunds_enhancement/vm.rs | 14 ++--- .../src/versions/vm_virtual_blocks/vm.rs | 14 ++--- core/lib/types/src/block.rs | 11 ++-- core/lib/types/src/commitment.rs | 54 ++++++++++++----- core/lib/zksync_core/src/lib.rs | 1 + .../proof_data_handler/request_processor.rs | 3 +- 12 files changed, 102 insertions(+), 119 deletions(-) delete mode 100644 core/lib/multivm/src/glue/types/vm/vm_execution_result.rs diff --git a/core/lib/dal/src/blocks_dal.rs b/core/lib/dal/src/blocks_dal.rs index d2ea5f6741e..2bd2c3ef71c 100644 --- a/core/lib/dal/src/blocks_dal.rs +++ b/core/lib/dal/src/blocks_dal.rs @@ -352,12 +352,12 @@ impl BlocksDal<'_, '_> { let l2_to_l1_logs: Vec<_> = header .l2_to_l1_logs .iter() - .map(|log| log.to_bytes().to_vec()) + .map(|log| log.0.to_bytes().to_vec()) .collect(); let system_logs = header .system_logs .iter() - .map(|log| log.to_bytes().to_vec()) + .map(|log| log.0.to_bytes().to_vec()) .collect::>>(); // Serialization should always succeed. diff --git a/core/lib/dal/src/models/storage_block.rs b/core/lib/dal/src/models/storage_block.rs index 35a7873b562..390bd3b2fd8 100644 --- a/core/lib/dal/src/models/storage_block.rs +++ b/core/lib/dal/src/models/storage_block.rs @@ -13,7 +13,7 @@ use zksync_types::{ api, block::{L1BatchHeader, MiniblockHeader}, commitment::{L1BatchMetaParameters, L1BatchMetadata}, - l2_to_l1_log::L2ToL1Log, + l2_to_l1_log::{L2ToL1Log, SystemL2ToL1Log, UserL2ToL1Log}, Address, L1BatchNumber, MiniblockNumber, H2048, H256, }; @@ -61,11 +61,8 @@ impl From for L1BatchHeader { .map(|raw_data| raw_data.into()) .collect(); - let system_logs: Vec<_> = l1_batch - .system_logs - .into_iter() - .map(|raw_log| L2ToL1Log::from_slice(&raw_log)) - .collect(); + let system_logs = convert_l2_to_l1_logs(l1_batch.system_logs); + let user_l2_to_l1_logs = convert_l2_to_l1_logs(l1_batch.l2_to_l1_logs); L1BatchHeader { number: L1BatchNumber(l1_batch.number as u32), @@ -75,7 +72,7 @@ impl From for L1BatchHeader { priority_ops_onchain_data, l1_tx_count: l1_batch.l1_tx_count as u16, l2_tx_count: l1_batch.l2_tx_count as u16, - l2_to_l1_logs: convert_l2_to_l1_logs(l1_batch.l2_to_l1_logs), + l2_to_l1_logs: user_l2_to_l1_logs.into_iter().map(UserL2ToL1Log).collect(), l2_to_l1_messages: l1_batch.l2_to_l1_messages, bloom: H2048::from_slice(&l1_batch.bloom), @@ -91,7 +88,7 @@ impl From for L1BatchHeader { ), l1_gas_price: l1_batch.l1_gas_price as u64, l2_fair_gas_price: l1_batch.l2_fair_gas_price as u64, - system_logs, + system_logs: system_logs.into_iter().map(SystemL2ToL1Log).collect(), protocol_version: l1_batch .protocol_version .map(|v| (v as u16).try_into().unwrap()), @@ -183,11 +180,8 @@ impl From for L1BatchHeader { .map(Vec::into) .collect(); - let system_logs: Vec<_> = l1_batch - .system_logs - .into_iter() - .map(|raw_log| L2ToL1Log::from_slice(&raw_log)) - .collect(); + let system_logs = convert_l2_to_l1_logs(l1_batch.system_logs); + let user_l2_to_l1_logs = convert_l2_to_l1_logs(l1_batch.l2_to_l1_logs); L1BatchHeader { number: L1BatchNumber(l1_batch.number as u32), @@ -197,7 +191,7 @@ impl From for L1BatchHeader { priority_ops_onchain_data, l1_tx_count: l1_batch.l1_tx_count as u16, l2_tx_count: l1_batch.l2_tx_count as u16, - l2_to_l1_logs: convert_l2_to_l1_logs(l1_batch.l2_to_l1_logs), + l2_to_l1_logs: user_l2_to_l1_logs.into_iter().map(UserL2ToL1Log).collect(), l2_to_l1_messages: l1_batch.l2_to_l1_messages, bloom: H2048::from_slice(&l1_batch.bloom), @@ -213,7 +207,7 @@ impl From for L1BatchHeader { ), l1_gas_price: l1_batch.l1_gas_price as u64, l2_fair_gas_price: l1_batch.l2_fair_gas_price as u64, - system_logs, + system_logs: system_logs.into_iter().map(SystemL2ToL1Log).collect(), protocol_version: l1_batch .protocol_version .map(|v| (v as u16).try_into().unwrap()), diff --git a/core/lib/multivm/src/glue/types/vm/vm_block_result.rs b/core/lib/multivm/src/glue/types/vm/vm_block_result.rs index 7b4267321f8..e2eb01adf8a 100644 --- a/core/lib/multivm/src/glue/types/vm/vm_block_result.rs +++ b/core/lib/multivm/src/glue/types/vm/vm_block_result.rs @@ -1,3 +1,4 @@ +use itertools::Itertools; use zksync_types::l2_to_l1_log::UserL2ToL1Log; use crate::glue::{GlueFrom, GlueInto}; @@ -31,7 +32,12 @@ impl GlueFrom for crate::interface::FinishedL1B events: value.full_result.events, storage_log_queries: value.full_result.storage_log_queries, used_contract_hashes: value.full_result.used_contract_hashes, - user_l2_to_l1_logs: value.full_result.l2_to_l1_logs, + user_l2_to_l1_logs: value + .full_result + .l2_to_l1_logs + .into_iter() + .map(UserL2ToL1Log) + .collect(), system_logs: vec![], total_log_queries: value.full_result.total_log_queries, cycles_used: value.full_result.cycles_used, @@ -63,7 +69,12 @@ impl GlueFrom for crate::interface::FinishedL1B events: value.full_result.events, storage_log_queries: value.full_result.storage_log_queries, used_contract_hashes: value.full_result.used_contract_hashes, - user_l2_to_l1_logs: value.full_result.l2_to_l1_logs, + user_l2_to_l1_logs: value + .full_result + .l2_to_l1_logs + .into_iter() + .map(UserL2ToL1Log) + .collect(), system_logs: vec![], total_log_queries: value.full_result.total_log_queries, cycles_used: value.full_result.cycles_used, @@ -101,7 +112,12 @@ impl GlueFrom for crate::interface::Finished events: value.full_result.events, storage_log_queries: value.full_result.storage_log_queries, used_contract_hashes: value.full_result.used_contract_hashes, - user_l2_to_l1_logs: value.full_result.l2_to_l1_logs, + user_l2_to_l1_logs: value + .full_result + .l2_to_l1_logs + .into_iter() + .map(UserL2ToL1Log) + .collect(), system_logs: vec![], total_log_queries: value.full_result.total_log_queries, cycles_used: value.full_result.cycles_used, diff --git a/core/lib/multivm/src/glue/types/vm/vm_execution_result.rs b/core/lib/multivm/src/glue/types/vm/vm_execution_result.rs deleted file mode 100644 index a51b30a9980..00000000000 --- a/core/lib/multivm/src/glue/types/vm/vm_execution_result.rs +++ /dev/null @@ -1,58 +0,0 @@ -use crate::glue::{GlueFrom, GlueInto}; - -impl GlueFrom for vm_latest::CurrentExecutionState { - fn glue_from(value: vm_m5::vm::VmExecutionResult) -> Self { - Self { - events: value.events, - storage_log_queries: value.storage_log_queries, - used_contract_hashes: value.used_contract_hashes, - system_logs: vec![], - user_l2_to_l1_logs: value - .l2_to_l1_logs - .into_iter() - .map(GlueInto::glue_into) - .collect(), - total_log_queries: value.total_log_queries, - cycles_used: value.cycles_used, - deduplicated_events_logs: vec![], - } - } -} - -impl GlueFrom for vm_latest::CurrentExecutionState { - fn glue_from(value: vm_m6::vm::VmExecutionResult) -> Self { - Self { - events: value.events, - storage_log_queries: value.storage_log_queries, - used_contract_hashes: value.used_contract_hashes, - system_logs: vec![], - user_l2_to_l1_logs: value - .l2_to_l1_logs - .into_iter() - .map(GlueInto::glue_into) - .collect(), - total_log_queries: value.total_log_queries, - cycles_used: value.cycles_used, - deduplicated_events_logs: vec![], - } - } -} - -impl GlueFrom for vm_latest::CurrentExecutionState { - fn glue_from(value: vm_1_3_2::VmExecutionResult) -> Self { - Self { - events: value.events, - storage_log_queries: value.storage_log_queries, - used_contract_hashes: value.used_contract_hashes, - system_logs: vec![], - user_l2_to_l1_logs: value - .l2_to_l1_logs - .into_iter() - .map(GlueInto::glue_into) - .collect(), - total_log_queries: value.total_log_queries, - cycles_used: value.cycles_used, - deduplicated_events_logs: vec![], - } - } -} diff --git a/core/lib/multivm/src/interface/types/outputs/execution_state.rs b/core/lib/multivm/src/interface/types/outputs/execution_state.rs index 623ba1492f9..3f1a4a7e932 100644 --- a/core/lib/multivm/src/interface/types/outputs/execution_state.rs +++ b/core/lib/multivm/src/interface/types/outputs/execution_state.rs @@ -1,4 +1,4 @@ -use zksync_types::l2_to_l1_log::L2ToL1Log; +use zksync_types::l2_to_l1_log::{L2ToL1Log, SystemL2ToL1Log, UserL2ToL1Log}; use zksync_types::{LogQuery, StorageLogQuery, VmEvent, U256}; /// State of the VM since the start of the batch execution. @@ -11,11 +11,11 @@ pub struct CurrentExecutionState { /// Hashes of the contracts used by the VM. pub used_contract_hashes: Vec, /// L2 to L1 logs produced by the VM. - pub system_logs: Vec, + pub system_logs: Vec, /// L2 to L1 logs produced by the L1Messeger. /// For pre-boojum VMs, there was no distinction between user logs and system /// logs and so all the outputted logs were treated as user_l2_to_l1_logs. - pub user_l2_to_l1_logs: Vec, + pub user_l2_to_l1_logs: Vec, /// Number of log queries produced by the VM. Including l2_to_l1 logs, storage logs and events. pub total_log_queries: usize, /// Number of cycles used by the VM. diff --git a/core/lib/multivm/src/versions/vm_latest/vm.rs b/core/lib/multivm/src/versions/vm_latest/vm.rs index 9871b6303b2..c0c9154a910 100644 --- a/core/lib/multivm/src/versions/vm_latest/vm.rs +++ b/core/lib/multivm/src/versions/vm_latest/vm.rs @@ -1,4 +1,5 @@ use zksync_state::{StoragePtr, WriteStorage}; +use zksync_types::l2_to_l1_log::{SystemL2ToL1Log, UserL2ToL1Log}; use zksync_types::{event::extract_l2tol1logs_from_l1_messenger, Transaction}; use zksync_utils::bytecode::CompressedBytecodeInfo; @@ -89,7 +90,7 @@ impl Vm { .collect(); let user_l2_to_l1_logs = extract_l2tol1logs_from_l1_messenger(&events); - let system_logs = l1_messages.into_iter().map(|log| log.into()).collect(); + let system_logs: Vec<_> = l1_messages.into_iter().map(|log| log.into()).collect(); let total_log_queries = self.state.event_sink.get_log_queries() + self .state @@ -104,9 +105,12 @@ impl Vm { used_contract_hashes: self.get_used_contracts(), user_l2_to_l1_logs: user_l2_to_l1_logs .into_iter() - .map(|log| log.into()) + .map(|log| UserL2ToL1Log(log.into())) + .collect(), + system_logs: system_logs + .into_iter() + .map(|log| SystemL2ToL1Log(log)) .collect(), - system_logs, total_log_queries, cycles_used: self.state.local_state.monotonic_cycle_counter, deduplicated_events_logs, diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/vm.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/vm.rs index 83feb7774f6..fb36ba4d208 100644 --- a/core/lib/multivm/src/versions/vm_refunds_enhancement/vm.rs +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/vm.rs @@ -1,4 +1,5 @@ use zksync_state::{StoragePtr, WriteStorage}; +use zksync_types::l2_to_l1_log::UserL2ToL1Log; use zksync_types::Transaction; use zksync_utils::bytecode::CompressedBytecodeInfo; @@ -89,8 +90,10 @@ impl Vm { .map(|e| e.into_vm_event(self.batch_env.number)) .collect(); - let user_l2_to_l1_logs = extract_l2tol1logs_from_l1_messenger(&events); - let system_logs = l1_messages.into_iter().map(|log| log.into()).collect(); + let l2_to_l1_logs = l1_messages + .into_iter() + .map(|log| UserL2ToL1Log(log.into())) + .collect(); let total_log_queries = self.state.event_sink.get_log_queries() + self .state @@ -103,11 +106,8 @@ impl Vm { events, storage_log_queries: self.state.storage.get_final_log_queries(), used_contract_hashes: self.get_used_contracts(), - user_l2_to_l1_logs: user_l2_to_l1_logs - .into_iter() - .map(|log| log.into()) - .collect(), - system_logs, + user_l2_to_l1_logs: l2_to_l1_logs, + system_logs: vec![], total_log_queries, cycles_used: self.state.local_state.monotonic_cycle_counter, deduplicated_events_logs, diff --git a/core/lib/multivm/src/versions/vm_virtual_blocks/vm.rs b/core/lib/multivm/src/versions/vm_virtual_blocks/vm.rs index 2a9289a565d..4b3120cbdd5 100644 --- a/core/lib/multivm/src/versions/vm_virtual_blocks/vm.rs +++ b/core/lib/multivm/src/versions/vm_virtual_blocks/vm.rs @@ -4,6 +4,7 @@ use crate::interface::{ }; use zksync_state::{StoragePtr, WriteStorage}; use zksync_types::event::extract_l2tol1logs_from_l1_messenger; +use zksync_types::l2_to_l1_log::UserL2ToL1Log; use zksync_types::Transaction; use zksync_utils::bytecode::CompressedBytecodeInfo; @@ -88,8 +89,10 @@ impl Vm { .map(|e| e.into_vm_event(self.batch_env.number)) .collect(); - let user_l2_to_l1_logs = extract_l2tol1logs_from_l1_messenger(&events); - let system_logs = l1_messages.into_iter().map(|log| log.into()).collect(); + let l2_to_l1_logs = l1_messages + .into_iter() + .map(|log| UserL2ToL1Log(log.into())) + .collect(); let total_log_queries = self.state.event_sink.get_log_queries() + self .state @@ -102,11 +105,8 @@ impl Vm { events, storage_log_queries: self.state.storage.get_final_log_queries(), used_contract_hashes: self.get_used_contracts(), - user_l2_to_l1_logs: user_l2_to_l1_logs - .into_iter() - .map(|log| log.into()) - .collect(), - system_logs, + user_l2_to_l1_logs: l2_to_l1_logs, + system_logs: vec![], total_log_queries, cycles_used: self.state.local_state.monotonic_cycle_counter, deduplicated_events_logs, diff --git a/core/lib/types/src/block.rs b/core/lib/types/src/block.rs index c41fdd93ed9..1659d9d683f 100644 --- a/core/lib/types/src/block.rs +++ b/core/lib/types/src/block.rs @@ -7,9 +7,10 @@ use zksync_basic_types::{H2048, H256, U256}; use zksync_contracts::BaseSystemContractsHashes; use crate::{ - l2_to_l1_log::L2ToL1Log, priority_op_onchain_data::PriorityOpOnchainData, - web3::signing::keccak256, AccountTreeId, Address, L1BatchNumber, MiniblockNumber, - ProtocolVersionId, Transaction, + l2_to_l1_log::{L2ToL1Log, SystemL2ToL1Log, UserL2ToL1Log}, + priority_op_onchain_data::PriorityOpOnchainData, + web3::signing::keccak256, + AccountTreeId, Address, L1BatchNumber, MiniblockNumber, ProtocolVersionId, Transaction, }; /// Represents a successfully deployed smart contract. @@ -46,7 +47,7 @@ pub struct L1BatchHeader { /// The data of the processed priority operations hash which must be sent to the smart contract. pub priority_ops_onchain_data: Vec, /// All user generated L2 -> L1 logs in the block. - pub l2_to_l1_logs: Vec, + pub l2_to_l1_logs: Vec, /// Preimages of the hashes that were sent as value of L2 logs by special system L2 contract. pub l2_to_l1_messages: Vec>, /// Bloom filter for the event logs in the block. @@ -61,7 +62,7 @@ pub struct L1BatchHeader { pub l2_fair_gas_price: u64, pub base_system_contracts_hashes: BaseSystemContractsHashes, /// System logs are those emitted as part of the Vm excecution. - pub system_logs: Vec, + pub system_logs: Vec, /// Version of protocol used for the L1 batch. pub protocol_version: Option, } diff --git a/core/lib/types/src/commitment.rs b/core/lib/types/src/commitment.rs index b32d5fb3cb7..bc11361924a 100644 --- a/core/lib/types/src/commitment.rs +++ b/core/lib/types/src/commitment.rs @@ -8,7 +8,7 @@ use serde::{Deserialize, Serialize}; -use std::{collections::HashMap, convert::TryFrom}; +use std::{alloc::System, collections::HashMap, convert::TryFrom}; use zksync_mini_merkle_tree::MiniMerkleTree; use zksync_system_constants::ZKPORTER_IS_AVAILABLE; @@ -16,7 +16,7 @@ use zksync_system_constants::ZKPORTER_IS_AVAILABLE; use crate::{ block::L1BatchHeader, ethabi::Token, - l2_to_l1_log::L2ToL1Log, + l2_to_l1_log::{L2ToL1Log, SystemL2ToL1Log, UserL2ToL1Log}, web3::signing::keccak256, writes::{ compress_state_diffs, InitialStorageWrite, RepeatedStorageWrite, StateDiffRecord, @@ -98,12 +98,13 @@ impl L1BatchWithMetadata { unsorted_factory_deps: &'a HashMap>, ) -> impl Iterator + 'a { header.l2_to_l1_logs.iter().filter_map(move |log| { - if log.sender == KNOWN_CODES_STORAGE_ADDRESS { - let bytecode = unsorted_factory_deps.get(&log.key).unwrap_or_else(|| { + let inner = &log.0; + if inner.sender == KNOWN_CODES_STORAGE_ADDRESS { + let bytecode = unsorted_factory_deps.get(&inner.key).unwrap_or_else(|| { panic!( "Failed to get bytecode that was marked as known: bytecode_hash {:?}, \ L1 batch number {:?}", - log.key, header.number + inner.key, header.number ); }); Some(bytecode.as_slice()) @@ -209,7 +210,7 @@ impl L1BatchWithMetadata { // Process and Pack Logs res.extend((self.header.l2_to_l1_logs.len() as u32).to_be_bytes()); for l2_to_l1_log in &self.header.l2_to_l1_logs { - res.extend(l2_to_l1_log.to_bytes()); + res.extend(l2_to_l1_log.0.to_bytes()); } // Process and Pack Msgs @@ -246,6 +247,22 @@ impl SerializeCommitment for L2ToL1Log { } } +impl SerializeCommitment for UserL2ToL1Log { + const SERIALIZED_SIZE: usize = L2ToL1Log::SERIALIZED_SIZE; + + fn serialize_commitment(&self, buffer: &mut [u8]) { + self.0.serialize_commitment(buffer); + } +} + +impl SerializeCommitment for SystemL2ToL1Log { + const SERIALIZED_SIZE: usize = L2ToL1Log::SERIALIZED_SIZE; + + fn serialize_commitment(&self, buffer: &mut [u8]) { + self.0.serialize_commitment(buffer); + } +} + impl SerializeCommitment for InitialStorageWrite { const SERIALIZED_SIZE: usize = 64; @@ -277,7 +294,7 @@ impl SerializeCommitment for StateDiffRecord { struct L1BatchAuxiliaryOutput { // We use initial fields for debugging #[allow(dead_code)] - l2_l1_logs: Vec, + l2_l1_logs: Vec, #[allow(dead_code)] initial_writes: Vec, #[allow(dead_code)] @@ -310,10 +327,10 @@ struct L1BatchAuxiliaryOutput { impl L1BatchAuxiliaryOutput { fn new( - l2_l1_logs: Vec, + l2_l1_logs: Vec, initial_writes: Vec, repeated_writes: Vec, - system_logs: Vec, + system_logs: Vec, state_diffs: Vec, bootloader_heap_hash: H256, events_state_queue_hash: H256, @@ -333,8 +350,8 @@ impl L1BatchAuxiliaryOutput { let state_diffs_hash = H256::from(keccak256(&(state_diffs_packed))); let merkle_tree_leaves = l2_l1_logs_compressed - .chunks(L2ToL1Log::SERIALIZED_SIZE) - .map(|chunk| <[u8; L2ToL1Log::SERIALIZED_SIZE]>::try_from(chunk).unwrap()); + .chunks(UserL2ToL1Log::SERIALIZED_SIZE) + .map(|chunk| <[u8; UserL2ToL1Log::SERIALIZED_SIZE]>::try_from(chunk).unwrap()); // ^ Skip first 4 bytes of the serialized logs (i.e., the number of logs). let min_tree_size = Some(L2ToL1Log::LEGACY_LIMIT_PER_L1_BATCH); let l2_l1_logs_merkle_root = @@ -451,14 +468,14 @@ pub struct L1BatchCommitmentHash { impl L1BatchCommitment { #[allow(clippy::too_many_arguments)] pub fn new( - l2_to_l1_logs: Vec, + l2_to_l1_logs: Vec, rollup_last_leaf_index: u64, rollup_root_hash: H256, initial_writes: Vec, repeated_writes: Vec, bootloader_code_hash: H256, default_aa_code_hash: H256, - system_logs: Vec, + system_logs: Vec, state_diffs: Vec, bootloader_heap_hash: H256, events_state_queue_hash: H256, @@ -557,13 +574,15 @@ impl L1BatchCommitment { #[cfg(test)] mod tests { + use std::alloc::System; + use serde::{Deserialize, Serialize}; use serde_with::serde_as; use crate::commitment::{ L1BatchAuxiliaryOutput, L1BatchCommitment, L1BatchMetaParameters, L1BatchPassThroughData, }; - use crate::l2_to_l1_log::L2ToL1Log; + use crate::l2_to_l1_log::{L2ToL1Log, SystemL2ToL1Log, UserL2ToL1Log}; use crate::writes::{InitialStorageWrite, RepeatedStorageWrite}; use crate::{H256, U256}; @@ -636,7 +655,12 @@ mod tests { }) .collect(); let auxiliary_output = L1BatchAuxiliaryOutput::new( - commitment_test.auxiliary_input.l2_l1_logs.clone(), + commitment_test + .auxiliary_input + .l2_l1_logs + .into_iter() + .map(UserL2ToL1Log) + .collect(), initial_writes, commitment_test.auxiliary_input.repeated_writes.clone(), vec![], diff --git a/core/lib/zksync_core/src/lib.rs b/core/lib/zksync_core/src/lib.rs index 5078d1c251c..2e35cf573a9 100644 --- a/core/lib/zksync_core/src/lib.rs +++ b/core/lib/zksync_core/src/lib.rs @@ -12,6 +12,7 @@ use zksync_circuit_breaker::{ CircuitBreakerChecker, CircuitBreakerError, }; use zksync_config::configs::api::MerkleTreeApiConfig; +use zksync_config::configs::contracts::ProverAtGenesis; use zksync_config::configs::{ api::{HealthCheckConfig, Web3JsonRpcConfig}, chain::{ diff --git a/core/lib/zksync_core/src/proof_data_handler/request_processor.rs b/core/lib/zksync_core/src/proof_data_handler/request_processor.rs index 1980cc10402..0e3505ec351 100644 --- a/core/lib/zksync_core/src/proof_data_handler/request_processor.rs +++ b/core/lib/zksync_core/src/proof_data_handler/request_processor.rs @@ -176,8 +176,9 @@ impl RequestProcessor { .header .system_logs .into_iter() - .find(|elem| elem.key == u256_to_h256(2.into())) + .find(|elem| elem.0.key == u256_to_h256(2.into())) .expect("No state diff hash key") + .0 .value; if events_queue_state != events_queue_state_from_prover From af87590ca11cb3c74dbc3550648fb42a243e7518 Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Mon, 6 Nov 2023 13:57:14 +0100 Subject: [PATCH 099/108] rollback changes in core/lib/types/src/eth_sender.rs --- core/lib/types/src/eth_sender.rs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/core/lib/types/src/eth_sender.rs b/core/lib/types/src/eth_sender.rs index 3873da17c86..847662eaeaa 100644 --- a/core/lib/types/src/eth_sender.rs +++ b/core/lib/types/src/eth_sender.rs @@ -1,7 +1,7 @@ use crate::aggregated_operations::AggregatedActionType; use crate::{Address, Nonce, H256}; -#[derive(Debug, Clone)] +#[derive(Clone)] pub struct EthTx { pub id: u32, pub nonce: Nonce, @@ -12,6 +12,20 @@ pub struct EthTx { pub predicted_gas_cost: u64, } +impl std::fmt::Debug for EthTx { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + // Do not print raw_tx + f.debug_struct("EthTx") + .field("id", &self.id) + .field("nonce", &self.nonce) + .field("contract_address", &self.contract_address) + .field("tx_type", &self.tx_type) + .field("created_at_timestamp", &self.created_at_timestamp) + .field("predicted_gas_cost", &self.predicted_gas_cost) + .finish() + } +} + #[derive(Clone, Debug)] pub struct TxHistory { pub id: u32, From 911596e8b1603c5af8f8db926f49cefd114dfcea Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Mon, 6 Nov 2023 14:03:52 +0100 Subject: [PATCH 100/108] link todo task --- core/lib/types/src/tx/tx_execution_info.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/core/lib/types/src/tx/tx_execution_info.rs b/core/lib/types/src/tx/tx_execution_info.rs index 206f0d8c43b..91d9ed2c0a3 100644 --- a/core/lib/types/src/tx/tx_execution_info.rs +++ b/core/lib/types/src/tx/tx_execution_info.rs @@ -83,8 +83,10 @@ impl ExecutionMetrics { self.l2_to_l1_logs * L2ToL1Log::SERIALIZED_SIZE + self.l2_l1_long_messages + self.published_bytecode_bytes - // TODO: refactor this constant - // It represents the need to store the length's of messages as well as bytecodes + // TODO(PLA-648): refactor this constant + // It represents the need to store the length's of messages as well as bytecodes. + // It works due to the fact that each bytecode/L2->L1 long message is accompanied by a corresponding + // user L2->L1 log. + self.l2_to_l1_logs * 4 } } From a28ab30a3ca509476826e856806d21ef872771f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cperekopskiy=E2=80=9D?= Date: Mon, 6 Nov 2023 15:10:37 +0200 Subject: [PATCH 101/108] fix --- Cargo.lock | 1 - core/lib/dal/sqlx-data.json | 256 +++++++++++++++++- core/lib/dal/src/blocks_dal.rs | 54 +++- core/lib/state/Cargo.toml | 2 - .../lib/zksync_core/src/block_reverter/mod.rs | 6 +- .../zksync_core/src/eth_sender/aggregator.rs | 31 ++- 6 files changed, 326 insertions(+), 24 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 066196eac13..29e9b3be3b9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8298,7 +8298,6 @@ version = "0.1.0" dependencies = [ "anyhow", "itertools", - "metrics", "mini-moka", "rand 0.8.5", "tempfile", diff --git a/core/lib/dal/sqlx-data.json b/core/lib/dal/sqlx-data.json index bcd9a6ccf7d..f784c84dbb8 100644 --- a/core/lib/dal/sqlx-data.json +++ b/core/lib/dal/sqlx-data.json @@ -692,7 +692,7 @@ }, "query": "SELECT l1_address FROM tokens WHERE market_volume > $1" }, - "15fa7f79b062dc622bbbcdb2a63f752dbd57cc0bf13b6c8452eb8914dc723d4b": { + "16bca6f4258ff3db90a26a8550c5fc35e666fb698960486528fceba3e452fd62": { "describe": { "columns": [ { @@ -937,12 +937,11 @@ "Bytea", "Bytea", "Int4", - "Bool", "Int8" ] } }, - "query": "SELECT number, l1_batches.timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, rollup_last_leaf_index, zkporter_is_available, l1_batches.bootloader_code_hash, l1_batches.default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, meta_parameters_hash, protocol_version, compressed_state_diffs, system_logs, events_queue_commitment, bootloader_initial_content_commitment FROM l1_batches LEFT JOIN commitments ON commitments.l1_batch_number = l1_batches.number JOIN protocol_versions ON protocol_versions.id = l1_batches.protocol_version WHERE eth_commit_tx_id IS NULL AND number != 0 AND protocol_versions.bootloader_code_hash = $1 AND protocol_versions.default_account_code_hash = $2 AND commitment IS NOT NULL AND (protocol_versions.id = $3 OR protocol_versions.upgrade_tx_hash IS NULL) AND (events_queue_commitment IS NOT NULL AND bootloader_initial_content_commitment IS NOT NULL\n OR $4 = FALSE\n )\n ORDER BY number LIMIT $5" + "query": "SELECT number, l1_batches.timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, rollup_last_leaf_index, zkporter_is_available, l1_batches.bootloader_code_hash, l1_batches.default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, meta_parameters_hash, protocol_version, compressed_state_diffs, system_logs, events_queue_commitment, bootloader_initial_content_commitment FROM l1_batches LEFT JOIN commitments ON commitments.l1_batch_number = l1_batches.number JOIN protocol_versions ON protocol_versions.id = l1_batches.protocol_version WHERE eth_commit_tx_id IS NULL AND number != 0 AND protocol_versions.bootloader_code_hash = $1 AND protocol_versions.default_account_code_hash = $2 AND commitment IS NOT NULL AND (protocol_versions.id = $3 OR protocol_versions.upgrade_tx_hash IS NULL) AND events_queue_commitment IS NOT NULL AND bootloader_initial_content_commitment IS NOT NULL ORDER BY number LIMIT $4" }, "17a42a97e87a675bd465103ebedc63d6d091e5bb093c7905de70aed3dc71d823": { "describe": { @@ -2842,6 +2841,257 @@ }, "query": "INSERT INTO node_aggregation_witness_jobs_fri (l1_batch_number, circuit_id, depth, aggregations_url, number_of_dependent_jobs, protocol_version, status, created_at, updated_at)\n VALUES ($1, $2, $3, $4, $5, $6, 'waiting_for_proofs', now(), now())\n ON CONFLICT(l1_batch_number, circuit_id, depth)\n DO UPDATE SET updated_at=now()" }, + "3167c62f6da5171081f6c003e64a3096829d4da94c3af48867d12d2c135f1a29": { + "describe": { + "columns": [ + { + "name": "number", + "ordinal": 0, + "type_info": "Int8" + }, + { + "name": "timestamp", + "ordinal": 1, + "type_info": "Int8" + }, + { + "name": "is_finished", + "ordinal": 2, + "type_info": "Bool" + }, + { + "name": "l1_tx_count", + "ordinal": 3, + "type_info": "Int4" + }, + { + "name": "l2_tx_count", + "ordinal": 4, + "type_info": "Int4" + }, + { + "name": "fee_account_address", + "ordinal": 5, + "type_info": "Bytea" + }, + { + "name": "bloom", + "ordinal": 6, + "type_info": "Bytea" + }, + { + "name": "priority_ops_onchain_data", + "ordinal": 7, + "type_info": "ByteaArray" + }, + { + "name": "hash", + "ordinal": 8, + "type_info": "Bytea" + }, + { + "name": "parent_hash", + "ordinal": 9, + "type_info": "Bytea" + }, + { + "name": "commitment", + "ordinal": 10, + "type_info": "Bytea" + }, + { + "name": "compressed_write_logs", + "ordinal": 11, + "type_info": "Bytea" + }, + { + "name": "compressed_contracts", + "ordinal": 12, + "type_info": "Bytea" + }, + { + "name": "eth_prove_tx_id", + "ordinal": 13, + "type_info": "Int4" + }, + { + "name": "eth_commit_tx_id", + "ordinal": 14, + "type_info": "Int4" + }, + { + "name": "eth_execute_tx_id", + "ordinal": 15, + "type_info": "Int4" + }, + { + "name": "merkle_root_hash", + "ordinal": 16, + "type_info": "Bytea" + }, + { + "name": "l2_to_l1_logs", + "ordinal": 17, + "type_info": "ByteaArray" + }, + { + "name": "l2_to_l1_messages", + "ordinal": 18, + "type_info": "ByteaArray" + }, + { + "name": "used_contract_hashes", + "ordinal": 19, + "type_info": "Jsonb" + }, + { + "name": "compressed_initial_writes", + "ordinal": 20, + "type_info": "Bytea" + }, + { + "name": "compressed_repeated_writes", + "ordinal": 21, + "type_info": "Bytea" + }, + { + "name": "l2_l1_compressed_messages", + "ordinal": 22, + "type_info": "Bytea" + }, + { + "name": "l2_l1_merkle_root", + "ordinal": 23, + "type_info": "Bytea" + }, + { + "name": "l1_gas_price", + "ordinal": 24, + "type_info": "Int8" + }, + { + "name": "l2_fair_gas_price", + "ordinal": 25, + "type_info": "Int8" + }, + { + "name": "rollup_last_leaf_index", + "ordinal": 26, + "type_info": "Int8" + }, + { + "name": "zkporter_is_available", + "ordinal": 27, + "type_info": "Bool" + }, + { + "name": "bootloader_code_hash", + "ordinal": 28, + "type_info": "Bytea" + }, + { + "name": "default_aa_code_hash", + "ordinal": 29, + "type_info": "Bytea" + }, + { + "name": "base_fee_per_gas", + "ordinal": 30, + "type_info": "Numeric" + }, + { + "name": "aux_data_hash", + "ordinal": 31, + "type_info": "Bytea" + }, + { + "name": "pass_through_data_hash", + "ordinal": 32, + "type_info": "Bytea" + }, + { + "name": "meta_parameters_hash", + "ordinal": 33, + "type_info": "Bytea" + }, + { + "name": "protocol_version", + "ordinal": 34, + "type_info": "Int4" + }, + { + "name": "compressed_state_diffs", + "ordinal": 35, + "type_info": "Bytea" + }, + { + "name": "system_logs", + "ordinal": 36, + "type_info": "ByteaArray" + }, + { + "name": "events_queue_commitment", + "ordinal": 37, + "type_info": "Bytea" + }, + { + "name": "bootloader_initial_content_commitment", + "ordinal": 38, + "type_info": "Bytea" + } + ], + "nullable": [ + false, + false, + false, + false, + false, + false, + false, + false, + true, + true, + true, + true, + true, + true, + true, + true, + true, + false, + false, + false, + true, + true, + true, + true, + false, + false, + true, + true, + true, + true, + false, + true, + true, + true, + true, + true, + false, + true, + true + ], + "parameters": { + "Left": [ + "Bytea", + "Bytea", + "Int4", + "Int8" + ] + } + }, + "query": "SELECT number, l1_batches.timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, rollup_last_leaf_index, zkporter_is_available, l1_batches.bootloader_code_hash, l1_batches.default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, meta_parameters_hash, protocol_version, compressed_state_diffs, system_logs, events_queue_commitment, bootloader_initial_content_commitment FROM l1_batches LEFT JOIN commitments ON commitments.l1_batch_number = l1_batches.number JOIN protocol_versions ON protocol_versions.id = l1_batches.protocol_version WHERE eth_commit_tx_id IS NULL AND number != 0 AND protocol_versions.bootloader_code_hash = $1 AND protocol_versions.default_account_code_hash = $2 AND commitment IS NOT NULL AND (protocol_versions.id = $3 OR protocol_versions.upgrade_tx_hash IS NULL) ORDER BY number LIMIT $4" + }, "334197fef9eeca55790d366ae67bbe95d77181bdfd2ad3208a32bd50585aef2d": { "describe": { "columns": [ diff --git a/core/lib/dal/src/blocks_dal.rs b/core/lib/dal/src/blocks_dal.rs index 13e2ebee52e..9760891e1fe 100644 --- a/core/lib/dal/src/blocks_dal.rs +++ b/core/lib/dal/src/blocks_dal.rs @@ -994,6 +994,52 @@ impl BlocksDal<'_, '_> { }) } + pub async fn legacy_get_ready_for_commit_l1_batches( + &mut self, + limit: usize, + bootloader_hash: H256, + default_aa_hash: H256, + protocol_version_id: ProtocolVersionId, + ) -> anyhow::Result> { + let raw_batches = sqlx::query_as!( + StorageL1Batch, + "SELECT number, l1_batches.timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, \ + bloom, priority_ops_onchain_data, hash, parent_hash, commitment, compressed_write_logs, \ + compressed_contracts, eth_prove_tx_id, eth_commit_tx_id, eth_execute_tx_id, \ + merkle_root_hash, l2_to_l1_logs, l2_to_l1_messages, \ + used_contract_hashes, compressed_initial_writes, compressed_repeated_writes, \ + l2_l1_compressed_messages, l2_l1_merkle_root, l1_gas_price, l2_fair_gas_price, \ + rollup_last_leaf_index, zkporter_is_available, l1_batches.bootloader_code_hash, \ + l1_batches.default_aa_code_hash, base_fee_per_gas, aux_data_hash, pass_through_data_hash, \ + meta_parameters_hash, protocol_version, compressed_state_diffs, \ + system_logs, events_queue_commitment, bootloader_initial_content_commitment \ + FROM l1_batches \ + LEFT JOIN commitments ON commitments.l1_batch_number = l1_batches.number \ + JOIN protocol_versions ON protocol_versions.id = l1_batches.protocol_version \ + WHERE eth_commit_tx_id IS NULL \ + AND number != 0 \ + AND protocol_versions.bootloader_code_hash = $1 AND protocol_versions.default_account_code_hash = $2 \ + AND commitment IS NOT NULL \ + AND (protocol_versions.id = $3 OR protocol_versions.upgrade_tx_hash IS NULL) \ + ORDER BY number LIMIT $4", + bootloader_hash.as_bytes(), + default_aa_hash.as_bytes(), + protocol_version_id as i32, + limit as i64, + ) + .instrument("get_ready_for_commit_l1_batches") + .with_arg("limit", &limit) + .with_arg("bootloader_hash", &bootloader_hash) + .with_arg("default_aa_hash", &default_aa_hash) + .with_arg("protocol_version_id", &protocol_version_id) + .fetch_all(self.storage.conn()) + .await?; + + self.map_l1_batches(raw_batches) + .await + .context("map_l1_batches()") + } + pub async fn get_ready_for_commit_l1_batches( &mut self, limit: usize, @@ -1001,7 +1047,6 @@ impl BlocksDal<'_, '_> { default_aa_hash: H256, protocol_version_id: ProtocolVersionId, ) -> anyhow::Result> { - let is_pre_boojum = protocol_version_id.is_pre_boojum(); let raw_batches = sqlx::query_as!( StorageL1Batch, "SELECT number, l1_batches.timestamp, is_finished, l1_tx_count, l2_tx_count, fee_account_address, \ @@ -1022,14 +1067,11 @@ impl BlocksDal<'_, '_> { AND protocol_versions.bootloader_code_hash = $1 AND protocol_versions.default_account_code_hash = $2 \ AND commitment IS NOT NULL \ AND (protocol_versions.id = $3 OR protocol_versions.upgrade_tx_hash IS NULL) \ - AND (events_queue_commitment IS NOT NULL AND bootloader_initial_content_commitment IS NOT NULL - OR $4 = FALSE - ) - ORDER BY number LIMIT $5", + AND events_queue_commitment IS NOT NULL AND bootloader_initial_content_commitment IS NOT NULL \ + ORDER BY number LIMIT $4", bootloader_hash.as_bytes(), default_aa_hash.as_bytes(), protocol_version_id as i32, - is_pre_boojum, limit as i64, ) .instrument("get_ready_for_commit_l1_batches") diff --git a/core/lib/state/Cargo.toml b/core/lib/state/Cargo.toml index 537ba9737cd..b613266a650 100644 --- a/core/lib/state/Cargo.toml +++ b/core/lib/state/Cargo.toml @@ -22,8 +22,6 @@ tokio = { version = "1", features = ["rt"] } tracing = "0.1" itertools = "0.10.3" -metrics = "0.21" - [dev-dependencies] rand = "0.8.5" tempfile = "3.0.2" diff --git a/core/lib/zksync_core/src/block_reverter/mod.rs b/core/lib/zksync_core/src/block_reverter/mod.rs index a2b716ad550..8fbafec4135 100644 --- a/core/lib/zksync_core/src/block_reverter/mod.rs +++ b/core/lib/zksync_core/src/block_reverter/mod.rs @@ -351,9 +351,9 @@ impl BlockReverter { async fn get_l1_batch_number_from_contract(&self, op: AggregatedActionType) -> L1BatchNumber { let function_name = match op { - AggregatedActionType::Commit => "getTotalBlocksCommitted", - AggregatedActionType::PublishProofOnchain => "getTotalBlocksVerified", - AggregatedActionType::Execute => "getTotalBlocksExecuted", + AggregatedActionType::Commit => "getTotalBatchesCommitted", + AggregatedActionType::PublishProofOnchain => "getTotalBatchesVerified", + AggregatedActionType::Execute => "getTotalBatchesExecuted", }; let eth_config = self .eth_config diff --git a/core/lib/zksync_core/src/eth_sender/aggregator.rs b/core/lib/zksync_core/src/eth_sender/aggregator.rs index a8f35b037f2..bdfbf956097 100644 --- a/core/lib/zksync_core/src/eth_sender/aggregator.rs +++ b/core/lib/zksync_core/src/eth_sender/aggregator.rs @@ -173,15 +173,28 @@ impl Aggregator { .get_last_committed_to_eth_l1_batch() .await .unwrap()?; - let ready_for_commit_l1_batches = blocks_dal - .get_ready_for_commit_l1_batches( - limit, - base_system_contracts_hashes.bootloader, - base_system_contracts_hashes.default_aa, - protocol_version_id, - ) - .await - .unwrap(); + + let ready_for_commit_l1_batches = if protocol_version_id.is_pre_boojum() { + blocks_dal + .legacy_get_ready_for_commit_l1_batches( + limit, + base_system_contracts_hashes.bootloader, + base_system_contracts_hashes.default_aa, + protocol_version_id, + ) + .await + .unwrap() + } else { + blocks_dal + .get_ready_for_commit_l1_batches( + limit, + base_system_contracts_hashes.bootloader, + base_system_contracts_hashes.default_aa, + protocol_version_id, + ) + .await + .unwrap() + }; // Check that the L1 batches that are selected are sequential ready_for_commit_l1_batches From 75f427d998c4287289667f43e5f24d63385fa9f4 Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Mon, 6 Nov 2023 14:16:11 +0100 Subject: [PATCH 102/108] make rust lints pass --- core/lib/dal/src/blocks_dal.rs | 9 ++++++--- core/lib/multivm/src/glue/types/vm/vm_block_result.rs | 1 - .../src/interface/types/outputs/execution_state.rs | 2 +- core/lib/multivm/src/versions/vm_latest/vm.rs | 10 +++++----- .../multivm/src/versions/vm_refunds_enhancement/vm.rs | 1 - core/lib/multivm/src/versions/vm_virtual_blocks/vm.rs | 1 - core/lib/types/src/block.rs | 2 +- core/lib/types/src/commitment.rs | 6 ++---- 8 files changed, 15 insertions(+), 17 deletions(-) diff --git a/core/lib/dal/src/blocks_dal.rs b/core/lib/dal/src/blocks_dal.rs index 2bd2c3ef71c..ba6684651b7 100644 --- a/core/lib/dal/src/blocks_dal.rs +++ b/core/lib/dal/src/blocks_dal.rs @@ -1496,7 +1496,10 @@ impl BlocksDal<'_, '_> { #[cfg(test)] mod tests { use zksync_contracts::BaseSystemContractsHashes; - use zksync_types::{l2_to_l1_log::L2ToL1Log, Address, ProtocolVersion, ProtocolVersionId}; + use zksync_types::{ + l2_to_l1_log::{L2ToL1Log, UserL2ToL1Log}, + Address, ProtocolVersion, ProtocolVersionId, + }; use super::*; use crate::ConnectionPool; @@ -1525,14 +1528,14 @@ mod tests { ); header.l1_tx_count = 3; header.l2_tx_count = 5; - header.l2_to_l1_logs.push(L2ToL1Log { + header.l2_to_l1_logs.push(UserL2ToL1Log(L2ToL1Log { shard_id: 0, is_service: false, tx_number_in_block: 2, sender: Address::repeat_byte(2), key: H256::repeat_byte(3), value: H256::zero(), - }); + })); header.l2_to_l1_messages.push(vec![22; 22]); header.l2_to_l1_messages.push(vec![33; 33]); diff --git a/core/lib/multivm/src/glue/types/vm/vm_block_result.rs b/core/lib/multivm/src/glue/types/vm/vm_block_result.rs index e2eb01adf8a..cdbedfd4a75 100644 --- a/core/lib/multivm/src/glue/types/vm/vm_block_result.rs +++ b/core/lib/multivm/src/glue/types/vm/vm_block_result.rs @@ -1,4 +1,3 @@ -use itertools::Itertools; use zksync_types::l2_to_l1_log::UserL2ToL1Log; use crate::glue::{GlueFrom, GlueInto}; diff --git a/core/lib/multivm/src/interface/types/outputs/execution_state.rs b/core/lib/multivm/src/interface/types/outputs/execution_state.rs index 3f1a4a7e932..c76e6370232 100644 --- a/core/lib/multivm/src/interface/types/outputs/execution_state.rs +++ b/core/lib/multivm/src/interface/types/outputs/execution_state.rs @@ -1,4 +1,4 @@ -use zksync_types::l2_to_l1_log::{L2ToL1Log, SystemL2ToL1Log, UserL2ToL1Log}; +use zksync_types::l2_to_l1_log::{SystemL2ToL1Log, UserL2ToL1Log}; use zksync_types::{LogQuery, StorageLogQuery, VmEvent, U256}; /// State of the VM since the start of the batch execution. diff --git a/core/lib/multivm/src/versions/vm_latest/vm.rs b/core/lib/multivm/src/versions/vm_latest/vm.rs index c0c9154a910..437815a8f82 100644 --- a/core/lib/multivm/src/versions/vm_latest/vm.rs +++ b/core/lib/multivm/src/versions/vm_latest/vm.rs @@ -90,7 +90,10 @@ impl Vm { .collect(); let user_l2_to_l1_logs = extract_l2tol1logs_from_l1_messenger(&events); - let system_logs: Vec<_> = l1_messages.into_iter().map(|log| log.into()).collect(); + let system_logs = l1_messages + .into_iter() + .map(|log| SystemL2ToL1Log(log.into())) + .collect(); let total_log_queries = self.state.event_sink.get_log_queries() + self .state @@ -107,10 +110,7 @@ impl Vm { .into_iter() .map(|log| UserL2ToL1Log(log.into())) .collect(), - system_logs: system_logs - .into_iter() - .map(|log| SystemL2ToL1Log(log)) - .collect(), + system_logs, total_log_queries, cycles_used: self.state.local_state.monotonic_cycle_counter, deduplicated_events_logs, diff --git a/core/lib/multivm/src/versions/vm_refunds_enhancement/vm.rs b/core/lib/multivm/src/versions/vm_refunds_enhancement/vm.rs index fb36ba4d208..c9d7d2b06ab 100644 --- a/core/lib/multivm/src/versions/vm_refunds_enhancement/vm.rs +++ b/core/lib/multivm/src/versions/vm_refunds_enhancement/vm.rs @@ -5,7 +5,6 @@ use zksync_utils::bytecode::CompressedBytecodeInfo; use crate::vm_refunds_enhancement::old_vm::events::merge_events; use crate::vm_refunds_enhancement::old_vm::history_recorder::{HistoryEnabled, HistoryMode}; -use zksync_types::event::extract_l2tol1logs_from_l1_messenger; use crate::interface::BytecodeCompressionError; use crate::interface::{ diff --git a/core/lib/multivm/src/versions/vm_virtual_blocks/vm.rs b/core/lib/multivm/src/versions/vm_virtual_blocks/vm.rs index 4b3120cbdd5..7bb5a6639df 100644 --- a/core/lib/multivm/src/versions/vm_virtual_blocks/vm.rs +++ b/core/lib/multivm/src/versions/vm_virtual_blocks/vm.rs @@ -3,7 +3,6 @@ use crate::interface::{ SystemEnv, VmExecutionMode, VmExecutionResultAndLogs, }; use zksync_state::{StoragePtr, WriteStorage}; -use zksync_types::event::extract_l2tol1logs_from_l1_messenger; use zksync_types::l2_to_l1_log::UserL2ToL1Log; use zksync_types::Transaction; use zksync_utils::bytecode::CompressedBytecodeInfo; diff --git a/core/lib/types/src/block.rs b/core/lib/types/src/block.rs index 1659d9d683f..1896fe0eb50 100644 --- a/core/lib/types/src/block.rs +++ b/core/lib/types/src/block.rs @@ -7,7 +7,7 @@ use zksync_basic_types::{H2048, H256, U256}; use zksync_contracts::BaseSystemContractsHashes; use crate::{ - l2_to_l1_log::{L2ToL1Log, SystemL2ToL1Log, UserL2ToL1Log}, + l2_to_l1_log::{SystemL2ToL1Log, UserL2ToL1Log}, priority_op_onchain_data::PriorityOpOnchainData, web3::signing::keccak256, AccountTreeId, Address, L1BatchNumber, MiniblockNumber, ProtocolVersionId, Transaction, diff --git a/core/lib/types/src/commitment.rs b/core/lib/types/src/commitment.rs index bc11361924a..088e8320222 100644 --- a/core/lib/types/src/commitment.rs +++ b/core/lib/types/src/commitment.rs @@ -8,7 +8,7 @@ use serde::{Deserialize, Serialize}; -use std::{alloc::System, collections::HashMap, convert::TryFrom}; +use std::{collections::HashMap, convert::TryFrom}; use zksync_mini_merkle_tree::MiniMerkleTree; use zksync_system_constants::ZKPORTER_IS_AVAILABLE; @@ -574,15 +574,13 @@ impl L1BatchCommitment { #[cfg(test)] mod tests { - use std::alloc::System; - use serde::{Deserialize, Serialize}; use serde_with::serde_as; use crate::commitment::{ L1BatchAuxiliaryOutput, L1BatchCommitment, L1BatchMetaParameters, L1BatchPassThroughData, }; - use crate::l2_to_l1_log::{L2ToL1Log, SystemL2ToL1Log, UserL2ToL1Log}; + use crate::l2_to_l1_log::{L2ToL1Log, UserL2ToL1Log}; use crate::writes::{InitialStorageWrite, RepeatedStorageWrite}; use crate::{H256, U256}; From e728767dab205933e4b9445c8035c06a96a867c1 Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Mon, 6 Nov 2023 14:38:36 +0100 Subject: [PATCH 103/108] remove unneeded metrics import --- Cargo.lock | 1 - core/lib/state/Cargo.toml | 2 -- 2 files changed, 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index caace59cdda..6f57271d40c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8299,7 +8299,6 @@ version = "0.1.0" dependencies = [ "anyhow", "itertools", - "metrics", "mini-moka", "rand 0.8.5", "tempfile", diff --git a/core/lib/state/Cargo.toml b/core/lib/state/Cargo.toml index 537ba9737cd..b613266a650 100644 --- a/core/lib/state/Cargo.toml +++ b/core/lib/state/Cargo.toml @@ -22,8 +22,6 @@ tokio = { version = "1", features = ["rt"] } tracing = "0.1" itertools = "0.10.3" -metrics = "0.21" - [dev-dependencies] rand = "0.8.5" tempfile = "3.0.2" From df92671210192e590d783ea9df5515280fc245d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cperekopskiy=E2=80=9D?= Date: Mon, 6 Nov 2023 16:12:59 +0200 Subject: [PATCH 104/108] Rename --- core/lib/dal/src/blocks_dal.rs | 2 +- core/lib/zksync_core/src/eth_sender/aggregator.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/lib/dal/src/blocks_dal.rs b/core/lib/dal/src/blocks_dal.rs index 9760891e1fe..ca1184c6a42 100644 --- a/core/lib/dal/src/blocks_dal.rs +++ b/core/lib/dal/src/blocks_dal.rs @@ -994,7 +994,7 @@ impl BlocksDal<'_, '_> { }) } - pub async fn legacy_get_ready_for_commit_l1_batches( + pub async fn pre_boojum_get_ready_for_commit_l1_batches( &mut self, limit: usize, bootloader_hash: H256, diff --git a/core/lib/zksync_core/src/eth_sender/aggregator.rs b/core/lib/zksync_core/src/eth_sender/aggregator.rs index bdfbf956097..92a2cb324d8 100644 --- a/core/lib/zksync_core/src/eth_sender/aggregator.rs +++ b/core/lib/zksync_core/src/eth_sender/aggregator.rs @@ -176,7 +176,7 @@ impl Aggregator { let ready_for_commit_l1_batches = if protocol_version_id.is_pre_boojum() { blocks_dal - .legacy_get_ready_for_commit_l1_batches( + .pre_boojum_get_ready_for_commit_l1_batches( limit, base_system_contracts_hashes.bootloader, base_system_contracts_hashes.default_aa, From 3739b026db5520d539b40c0c81f6373d8d966544 Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Mon, 6 Nov 2023 15:48:04 +0100 Subject: [PATCH 105/108] use contracts from main --- etc/system-contracts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/etc/system-contracts b/etc/system-contracts index de597eddb79..3377d27d7dc 160000 --- a/etc/system-contracts +++ b/etc/system-contracts @@ -1 +1 @@ -Subproject commit de597eddb79491bb22bb237b8bcc4afea8cda26f +Subproject commit 3377d27d7dc26b9f0e1ec0637af34dbc4cb8c2e3 From e3f60aad38e0db1d7923cc66dfe5fca0671799e1 Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Mon, 6 Nov 2023 16:30:07 +0100 Subject: [PATCH 106/108] todo notice --- .../lib/multivm/src/interface/types/outputs/execution_state.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/lib/multivm/src/interface/types/outputs/execution_state.rs b/core/lib/multivm/src/interface/types/outputs/execution_state.rs index c76e6370232..066de92ffbe 100644 --- a/core/lib/multivm/src/interface/types/outputs/execution_state.rs +++ b/core/lib/multivm/src/interface/types/outputs/execution_state.rs @@ -20,7 +20,8 @@ pub struct CurrentExecutionState { pub total_log_queries: usize, /// Number of cycles used by the VM. pub cycles_used: u32, - /// Sorted & deduplicated events logs for batch + /// Sorted & deduplicated events logs for batch. Note, that this is a more "low-level" representation of + /// the `events` field of this struct TODO(PLA-649): refactor to remove duplication of data. pub deduplicated_events_logs: Vec, /// Refunds returned by `StorageOracle`. pub storage_refunds: Vec, From 39fb338b79677a03398efbe1b8acb81bc724b69a Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Mon, 6 Nov 2023 16:36:26 +0100 Subject: [PATCH 107/108] fix mps comments --- core/lib/multivm/src/versions/vm_latest/constants.rs | 2 +- .../src/versions/vm_latest/old_vm/event_sink.rs | 11 +---------- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/core/lib/multivm/src/versions/vm_latest/constants.rs b/core/lib/multivm/src/versions/vm_latest/constants.rs index 7338461cbfc..c67156681a0 100644 --- a/core/lib/multivm/src/versions/vm_latest/constants.rs +++ b/core/lib/multivm/src/versions/vm_latest/constants.rs @@ -59,7 +59,7 @@ pub const OPERATOR_PROVIDED_L1_MESSENGER_PUBDATA_OFFSET: usize = /// One of "worst case" scenarios for the number of state diffs in a batch is when 120kb of pubdata is spent /// on repeated writes, that are all zeroed out. In this case, the number of diffs is 120k / 5 = 24k. This means that they will have -/// accoomdate 6528000 bytes of calldata for the uncompressed state diffs. Adding 120k on top leaves us with +/// accommodate 6528000 bytes of calldata for the uncompressed state diffs. Adding 120k on top leaves us with /// roughly 6650000 bytes needed for calldata. 207813 slots are needed to accomodate this amount of data. /// We round up to 208000 slots just in case. /// diff --git a/core/lib/multivm/src/versions/vm_latest/old_vm/event_sink.rs b/core/lib/multivm/src/versions/vm_latest/old_vm/event_sink.rs index a03ad173aba..cbfe44f2bc6 100644 --- a/core/lib/multivm/src/versions/vm_latest/old_vm/event_sink.rs +++ b/core/lib/multivm/src/versions/vm_latest/old_vm/event_sink.rs @@ -76,16 +76,7 @@ impl InMemoryEventSink { // Sort the events by timestamp and rollback flag, basically ensuring that // if an event has been rolled back, the original event and its rollback will be put together - events.sort_by(|a, b| match a.timestamp.0.cmp(&b.timestamp.0) { - Ordering::Equal => { - if b.rollback { - Ordering::Less - } else { - Ordering::Greater - } - } - r => r, - }); + events.sort_by_key(|log| (log.timestamp, log.rollback)); let mut stack = Vec::::new(); let mut net_history = vec![]; From 76eb720af80e662b1e0e020a278dcd8be351ada9 Mon Sep 17 00:00:00 2001 From: Stanislav Breadless Date: Mon, 6 Nov 2023 16:47:34 +0100 Subject: [PATCH 108/108] resolve linting --- core/lib/multivm/src/versions/vm_latest/old_vm/event_sink.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/lib/multivm/src/versions/vm_latest/old_vm/event_sink.rs b/core/lib/multivm/src/versions/vm_latest/old_vm/event_sink.rs index cbfe44f2bc6..4174d9f4f17 100644 --- a/core/lib/multivm/src/versions/vm_latest/old_vm/event_sink.rs +++ b/core/lib/multivm/src/versions/vm_latest/old_vm/event_sink.rs @@ -3,7 +3,7 @@ use crate::vm_latest::old_vm::{ oracles::OracleWithHistory, }; use itertools::Itertools; -use std::{cmp::Ordering, collections::HashMap}; +use std::collections::HashMap; use zk_evm_1_4_0::{ abstractions::EventSink, aux_structures::{LogQuery, Timestamp},