@aztec/simulator 0.0.0-test.0 → 0.0.1-commit.023c3e5
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 +8 -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 +6 -9
- 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 +15 -7
- package/dest/private/acvm/acvm.d.ts.map +1 -1
- package/dest/private/acvm/acvm.js +14 -19
- 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 +19 -20
- package/dest/private/acvm/deserialize.d.ts.map +1 -1
- package/dest/private/acvm/deserialize.js +32 -24
- 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 +21 -4
- package/dest/private/acvm/serialize.d.ts.map +1 -1
- package/dest/private/acvm/serialize.js +54 -1
- package/dest/private/acvm_native.d.ts +41 -0
- package/dest/private/acvm_native.d.ts.map +1 -0
- package/dest/private/{providers/acvm_native.js → acvm_native.js} +34 -26
- package/dest/private/acvm_wasm.d.ts +16 -0
- package/dest/private/acvm_wasm.d.ts.map +1 -0
- package/dest/private/acvm_wasm.js +65 -0
- 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 +109 -0
- package/dest/private/circuit_recording/circuit_recorder.d.ts.map +1 -0
- package/dest/private/circuit_recording/circuit_recorder.js +212 -0
- package/dest/private/circuit_recording/file_circuit_recorder.d.ts +32 -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 +10 -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} +8 -5
- package/dest/public/avm/avm_context.d.ts +8 -8
- package/dest/public/avm/avm_context.d.ts.map +1 -1
- package/dest/public/avm/avm_contract_call_result.d.ts +8 -6
- package/dest/public/avm/avm_contract_call_result.d.ts.map +1 -1
- package/dest/public/avm/avm_contract_call_result.js +12 -8
- package/dest/public/avm/avm_execution_environment.d.ts +9 -6
- package/dest/public/avm/avm_execution_environment.d.ts.map +1 -1
- package/dest/public/avm/avm_execution_environment.js +5 -3
- 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 +9 -6
- package/dest/public/avm/avm_machine_state.d.ts.map +1 -1
- package/dest/public/avm/avm_machine_state.js +5 -2
- package/dest/public/avm/avm_memory_types.d.ts +100 -89
- package/dest/public/avm/avm_memory_types.d.ts.map +1 -1
- package/dest/public/avm/avm_memory_types.js +21 -7
- package/dest/public/avm/avm_simulator.d.ts +8 -7
- package/dest/public/avm/avm_simulator.d.ts.map +1 -1
- package/dest/public/avm/avm_simulator.js +32 -42
- 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/calldata.d.ts +51 -0
- package/dest/public/avm/calldata.d.ts.map +1 -0
- package/dest/public/avm/calldata.js +63 -0
- package/dest/public/avm/errors.d.ts +11 -29
- package/dest/public/avm/errors.d.ts.map +1 -1
- package/dest/public/avm/errors.js +19 -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 +26 -18
- package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts +8 -6
- package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +1 -1
- package/dest/public/avm/fixtures/base_avm_simulation_tester.js +38 -15
- 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 +45 -0
- package/dest/public/avm/fixtures/utils.d.ts +39 -0
- package/dest/public/avm/fixtures/utils.d.ts.map +1 -0
- package/dest/public/avm/fixtures/utils.js +96 -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 +17 -18
- package/dest/public/avm/opcodes/accrued_substate.d.ts.map +1 -1
- package/dest/public/avm/opcodes/accrued_substate.js +58 -55
- 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 +14 -2
- package/dest/public/avm/opcodes/arithmetic.d.ts.map +1 -1
- package/dest/public/avm/opcodes/arithmetic.js +27 -3
- package/dest/public/avm/opcodes/bitwise.d.ts +8 -16
- package/dest/public/avm/opcodes/bitwise.d.ts.map +1 -1
- package/dest/public/avm/opcodes/bitwise.js +22 -29
- package/dest/public/avm/opcodes/comparators.d.ts +1 -1
- 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 +3 -4
- package/dest/public/avm/opcodes/contract.d.ts.map +1 -1
- package/dest/public/avm/opcodes/contract.js +11 -12
- package/dest/public/avm/opcodes/control_flow.d.ts +3 -3
- package/dest/public/avm/opcodes/control_flow.d.ts.map +1 -1
- package/dest/public/avm/opcodes/control_flow.js +13 -11
- package/dest/public/avm/opcodes/conversion.d.ts +4 -3
- package/dest/public/avm/opcodes/conversion.d.ts.map +1 -1
- package/dest/public/avm/opcodes/conversion.js +270 -6
- package/dest/public/avm/opcodes/ec_add.d.ts +3 -3
- package/dest/public/avm/opcodes/ec_add.d.ts.map +1 -1
- package/dest/public/avm/opcodes/ec_add.js +21 -12
- package/dest/public/avm/opcodes/environment_getters.d.ts +5 -5
- package/dest/public/avm/opcodes/environment_getters.d.ts.map +1 -1
- package/dest/public/avm/opcodes/environment_getters.js +20 -22
- package/dest/public/avm/opcodes/external_calls.d.ts +14 -13
- package/dest/public/avm/opcodes/external_calls.d.ts.map +1 -1
- package/dest/public/avm/opcodes/external_calls.js +52 -46
- package/dest/public/avm/opcodes/hashing.d.ts +7 -7
- package/dest/public/avm/opcodes/hashing.d.ts.map +1 -1
- package/dest/public/avm/opcodes/hashing.js +24 -19
- 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 +4 -4
- package/dest/public/avm/opcodes/instruction_impl.d.ts.map +1 -1
- package/dest/public/avm/opcodes/instruction_impl.js +4 -4
- package/dest/public/avm/opcodes/memory.d.ts +15 -15
- package/dest/public/avm/opcodes/memory.d.ts.map +1 -1
- package/dest/public/avm/opcodes/memory.js +52 -48
- package/dest/public/avm/opcodes/misc.d.ts +4 -3
- package/dest/public/avm/opcodes/misc.d.ts.map +1 -1
- package/dest/public/avm/opcodes/misc.js +42 -17
- package/dest/public/avm/opcodes/storage.d.ts +14 -13
- package/dest/public/avm/opcodes/storage.d.ts.map +1 -1
- package/dest/public/avm/opcodes/storage.js +39 -27
- 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 +39 -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 +79 -75
- 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 +12 -15
- package/dest/public/avm/test_utils.d.ts.map +1 -1
- package/dest/public/avm/test_utils.js +17 -25
- 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 +18 -0
- package/dest/public/debug_fn_name.d.ts.map +1 -0
- package/dest/public/debug_fn_name.js +37 -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 +33 -23
- 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 +262 -0
- package/dest/public/fixtures/custom_bytecode_tester.d.ts +34 -0
- package/dest/public/fixtures/custom_bytecode_tester.d.ts.map +1 -0
- package/dest/public/fixtures/custom_bytecode_tester.js +53 -0
- package/dest/public/fixtures/custom_bytecode_tests.d.ts +12 -0
- package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +1 -0
- package/dest/public/fixtures/custom_bytecode_tests.js +174 -0
- package/dest/public/fixtures/index.d.ts +10 -1
- package/dest/public/fixtures/index.d.ts.map +1 -1
- package/dest/public/fixtures/index.js +9 -0
- package/dest/public/fixtures/minimal_public_tx.d.ts +4 -0
- package/dest/public/fixtures/minimal_public_tx.d.ts.map +1 -0
- package/dest/public/fixtures/minimal_public_tx.js +19 -0
- package/dest/public/fixtures/opcode_spammer.d.ts +122 -0
- package/dest/public/fixtures/opcode_spammer.d.ts.map +1 -0
- package/dest/public/fixtures/opcode_spammer.js +1653 -0
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts +55 -15
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
- package/dest/public/fixtures/public_tx_simulation_tester.js +138 -72
- package/dest/public/fixtures/simple_contract_data_source.d.ts +36 -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 +12 -0
- package/dest/public/fixtures/token_test.d.ts.map +1 -0
- package/dest/public/fixtures/token_test.js +96 -0
- package/dest/public/fixtures/utils.d.ts +18 -5
- package/dest/public/fixtures/utils.d.ts.map +1 -1
- package/dest/public/fixtures/utils.js +102 -59
- package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts +60 -0
- package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts.map +1 -0
- package/dest/public/fuzzing/avm_fuzzer_simulator.js +171 -0
- package/dest/public/fuzzing/avm_simulator_bin.d.ts +2 -0
- package/dest/public/fuzzing/avm_simulator_bin.d.ts.map +1 -0
- package/dest/public/fuzzing/avm_simulator_bin.js +118 -0
- package/dest/public/hinting_db_sources.d.ts +80 -0
- package/dest/public/hinting_db_sources.d.ts.map +1 -0
- package/dest/public/hinting_db_sources.js +355 -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 +54 -103
- package/dest/public/public_db_sources.d.ts.map +1 -1
- package/dest/public/public_db_sources.js +222 -195
- 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 +51 -0
- package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -0
- package/dest/public/public_processor/guarded_merkle_tree.js +113 -0
- package/dest/public/public_processor/public_processor.d.ts +28 -38
- package/dest/public/public_processor/public_processor.d.ts.map +1 -1
- package/dest/public/public_processor/public_processor.js +576 -136
- package/dest/public/public_processor/public_processor_metrics.d.ts +4 -4
- package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
- package/dest/public/public_processor/public_processor_metrics.js +29 -46
- package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts +19 -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 +98 -0
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +53 -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 +132 -0
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts +42 -0
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.js +86 -0
- package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts +30 -0
- package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.js +171 -0
- package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts +23 -0
- package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.js +52 -0
- package/dest/public/public_tx_simulator/factories.d.ts +14 -0
- package/dest/public/public_tx_simulator/factories.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/factories.js +28 -0
- package/dest/public/public_tx_simulator/index.d.ts +8 -0
- package/dest/public/public_tx_simulator/index.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/index.js +5 -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 +25 -31
- package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/public_tx_context.js +75 -95
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +38 -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 +220 -207
- package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts +32 -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 +415 -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 +24 -69
- package/dest/public/side_effect_trace.d.ts.map +1 -1
- package/dest/public/side_effect_trace.js +74 -124
- package/dest/public/side_effect_trace_interface.d.ts +13 -25
- 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 +4 -7
- 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 +4 -4
- package/dest/public/state_manager/public_storage.d.ts.map +1 -0
- package/dest/public/{avm/journal → state_manager}/public_storage.js +1 -1
- package/dest/public/state_manager/state_manager.d.ts +170 -0
- package/dest/public/state_manager/state_manager.d.ts.map +1 -0
- package/dest/public/state_manager/state_manager.js +402 -0
- package/dest/public/test_executor_metrics.d.ts +56 -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 +80 -45
- package/src/common/index.ts +0 -1
- package/src/private/acvm/acvm.ts +21 -35
- package/src/private/acvm/acvm_types.ts +1 -1
- package/src/private/acvm/deserialize.ts +36 -30
- package/src/private/acvm/index.ts +0 -1
- package/src/private/acvm/serialize.ts +64 -1
- package/src/private/{providers/acvm_native.ts → acvm_native.ts} +57 -28
- package/src/private/acvm_wasm.ts +76 -0
- package/src/private/acvm_wasm_with_blobs.ts +54 -0
- package/src/private/circuit_recording/circuit_recorder.ts +263 -0
- package/src/private/circuit_recording/file_circuit_recorder.ts +163 -0
- package/src/private/circuit_recording/memory_circuit_recorder.ts +13 -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} +13 -10
- package/src/public/avm/avm_context.ts +6 -6
- package/src/public/avm/avm_contract_call_result.ts +23 -9
- package/src/public/avm/avm_execution_environment.ts +17 -5
- package/src/public/avm/avm_gas.ts +26 -38
- package/src/public/avm/avm_machine_state.ts +12 -6
- package/src/public/avm/avm_memory_types.ts +24 -7
- package/src/public/avm/avm_simulator.ts +57 -62
- package/src/public/avm/avm_simulator_interface.ts +8 -0
- package/src/public/avm/calldata.ts +100 -0
- package/src/public/avm/errors.ts +20 -75
- package/src/public/avm/fixtures/avm_simulation_tester.ts +41 -24
- package/src/public/avm/fixtures/base_avm_simulation_tester.ts +46 -13
- package/src/public/avm/fixtures/initializers.ts +103 -0
- package/src/public/avm/fixtures/utils.ts +151 -0
- package/src/public/avm/index.ts +0 -2
- package/src/public/avm/opcodes/accrued_substate.ts +81 -48
- package/src/public/avm/opcodes/addressing_mode.ts +56 -32
- package/src/public/avm/opcodes/arithmetic.ts +37 -3
- 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 -10
- package/src/public/avm/opcodes/control_flow.ts +19 -10
- package/src/public/avm/opcodes/conversion.ts +29 -5
- package/src/public/avm/opcodes/ec_add.ts +22 -10
- package/src/public/avm/opcodes/environment_getters.ts +28 -23
- package/src/public/avm/opcodes/external_calls.ts +70 -36
- package/src/public/avm/opcodes/hashing.ts +39 -13
- package/src/public/avm/opcodes/instruction.ts +31 -21
- package/src/public/avm/opcodes/instruction_impl.ts +2 -2
- package/src/public/avm/opcodes/memory.ts +81 -42
- package/src/public/avm/opcodes/misc.ts +61 -19
- package/src/public/avm/opcodes/storage.ts +47 -23
- package/src/public/avm/revert_reason.ts +58 -0
- package/src/public/avm/serialization/buffer_cursor.ts +4 -1
- package/src/public/avm/serialization/bytecode_serialization.ts +89 -80
- package/src/public/avm/serialization/instruction_serialization.ts +75 -34
- package/src/public/avm/test_utils.ts +25 -42
- package/src/public/contracts_db_checkpoint.ts +41 -0
- package/src/public/db_interfaces.ts +76 -0
- package/src/public/debug_fn_name.ts +52 -0
- package/src/public/executor_metrics.ts +49 -23
- 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 +83 -0
- package/src/public/fixtures/custom_bytecode_tests.ts +228 -0
- package/src/public/fixtures/index.ts +13 -0
- package/src/public/fixtures/minimal_public_tx.ts +26 -0
- package/src/public/fixtures/opcode_spammer.ts +1721 -0
- package/src/public/fixtures/public_tx_simulation_tester.ts +223 -114
- package/src/public/{avm/fixtures → fixtures}/simple_contract_data_source.ts +37 -20
- package/src/public/fixtures/token_test.ts +148 -0
- package/src/public/fixtures/utils.ts +141 -69
- package/src/public/fuzzing/avm_fuzzer_simulator.ts +288 -0
- package/src/public/fuzzing/avm_simulator_bin.ts +175 -0
- package/src/public/hinting_db_sources.ts +607 -0
- package/src/public/index.ts +11 -8
- package/src/public/public_db_sources.ts +290 -260
- package/src/public/public_errors.ts +14 -0
- package/src/public/public_processor/guarded_merkle_tree.ts +158 -0
- package/src/public/public_processor/public_processor.ts +257 -179
- package/src/public/public_processor/public_processor_metrics.ts +18 -46
- package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +124 -0
- package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +211 -0
- package/src/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.ts +134 -0
- package/src/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.ts +239 -0
- package/src/public/public_tx_simulator/dumping_cpp_public_tx_simulator.ts +83 -0
- package/src/public/public_tx_simulator/factories.ts +43 -0
- package/src/public/public_tx_simulator/index.ts +7 -0
- package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +105 -0
- package/src/public/public_tx_simulator/public_tx_context.ts +179 -199
- package/src/public/public_tx_simulator/public_tx_simulator.ts +316 -263
- package/src/public/public_tx_simulator/public_tx_simulator_interface.ts +33 -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 +99 -322
- package/src/public/side_effect_trace_interface.ts +11 -59
- package/src/public/state_manager/index.ts +1 -0
- package/src/public/{avm/journal → state_manager}/nullifiers.ts +6 -12
- package/src/public/{avm/journal → state_manager}/public_storage.ts +3 -3
- package/src/public/state_manager/state_manager.ts +569 -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.js +0 -62
- 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/debug_fn_name.ts +0 -18
- 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
|
@@ -1,78 +1,44 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
MAX_ENQUEUED_CALLS_PER_TX,
|
|
2
|
+
FLAT_PUBLIC_LOGS_PAYLOAD_LENGTH,
|
|
4
3
|
MAX_L2_TO_L1_MSGS_PER_TX,
|
|
5
4
|
MAX_NOTE_HASHES_PER_TX,
|
|
6
5
|
MAX_NULLIFIERS_PER_TX,
|
|
7
6
|
MAX_PUBLIC_CALLS_TO_UNIQUE_CONTRACT_CLASS_IDS,
|
|
8
7
|
MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
|
|
9
|
-
MAX_PUBLIC_LOGS_PER_TX,
|
|
10
|
-
MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
|
|
11
|
-
NOTE_HASH_TREE_HEIGHT,
|
|
12
|
-
NULLIFIER_TREE_HEIGHT,
|
|
13
8
|
PROTOCOL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
|
|
14
|
-
PUBLIC_DATA_TREE_HEIGHT,
|
|
15
|
-
PUBLIC_LOG_DATA_SIZE_IN_FIELDS,
|
|
16
9
|
} from '@aztec/constants';
|
|
17
|
-
import {
|
|
10
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
18
11
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
AvmAccumulatedData,
|
|
23
|
-
AvmAppendTreeHint,
|
|
24
|
-
AvmCircuitPublicInputs,
|
|
25
|
-
AvmContractClassHint,
|
|
26
|
-
AvmContractInstanceHint,
|
|
27
|
-
AvmEnqueuedCallHint,
|
|
28
|
-
AvmExecutionHints,
|
|
29
|
-
AvmNullifierReadTreeHint,
|
|
30
|
-
AvmNullifierWriteTreeHint,
|
|
31
|
-
AvmPublicDataReadTreeHint,
|
|
32
|
-
AvmPublicDataWriteTreeHint,
|
|
33
|
-
PublicDataUpdateRequest,
|
|
34
|
-
PublicDataWrite,
|
|
35
|
-
} from '@aztec/stdlib/avm';
|
|
12
|
+
import { type LogLevel, type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
|
|
13
|
+
import { PublicDataUpdateRequest } from '@aztec/stdlib/avm';
|
|
36
14
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
37
|
-
import { type ContractClassWithCommitment, SerializableContractInstance } from '@aztec/stdlib/contract';
|
|
38
|
-
import type { Gas, GasSettings } from '@aztec/stdlib/gas';
|
|
39
15
|
import { computePublicDataTreeLeafSlot } from '@aztec/stdlib/hash';
|
|
40
|
-
import {
|
|
41
|
-
|
|
42
|
-
Nullifier,
|
|
43
|
-
PrivateToAvmAccumulatedData,
|
|
44
|
-
PrivateToAvmAccumulatedDataArrayLengths,
|
|
45
|
-
PublicCallRequest,
|
|
46
|
-
} from '@aztec/stdlib/kernel';
|
|
47
|
-
import { PublicLog } from '@aztec/stdlib/logs';
|
|
16
|
+
import { NoteHash, Nullifier } from '@aztec/stdlib/kernel';
|
|
17
|
+
import { DebugLog, PublicLog } from '@aztec/stdlib/logs';
|
|
48
18
|
import { L2ToL1Message, ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
|
|
49
|
-
import { NullifierLeafPreimage, PublicDataTreeLeafPreimage } from '@aztec/stdlib/trees';
|
|
50
|
-
import type { GlobalVariables, TreeSnapshots } from '@aztec/stdlib/tx';
|
|
51
19
|
|
|
52
20
|
import { strict as assert } from 'assert';
|
|
53
21
|
|
|
54
|
-
import {
|
|
22
|
+
import {
|
|
23
|
+
L2ToL1MessageLimitReachedError,
|
|
24
|
+
MaxCallsToUniqueContractClassIdsError,
|
|
25
|
+
NoteHashLimitReachedError,
|
|
26
|
+
NullifierLimitReachedError,
|
|
27
|
+
SideEffectLimitReachedError,
|
|
28
|
+
} from './side_effect_errors.js';
|
|
55
29
|
import type { PublicSideEffectTraceInterface } from './side_effect_trace_interface.js';
|
|
56
30
|
import { UniqueClassIds } from './unique_class_ids.js';
|
|
57
31
|
|
|
58
|
-
const emptyPublicDataPath = () => new Array(PUBLIC_DATA_TREE_HEIGHT).fill(Fr.zero());
|
|
59
|
-
const emptyNoteHashPath = () => new Array(NOTE_HASH_TREE_HEIGHT).fill(Fr.zero());
|
|
60
|
-
const emptyNullifierPath = () => new Array(NULLIFIER_TREE_HEIGHT).fill(Fr.zero());
|
|
61
|
-
const emptyL1ToL2MessagePath = () => new Array(L1_TO_L2_MSG_TREE_HEIGHT).fill(Fr.zero());
|
|
62
|
-
|
|
63
32
|
/**
|
|
64
33
|
* A struct containing just the side effects as regular arrays
|
|
65
34
|
* as opposed to "Tuple" arrays used by circuit public inputs.
|
|
66
35
|
* This struct is helpful for testing and checking array lengths.
|
|
67
36
|
**/
|
|
68
37
|
export type SideEffects = {
|
|
69
|
-
enqueuedCalls: PublicCallRequest[];
|
|
70
|
-
|
|
71
38
|
publicDataWrites: PublicDataUpdateRequest[];
|
|
72
39
|
noteHashes: NoteHash[];
|
|
73
40
|
nullifiers: Nullifier[];
|
|
74
41
|
l2ToL1Msgs: ScopedL2ToL1Message[];
|
|
75
|
-
|
|
76
42
|
publicLogs: PublicLog[];
|
|
77
43
|
};
|
|
78
44
|
|
|
@@ -83,7 +49,7 @@ export class SideEffectArrayLengths {
|
|
|
83
49
|
public readonly noteHashes: number,
|
|
84
50
|
public readonly nullifiers: number,
|
|
85
51
|
public readonly l2ToL1Msgs: number,
|
|
86
|
-
public readonly
|
|
52
|
+
public readonly publicLogFields: number,
|
|
87
53
|
) {}
|
|
88
54
|
|
|
89
55
|
static empty() {
|
|
@@ -95,13 +61,11 @@ export class SideEffectArrayLengths {
|
|
|
95
61
|
* Trace side effects for an enqueued public call's execution.
|
|
96
62
|
*/
|
|
97
63
|
export class SideEffectTrace implements PublicSideEffectTraceInterface {
|
|
98
|
-
public log
|
|
64
|
+
public log: Logger;
|
|
99
65
|
|
|
100
66
|
/** The side effect counter increments with every call to the trace. */
|
|
101
67
|
private sideEffectCounter: number;
|
|
102
68
|
|
|
103
|
-
private enqueuedCalls: PublicCallRequest[] = [];
|
|
104
|
-
|
|
105
69
|
private publicDataWrites: PublicDataUpdateRequest[] = [];
|
|
106
70
|
private protocolPublicDataWritesLength: number = 0;
|
|
107
71
|
private userPublicDataWritesLength: number = 0;
|
|
@@ -109,38 +73,44 @@ export class SideEffectTrace implements PublicSideEffectTraceInterface {
|
|
|
109
73
|
private nullifiers: Nullifier[] = [];
|
|
110
74
|
private l2ToL1Messages: ScopedL2ToL1Message[] = [];
|
|
111
75
|
private publicLogs: PublicLog[] = [];
|
|
112
|
-
|
|
113
|
-
private avmCircuitHints: AvmExecutionHints;
|
|
114
|
-
|
|
115
76
|
/** Make sure a forked trace is never merged twice. */
|
|
116
77
|
private alreadyMergedIntoParent = false;
|
|
117
78
|
|
|
118
79
|
constructor(
|
|
119
80
|
/** The counter of this trace's first side effect. */
|
|
120
81
|
public readonly startSideEffectCounter: number = 0,
|
|
82
|
+
bindings?: LoggerBindings,
|
|
121
83
|
/** Track parent's (or previous kernel's) lengths so the AVM can properly enforce TX-wide limits,
|
|
122
84
|
* otherwise the public kernel can fail to prove because TX limits are breached.
|
|
123
85
|
*/
|
|
124
86
|
private readonly previousSideEffectArrayLengths: SideEffectArrayLengths = SideEffectArrayLengths.empty(),
|
|
125
87
|
/** We need to track the set of class IDs used, to enforce limits. */
|
|
126
88
|
private uniqueClassIds: UniqueClassIds = new UniqueClassIds(),
|
|
89
|
+
private writtenPublicDataSlots: Set<string> = new Set(),
|
|
90
|
+
private debugLogs: DebugLog[] = [],
|
|
91
|
+
private debugLogMemoryReads: number = 0,
|
|
127
92
|
) {
|
|
128
93
|
this.sideEffectCounter = startSideEffectCounter;
|
|
129
|
-
this.
|
|
94
|
+
this.log = createLogger('simulator:side_effect_trace', bindings);
|
|
130
95
|
}
|
|
131
96
|
|
|
132
97
|
public fork() {
|
|
133
98
|
return new SideEffectTrace(
|
|
134
99
|
this.sideEffectCounter,
|
|
100
|
+
this.log.getBindings(),
|
|
135
101
|
new SideEffectArrayLengths(
|
|
136
102
|
this.previousSideEffectArrayLengths.publicDataWrites + this.userPublicDataWritesLength,
|
|
137
103
|
this.previousSideEffectArrayLengths.protocolPublicDataWrites + this.protocolPublicDataWritesLength,
|
|
138
104
|
this.previousSideEffectArrayLengths.noteHashes + this.noteHashes.length,
|
|
139
105
|
this.previousSideEffectArrayLengths.nullifiers + this.nullifiers.length,
|
|
140
106
|
this.previousSideEffectArrayLengths.l2ToL1Msgs + this.l2ToL1Messages.length,
|
|
141
|
-
this.previousSideEffectArrayLengths.
|
|
107
|
+
this.previousSideEffectArrayLengths.publicLogFields +
|
|
108
|
+
this.publicLogs.reduce((acc, log) => acc + log.sizeInFields(), 0),
|
|
142
109
|
),
|
|
143
110
|
this.uniqueClassIds.fork(),
|
|
111
|
+
new Set(this.writtenPublicDataSlots),
|
|
112
|
+
this.debugLogs.slice(),
|
|
113
|
+
this.debugLogMemoryReads,
|
|
144
114
|
);
|
|
145
115
|
}
|
|
146
116
|
|
|
@@ -153,7 +123,9 @@ export class SideEffectTrace implements PublicSideEffectTraceInterface {
|
|
|
153
123
|
forkedTrace.alreadyMergedIntoParent = true;
|
|
154
124
|
|
|
155
125
|
this.sideEffectCounter = forkedTrace.sideEffectCounter;
|
|
156
|
-
this.
|
|
126
|
+
this.uniqueClassIds.acceptAndMerge(forkedTrace.uniqueClassIds);
|
|
127
|
+
this.debugLogs = forkedTrace.debugLogs;
|
|
128
|
+
this.debugLogMemoryReads = forkedTrace.debugLogMemoryReads;
|
|
157
129
|
|
|
158
130
|
if (!reverted) {
|
|
159
131
|
this.publicDataWrites.push(...forkedTrace.publicDataWrites);
|
|
@@ -161,22 +133,12 @@ export class SideEffectTrace implements PublicSideEffectTraceInterface {
|
|
|
161
133
|
this.nullifiers.push(...forkedTrace.nullifiers);
|
|
162
134
|
this.l2ToL1Messages.push(...forkedTrace.l2ToL1Messages);
|
|
163
135
|
this.publicLogs.push(...forkedTrace.publicLogs);
|
|
136
|
+
this.userPublicDataWritesLength += forkedTrace.userPublicDataWritesLength;
|
|
137
|
+
this.protocolPublicDataWritesLength += forkedTrace.protocolPublicDataWritesLength;
|
|
138
|
+
for (const slot of forkedTrace.writtenPublicDataSlots) {
|
|
139
|
+
this.writtenPublicDataSlots.add(slot);
|
|
140
|
+
}
|
|
164
141
|
}
|
|
165
|
-
this.mergeHints(forkedTrace);
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
private mergeHints(forkedTrace: this) {
|
|
169
|
-
this.uniqueClassIds.acceptAndMerge(forkedTrace.uniqueClassIds);
|
|
170
|
-
this.avmCircuitHints.enqueuedCalls.push(...forkedTrace.avmCircuitHints.enqueuedCalls);
|
|
171
|
-
this.avmCircuitHints.contractInstances.push(...forkedTrace.avmCircuitHints.contractInstances);
|
|
172
|
-
this.avmCircuitHints.contractClasses.push(...forkedTrace.avmCircuitHints.contractClasses);
|
|
173
|
-
this.avmCircuitHints.publicDataReads.push(...forkedTrace.avmCircuitHints.publicDataReads);
|
|
174
|
-
this.avmCircuitHints.publicDataWrites.push(...forkedTrace.avmCircuitHints.publicDataWrites);
|
|
175
|
-
this.avmCircuitHints.nullifierReads.push(...forkedTrace.avmCircuitHints.nullifierReads);
|
|
176
|
-
this.avmCircuitHints.nullifierWrites.push(...forkedTrace.avmCircuitHints.nullifierWrites);
|
|
177
|
-
this.avmCircuitHints.noteHashReads.push(...forkedTrace.avmCircuitHints.noteHashReads);
|
|
178
|
-
this.avmCircuitHints.noteHashWrites.push(...forkedTrace.avmCircuitHints.noteHashWrites);
|
|
179
|
-
this.avmCircuitHints.l1ToL2MessageReads.push(...forkedTrace.avmCircuitHints.l1ToL2MessageReads);
|
|
180
142
|
}
|
|
181
143
|
|
|
182
144
|
public getCounter() {
|
|
@@ -191,241 +153,136 @@ export class SideEffectTrace implements PublicSideEffectTraceInterface {
|
|
|
191
153
|
return this.previousSideEffectArrayLengths.noteHashes + this.noteHashes.length;
|
|
192
154
|
}
|
|
193
155
|
|
|
194
|
-
public tracePublicStorageRead(
|
|
195
|
-
contractAddress: AztecAddress,
|
|
196
|
-
slot: Fr,
|
|
197
|
-
value: Fr,
|
|
198
|
-
leafPreimage: PublicDataTreeLeafPreimage = PublicDataTreeLeafPreimage.empty(),
|
|
199
|
-
leafIndex: Fr = Fr.zero(),
|
|
200
|
-
path: Fr[] = emptyPublicDataPath(),
|
|
201
|
-
) {
|
|
202
|
-
this.avmCircuitHints.publicDataReads.push(new AvmPublicDataReadTreeHint(leafPreimage, leafIndex, path));
|
|
203
|
-
this.log.trace(
|
|
204
|
-
`Tracing storage read (address=${contractAddress}, slot=${slot}): value=${value} (counter=${this.sideEffectCounter})`,
|
|
205
|
-
);
|
|
206
|
-
this.incrementSideEffectCounter();
|
|
207
|
-
}
|
|
208
|
-
|
|
209
156
|
public async tracePublicStorageWrite(
|
|
210
157
|
contractAddress: AztecAddress,
|
|
211
158
|
slot: Fr,
|
|
212
159
|
value: Fr,
|
|
213
160
|
protocolWrite: boolean,
|
|
214
|
-
lowLeafPreimage: PublicDataTreeLeafPreimage = PublicDataTreeLeafPreimage.empty(),
|
|
215
|
-
lowLeafIndex: Fr = Fr.zero(),
|
|
216
|
-
lowLeafPath: Fr[] = emptyPublicDataPath(),
|
|
217
|
-
newLeafPreimage: PublicDataTreeLeafPreimage = PublicDataTreeLeafPreimage.empty(),
|
|
218
|
-
insertionPath: Fr[] = emptyPublicDataPath(),
|
|
219
161
|
): Promise<void> {
|
|
220
|
-
if
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
162
|
+
// Only increment counts if the storage slot has not been written to before.
|
|
163
|
+
if (this.isStorageCold(contractAddress, slot)) {
|
|
164
|
+
if (protocolWrite) {
|
|
165
|
+
if (
|
|
166
|
+
this.protocolPublicDataWritesLength + this.previousSideEffectArrayLengths.protocolPublicDataWrites >=
|
|
167
|
+
PROTOCOL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX
|
|
168
|
+
) {
|
|
169
|
+
throw new SideEffectLimitReachedError(
|
|
170
|
+
'protocol public data (contract storage) write',
|
|
171
|
+
PROTOCOL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
|
|
172
|
+
);
|
|
173
|
+
}
|
|
174
|
+
this.protocolPublicDataWritesLength++;
|
|
175
|
+
} else {
|
|
176
|
+
if (
|
|
177
|
+
this.userPublicDataWritesLength + this.previousSideEffectArrayLengths.publicDataWrites >=
|
|
178
|
+
MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX
|
|
179
|
+
) {
|
|
180
|
+
throw new SideEffectLimitReachedError(
|
|
181
|
+
'public data (contract storage) write',
|
|
182
|
+
MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
|
|
183
|
+
);
|
|
184
|
+
}
|
|
185
|
+
this.userPublicDataWritesLength++;
|
|
229
186
|
}
|
|
230
|
-
this.protocolPublicDataWritesLength++;
|
|
231
|
-
} else {
|
|
232
|
-
if (
|
|
233
|
-
this.userPublicDataWritesLength + this.previousSideEffectArrayLengths.publicDataWrites >=
|
|
234
|
-
MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX
|
|
235
|
-
) {
|
|
236
|
-
throw new SideEffectLimitReachedError(
|
|
237
|
-
'public data (contract storage) write',
|
|
238
|
-
MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
|
|
239
|
-
);
|
|
240
|
-
}
|
|
241
|
-
this.userPublicDataWritesLength++;
|
|
242
187
|
}
|
|
243
188
|
|
|
244
189
|
const leafSlot = await computePublicDataTreeLeafSlot(contractAddress, slot);
|
|
245
190
|
this.publicDataWrites.push(new PublicDataUpdateRequest(leafSlot, value, this.sideEffectCounter));
|
|
246
191
|
|
|
247
|
-
// New hinting
|
|
248
|
-
const readHint = new AvmPublicDataReadTreeHint(lowLeafPreimage, lowLeafIndex, lowLeafPath);
|
|
249
|
-
this.avmCircuitHints.publicDataWrites.push(
|
|
250
|
-
new AvmPublicDataWriteTreeHint(readHint, newLeafPreimage, insertionPath),
|
|
251
|
-
);
|
|
252
|
-
|
|
253
192
|
this.log.trace(
|
|
254
193
|
`Traced public data write (address=${contractAddress}, slot=${slot}): value=${value} (counter=${this.sideEffectCounter}, isProtocol:${protocolWrite})`,
|
|
255
194
|
);
|
|
256
195
|
this.incrementSideEffectCounter();
|
|
196
|
+
this.writtenPublicDataSlots.add(this.computePublicDataSlotKey(contractAddress, slot));
|
|
257
197
|
}
|
|
258
198
|
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
_contractAddress: AztecAddress,
|
|
262
|
-
noteHash: Fr,
|
|
263
|
-
leafIndex: Fr,
|
|
264
|
-
_exists: boolean,
|
|
265
|
-
path: Fr[] = emptyNoteHashPath(),
|
|
266
|
-
) {
|
|
267
|
-
// New Hinting
|
|
268
|
-
this.avmCircuitHints.noteHashReads.push(new AvmAppendTreeHint(leafIndex, noteHash, path));
|
|
269
|
-
// NOTE: counter does not increment for note hash checks (because it doesn't rely on pending note hashes)
|
|
270
|
-
this.log.trace(`Tracing note hash check (counter=${this.sideEffectCounter})`);
|
|
199
|
+
private computePublicDataSlotKey(contractAddress: AztecAddress, slot: Fr): string {
|
|
200
|
+
return `${contractAddress.toString()}:${slot.toString()}`;
|
|
271
201
|
}
|
|
272
202
|
|
|
273
|
-
public
|
|
203
|
+
public isStorageCold(contractAddress: AztecAddress, slot: Fr): boolean {
|
|
204
|
+
return !this.writtenPublicDataSlots.has(this.computePublicDataSlotKey(contractAddress, slot));
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
public traceNewNoteHash(noteHash: Fr) {
|
|
274
208
|
if (this.noteHashes.length + this.previousSideEffectArrayLengths.noteHashes >= MAX_NOTE_HASHES_PER_TX) {
|
|
275
|
-
throw new
|
|
209
|
+
throw new NoteHashLimitReachedError();
|
|
276
210
|
}
|
|
277
211
|
|
|
278
212
|
this.noteHashes.push(new NoteHash(noteHash, this.sideEffectCounter));
|
|
279
|
-
this.avmCircuitHints.noteHashWrites.push(new AvmAppendTreeHint(leafIndex, noteHash, path));
|
|
280
213
|
this.log.trace(`Tracing new note hash (counter=${this.sideEffectCounter})`);
|
|
281
214
|
this.incrementSideEffectCounter();
|
|
282
215
|
}
|
|
283
216
|
|
|
284
|
-
public
|
|
285
|
-
_siloedNullifier: Fr,
|
|
286
|
-
_exists: boolean,
|
|
287
|
-
lowLeafPreimage: NullifierLeafPreimage = NullifierLeafPreimage.empty(),
|
|
288
|
-
lowLeafIndex: Fr = Fr.zero(),
|
|
289
|
-
lowLeafPath: Fr[] = emptyNullifierPath(),
|
|
290
|
-
) {
|
|
291
|
-
this.avmCircuitHints.nullifierReads.push(new AvmNullifierReadTreeHint(lowLeafPreimage, lowLeafIndex, lowLeafPath));
|
|
292
|
-
this.log.trace(`Tracing nullifier check (counter=${this.sideEffectCounter})`);
|
|
293
|
-
this.incrementSideEffectCounter();
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
public traceNewNullifier(
|
|
297
|
-
siloedNullifier: Fr,
|
|
298
|
-
lowLeafPreimage: NullifierLeafPreimage = NullifierLeafPreimage.empty(),
|
|
299
|
-
lowLeafIndex: Fr = Fr.zero(),
|
|
300
|
-
lowLeafPath: Fr[] = emptyNullifierPath(),
|
|
301
|
-
insertionPath: Fr[] = emptyNullifierPath(),
|
|
302
|
-
) {
|
|
217
|
+
public traceNewNullifier(siloedNullifier: Fr) {
|
|
303
218
|
if (this.nullifiers.length + this.previousSideEffectArrayLengths.nullifiers >= MAX_NULLIFIERS_PER_TX) {
|
|
304
|
-
throw new
|
|
219
|
+
throw new NullifierLimitReachedError();
|
|
305
220
|
}
|
|
306
221
|
|
|
307
|
-
this.nullifiers.push(new Nullifier(siloedNullifier,
|
|
222
|
+
this.nullifiers.push(new Nullifier(siloedNullifier, /*noteHash=*/ Fr.ZERO, this.sideEffectCounter));
|
|
308
223
|
|
|
309
|
-
const lowLeafReadHint = new AvmNullifierReadTreeHint(lowLeafPreimage, lowLeafIndex, lowLeafPath);
|
|
310
|
-
this.avmCircuitHints.nullifierWrites.push(new AvmNullifierWriteTreeHint(lowLeafReadHint, insertionPath));
|
|
311
224
|
this.log.trace(`Tracing new nullifier (counter=${this.sideEffectCounter})`);
|
|
312
225
|
this.incrementSideEffectCounter();
|
|
313
226
|
}
|
|
314
227
|
|
|
315
|
-
// TODO(8287): _exists can be removed once we have the vm properly handling the equality check
|
|
316
|
-
public traceL1ToL2MessageCheck(
|
|
317
|
-
_contractAddress: AztecAddress,
|
|
318
|
-
msgHash: Fr,
|
|
319
|
-
msgLeafIndex: Fr,
|
|
320
|
-
_exists: boolean,
|
|
321
|
-
path: Fr[] = emptyL1ToL2MessagePath(),
|
|
322
|
-
) {
|
|
323
|
-
this.avmCircuitHints.l1ToL2MessageReads.push(new AvmAppendTreeHint(msgLeafIndex, msgHash, path));
|
|
324
|
-
this.log.trace(`Tracing l1 to l2 message check (counter=${this.sideEffectCounter})`);
|
|
325
|
-
}
|
|
326
|
-
|
|
327
228
|
public traceNewL2ToL1Message(contractAddress: AztecAddress, recipient: Fr, content: Fr) {
|
|
328
229
|
if (this.l2ToL1Messages.length + this.previousSideEffectArrayLengths.l2ToL1Msgs >= MAX_L2_TO_L1_MSGS_PER_TX) {
|
|
329
|
-
throw new
|
|
230
|
+
throw new L2ToL1MessageLimitReachedError();
|
|
330
231
|
}
|
|
331
232
|
|
|
332
233
|
const recipientAddress = EthAddress.fromField(recipient);
|
|
333
|
-
this.l2ToL1Messages.push(
|
|
334
|
-
new L2ToL1Message(recipientAddress, content, this.sideEffectCounter).scope(contractAddress),
|
|
335
|
-
);
|
|
234
|
+
this.l2ToL1Messages.push(new L2ToL1Message(recipientAddress, content).scope(contractAddress));
|
|
336
235
|
this.log.trace(`Tracing new l2 to l1 message (counter=${this.sideEffectCounter})`);
|
|
337
236
|
this.incrementSideEffectCounter();
|
|
338
237
|
}
|
|
339
238
|
|
|
340
239
|
public tracePublicLog(contractAddress: AztecAddress, log: Fr[]) {
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
240
|
+
const previouslyEmittedPublicLogFieldsCount =
|
|
241
|
+
this.previousSideEffectArrayLengths.publicLogFields +
|
|
242
|
+
this.publicLogs.reduce((acc, log) => acc + log.sizeInFields(), 0);
|
|
344
243
|
|
|
345
|
-
|
|
346
|
-
|
|
244
|
+
const publicLog = new PublicLog(contractAddress, log);
|
|
245
|
+
|
|
246
|
+
if (previouslyEmittedPublicLogFieldsCount + publicLog.sizeInFields() > FLAT_PUBLIC_LOGS_PAYLOAD_LENGTH) {
|
|
247
|
+
throw new SideEffectLimitReachedError('public log fields', FLAT_PUBLIC_LOGS_PAYLOAD_LENGTH);
|
|
347
248
|
}
|
|
348
|
-
|
|
249
|
+
|
|
349
250
|
this.publicLogs.push(publicLog);
|
|
350
251
|
this.log.trace(`Tracing new public log (counter=${this.sideEffectCounter})`);
|
|
351
252
|
this.incrementSideEffectCounter();
|
|
352
253
|
}
|
|
353
254
|
|
|
354
|
-
public
|
|
355
|
-
contractAddress
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
exists,
|
|
365
|
-
instance.salt,
|
|
366
|
-
instance.deployer,
|
|
367
|
-
instance.currentContractClassId,
|
|
368
|
-
instance.originalContractClassId,
|
|
369
|
-
instance.initializationHash,
|
|
370
|
-
instance.publicKeys,
|
|
371
|
-
updateMembershipHint,
|
|
372
|
-
updatePreimage,
|
|
373
|
-
),
|
|
374
|
-
);
|
|
375
|
-
this.log.trace(`Tracing contract instance retrieval (counter=${this.sideEffectCounter})`);
|
|
376
|
-
this.incrementSideEffectCounter();
|
|
255
|
+
public traceDebugLog(contractAddress: AztecAddress, level: LogLevel, message: string, fields: Fr[]) {
|
|
256
|
+
this.debugLogs.push(new DebugLog(contractAddress, level, message, fields));
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
public getDebugLogs() {
|
|
260
|
+
return this.debugLogs;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
public getDebugLogMemoryReads() {
|
|
264
|
+
return this.debugLogMemoryReads;
|
|
377
265
|
}
|
|
378
266
|
|
|
379
|
-
public
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
267
|
+
public traceDebugLogMemoryReads(memoryReads: number) {
|
|
268
|
+
this.debugLogMemoryReads += memoryReads;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
public traceGetContractClass(contractClassId: Fr, exists: boolean) {
|
|
272
|
+
// We limit the number of unique contract class IDs due to hashing and the trace length limit.
|
|
273
|
+
if (exists && !this.uniqueClassIds.has(contractClassId.toString())) {
|
|
385
274
|
if (this.uniqueClassIds.size() >= MAX_PUBLIC_CALLS_TO_UNIQUE_CONTRACT_CLASS_IDS) {
|
|
386
275
|
this.log.debug(`Bytecode retrieval failure for contract class ID ${contractClassId} (limit reached)`);
|
|
387
|
-
throw new
|
|
388
|
-
'contract calls to unique class IDs',
|
|
389
|
-
MAX_PUBLIC_CALLS_TO_UNIQUE_CONTRACT_CLASS_IDS,
|
|
390
|
-
);
|
|
276
|
+
throw new MaxCallsToUniqueContractClassIdsError();
|
|
391
277
|
}
|
|
392
|
-
|
|
278
|
+
this.log.trace(`Adding contract class ID ${contractClassId} (counter=${this.sideEffectCounter})`);
|
|
393
279
|
this.uniqueClassIds.add(contractClassId.toString());
|
|
394
|
-
this.avmCircuitHints.contractClasses.push(
|
|
395
|
-
new AvmContractClassHint(
|
|
396
|
-
contractClassId,
|
|
397
|
-
exists,
|
|
398
|
-
contractClass!.artifactHash,
|
|
399
|
-
contractClass!.privateFunctionsRoot,
|
|
400
|
-
contractClass!.publicBytecodeCommitment,
|
|
401
|
-
contractClass!.packedBytecode,
|
|
402
|
-
),
|
|
403
|
-
);
|
|
404
|
-
|
|
405
280
|
this.incrementSideEffectCounter();
|
|
406
281
|
}
|
|
407
282
|
}
|
|
408
283
|
|
|
409
|
-
/**
|
|
410
|
-
* Trace an enqueued call.
|
|
411
|
-
* Accept some results from a finished call's trace into this one.
|
|
412
|
-
*/
|
|
413
|
-
public traceEnqueuedCall(
|
|
414
|
-
/** The call request from private that enqueued this call. */
|
|
415
|
-
publicCallRequest: PublicCallRequest,
|
|
416
|
-
/** The call's calldata */
|
|
417
|
-
calldata: Fr[],
|
|
418
|
-
/** Did the call revert? */
|
|
419
|
-
_reverted: boolean,
|
|
420
|
-
) {
|
|
421
|
-
// TODO(4805): check if some threshold is reached for max enqueued or nested calls (to unique contracts?)
|
|
422
|
-
this.enqueuedCalls.push(publicCallRequest);
|
|
423
|
-
this.avmCircuitHints.enqueuedCalls.push(new AvmEnqueuedCallHint(publicCallRequest.contractAddress, calldata));
|
|
424
|
-
}
|
|
425
|
-
|
|
426
284
|
public getSideEffects(): SideEffects {
|
|
427
285
|
return {
|
|
428
|
-
enqueuedCalls: this.enqueuedCalls,
|
|
429
286
|
publicDataWrites: this.publicDataWrites,
|
|
430
287
|
noteHashes: this.noteHashes,
|
|
431
288
|
nullifiers: this.nullifiers,
|
|
@@ -433,84 +290,4 @@ export class SideEffectTrace implements PublicSideEffectTraceInterface {
|
|
|
433
290
|
publicLogs: this.publicLogs,
|
|
434
291
|
};
|
|
435
292
|
}
|
|
436
|
-
|
|
437
|
-
public toAvmCircuitPublicInputs(
|
|
438
|
-
/** Globals. */
|
|
439
|
-
globalVariables: GlobalVariables,
|
|
440
|
-
/** Start tree snapshots. */
|
|
441
|
-
startTreeSnapshots: TreeSnapshots,
|
|
442
|
-
/** Gas used at start of TX. */
|
|
443
|
-
startGasUsed: Gas,
|
|
444
|
-
/** How much gas was available for this public execution. */
|
|
445
|
-
gasLimits: GasSettings,
|
|
446
|
-
/** Address of the fee payer. */
|
|
447
|
-
feePayer: AztecAddress,
|
|
448
|
-
/** Call requests for setup phase. */
|
|
449
|
-
publicSetupCallRequests: PublicCallRequest[],
|
|
450
|
-
/** Call requests for app logic phase. */
|
|
451
|
-
publicAppLogicCallRequests: PublicCallRequest[],
|
|
452
|
-
/** Call request for teardown phase. */
|
|
453
|
-
publicTeardownCallRequest: PublicCallRequest,
|
|
454
|
-
/** End tree snapshots. */
|
|
455
|
-
endTreeSnapshots: TreeSnapshots,
|
|
456
|
-
/**
|
|
457
|
-
* Gas used by the whole transaction, assuming entire teardown limit is used.
|
|
458
|
-
* This is the gas used when computing transaction fee.
|
|
459
|
-
*/
|
|
460
|
-
endGasUsed: Gas,
|
|
461
|
-
/** Transaction fee. */
|
|
462
|
-
transactionFee: Fr,
|
|
463
|
-
/** The call's results */
|
|
464
|
-
reverted: boolean,
|
|
465
|
-
): AvmCircuitPublicInputs {
|
|
466
|
-
return new AvmCircuitPublicInputs(
|
|
467
|
-
globalVariables,
|
|
468
|
-
startTreeSnapshots,
|
|
469
|
-
startGasUsed,
|
|
470
|
-
gasLimits,
|
|
471
|
-
feePayer,
|
|
472
|
-
padArrayEnd(publicSetupCallRequests, PublicCallRequest.empty(), MAX_ENQUEUED_CALLS_PER_TX),
|
|
473
|
-
padArrayEnd(publicAppLogicCallRequests, PublicCallRequest.empty(), MAX_ENQUEUED_CALLS_PER_TX),
|
|
474
|
-
publicTeardownCallRequest,
|
|
475
|
-
/*previousNonRevertibleAccumulatedDataArrayLengths=*/ PrivateToAvmAccumulatedDataArrayLengths.empty(),
|
|
476
|
-
/*previousRevertibleAccumulatedDataArrayLengths=*/ PrivateToAvmAccumulatedDataArrayLengths.empty(),
|
|
477
|
-
/*previousNonRevertibleAccumulatedDataArray=*/ PrivateToAvmAccumulatedData.empty(),
|
|
478
|
-
/*previousRevertibleAccumulatedDataArray=*/ PrivateToAvmAccumulatedData.empty(),
|
|
479
|
-
endTreeSnapshots,
|
|
480
|
-
endGasUsed,
|
|
481
|
-
/*accumulatedData=*/ this.getAvmAccumulatedData(),
|
|
482
|
-
transactionFee,
|
|
483
|
-
reverted,
|
|
484
|
-
);
|
|
485
|
-
}
|
|
486
|
-
|
|
487
|
-
public getPublicLogs() {
|
|
488
|
-
return this.publicLogs;
|
|
489
|
-
}
|
|
490
|
-
|
|
491
|
-
public getAvmCircuitHints() {
|
|
492
|
-
return this.avmCircuitHints;
|
|
493
|
-
}
|
|
494
|
-
|
|
495
|
-
private getAvmAccumulatedData() {
|
|
496
|
-
return new AvmAccumulatedData(
|
|
497
|
-
padArrayEnd(
|
|
498
|
-
this.noteHashes.map(n => n.value),
|
|
499
|
-
Fr.zero(),
|
|
500
|
-
MAX_NOTE_HASHES_PER_TX,
|
|
501
|
-
),
|
|
502
|
-
padArrayEnd(
|
|
503
|
-
this.nullifiers.map(n => n.value),
|
|
504
|
-
Fr.zero(),
|
|
505
|
-
MAX_NULLIFIERS_PER_TX,
|
|
506
|
-
),
|
|
507
|
-
padArrayEnd(this.l2ToL1Messages, ScopedL2ToL1Message.empty(), MAX_L2_TO_L1_MSGS_PER_TX),
|
|
508
|
-
padArrayEnd(this.publicLogs, PublicLog.empty(), MAX_PUBLIC_LOGS_PER_TX),
|
|
509
|
-
padArrayEnd(
|
|
510
|
-
this.publicDataWrites.map(w => new PublicDataWrite(w.leafSlot, w.newValue)),
|
|
511
|
-
PublicDataWrite.empty(),
|
|
512
|
-
MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
|
|
513
|
-
),
|
|
514
|
-
);
|
|
515
|
-
}
|
|
516
293
|
}
|
|
@@ -1,76 +1,28 @@
|
|
|
1
|
-
import type { Fr } from '@aztec/foundation/
|
|
2
|
-
import type {
|
|
1
|
+
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
+
import type { LogLevel } from '@aztec/foundation/log';
|
|
3
3
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
4
|
-
import type {
|
|
5
|
-
import type { PublicCallRequest } from '@aztec/stdlib/kernel';
|
|
6
|
-
import type { PublicLog } from '@aztec/stdlib/logs';
|
|
7
|
-
import type { NullifierLeafPreimage, PublicDataTreeLeafPreimage } from '@aztec/stdlib/trees';
|
|
4
|
+
import type { DebugLog } from '@aztec/stdlib/logs';
|
|
8
5
|
|
|
9
6
|
export interface PublicSideEffectTraceInterface {
|
|
10
7
|
fork(): PublicSideEffectTraceInterface;
|
|
11
8
|
merge(nestedTrace: PublicSideEffectTraceInterface, reverted?: boolean): void;
|
|
12
9
|
getCounter(): number;
|
|
13
10
|
// all "trace*" functions can throw SideEffectLimitReachedError
|
|
14
|
-
tracePublicStorageRead(
|
|
15
|
-
contractAddress: AztecAddress,
|
|
16
|
-
slot: Fr,
|
|
17
|
-
value: Fr,
|
|
18
|
-
leafPreimage?: PublicDataTreeLeafPreimage,
|
|
19
|
-
leafIndex?: Fr,
|
|
20
|
-
path?: Fr[],
|
|
21
|
-
): void;
|
|
22
11
|
tracePublicStorageWrite(
|
|
23
12
|
contractAddress: AztecAddress,
|
|
24
13
|
slot: Fr, // This is the storage slot not the computed leaf slot
|
|
25
14
|
value: Fr,
|
|
26
15
|
protocolWrite: boolean,
|
|
27
|
-
lowLeafPreimage?: PublicDataTreeLeafPreimage,
|
|
28
|
-
lowLeafIndex?: Fr,
|
|
29
|
-
lowLeafPath?: Fr[],
|
|
30
|
-
newLeafPreimage?: PublicDataTreeLeafPreimage,
|
|
31
|
-
insertionPath?: Fr[],
|
|
32
16
|
): Promise<void>;
|
|
33
|
-
|
|
34
|
-
traceNewNoteHash(uniqueNoteHash: Fr
|
|
17
|
+
isStorageCold(contractAddress: AztecAddress, slot: Fr): boolean;
|
|
18
|
+
traceNewNoteHash(uniqueNoteHash: Fr): void;
|
|
35
19
|
getNoteHashCount(): number;
|
|
36
|
-
|
|
37
|
-
siloedNullifier: Fr,
|
|
38
|
-
exists: boolean,
|
|
39
|
-
lowLeafPreimage?: NullifierLeafPreimage,
|
|
40
|
-
lowLeafIndex?: Fr,
|
|
41
|
-
lowLeafPath?: Fr[],
|
|
42
|
-
): void;
|
|
43
|
-
traceNewNullifier(
|
|
44
|
-
siloedNullifier: Fr,
|
|
45
|
-
lowLeafPreimage?: NullifierLeafPreimage,
|
|
46
|
-
lowLeafIndex?: Fr,
|
|
47
|
-
lowLeafPath?: Fr[],
|
|
48
|
-
insertionPath?: Fr[],
|
|
49
|
-
): void;
|
|
50
|
-
traceL1ToL2MessageCheck(
|
|
51
|
-
contractAddress: AztecAddress,
|
|
52
|
-
msgHash: Fr,
|
|
53
|
-
msgLeafIndex: Fr,
|
|
54
|
-
exists: boolean,
|
|
55
|
-
path?: Fr[],
|
|
56
|
-
): void;
|
|
20
|
+
traceNewNullifier(siloedNullifier: Fr): void;
|
|
57
21
|
traceNewL2ToL1Message(contractAddress: AztecAddress, recipient: Fr, content: Fr): void;
|
|
58
22
|
tracePublicLog(contractAddress: AztecAddress, log: Fr[]): void;
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
updatePreimage?: Fr[],
|
|
65
|
-
): void;
|
|
66
|
-
traceGetContractClass(contractClassId: Fr, exists: boolean, contractClass?: ContractClassWithCommitment): void;
|
|
67
|
-
traceEnqueuedCall(
|
|
68
|
-
/** The call request from private that enqueued this call. */
|
|
69
|
-
publicCallRequest: PublicCallRequest,
|
|
70
|
-
/** The call's calldata */
|
|
71
|
-
calldata: Fr[],
|
|
72
|
-
/** Did the call revert? */
|
|
73
|
-
reverted: boolean,
|
|
74
|
-
): void;
|
|
75
|
-
getPublicLogs(): PublicLog[];
|
|
23
|
+
traceDebugLog(contractAddress: AztecAddress, level: LogLevel, message: string, fields: Fr[]): void;
|
|
24
|
+
getDebugLogs(): DebugLog[];
|
|
25
|
+
getDebugLogMemoryReads(): number;
|
|
26
|
+
traceDebugLogMemoryReads(memoryReads: number): void;
|
|
27
|
+
traceGetContractClass(contractClassId: Fr, exists: boolean): void;
|
|
76
28
|
}
|