@aztec/simulator 0.0.0-test.1 → 0.0.1-commit.5476d83
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -0
- package/dest/client.d.ts +6 -4
- package/dest/client.d.ts.map +1 -1
- package/dest/client.js +4 -2
- package/dest/common/errors.d.ts +5 -14
- package/dest/common/errors.d.ts.map +1 -1
- package/dest/common/errors.js +51 -32
- package/dest/common/index.d.ts +1 -2
- package/dest/common/index.d.ts.map +1 -1
- package/dest/common/index.js +0 -1
- package/dest/common/stats/index.d.ts +1 -1
- package/dest/common/stats/stats.d.ts +1 -1
- package/dest/private/acvm/acvm.d.ts +12 -6
- package/dest/private/acvm/acvm.d.ts.map +1 -1
- package/dest/private/acvm/acvm.js +10 -16
- package/dest/private/acvm/acvm_types.d.ts +2 -2
- package/dest/private/acvm/acvm_types.d.ts.map +1 -1
- package/dest/private/acvm/deserialize.d.ts +18 -19
- package/dest/private/acvm/deserialize.d.ts.map +1 -1
- package/dest/private/acvm/deserialize.js +31 -23
- package/dest/private/acvm/index.d.ts +1 -2
- package/dest/private/acvm/index.d.ts.map +1 -1
- package/dest/private/acvm/index.js +0 -1
- package/dest/private/acvm/serialize.d.ts +20 -3
- package/dest/private/acvm/serialize.d.ts.map +1 -1
- package/dest/private/acvm/serialize.js +53 -0
- package/dest/private/acvm_native.d.ts +39 -0
- package/dest/private/acvm_native.d.ts.map +1 -0
- package/dest/private/{providers/acvm_native.js → acvm_native.js} +26 -20
- package/dest/private/acvm_wasm.d.ts +15 -0
- package/dest/private/acvm_wasm.d.ts.map +1 -0
- package/dest/private/{providers/acvm_wasm.js → acvm_wasm.js} +22 -19
- package/dest/private/acvm_wasm_with_blobs.d.ts +20 -0
- package/dest/private/acvm_wasm_with_blobs.d.ts.map +1 -0
- package/dest/private/acvm_wasm_with_blobs.js +35 -0
- package/dest/private/circuit_recording/circuit_recorder.d.ts +108 -0
- package/dest/private/circuit_recording/circuit_recorder.d.ts.map +1 -0
- package/dest/private/circuit_recording/circuit_recorder.js +209 -0
- package/dest/private/circuit_recording/file_circuit_recorder.d.ts +31 -0
- package/dest/private/circuit_recording/file_circuit_recorder.d.ts.map +1 -0
- package/dest/private/circuit_recording/file_circuit_recorder.js +135 -0
- package/dest/private/circuit_recording/memory_circuit_recorder.d.ts +5 -0
- package/dest/private/circuit_recording/memory_circuit_recorder.d.ts.map +1 -0
- package/dest/private/circuit_recording/memory_circuit_recorder.js +9 -0
- package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts +21 -0
- package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts.map +1 -0
- package/dest/private/circuit_recording/simulator_recorder_wrapper.js +44 -0
- package/dest/private/circuit_simulator.d.ts +35 -0
- package/dest/private/circuit_simulator.d.ts.map +1 -0
- package/dest/private/circuit_simulator.js +43 -0
- package/dest/private/factory.d.ts +12 -0
- package/dest/private/factory.d.ts.map +1 -0
- package/dest/private/{providers/factory.js → factory.js} +2 -2
- package/dest/public/avm/avm_context.d.ts +6 -6
- package/dest/public/avm/avm_context.d.ts.map +1 -1
- package/dest/public/avm/avm_contract_call_result.d.ts +5 -3
- package/dest/public/avm/avm_contract_call_result.d.ts.map +1 -1
- package/dest/public/avm/avm_contract_call_result.js +11 -7
- package/dest/public/avm/avm_execution_environment.d.ts +4 -2
- package/dest/public/avm/avm_execution_environment.d.ts.map +1 -1
- package/dest/public/avm/avm_execution_environment.js +4 -2
- package/dest/public/avm/avm_gas.d.ts +5 -21
- package/dest/public/avm/avm_gas.d.ts.map +1 -1
- package/dest/public/avm/avm_gas.js +27 -35
- package/dest/public/avm/avm_machine_state.d.ts +3 -1
- package/dest/public/avm/avm_machine_state.d.ts.map +1 -1
- package/dest/public/avm/avm_machine_state.js +2 -0
- package/dest/public/avm/avm_memory_types.d.ts +99 -88
- package/dest/public/avm/avm_memory_types.d.ts.map +1 -1
- package/dest/public/avm/avm_memory_types.js +17 -6
- package/dest/public/avm/avm_simulator.d.ts +6 -6
- package/dest/public/avm/avm_simulator.d.ts.map +1 -1
- package/dest/public/avm/avm_simulator.js +23 -35
- package/dest/public/avm/avm_simulator_interface.d.ts +9 -0
- package/dest/public/avm/avm_simulator_interface.d.ts.map +1 -0
- package/dest/public/avm/avm_simulator_interface.js +3 -0
- package/dest/public/avm/errors.d.ts +7 -31
- package/dest/public/avm/errors.d.ts.map +1 -1
- package/dest/public/avm/errors.js +7 -57
- package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +6 -5
- package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +1 -1
- package/dest/public/avm/fixtures/avm_simulation_tester.js +22 -15
- package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts +7 -5
- package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +1 -1
- package/dest/public/avm/fixtures/base_avm_simulation_tester.js +37 -14
- package/dest/public/avm/fixtures/initializers.d.ts +42 -0
- package/dest/public/avm/fixtures/initializers.d.ts.map +1 -0
- package/dest/public/avm/fixtures/initializers.js +44 -0
- package/dest/public/avm/fixtures/utils.d.ts +38 -0
- package/dest/public/avm/fixtures/utils.d.ts.map +1 -0
- package/dest/public/avm/fixtures/utils.js +95 -0
- package/dest/public/avm/index.d.ts +1 -3
- package/dest/public/avm/index.d.ts.map +1 -1
- package/dest/public/avm/index.js +0 -2
- package/dest/public/avm/opcodes/accrued_substate.d.ts +3 -3
- package/dest/public/avm/opcodes/accrued_substate.d.ts.map +1 -1
- package/dest/public/avm/opcodes/accrued_substate.js +28 -25
- package/dest/public/avm/opcodes/addressing_mode.d.ts +12 -8
- package/dest/public/avm/opcodes/addressing_mode.d.ts.map +1 -1
- package/dest/public/avm/opcodes/addressing_mode.js +46 -26
- package/dest/public/avm/opcodes/arithmetic.d.ts +17 -7
- package/dest/public/avm/opcodes/arithmetic.d.ts.map +1 -1
- package/dest/public/avm/opcodes/arithmetic.js +16 -2
- package/dest/public/avm/opcodes/bitwise.d.ts +10 -18
- package/dest/public/avm/opcodes/bitwise.d.ts.map +1 -1
- package/dest/public/avm/opcodes/bitwise.js +19 -26
- package/dest/public/avm/opcodes/comparators.d.ts +4 -4
- package/dest/public/avm/opcodes/comparators.d.ts.map +1 -1
- package/dest/public/avm/opcodes/comparators.js +3 -3
- package/dest/public/avm/opcodes/contract.d.ts +2 -3
- package/dest/public/avm/opcodes/contract.d.ts.map +1 -1
- package/dest/public/avm/opcodes/contract.js +9 -10
- package/dest/public/avm/opcodes/control_flow.d.ts +1 -1
- package/dest/public/avm/opcodes/control_flow.d.ts.map +1 -1
- package/dest/public/avm/opcodes/control_flow.js +10 -8
- package/dest/public/avm/opcodes/conversion.d.ts +2 -1
- package/dest/public/avm/opcodes/conversion.d.ts.map +1 -1
- package/dest/public/avm/opcodes/conversion.js +267 -3
- package/dest/public/avm/opcodes/ec_add.d.ts +2 -2
- package/dest/public/avm/opcodes/ec_add.d.ts.map +1 -1
- package/dest/public/avm/opcodes/ec_add.js +6 -6
- package/dest/public/avm/opcodes/environment_getters.d.ts +3 -3
- package/dest/public/avm/opcodes/environment_getters.d.ts.map +1 -1
- package/dest/public/avm/opcodes/environment_getters.js +17 -19
- package/dest/public/avm/opcodes/external_calls.d.ts +9 -8
- package/dest/public/avm/opcodes/external_calls.d.ts.map +1 -1
- package/dest/public/avm/opcodes/external_calls.js +39 -34
- package/dest/public/avm/opcodes/hashing.d.ts +2 -2
- package/dest/public/avm/opcodes/hashing.d.ts.map +1 -1
- package/dest/public/avm/opcodes/hashing.js +6 -6
- package/dest/public/avm/opcodes/index.d.ts +1 -1
- package/dest/public/avm/opcodes/instruction.d.ts +15 -11
- package/dest/public/avm/opcodes/instruction.d.ts.map +1 -1
- package/dest/public/avm/opcodes/instruction.js +23 -19
- package/dest/public/avm/opcodes/instruction_impl.d.ts +1 -1
- package/dest/public/avm/opcodes/instruction_impl.d.ts.map +1 -1
- package/dest/public/avm/opcodes/memory.d.ts +6 -6
- package/dest/public/avm/opcodes/memory.d.ts.map +1 -1
- package/dest/public/avm/opcodes/memory.js +37 -33
- package/dest/public/avm/opcodes/misc.d.ts +3 -2
- package/dest/public/avm/opcodes/misc.d.ts.map +1 -1
- package/dest/public/avm/opcodes/misc.js +41 -16
- package/dest/public/avm/opcodes/storage.d.ts +3 -3
- package/dest/public/avm/opcodes/storage.d.ts.map +1 -1
- package/dest/public/avm/opcodes/storage.js +7 -5
- package/dest/public/avm/revert_reason.d.ts +18 -0
- package/dest/public/avm/revert_reason.d.ts.map +1 -0
- package/dest/public/avm/revert_reason.js +38 -0
- package/dest/public/avm/serialization/buffer_cursor.d.ts +1 -3
- package/dest/public/avm/serialization/buffer_cursor.d.ts.map +1 -1
- package/dest/public/avm/serialization/bytecode_serialization.d.ts +3 -7
- package/dest/public/avm/serialization/bytecode_serialization.d.ts.map +1 -1
- package/dest/public/avm/serialization/bytecode_serialization.js +70 -69
- package/dest/public/avm/serialization/instruction_serialization.d.ts +14 -5
- package/dest/public/avm/serialization/instruction_serialization.d.ts.map +1 -1
- package/dest/public/avm/serialization/instruction_serialization.js +70 -35
- package/dest/public/avm/test_utils.d.ts +11 -14
- package/dest/public/avm/test_utils.d.ts.map +1 -1
- package/dest/public/avm/test_utils.js +16 -24
- package/dest/public/contracts_db_checkpoint.d.ts +16 -0
- package/dest/public/contracts_db_checkpoint.d.ts.map +1 -0
- package/dest/public/contracts_db_checkpoint.js +30 -0
- package/dest/public/db_interfaces.d.ts +68 -0
- package/dest/public/db_interfaces.d.ts.map +1 -0
- package/dest/public/db_interfaces.js +3 -0
- package/dest/public/debug_fn_name.d.ts +5 -0
- package/dest/public/debug_fn_name.d.ts.map +1 -0
- package/dest/public/debug_fn_name.js +9 -0
- package/dest/public/executor_metrics.d.ts +12 -4
- package/dest/public/executor_metrics.d.ts.map +1 -1
- package/dest/public/executor_metrics.js +37 -6
- package/dest/public/executor_metrics_interface.d.ts +10 -0
- package/dest/public/executor_metrics_interface.d.ts.map +1 -0
- package/dest/public/executor_metrics_interface.js +1 -0
- package/dest/public/fixtures/amm_test.d.ts +10 -0
- package/dest/public/fixtures/amm_test.d.ts.map +1 -0
- package/dest/public/fixtures/amm_test.js +213 -0
- package/dest/public/fixtures/bulk_test.d.ts +6 -0
- package/dest/public/fixtures/bulk_test.d.ts.map +1 -0
- package/dest/public/fixtures/bulk_test.js +326 -0
- package/dest/public/fixtures/custom_bytecode_tester.d.ts +12 -0
- package/dest/public/fixtures/custom_bytecode_tester.d.ts.map +1 -0
- package/dest/public/fixtures/custom_bytecode_tester.js +29 -0
- package/dest/public/fixtures/custom_bytecode_tests.d.ts +9 -0
- package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +1 -0
- package/dest/public/fixtures/custom_bytecode_tests.js +109 -0
- package/dest/public/fixtures/index.d.ts +8 -1
- package/dest/public/fixtures/index.d.ts.map +1 -1
- package/dest/public/fixtures/index.js +7 -0
- package/dest/public/fixtures/minimal_public_tx.d.ts +9 -0
- package/dest/public/fixtures/minimal_public_tx.d.ts.map +1 -0
- package/dest/public/fixtures/minimal_public_tx.js +29 -0
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts +35 -14
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
- package/dest/public/fixtures/public_tx_simulation_tester.js +100 -71
- package/dest/public/fixtures/simple_contract_data_source.d.ts +35 -0
- package/dest/public/fixtures/simple_contract_data_source.d.ts.map +1 -0
- package/dest/public/{avm/fixtures → fixtures}/simple_contract_data_source.js +31 -10
- package/dest/public/fixtures/token_test.d.ts +8 -0
- package/dest/public/fixtures/token_test.d.ts.map +1 -0
- package/dest/public/fixtures/token_test.js +94 -0
- package/dest/public/fixtures/utils.d.ts +17 -4
- package/dest/public/fixtures/utils.d.ts.map +1 -1
- package/dest/public/fixtures/utils.js +100 -58
- package/dest/public/hinting_db_sources.d.ts +78 -0
- package/dest/public/hinting_db_sources.d.ts.map +1 -0
- package/dest/public/hinting_db_sources.js +350 -0
- package/dest/public/index.d.ts +6 -9
- package/dest/public/index.d.ts.map +1 -1
- package/dest/public/index.js +4 -7
- package/dest/public/public_db_sources.d.ts +51 -101
- package/dest/public/public_db_sources.d.ts.map +1 -1
- package/dest/public/public_db_sources.js +219 -192
- package/dest/public/public_errors.d.ts +12 -0
- package/dest/public/public_errors.d.ts.map +1 -0
- package/dest/public/public_errors.js +13 -0
- package/dest/public/public_processor/guarded_merkle_tree.d.ts +49 -0
- package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -0
- package/dest/public/public_processor/guarded_merkle_tree.js +108 -0
- package/dest/public/public_processor/public_processor.d.ts +25 -37
- package/dest/public/public_processor/public_processor.d.ts.map +1 -1
- package/dest/public/public_processor/public_processor.js +154 -111
- package/dest/public/public_processor/public_processor_metrics.d.ts +3 -3
- package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
- package/dest/public/public_processor/public_processor_metrics.js +1 -1
- package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts +30 -0
- package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/contract_provider_for_cpp.js +133 -0
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +66 -0
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +210 -0
- package/dest/public/public_tx_simulator/index.d.ts +5 -0
- package/dest/public/public_tx_simulator/index.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/index.js +2 -0
- package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +31 -0
- package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/measured_public_tx_simulator.js +51 -0
- package/dest/public/public_tx_simulator/public_tx_context.d.ts +23 -30
- package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/public_tx_context.js +71 -91
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +36 -58
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/public_tx_simulator.js +208 -206
- package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts +9 -0
- package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/public_tx_simulator_interface.js +1 -0
- package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts +21 -0
- package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.js +39 -0
- package/dest/public/side_effect_errors.d.ts +42 -2
- package/dest/public/side_effect_errors.d.ts.map +1 -1
- package/dest/public/side_effect_errors.js +70 -1
- package/dest/public/side_effect_trace.d.ts +21 -67
- package/dest/public/side_effect_trace.d.ts.map +1 -1
- package/dest/public/side_effect_trace.js +71 -121
- package/dest/public/side_effect_trace_interface.d.ts +12 -24
- package/dest/public/side_effect_trace_interface.d.ts.map +1 -1
- package/dest/public/state_manager/index.d.ts +2 -0
- package/dest/public/state_manager/index.d.ts.map +1 -0
- package/dest/public/state_manager/index.js +1 -0
- package/dest/public/{avm/journal → state_manager}/nullifiers.d.ts +3 -6
- package/dest/public/state_manager/nullifiers.d.ts.map +1 -0
- package/dest/public/{avm/journal → state_manager}/nullifiers.js +3 -8
- package/dest/public/{avm/journal → state_manager}/public_storage.d.ts +3 -3
- package/dest/public/state_manager/public_storage.d.ts.map +1 -0
- package/dest/public/state_manager/state_manager.d.ts +159 -0
- package/dest/public/state_manager/state_manager.d.ts.map +1 -0
- package/dest/public/state_manager/state_manager.js +392 -0
- package/dest/public/test_executor_metrics.d.ts +55 -0
- package/dest/public/test_executor_metrics.d.ts.map +1 -0
- package/dest/public/test_executor_metrics.js +307 -0
- package/dest/public/unique_class_ids.d.ts +1 -1
- package/dest/public/unique_class_ids.d.ts.map +1 -1
- package/dest/public/utils.d.ts +3 -5
- package/dest/public/utils.d.ts.map +1 -1
- package/dest/public/utils.js +4 -21
- package/dest/server.d.ts +7 -4
- package/dest/server.d.ts.map +1 -1
- package/dest/server.js +5 -2
- package/dest/testing.d.ts +2 -0
- package/dest/testing.d.ts.map +1 -0
- package/dest/testing.js +1 -0
- package/package.json +39 -33
- package/src/client.ts +5 -3
- package/src/common/errors.ts +79 -44
- package/src/common/index.ts +0 -1
- package/src/private/acvm/acvm.ts +17 -32
- package/src/private/acvm/acvm_types.ts +1 -1
- package/src/private/acvm/deserialize.ts +35 -29
- package/src/private/acvm/index.ts +0 -1
- package/src/private/acvm/serialize.ts +63 -0
- package/src/private/{providers/acvm_native.ts → acvm_native.ts} +47 -24
- package/src/private/acvm_wasm.ts +72 -0
- package/src/private/acvm_wasm_with_blobs.ts +54 -0
- package/src/private/circuit_recording/circuit_recorder.ts +260 -0
- package/src/private/circuit_recording/file_circuit_recorder.ts +158 -0
- package/src/private/circuit_recording/memory_circuit_recorder.ts +11 -0
- package/src/private/circuit_recording/simulator_recorder_wrapper.ts +91 -0
- package/src/private/circuit_simulator.ts +90 -0
- package/src/private/{providers/factory.ts → factory.ts} +6 -6
- package/src/public/avm/avm_context.ts +4 -4
- package/src/public/avm/avm_contract_call_result.ts +17 -5
- package/src/public/avm/avm_execution_environment.ts +8 -1
- package/src/public/avm/avm_gas.ts +23 -35
- package/src/public/avm/avm_machine_state.ts +5 -0
- package/src/public/avm/avm_memory_types.ts +19 -6
- package/src/public/avm/avm_simulator.ts +43 -54
- package/src/public/avm/avm_simulator_interface.ts +8 -0
- package/src/public/avm/errors.ts +8 -77
- package/src/public/avm/fixtures/avm_simulation_tester.ts +32 -21
- package/src/public/avm/fixtures/base_avm_simulation_tester.ts +45 -12
- package/src/public/avm/fixtures/initializers.ts +102 -0
- package/src/public/avm/fixtures/utils.ts +150 -0
- package/src/public/avm/index.ts +0 -2
- package/src/public/avm/opcodes/accrued_substate.ts +64 -29
- package/src/public/avm/opcodes/addressing_mode.ts +56 -32
- package/src/public/avm/opcodes/arithmetic.ts +24 -2
- package/src/public/avm/opcodes/bitwise.ts +33 -29
- package/src/public/avm/opcodes/comparators.ts +6 -3
- package/src/public/avm/opcodes/contract.ts +10 -7
- package/src/public/avm/opcodes/control_flow.ts +19 -10
- package/src/public/avm/opcodes/conversion.ts +27 -3
- package/src/public/avm/opcodes/ec_add.ts +9 -6
- package/src/public/avm/opcodes/environment_getters.ts +27 -22
- package/src/public/avm/opcodes/external_calls.ts +61 -29
- package/src/public/avm/opcodes/hashing.ts +28 -8
- package/src/public/avm/opcodes/instruction.ts +31 -21
- package/src/public/avm/opcodes/memory.ts +71 -32
- package/src/public/avm/opcodes/misc.ts +60 -18
- package/src/public/avm/opcodes/storage.ts +22 -6
- package/src/public/avm/revert_reason.ts +55 -0
- package/src/public/avm/serialization/buffer_cursor.ts +4 -1
- package/src/public/avm/serialization/bytecode_serialization.ts +72 -74
- package/src/public/avm/serialization/instruction_serialization.ts +75 -34
- package/src/public/avm/test_utils.ts +24 -41
- package/src/public/contracts_db_checkpoint.ts +41 -0
- package/src/public/db_interfaces.ts +76 -0
- package/src/{common → public}/debug_fn_name.ts +7 -7
- package/src/public/executor_metrics.ts +56 -6
- package/src/public/executor_metrics_interface.ts +15 -0
- package/src/public/fixtures/amm_test.ts +331 -0
- package/src/public/fixtures/bulk_test.ts +169 -0
- package/src/public/fixtures/custom_bytecode_tester.ts +49 -0
- package/src/public/fixtures/custom_bytecode_tests.ts +135 -0
- package/src/public/fixtures/index.ts +7 -0
- package/src/public/fixtures/minimal_public_tx.ts +35 -0
- package/src/public/fixtures/public_tx_simulation_tester.ts +166 -113
- package/src/public/{avm/fixtures → fixtures}/simple_contract_data_source.ts +36 -18
- package/src/public/fixtures/token_test.ts +139 -0
- package/src/public/fixtures/utils.ts +141 -68
- package/src/public/hinting_db_sources.ts +602 -0
- package/src/public/index.ts +5 -8
- package/src/public/public_db_sources.ts +278 -258
- package/src/public/public_errors.ts +14 -0
- package/src/public/public_processor/guarded_merkle_tree.ts +153 -0
- package/src/public/public_processor/public_processor.ts +212 -164
- package/src/public/public_processor/public_processor_metrics.ts +2 -2
- package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +162 -0
- package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +306 -0
- package/src/public/public_tx_simulator/index.ts +4 -0
- package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +105 -0
- package/src/public/public_tx_simulator/public_tx_context.ts +167 -194
- package/src/public/public_tx_simulator/public_tx_simulator.ts +292 -265
- package/src/public/public_tx_simulator/public_tx_simulator_interface.ts +10 -0
- package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +63 -0
- package/src/public/side_effect_errors.ts +91 -1
- package/src/public/side_effect_trace.ts +94 -320
- package/src/public/side_effect_trace_interface.ts +10 -58
- package/src/public/state_manager/index.ts +1 -0
- package/src/public/{avm/journal → state_manager}/nullifiers.ts +5 -11
- package/src/public/{avm/journal → state_manager}/public_storage.ts +2 -2
- package/src/public/state_manager/state_manager.ts +553 -0
- package/src/public/test_executor_metrics.ts +397 -0
- package/src/public/utils.ts +5 -21
- package/src/server.ts +6 -3
- package/src/testing.ts +1 -0
- package/dest/common/db_interfaces.d.ts +0 -80
- package/dest/common/db_interfaces.d.ts.map +0 -1
- package/dest/common/db_interfaces.js +0 -1
- package/dest/common/debug_fn_name.d.ts +0 -5
- package/dest/common/debug_fn_name.d.ts.map +0 -1
- package/dest/common/debug_fn_name.js +0 -6
- package/dest/common/message_load_oracle_inputs.d.ts +0 -15
- package/dest/common/message_load_oracle_inputs.d.ts.map +0 -1
- package/dest/common/message_load_oracle_inputs.js +0 -15
- package/dest/private/acvm/oracle/index.d.ts +0 -14
- package/dest/private/acvm/oracle/index.d.ts.map +0 -1
- package/dest/private/acvm/oracle/index.js +0 -2
- package/dest/private/acvm/oracle/oracle.d.ts +0 -49
- package/dest/private/acvm/oracle/oracle.d.ts.map +0 -1
- package/dest/private/acvm/oracle/oracle.js +0 -263
- package/dest/private/acvm/oracle/typed_oracle.d.ts +0 -83
- package/dest/private/acvm/oracle/typed_oracle.d.ts.map +0 -1
- package/dest/private/acvm/oracle/typed_oracle.js +0 -132
- package/dest/private/execution_data_provider.d.ts +0 -261
- package/dest/private/execution_data_provider.d.ts.map +0 -1
- package/dest/private/execution_data_provider.js +0 -14
- package/dest/private/execution_note_cache.d.ts +0 -93
- package/dest/private/execution_note_cache.d.ts.map +0 -1
- package/dest/private/execution_note_cache.js +0 -180
- package/dest/private/hashed_values_cache.d.ts +0 -28
- package/dest/private/hashed_values_cache.d.ts.map +0 -1
- package/dest/private/hashed_values_cache.js +0 -46
- package/dest/private/index.d.ts +0 -13
- package/dest/private/index.d.ts.map +0 -1
- package/dest/private/index.js +0 -12
- package/dest/private/pick_notes.d.ts +0 -85
- package/dest/private/pick_notes.d.ts.map +0 -1
- package/dest/private/pick_notes.js +0 -51
- package/dest/private/private_execution.d.ts +0 -25
- package/dest/private/private_execution.d.ts.map +0 -1
- package/dest/private/private_execution.js +0 -92
- package/dest/private/private_execution_oracle.d.ts +0 -215
- package/dest/private/private_execution_oracle.d.ts.map +0 -1
- package/dest/private/private_execution_oracle.js +0 -382
- package/dest/private/providers/acvm_native.d.ts +0 -40
- package/dest/private/providers/acvm_native.d.ts.map +0 -1
- package/dest/private/providers/acvm_wasm.d.ts +0 -15
- package/dest/private/providers/acvm_wasm.d.ts.map +0 -1
- package/dest/private/providers/acvm_wasm_with_blobs.d.ts +0 -19
- package/dest/private/providers/acvm_wasm_with_blobs.d.ts.map +0 -1
- package/dest/private/providers/acvm_wasm_with_blobs.js +0 -32
- package/dest/private/providers/factory.d.ts +0 -12
- package/dest/private/providers/factory.d.ts.map +0 -1
- package/dest/private/providers/simulation_provider.d.ts +0 -19
- package/dest/private/providers/simulation_provider.d.ts.map +0 -1
- package/dest/private/providers/simulation_provider.js +0 -24
- package/dest/private/simulator.d.ts +0 -34
- package/dest/private/simulator.d.ts.map +0 -1
- package/dest/private/simulator.js +0 -76
- package/dest/private/unconstrained_execution.d.ts +0 -10
- package/dest/private/unconstrained_execution.d.ts.map +0 -1
- package/dest/private/unconstrained_execution.js +0 -27
- package/dest/private/unconstrained_execution_oracle.d.ts +0 -161
- package/dest/private/unconstrained_execution_oracle.d.ts.map +0 -1
- package/dest/private/unconstrained_execution_oracle.js +0 -258
- package/dest/public/avm/bytecode_utils.d.ts +0 -5
- package/dest/public/avm/bytecode_utils.d.ts.map +0 -1
- package/dest/public/avm/bytecode_utils.js +0 -17
- package/dest/public/avm/fixtures/index.d.ts +0 -84
- package/dest/public/avm/fixtures/index.d.ts.map +0 -1
- package/dest/public/avm/fixtures/index.js +0 -175
- package/dest/public/avm/fixtures/simple_contract_data_source.d.ts +0 -35
- package/dest/public/avm/fixtures/simple_contract_data_source.d.ts.map +0 -1
- package/dest/public/avm/journal/index.d.ts +0 -2
- package/dest/public/avm/journal/index.d.ts.map +0 -1
- package/dest/public/avm/journal/index.js +0 -1
- package/dest/public/avm/journal/journal.d.ts +0 -209
- package/dest/public/avm/journal/journal.d.ts.map +0 -1
- package/dest/public/avm/journal/journal.js +0 -486
- package/dest/public/avm/journal/nullifiers.d.ts.map +0 -1
- package/dest/public/avm/journal/public_storage.d.ts.map +0 -1
- package/dest/public/bytecode_errors.d.ts +0 -4
- package/dest/public/bytecode_errors.d.ts.map +0 -1
- package/dest/public/bytecode_errors.js +0 -6
- package/dest/public/execution.d.ts +0 -108
- package/dest/public/execution.d.ts.map +0 -1
- package/dest/public/execution.js +0 -9
- package/dest/public/tx_contract_cache.d.ts +0 -41
- package/dest/public/tx_contract_cache.d.ts.map +0 -1
- package/dest/public/tx_contract_cache.js +0 -49
- package/dest/test/utils.d.ts +0 -13
- package/dest/test/utils.d.ts.map +0 -1
- package/dest/test/utils.js +0 -22
- package/src/common/db_interfaces.ts +0 -94
- package/src/common/message_load_oracle_inputs.ts +0 -15
- package/src/private/acvm/oracle/index.ts +0 -16
- package/src/private/acvm/oracle/oracle.ts +0 -455
- package/src/private/acvm/oracle/typed_oracle.ts +0 -259
- package/src/private/execution_data_provider.ts +0 -323
- package/src/private/execution_note_cache.ts +0 -217
- package/src/private/hashed_values_cache.ts +0 -55
- package/src/private/index.ts +0 -16
- package/src/private/pick_notes.ts +0 -141
- package/src/private/private_execution.ts +0 -151
- package/src/private/private_execution_oracle.ts +0 -614
- package/src/private/providers/acvm_wasm.ts +0 -63
- package/src/private/providers/acvm_wasm_with_blobs.ts +0 -50
- package/src/private/providers/simulation_provider.ts +0 -45
- package/src/private/simulator.ts +0 -147
- package/src/private/unconstrained_execution.ts +0 -50
- package/src/private/unconstrained_execution_oracle.ts +0 -373
- package/src/public/avm/bytecode_utils.ts +0 -17
- package/src/public/avm/fixtures/index.ts +0 -296
- package/src/public/avm/journal/index.ts +0 -1
- package/src/public/avm/journal/journal.ts +0 -742
- package/src/public/avm/opcodes/.eslintrc.cjs +0 -8
- package/src/public/bytecode_errors.ts +0 -6
- package/src/public/execution.ts +0 -140
- package/src/public/tx_contract_cache.ts +0 -69
- package/src/test/utils.ts +0 -36
- /package/dest/public/{avm/journal → state_manager}/public_storage.js +0 -0
|
@@ -1,4 +1,44 @@
|
|
|
1
|
-
|
|
1
|
+
import { CheckedPublicExecutionError } from './public_errors.js';
|
|
2
|
+
/**
|
|
3
|
+
* Any error that can be thrown during side effect insertion in public.
|
|
4
|
+
* Includes SideEffectLimitReachedError and NullifierCollisionError.
|
|
5
|
+
*/
|
|
6
|
+
export declare abstract class SideEffectError extends CheckedPublicExecutionError {
|
|
7
|
+
constructor(message: string);
|
|
8
|
+
}
|
|
9
|
+
export declare class SideEffectLimitReachedError extends SideEffectError {
|
|
2
10
|
constructor(sideEffectType: string, limit: number);
|
|
3
11
|
}
|
|
4
|
-
|
|
12
|
+
export declare class MaxCallsToUniqueContractClassIdsError extends SideEffectLimitReachedError {
|
|
13
|
+
constructor();
|
|
14
|
+
}
|
|
15
|
+
export declare class NullifierLimitReachedError extends SideEffectLimitReachedError {
|
|
16
|
+
constructor();
|
|
17
|
+
}
|
|
18
|
+
export declare class NoteHashLimitReachedError extends SideEffectLimitReachedError {
|
|
19
|
+
constructor();
|
|
20
|
+
}
|
|
21
|
+
export declare class L2ToL1MessageLimitReachedError extends SideEffectLimitReachedError {
|
|
22
|
+
constructor();
|
|
23
|
+
}
|
|
24
|
+
export declare class NullifierCollisionError extends SideEffectError {
|
|
25
|
+
constructor(message: string);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Any error that can be thrown during side effect reads in public.
|
|
29
|
+
* Note: Thrown at state manager level and unknown by simulation, hence NOT considered
|
|
30
|
+
* CheckedPublicExecutionErrors. Currently only includes append-only tree reads.
|
|
31
|
+
*/
|
|
32
|
+
export declare abstract class SideEffectReadError extends Error {
|
|
33
|
+
constructor(message: string);
|
|
34
|
+
}
|
|
35
|
+
export declare class IndexOutOfRangeError extends SideEffectReadError {
|
|
36
|
+
constructor(tree: string, index: number, limit: number);
|
|
37
|
+
}
|
|
38
|
+
export declare class NoteHashIndexOutOfRangeError extends IndexOutOfRangeError {
|
|
39
|
+
constructor(index: number);
|
|
40
|
+
}
|
|
41
|
+
export declare class L1ToL2MessageIndexOutOfRangeError extends IndexOutOfRangeError {
|
|
42
|
+
constructor(index: number);
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZV9lZmZlY3RfZXJyb3JzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHVibGljL3NpZGVfZWZmZWN0X2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFTQSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVqRTs7O0dBR0c7QUFDSCw4QkFBc0IsZUFBZ0IsU0FBUSwyQkFBMkI7SUFDdkUsWUFBWSxPQUFPLEVBQUUsTUFBTSxFQUcxQjtDQUNGO0FBRUQscUJBQWEsMkJBQTRCLFNBQVEsZUFBZTtJQUM5RCxZQUFZLGNBQWMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFHaEQ7Q0FDRjtBQUVELHFCQUFhLHFDQUFzQyxTQUFRLDJCQUEyQjtJQUNwRixjQUdDO0NBQ0Y7QUFFRCxxQkFBYSwwQkFBMkIsU0FBUSwyQkFBMkI7SUFDekUsY0FHQztDQUNGO0FBRUQscUJBQWEseUJBQTBCLFNBQVEsMkJBQTJCO0lBQ3hFLGNBR0M7Q0FDRjtBQUVELHFCQUFhLDhCQUErQixTQUFRLDJCQUEyQjtJQUM3RSxjQUdDO0NBQ0Y7QUFFRCxxQkFBYSx1QkFBd0IsU0FBUSxlQUFlO0lBQzFELFlBQVksT0FBTyxFQUFFLE1BQU0sRUFHMUI7Q0FDRjtBQUVEOzs7O0dBSUc7QUFDSCw4QkFBc0IsbUJBQW9CLFNBQVEsS0FBSztJQUNyRCxZQUFZLE9BQU8sRUFBRSxNQUFNLEVBRzFCO0NBQ0Y7QUFFRCxxQkFBYSxvQkFBcUIsU0FBUSxtQkFBbUI7SUFDM0QsWUFBWSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFHckQ7Q0FDRjtBQUVELHFCQUFhLDRCQUE2QixTQUFRLG9CQUFvQjtJQUNwRSxZQUFZLEtBQUssRUFBRSxNQUFNLEVBR3hCO0NBQ0Y7QUFFRCxxQkFBYSxpQ0FBa0MsU0FBUSxvQkFBb0I7SUFDekUsWUFBWSxLQUFLLEVBQUUsTUFBTSxFQUd4QjtDQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"side_effect_errors.d.ts","sourceRoot":"","sources":["../../src/public/side_effect_errors.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"side_effect_errors.d.ts","sourceRoot":"","sources":["../../src/public/side_effect_errors.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAEjE;;;GAGG;AACH,8BAAsB,eAAgB,SAAQ,2BAA2B;IACvE,YAAY,OAAO,EAAE,MAAM,EAG1B;CACF;AAED,qBAAa,2BAA4B,SAAQ,eAAe;IAC9D,YAAY,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAGhD;CACF;AAED,qBAAa,qCAAsC,SAAQ,2BAA2B;IACpF,cAGC;CACF;AAED,qBAAa,0BAA2B,SAAQ,2BAA2B;IACzE,cAGC;CACF;AAED,qBAAa,yBAA0B,SAAQ,2BAA2B;IACxE,cAGC;CACF;AAED,qBAAa,8BAA+B,SAAQ,2BAA2B;IAC7E,cAGC;CACF;AAED,qBAAa,uBAAwB,SAAQ,eAAe;IAC1D,YAAY,OAAO,EAAE,MAAM,EAG1B;CACF;AAED;;;;GAIG;AACH,8BAAsB,mBAAoB,SAAQ,KAAK;IACrD,YAAY,OAAO,EAAE,MAAM,EAG1B;CACF;AAED,qBAAa,oBAAqB,SAAQ,mBAAmB;IAC3D,YAAY,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAGrD;CACF;AAED,qBAAa,4BAA6B,SAAQ,oBAAoB;IACpE,YAAY,KAAK,EAAE,MAAM,EAGxB;CACF;AAED,qBAAa,iCAAkC,SAAQ,oBAAoB;IACzE,YAAY,KAAK,EAAE,MAAM,EAGxB;CACF"}
|
|
@@ -1,6 +1,75 @@
|
|
|
1
|
-
|
|
1
|
+
import { L1_TO_L2_MSG_TREE_LEAF_COUNT, MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, MAX_PUBLIC_CALLS_TO_UNIQUE_CONTRACT_CLASS_IDS, NOTE_HASH_TREE_LEAF_COUNT } from '@aztec/constants';
|
|
2
|
+
import { CheckedPublicExecutionError } from './public_errors.js';
|
|
3
|
+
/**
|
|
4
|
+
* Any error that can be thrown during side effect insertion in public.
|
|
5
|
+
* Includes SideEffectLimitReachedError and NullifierCollisionError.
|
|
6
|
+
*/ export class SideEffectError extends CheckedPublicExecutionError {
|
|
7
|
+
constructor(message){
|
|
8
|
+
super(message);
|
|
9
|
+
this.name = 'SideEffectInsertionError';
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
export class SideEffectLimitReachedError extends SideEffectError {
|
|
2
13
|
constructor(sideEffectType, limit){
|
|
3
14
|
super(`Reached the limit (${limit}) on number of '${sideEffectType}' per tx`);
|
|
4
15
|
this.name = 'SideEffectLimitReachedError';
|
|
5
16
|
}
|
|
6
17
|
}
|
|
18
|
+
export class MaxCallsToUniqueContractClassIdsError extends SideEffectLimitReachedError {
|
|
19
|
+
constructor(){
|
|
20
|
+
super('contract calls to unique class IDs', MAX_PUBLIC_CALLS_TO_UNIQUE_CONTRACT_CLASS_IDS);
|
|
21
|
+
this.name = 'MaxCallsToUniqueContractClassIdsError';
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export class NullifierLimitReachedError extends SideEffectLimitReachedError {
|
|
25
|
+
constructor(){
|
|
26
|
+
super('nullifier', MAX_NULLIFIERS_PER_TX);
|
|
27
|
+
this.name = 'NullifierLimitReachedError';
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export class NoteHashLimitReachedError extends SideEffectLimitReachedError {
|
|
31
|
+
constructor(){
|
|
32
|
+
super('note hash', MAX_NOTE_HASHES_PER_TX);
|
|
33
|
+
this.name = 'NoteHashLimitReachedError';
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export class L2ToL1MessageLimitReachedError extends SideEffectLimitReachedError {
|
|
37
|
+
constructor(){
|
|
38
|
+
super('l2 to l1 message', MAX_L2_TO_L1_MSGS_PER_TX);
|
|
39
|
+
this.name = 'L2ToL1MessageLimitReachedError';
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export class NullifierCollisionError extends SideEffectError {
|
|
43
|
+
constructor(message){
|
|
44
|
+
super(`Nullifier collision: ${message}`);
|
|
45
|
+
this.name = 'NullifierCollisionError';
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Any error that can be thrown during side effect reads in public.
|
|
50
|
+
* Note: Thrown at state manager level and unknown by simulation, hence NOT considered
|
|
51
|
+
* CheckedPublicExecutionErrors. Currently only includes append-only tree reads.
|
|
52
|
+
*/ export class SideEffectReadError extends Error {
|
|
53
|
+
constructor(message){
|
|
54
|
+
super(message);
|
|
55
|
+
this.name = 'SideEffectReadError';
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
export class IndexOutOfRangeError extends SideEffectReadError {
|
|
59
|
+
constructor(tree, index, limit){
|
|
60
|
+
super(`Attempting to read index ${index} of ${tree} tree with maximum ${limit} leaves`);
|
|
61
|
+
this.name = 'IndexOutOfRangeError';
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
export class NoteHashIndexOutOfRangeError extends IndexOutOfRangeError {
|
|
65
|
+
constructor(index){
|
|
66
|
+
super('note hash', index, NOTE_HASH_TREE_LEAF_COUNT);
|
|
67
|
+
this.name = 'NoteHashIndexOutOfRangeError';
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
export class L1ToL2MessageIndexOutOfRangeError extends IndexOutOfRangeError {
|
|
71
|
+
constructor(index){
|
|
72
|
+
super('l1 to l2 message', index, L1_TO_L2_MSG_TREE_LEAF_COUNT);
|
|
73
|
+
this.name = 'L1ToL2MessageIndexOutOfRangeError';
|
|
74
|
+
}
|
|
75
|
+
}
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
import { Fr } from '@aztec/foundation/fields';
|
|
2
|
-
import {
|
|
2
|
+
import { type LogLevel } from '@aztec/foundation/log';
|
|
3
|
+
import { PublicDataUpdateRequest } from '@aztec/stdlib/avm';
|
|
3
4
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
6
|
-
import { NoteHash, Nullifier, PublicCallRequest } from '@aztec/stdlib/kernel';
|
|
7
|
-
import { PublicLog } from '@aztec/stdlib/logs';
|
|
5
|
+
import { NoteHash, Nullifier } from '@aztec/stdlib/kernel';
|
|
6
|
+
import { DebugLog, PublicLog } from '@aztec/stdlib/logs';
|
|
8
7
|
import { ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
|
|
9
|
-
import { NullifierLeafPreimage, PublicDataTreeLeafPreimage } from '@aztec/stdlib/trees';
|
|
10
|
-
import type { GlobalVariables, TreeSnapshots } from '@aztec/stdlib/tx';
|
|
11
8
|
import type { PublicSideEffectTraceInterface } from './side_effect_trace_interface.js';
|
|
12
9
|
import { UniqueClassIds } from './unique_class_ids.js';
|
|
13
10
|
/**
|
|
@@ -16,7 +13,6 @@ import { UniqueClassIds } from './unique_class_ids.js';
|
|
|
16
13
|
* This struct is helpful for testing and checking array lengths.
|
|
17
14
|
**/
|
|
18
15
|
export type SideEffects = {
|
|
19
|
-
enqueuedCalls: PublicCallRequest[];
|
|
20
16
|
publicDataWrites: PublicDataUpdateRequest[];
|
|
21
17
|
noteHashes: NoteHash[];
|
|
22
18
|
nullifiers: Nullifier[];
|
|
@@ -29,15 +25,14 @@ export declare class SideEffectArrayLengths {
|
|
|
29
25
|
readonly noteHashes: number;
|
|
30
26
|
readonly nullifiers: number;
|
|
31
27
|
readonly l2ToL1Msgs: number;
|
|
32
|
-
readonly
|
|
33
|
-
constructor(publicDataWrites: number, protocolPublicDataWrites: number, noteHashes: number, nullifiers: number, l2ToL1Msgs: number,
|
|
28
|
+
readonly publicLogFields: number;
|
|
29
|
+
constructor(publicDataWrites: number, protocolPublicDataWrites: number, noteHashes: number, nullifiers: number, l2ToL1Msgs: number, publicLogFields: number);
|
|
34
30
|
static empty(): SideEffectArrayLengths;
|
|
35
31
|
}
|
|
36
32
|
/**
|
|
37
33
|
* Trace side effects for an enqueued public call's execution.
|
|
38
34
|
*/
|
|
39
35
|
export declare class SideEffectTrace implements PublicSideEffectTraceInterface {
|
|
40
|
-
/** The counter of this trace's first side effect. */
|
|
41
36
|
readonly startSideEffectCounter: number;
|
|
42
37
|
/** Track parent's (or previous kernel's) lengths so the AVM can properly enforce TX-wide limits,
|
|
43
38
|
* otherwise the public kernel can fail to prove because TX limits are breached.
|
|
@@ -45,10 +40,12 @@ export declare class SideEffectTrace implements PublicSideEffectTraceInterface {
|
|
|
45
40
|
private readonly previousSideEffectArrayLengths;
|
|
46
41
|
/** We need to track the set of class IDs used, to enforce limits. */
|
|
47
42
|
private uniqueClassIds;
|
|
43
|
+
private writtenPublicDataSlots;
|
|
44
|
+
private debugLogs;
|
|
45
|
+
private debugLogMemoryReads;
|
|
48
46
|
log: import("@aztec/foundation/log").Logger;
|
|
49
47
|
/** The side effect counter increments with every call to the trace. */
|
|
50
48
|
private sideEffectCounter;
|
|
51
|
-
private enqueuedCalls;
|
|
52
49
|
private publicDataWrites;
|
|
53
50
|
private protocolPublicDataWritesLength;
|
|
54
51
|
private userPublicDataWritesLength;
|
|
@@ -56,7 +53,6 @@ export declare class SideEffectTrace implements PublicSideEffectTraceInterface {
|
|
|
56
53
|
private nullifiers;
|
|
57
54
|
private l2ToL1Messages;
|
|
58
55
|
private publicLogs;
|
|
59
|
-
private avmCircuitHints;
|
|
60
56
|
/** Make sure a forked trace is never merged twice. */
|
|
61
57
|
private alreadyMergedIntoParent;
|
|
62
58
|
constructor(
|
|
@@ -67,66 +63,24 @@ export declare class SideEffectTrace implements PublicSideEffectTraceInterface {
|
|
|
67
63
|
*/
|
|
68
64
|
previousSideEffectArrayLengths?: SideEffectArrayLengths,
|
|
69
65
|
/** We need to track the set of class IDs used, to enforce limits. */
|
|
70
|
-
uniqueClassIds?: UniqueClassIds);
|
|
66
|
+
uniqueClassIds?: UniqueClassIds, writtenPublicDataSlots?: Set<string>, debugLogs?: DebugLog[], debugLogMemoryReads?: number);
|
|
71
67
|
fork(): SideEffectTrace;
|
|
72
68
|
merge(forkedTrace: this, reverted?: boolean): void;
|
|
73
|
-
private mergeHints;
|
|
74
69
|
getCounter(): number;
|
|
75
70
|
private incrementSideEffectCounter;
|
|
76
71
|
getNoteHashCount(): number;
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
traceNewNoteHash(noteHash: Fr
|
|
81
|
-
|
|
82
|
-
traceNewNullifier(siloedNullifier: Fr, lowLeafPreimage?: NullifierLeafPreimage, lowLeafIndex?: Fr, lowLeafPath?: Fr[], insertionPath?: Fr[]): void;
|
|
83
|
-
traceL1ToL2MessageCheck(_contractAddress: AztecAddress, msgHash: Fr, msgLeafIndex: Fr, _exists: boolean, path?: Fr[]): void;
|
|
72
|
+
tracePublicStorageWrite(contractAddress: AztecAddress, slot: Fr, value: Fr, protocolWrite: boolean): Promise<void>;
|
|
73
|
+
private computePublicDataSlotKey;
|
|
74
|
+
isStorageCold(contractAddress: AztecAddress, slot: Fr): boolean;
|
|
75
|
+
traceNewNoteHash(noteHash: Fr): void;
|
|
76
|
+
traceNewNullifier(siloedNullifier: Fr): void;
|
|
84
77
|
traceNewL2ToL1Message(contractAddress: AztecAddress, recipient: Fr, content: Fr): void;
|
|
85
78
|
tracePublicLog(contractAddress: AztecAddress, log: Fr[]): void;
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
*/
|
|
92
|
-
traceEnqueuedCall(
|
|
93
|
-
/** The call request from private that enqueued this call. */
|
|
94
|
-
publicCallRequest: PublicCallRequest,
|
|
95
|
-
/** The call's calldata */
|
|
96
|
-
calldata: Fr[],
|
|
97
|
-
/** Did the call revert? */
|
|
98
|
-
_reverted: boolean): void;
|
|
79
|
+
traceDebugLog(contractAddress: AztecAddress, level: LogLevel, message: string, fields: Fr[]): void;
|
|
80
|
+
getDebugLogs(): DebugLog[];
|
|
81
|
+
getDebugLogMemoryReads(): number;
|
|
82
|
+
traceDebugLogMemoryReads(memoryReads: number): void;
|
|
83
|
+
traceGetContractClass(contractClassId: Fr, exists: boolean): void;
|
|
99
84
|
getSideEffects(): SideEffects;
|
|
100
|
-
toAvmCircuitPublicInputs(
|
|
101
|
-
/** Globals. */
|
|
102
|
-
globalVariables: GlobalVariables,
|
|
103
|
-
/** Start tree snapshots. */
|
|
104
|
-
startTreeSnapshots: TreeSnapshots,
|
|
105
|
-
/** Gas used at start of TX. */
|
|
106
|
-
startGasUsed: Gas,
|
|
107
|
-
/** How much gas was available for this public execution. */
|
|
108
|
-
gasLimits: GasSettings,
|
|
109
|
-
/** Address of the fee payer. */
|
|
110
|
-
feePayer: AztecAddress,
|
|
111
|
-
/** Call requests for setup phase. */
|
|
112
|
-
publicSetupCallRequests: PublicCallRequest[],
|
|
113
|
-
/** Call requests for app logic phase. */
|
|
114
|
-
publicAppLogicCallRequests: PublicCallRequest[],
|
|
115
|
-
/** Call request for teardown phase. */
|
|
116
|
-
publicTeardownCallRequest: PublicCallRequest,
|
|
117
|
-
/** End tree snapshots. */
|
|
118
|
-
endTreeSnapshots: TreeSnapshots,
|
|
119
|
-
/**
|
|
120
|
-
* Gas used by the whole transaction, assuming entire teardown limit is used.
|
|
121
|
-
* This is the gas used when computing transaction fee.
|
|
122
|
-
*/
|
|
123
|
-
endGasUsed: Gas,
|
|
124
|
-
/** Transaction fee. */
|
|
125
|
-
transactionFee: Fr,
|
|
126
|
-
/** The call's results */
|
|
127
|
-
reverted: boolean): AvmCircuitPublicInputs;
|
|
128
|
-
getPublicLogs(): PublicLog[];
|
|
129
|
-
getAvmCircuitHints(): AvmExecutionHints;
|
|
130
|
-
private getAvmAccumulatedData;
|
|
131
85
|
}
|
|
132
|
-
//# sourceMappingURL=
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZV9lZmZlY3RfdHJhY2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMvc2lkZV9lZmZlY3RfdHJhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1RCxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNELE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekQsT0FBTyxFQUFpQixtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBVzdFLE9BQU8sS0FBSyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdkYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXZEOzs7O0lBSUk7QUFDSixNQUFNLE1BQU0sV0FBVyxHQUFHO0lBQ3hCLGdCQUFnQixFQUFFLHVCQUF1QixFQUFFLENBQUM7SUFDNUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxDQUFDO0lBQ3ZCLFVBQVUsRUFBRSxTQUFTLEVBQUUsQ0FBQztJQUN4QixVQUFVLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztJQUNsQyxVQUFVLEVBQUUsU0FBUyxFQUFFLENBQUM7Q0FDekIsQ0FBQztBQUVGLHFCQUFhLHNCQUFzQjthQUVmLGdCQUFnQixFQUFFLE1BQU07YUFDeEIsd0JBQXdCLEVBQUUsTUFBTTthQUNoQyxVQUFVLEVBQUUsTUFBTTthQUNsQixVQUFVLEVBQUUsTUFBTTthQUNsQixVQUFVLEVBQUUsTUFB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"side_effect_trace.d.ts","sourceRoot":"","sources":["../../src/public/side_effect_trace.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"side_effect_trace.d.ts","sourceRoot":"","sources":["../../src/public/side_effect_trace.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,36 +1,29 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
1
|
+
import { FLAT_PUBLIC_LOGS_PAYLOAD_LENGTH, MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, MAX_PUBLIC_CALLS_TO_UNIQUE_CONTRACT_CLASS_IDS, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, PROTOCOL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX } from '@aztec/constants';
|
|
3
2
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
4
3
|
import { Fr } from '@aztec/foundation/fields';
|
|
5
4
|
import { createLogger } from '@aztec/foundation/log';
|
|
6
|
-
import {
|
|
7
|
-
import { SerializableContractInstance } from '@aztec/stdlib/contract';
|
|
5
|
+
import { PublicDataUpdateRequest } from '@aztec/stdlib/avm';
|
|
8
6
|
import { computePublicDataTreeLeafSlot } from '@aztec/stdlib/hash';
|
|
9
|
-
import { NoteHash, Nullifier
|
|
10
|
-
import { PublicLog } from '@aztec/stdlib/logs';
|
|
11
|
-
import { L2ToL1Message
|
|
12
|
-
import { NullifierLeafPreimage, PublicDataTreeLeafPreimage } from '@aztec/stdlib/trees';
|
|
7
|
+
import { NoteHash, Nullifier } from '@aztec/stdlib/kernel';
|
|
8
|
+
import { DebugLog, PublicLog } from '@aztec/stdlib/logs';
|
|
9
|
+
import { L2ToL1Message } from '@aztec/stdlib/messaging';
|
|
13
10
|
import { strict as assert } from 'assert';
|
|
14
|
-
import { SideEffectLimitReachedError } from './side_effect_errors.js';
|
|
11
|
+
import { L2ToL1MessageLimitReachedError, MaxCallsToUniqueContractClassIdsError, NoteHashLimitReachedError, NullifierLimitReachedError, SideEffectLimitReachedError } from './side_effect_errors.js';
|
|
15
12
|
import { UniqueClassIds } from './unique_class_ids.js';
|
|
16
|
-
const emptyPublicDataPath = ()=>new Array(PUBLIC_DATA_TREE_HEIGHT).fill(Fr.zero());
|
|
17
|
-
const emptyNoteHashPath = ()=>new Array(NOTE_HASH_TREE_HEIGHT).fill(Fr.zero());
|
|
18
|
-
const emptyNullifierPath = ()=>new Array(NULLIFIER_TREE_HEIGHT).fill(Fr.zero());
|
|
19
|
-
const emptyL1ToL2MessagePath = ()=>new Array(L1_TO_L2_MSG_TREE_HEIGHT).fill(Fr.zero());
|
|
20
13
|
export class SideEffectArrayLengths {
|
|
21
14
|
publicDataWrites;
|
|
22
15
|
protocolPublicDataWrites;
|
|
23
16
|
noteHashes;
|
|
24
17
|
nullifiers;
|
|
25
18
|
l2ToL1Msgs;
|
|
26
|
-
|
|
27
|
-
constructor(publicDataWrites, protocolPublicDataWrites, noteHashes, nullifiers, l2ToL1Msgs,
|
|
19
|
+
publicLogFields;
|
|
20
|
+
constructor(publicDataWrites, protocolPublicDataWrites, noteHashes, nullifiers, l2ToL1Msgs, publicLogFields){
|
|
28
21
|
this.publicDataWrites = publicDataWrites;
|
|
29
22
|
this.protocolPublicDataWrites = protocolPublicDataWrites;
|
|
30
23
|
this.noteHashes = noteHashes;
|
|
31
24
|
this.nullifiers = nullifiers;
|
|
32
25
|
this.l2ToL1Msgs = l2ToL1Msgs;
|
|
33
|
-
this.
|
|
26
|
+
this.publicLogFields = publicLogFields;
|
|
34
27
|
}
|
|
35
28
|
static empty() {
|
|
36
29
|
return new this(0, 0, 0, 0, 0, 0);
|
|
@@ -42,9 +35,11 @@ export class SideEffectArrayLengths {
|
|
|
42
35
|
startSideEffectCounter;
|
|
43
36
|
previousSideEffectArrayLengths;
|
|
44
37
|
uniqueClassIds;
|
|
38
|
+
writtenPublicDataSlots;
|
|
39
|
+
debugLogs;
|
|
40
|
+
debugLogMemoryReads;
|
|
45
41
|
log;
|
|
46
42
|
/** The side effect counter increments with every call to the trace. */ sideEffectCounter;
|
|
47
|
-
enqueuedCalls;
|
|
48
43
|
publicDataWrites;
|
|
49
44
|
protocolPublicDataWritesLength;
|
|
50
45
|
userPublicDataWritesLength;
|
|
@@ -52,16 +47,17 @@ export class SideEffectArrayLengths {
|
|
|
52
47
|
nullifiers;
|
|
53
48
|
l2ToL1Messages;
|
|
54
49
|
publicLogs;
|
|
55
|
-
avmCircuitHints;
|
|
56
50
|
/** Make sure a forked trace is never merged twice. */ alreadyMergedIntoParent;
|
|
57
51
|
constructor(/** The counter of this trace's first side effect. */ startSideEffectCounter = 0, /** Track parent's (or previous kernel's) lengths so the AVM can properly enforce TX-wide limits,
|
|
58
52
|
* otherwise the public kernel can fail to prove because TX limits are breached.
|
|
59
|
-
*/ previousSideEffectArrayLengths = SideEffectArrayLengths.empty(), /** We need to track the set of class IDs used, to enforce limits. */ uniqueClassIds = new UniqueClassIds()){
|
|
53
|
+
*/ previousSideEffectArrayLengths = SideEffectArrayLengths.empty(), /** We need to track the set of class IDs used, to enforce limits. */ uniqueClassIds = new UniqueClassIds(), writtenPublicDataSlots = new Set(), debugLogs = [], debugLogMemoryReads = 0){
|
|
60
54
|
this.startSideEffectCounter = startSideEffectCounter;
|
|
61
55
|
this.previousSideEffectArrayLengths = previousSideEffectArrayLengths;
|
|
62
56
|
this.uniqueClassIds = uniqueClassIds;
|
|
57
|
+
this.writtenPublicDataSlots = writtenPublicDataSlots;
|
|
58
|
+
this.debugLogs = debugLogs;
|
|
59
|
+
this.debugLogMemoryReads = debugLogMemoryReads;
|
|
63
60
|
this.log = createLogger('simulator:side_effect_trace');
|
|
64
|
-
this.enqueuedCalls = [];
|
|
65
61
|
this.publicDataWrites = [];
|
|
66
62
|
this.protocolPublicDataWritesLength = 0;
|
|
67
63
|
this.userPublicDataWritesLength = 0;
|
|
@@ -71,38 +67,30 @@ export class SideEffectArrayLengths {
|
|
|
71
67
|
this.publicLogs = [];
|
|
72
68
|
this.alreadyMergedIntoParent = false;
|
|
73
69
|
this.sideEffectCounter = startSideEffectCounter;
|
|
74
|
-
this.avmCircuitHints = AvmExecutionHints.empty();
|
|
75
70
|
}
|
|
76
71
|
fork() {
|
|
77
|
-
return new SideEffectTrace(this.sideEffectCounter, new SideEffectArrayLengths(this.previousSideEffectArrayLengths.publicDataWrites + this.userPublicDataWritesLength, this.previousSideEffectArrayLengths.protocolPublicDataWrites + this.protocolPublicDataWritesLength, this.previousSideEffectArrayLengths.noteHashes + this.noteHashes.length, this.previousSideEffectArrayLengths.nullifiers + this.nullifiers.length, this.previousSideEffectArrayLengths.l2ToL1Msgs + this.l2ToL1Messages.length, this.previousSideEffectArrayLengths.
|
|
72
|
+
return new SideEffectTrace(this.sideEffectCounter, new SideEffectArrayLengths(this.previousSideEffectArrayLengths.publicDataWrites + this.userPublicDataWritesLength, this.previousSideEffectArrayLengths.protocolPublicDataWrites + this.protocolPublicDataWritesLength, this.previousSideEffectArrayLengths.noteHashes + this.noteHashes.length, this.previousSideEffectArrayLengths.nullifiers + this.nullifiers.length, this.previousSideEffectArrayLengths.l2ToL1Msgs + this.l2ToL1Messages.length, this.previousSideEffectArrayLengths.publicLogFields + this.publicLogs.reduce((acc, log)=>acc + log.sizeInFields(), 0)), this.uniqueClassIds.fork(), new Set(this.writtenPublicDataSlots), this.debugLogs.slice(), this.debugLogMemoryReads);
|
|
78
73
|
}
|
|
79
74
|
merge(forkedTrace, reverted = false) {
|
|
80
75
|
// sanity check to avoid merging the same forked trace twice
|
|
81
76
|
assert(!forkedTrace.alreadyMergedIntoParent, 'Bug! Cannot merge a forked trace that has already been merged into its parent!');
|
|
82
77
|
forkedTrace.alreadyMergedIntoParent = true;
|
|
83
78
|
this.sideEffectCounter = forkedTrace.sideEffectCounter;
|
|
84
|
-
this.
|
|
79
|
+
this.uniqueClassIds.acceptAndMerge(forkedTrace.uniqueClassIds);
|
|
80
|
+
this.debugLogs = forkedTrace.debugLogs;
|
|
81
|
+
this.debugLogMemoryReads = forkedTrace.debugLogMemoryReads;
|
|
85
82
|
if (!reverted) {
|
|
86
83
|
this.publicDataWrites.push(...forkedTrace.publicDataWrites);
|
|
87
84
|
this.noteHashes.push(...forkedTrace.noteHashes);
|
|
88
85
|
this.nullifiers.push(...forkedTrace.nullifiers);
|
|
89
86
|
this.l2ToL1Messages.push(...forkedTrace.l2ToL1Messages);
|
|
90
87
|
this.publicLogs.push(...forkedTrace.publicLogs);
|
|
88
|
+
this.userPublicDataWritesLength += forkedTrace.userPublicDataWritesLength;
|
|
89
|
+
this.protocolPublicDataWritesLength += forkedTrace.protocolPublicDataWritesLength;
|
|
90
|
+
for (const slot of forkedTrace.writtenPublicDataSlots){
|
|
91
|
+
this.writtenPublicDataSlots.add(slot);
|
|
92
|
+
}
|
|
91
93
|
}
|
|
92
|
-
this.mergeHints(forkedTrace);
|
|
93
|
-
}
|
|
94
|
-
mergeHints(forkedTrace) {
|
|
95
|
-
this.uniqueClassIds.acceptAndMerge(forkedTrace.uniqueClassIds);
|
|
96
|
-
this.avmCircuitHints.enqueuedCalls.push(...forkedTrace.avmCircuitHints.enqueuedCalls);
|
|
97
|
-
this.avmCircuitHints.contractInstances.push(...forkedTrace.avmCircuitHints.contractInstances);
|
|
98
|
-
this.avmCircuitHints.contractClasses.push(...forkedTrace.avmCircuitHints.contractClasses);
|
|
99
|
-
this.avmCircuitHints.publicDataReads.push(...forkedTrace.avmCircuitHints.publicDataReads);
|
|
100
|
-
this.avmCircuitHints.publicDataWrites.push(...forkedTrace.avmCircuitHints.publicDataWrites);
|
|
101
|
-
this.avmCircuitHints.nullifierReads.push(...forkedTrace.avmCircuitHints.nullifierReads);
|
|
102
|
-
this.avmCircuitHints.nullifierWrites.push(...forkedTrace.avmCircuitHints.nullifierWrites);
|
|
103
|
-
this.avmCircuitHints.noteHashReads.push(...forkedTrace.avmCircuitHints.noteHashReads);
|
|
104
|
-
this.avmCircuitHints.noteHashWrites.push(...forkedTrace.avmCircuitHints.noteHashWrites);
|
|
105
|
-
this.avmCircuitHints.l1ToL2MessageReads.push(...forkedTrace.avmCircuitHints.l1ToL2MessageReads);
|
|
106
94
|
}
|
|
107
95
|
getCounter() {
|
|
108
96
|
return this.sideEffectCounter;
|
|
@@ -113,117 +101,94 @@ export class SideEffectArrayLengths {
|
|
|
113
101
|
getNoteHashCount() {
|
|
114
102
|
return this.previousSideEffectArrayLengths.noteHashes + this.noteHashes.length;
|
|
115
103
|
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
this.
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
throw new SideEffectLimitReachedError('public data (contract storage) write', MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX);
|
|
104
|
+
async tracePublicStorageWrite(contractAddress, slot, value, protocolWrite) {
|
|
105
|
+
// Only increment counts if the storage slot has not been written to before.
|
|
106
|
+
if (this.isStorageCold(contractAddress, slot)) {
|
|
107
|
+
if (protocolWrite) {
|
|
108
|
+
if (this.protocolPublicDataWritesLength + this.previousSideEffectArrayLengths.protocolPublicDataWrites >= PROTOCOL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX) {
|
|
109
|
+
throw new SideEffectLimitReachedError('protocol public data (contract storage) write', PROTOCOL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX);
|
|
110
|
+
}
|
|
111
|
+
this.protocolPublicDataWritesLength++;
|
|
112
|
+
} else {
|
|
113
|
+
if (this.userPublicDataWritesLength + this.previousSideEffectArrayLengths.publicDataWrites >= MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX) {
|
|
114
|
+
throw new SideEffectLimitReachedError('public data (contract storage) write', MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX);
|
|
115
|
+
}
|
|
116
|
+
this.userPublicDataWritesLength++;
|
|
130
117
|
}
|
|
131
|
-
this.userPublicDataWritesLength++;
|
|
132
118
|
}
|
|
133
119
|
const leafSlot = await computePublicDataTreeLeafSlot(contractAddress, slot);
|
|
134
120
|
this.publicDataWrites.push(new PublicDataUpdateRequest(leafSlot, value, this.sideEffectCounter));
|
|
135
|
-
// New hinting
|
|
136
|
-
const readHint = new AvmPublicDataReadTreeHint(lowLeafPreimage, lowLeafIndex, lowLeafPath);
|
|
137
|
-
this.avmCircuitHints.publicDataWrites.push(new AvmPublicDataWriteTreeHint(readHint, newLeafPreimage, insertionPath));
|
|
138
121
|
this.log.trace(`Traced public data write (address=${contractAddress}, slot=${slot}): value=${value} (counter=${this.sideEffectCounter}, isProtocol:${protocolWrite})`);
|
|
139
122
|
this.incrementSideEffectCounter();
|
|
123
|
+
this.writtenPublicDataSlots.add(this.computePublicDataSlotKey(contractAddress, slot));
|
|
124
|
+
}
|
|
125
|
+
computePublicDataSlotKey(contractAddress, slot) {
|
|
126
|
+
return `${contractAddress.toString()}:${slot.toString()}`;
|
|
140
127
|
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
// New Hinting
|
|
144
|
-
this.avmCircuitHints.noteHashReads.push(new AvmAppendTreeHint(leafIndex, noteHash, path));
|
|
145
|
-
// NOTE: counter does not increment for note hash checks (because it doesn't rely on pending note hashes)
|
|
146
|
-
this.log.trace(`Tracing note hash check (counter=${this.sideEffectCounter})`);
|
|
128
|
+
isStorageCold(contractAddress, slot) {
|
|
129
|
+
return !this.writtenPublicDataSlots.has(this.computePublicDataSlotKey(contractAddress, slot));
|
|
147
130
|
}
|
|
148
|
-
traceNewNoteHash(noteHash
|
|
131
|
+
traceNewNoteHash(noteHash) {
|
|
149
132
|
if (this.noteHashes.length + this.previousSideEffectArrayLengths.noteHashes >= MAX_NOTE_HASHES_PER_TX) {
|
|
150
|
-
throw new
|
|
133
|
+
throw new NoteHashLimitReachedError();
|
|
151
134
|
}
|
|
152
135
|
this.noteHashes.push(new NoteHash(noteHash, this.sideEffectCounter));
|
|
153
|
-
this.avmCircuitHints.noteHashWrites.push(new AvmAppendTreeHint(leafIndex, noteHash, path));
|
|
154
136
|
this.log.trace(`Tracing new note hash (counter=${this.sideEffectCounter})`);
|
|
155
137
|
this.incrementSideEffectCounter();
|
|
156
138
|
}
|
|
157
|
-
|
|
158
|
-
this.avmCircuitHints.nullifierReads.push(new AvmNullifierReadTreeHint(lowLeafPreimage, lowLeafIndex, lowLeafPath));
|
|
159
|
-
this.log.trace(`Tracing nullifier check (counter=${this.sideEffectCounter})`);
|
|
160
|
-
this.incrementSideEffectCounter();
|
|
161
|
-
}
|
|
162
|
-
traceNewNullifier(siloedNullifier, lowLeafPreimage = NullifierLeafPreimage.empty(), lowLeafIndex = Fr.zero(), lowLeafPath = emptyNullifierPath(), insertionPath = emptyNullifierPath()) {
|
|
139
|
+
traceNewNullifier(siloedNullifier) {
|
|
163
140
|
if (this.nullifiers.length + this.previousSideEffectArrayLengths.nullifiers >= MAX_NULLIFIERS_PER_TX) {
|
|
164
|
-
throw new
|
|
141
|
+
throw new NullifierLimitReachedError();
|
|
165
142
|
}
|
|
166
|
-
this.nullifiers.push(new Nullifier(siloedNullifier,
|
|
167
|
-
const lowLeafReadHint = new AvmNullifierReadTreeHint(lowLeafPreimage, lowLeafIndex, lowLeafPath);
|
|
168
|
-
this.avmCircuitHints.nullifierWrites.push(new AvmNullifierWriteTreeHint(lowLeafReadHint, insertionPath));
|
|
143
|
+
this.nullifiers.push(new Nullifier(siloedNullifier, /*noteHash=*/ Fr.ZERO, this.sideEffectCounter));
|
|
169
144
|
this.log.trace(`Tracing new nullifier (counter=${this.sideEffectCounter})`);
|
|
170
145
|
this.incrementSideEffectCounter();
|
|
171
146
|
}
|
|
172
|
-
// TODO(8287): _exists can be removed once we have the vm properly handling the equality check
|
|
173
|
-
traceL1ToL2MessageCheck(_contractAddress, msgHash, msgLeafIndex, _exists, path = emptyL1ToL2MessagePath()) {
|
|
174
|
-
this.avmCircuitHints.l1ToL2MessageReads.push(new AvmAppendTreeHint(msgLeafIndex, msgHash, path));
|
|
175
|
-
this.log.trace(`Tracing l1 to l2 message check (counter=${this.sideEffectCounter})`);
|
|
176
|
-
}
|
|
177
147
|
traceNewL2ToL1Message(contractAddress, recipient, content) {
|
|
178
148
|
if (this.l2ToL1Messages.length + this.previousSideEffectArrayLengths.l2ToL1Msgs >= MAX_L2_TO_L1_MSGS_PER_TX) {
|
|
179
|
-
throw new
|
|
149
|
+
throw new L2ToL1MessageLimitReachedError();
|
|
180
150
|
}
|
|
181
151
|
const recipientAddress = EthAddress.fromField(recipient);
|
|
182
|
-
this.l2ToL1Messages.push(new L2ToL1Message(recipientAddress, content
|
|
152
|
+
this.l2ToL1Messages.push(new L2ToL1Message(recipientAddress, content).scope(contractAddress));
|
|
183
153
|
this.log.trace(`Tracing new l2 to l1 message (counter=${this.sideEffectCounter})`);
|
|
184
154
|
this.incrementSideEffectCounter();
|
|
185
155
|
}
|
|
186
156
|
tracePublicLog(contractAddress, log) {
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
throw new Error(`Emitted public log is too large, max: ${PUBLIC_LOG_DATA_SIZE_IN_FIELDS}, passed: ${log.length}`);
|
|
157
|
+
const previouslyEmittedPublicLogFieldsCount = this.previousSideEffectArrayLengths.publicLogFields + this.publicLogs.reduce((acc, log)=>acc + log.sizeInFields(), 0);
|
|
158
|
+
const publicLog = new PublicLog(contractAddress, log);
|
|
159
|
+
if (previouslyEmittedPublicLogFieldsCount + publicLog.sizeInFields() > FLAT_PUBLIC_LOGS_PAYLOAD_LENGTH) {
|
|
160
|
+
throw new SideEffectLimitReachedError('public log fields', FLAT_PUBLIC_LOGS_PAYLOAD_LENGTH);
|
|
192
161
|
}
|
|
193
|
-
const publicLog = new PublicLog(contractAddress, padArrayEnd(log, Fr.ZERO, PUBLIC_LOG_DATA_SIZE_IN_FIELDS));
|
|
194
162
|
this.publicLogs.push(publicLog);
|
|
195
163
|
this.log.trace(`Tracing new public log (counter=${this.sideEffectCounter})`);
|
|
196
164
|
this.incrementSideEffectCounter();
|
|
197
165
|
}
|
|
198
|
-
|
|
199
|
-
this.
|
|
200
|
-
|
|
201
|
-
|
|
166
|
+
traceDebugLog(contractAddress, level, message, fields) {
|
|
167
|
+
this.debugLogs.push(new DebugLog(contractAddress, level, message, fields));
|
|
168
|
+
}
|
|
169
|
+
getDebugLogs() {
|
|
170
|
+
return this.debugLogs;
|
|
171
|
+
}
|
|
172
|
+
getDebugLogMemoryReads() {
|
|
173
|
+
return this.debugLogMemoryReads;
|
|
174
|
+
}
|
|
175
|
+
traceDebugLogMemoryReads(memoryReads) {
|
|
176
|
+
this.debugLogMemoryReads += memoryReads;
|
|
202
177
|
}
|
|
203
|
-
traceGetContractClass(contractClassId, exists
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
} else if (!this.uniqueClassIds.has(contractClassId.toString())) {
|
|
178
|
+
traceGetContractClass(contractClassId, exists) {
|
|
179
|
+
// We limit the number of unique contract class IDs due to hashing and the trace length limit.
|
|
180
|
+
if (exists && !this.uniqueClassIds.has(contractClassId.toString())) {
|
|
207
181
|
if (this.uniqueClassIds.size() >= MAX_PUBLIC_CALLS_TO_UNIQUE_CONTRACT_CLASS_IDS) {
|
|
208
182
|
this.log.debug(`Bytecode retrieval failure for contract class ID ${contractClassId} (limit reached)`);
|
|
209
|
-
throw new
|
|
183
|
+
throw new MaxCallsToUniqueContractClassIdsError();
|
|
210
184
|
}
|
|
185
|
+
this.log.trace(`Adding contract class ID ${contractClassId} (counter=${this.sideEffectCounter})`);
|
|
211
186
|
this.uniqueClassIds.add(contractClassId.toString());
|
|
212
|
-
this.avmCircuitHints.contractClasses.push(new AvmContractClassHint(contractClassId, exists, contractClass.artifactHash, contractClass.privateFunctionsRoot, contractClass.publicBytecodeCommitment, contractClass.packedBytecode));
|
|
213
187
|
this.incrementSideEffectCounter();
|
|
214
188
|
}
|
|
215
189
|
}
|
|
216
|
-
/**
|
|
217
|
-
* Trace an enqueued call.
|
|
218
|
-
* Accept some results from a finished call's trace into this one.
|
|
219
|
-
*/ traceEnqueuedCall(/** The call request from private that enqueued this call. */ publicCallRequest, /** The call's calldata */ calldata, /** Did the call revert? */ _reverted) {
|
|
220
|
-
// TODO(4805): check if some threshold is reached for max enqueued or nested calls (to unique contracts?)
|
|
221
|
-
this.enqueuedCalls.push(publicCallRequest);
|
|
222
|
-
this.avmCircuitHints.enqueuedCalls.push(new AvmEnqueuedCallHint(publicCallRequest.contractAddress, calldata));
|
|
223
|
-
}
|
|
224
190
|
getSideEffects() {
|
|
225
191
|
return {
|
|
226
|
-
enqueuedCalls: this.enqueuedCalls,
|
|
227
192
|
publicDataWrites: this.publicDataWrites,
|
|
228
193
|
noteHashes: this.noteHashes,
|
|
229
194
|
nullifiers: this.nullifiers,
|
|
@@ -231,19 +196,4 @@ export class SideEffectArrayLengths {
|
|
|
231
196
|
publicLogs: this.publicLogs
|
|
232
197
|
};
|
|
233
198
|
}
|
|
234
|
-
toAvmCircuitPublicInputs(/** Globals. */ globalVariables, /** Start tree snapshots. */ startTreeSnapshots, /** Gas used at start of TX. */ startGasUsed, /** How much gas was available for this public execution. */ gasLimits, /** Address of the fee payer. */ feePayer, /** Call requests for setup phase. */ publicSetupCallRequests, /** Call requests for app logic phase. */ publicAppLogicCallRequests, /** Call request for teardown phase. */ publicTeardownCallRequest, /** End tree snapshots. */ endTreeSnapshots, /**
|
|
235
|
-
* Gas used by the whole transaction, assuming entire teardown limit is used.
|
|
236
|
-
* This is the gas used when computing transaction fee.
|
|
237
|
-
*/ endGasUsed, /** Transaction fee. */ transactionFee, /** The call's results */ reverted) {
|
|
238
|
-
return new AvmCircuitPublicInputs(globalVariables, startTreeSnapshots, startGasUsed, gasLimits, feePayer, padArrayEnd(publicSetupCallRequests, PublicCallRequest.empty(), MAX_ENQUEUED_CALLS_PER_TX), padArrayEnd(publicAppLogicCallRequests, PublicCallRequest.empty(), MAX_ENQUEUED_CALLS_PER_TX), publicTeardownCallRequest, /*previousNonRevertibleAccumulatedDataArrayLengths=*/ PrivateToAvmAccumulatedDataArrayLengths.empty(), /*previousRevertibleAccumulatedDataArrayLengths=*/ PrivateToAvmAccumulatedDataArrayLengths.empty(), /*previousNonRevertibleAccumulatedDataArray=*/ PrivateToAvmAccumulatedData.empty(), /*previousRevertibleAccumulatedDataArray=*/ PrivateToAvmAccumulatedData.empty(), endTreeSnapshots, endGasUsed, /*accumulatedData=*/ this.getAvmAccumulatedData(), transactionFee, reverted);
|
|
239
|
-
}
|
|
240
|
-
getPublicLogs() {
|
|
241
|
-
return this.publicLogs;
|
|
242
|
-
}
|
|
243
|
-
getAvmCircuitHints() {
|
|
244
|
-
return this.avmCircuitHints;
|
|
245
|
-
}
|
|
246
|
-
getAvmAccumulatedData() {
|
|
247
|
-
return new AvmAccumulatedData(padArrayEnd(this.noteHashes.map((n)=>n.value), Fr.zero(), MAX_NOTE_HASHES_PER_TX), padArrayEnd(this.nullifiers.map((n)=>n.value), Fr.zero(), MAX_NULLIFIERS_PER_TX), padArrayEnd(this.l2ToL1Messages, ScopedL2ToL1Message.empty(), MAX_L2_TO_L1_MSGS_PER_TX), padArrayEnd(this.publicLogs, PublicLog.empty(), MAX_PUBLIC_LOGS_PER_TX), padArrayEnd(this.publicDataWrites.map((w)=>new PublicDataWrite(w.leafSlot, w.newValue)), PublicDataWrite.empty(), MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX));
|
|
248
|
-
}
|
|
249
199
|
}
|