@aztec/simulator 0.0.0-test.1 → 0.0.1-fake-ceab37513c
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 +5 -3
- package/dest/client.d.ts.map +1 -1
- package/dest/client.js +4 -2
- package/dest/common/errors.d.ts +4 -7
- package/dest/common/errors.d.ts.map +1 -1
- package/dest/common/errors.js +51 -32
- package/dest/common/index.d.ts +0 -1
- package/dest/common/index.d.ts.map +1 -1
- package/dest/common/index.js +0 -1
- package/dest/private/acvm/acvm.d.ts +11 -5
- 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 +1 -1
- package/dest/private/acvm/acvm_types.d.ts.map +1 -1
- package/dest/private/acvm/deserialize.d.ts +17 -18
- 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 +0 -1
- 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 +19 -2
- package/dest/private/acvm/serialize.d.ts.map +1 -1
- package/dest/private/acvm/serialize.js +53 -0
- package/dest/private/{providers/acvm_native.d.ts → acvm_native.d.ts} +10 -10
- package/dest/private/acvm_native.d.ts.map +1 -0
- package/dest/private/{providers/acvm_native.js → acvm_native.js} +11 -7
- 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 +5 -5
- package/dest/public/avm/avm_context.d.ts.map +1 -1
- package/dest/public/avm/avm_contract_call_result.d.ts +4 -2
- 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 +2 -1
- 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 +4 -20
- 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 +2 -0
- 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 +98 -87
- 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 +4 -5
- package/dest/public/avm/avm_simulator.d.ts.map +1 -1
- package/dest/public/avm/avm_simulator.js +13 -18
- 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 +1 -16
- package/dest/public/avm/errors.d.ts.map +1 -1
- package/dest/public/avm/errors.js +0 -37
- package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +3 -3
- package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +1 -1
- package/dest/public/avm/fixtures/avm_simulation_tester.js +10 -11
- package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts +4 -4
- package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +1 -1
- package/dest/public/avm/fixtures/base_avm_simulation_tester.js +16 -15
- package/dest/public/avm/fixtures/initializers.d.ts +43 -0
- package/dest/public/avm/fixtures/initializers.d.ts.map +1 -0
- package/dest/public/avm/fixtures/initializers.js +42 -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 +0 -2
- 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.map +1 -1
- package/dest/public/avm/opcodes/accrued_substate.js +22 -19
- package/dest/public/avm/opcodes/addressing_mode.d.ts +11 -7
- package/dest/public/avm/opcodes/addressing_mode.d.ts.map +1 -1
- package/dest/public/avm/opcodes/addressing_mode.js +48 -27
- package/dest/public/avm/opcodes/arithmetic.d.ts +11 -1
- 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 +5 -13
- 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.map +1 -1
- package/dest/public/avm/opcodes/comparators.js +3 -3
- package/dest/public/avm/opcodes/contract.d.ts +1 -2
- 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.map +1 -1
- package/dest/public/avm/opcodes/control_flow.js +10 -8
- package/dest/public/avm/opcodes/conversion.d.ts +1 -0
- package/dest/public/avm/opcodes/conversion.d.ts.map +1 -1
- package/dest/public/avm/opcodes/conversion.js +264 -3
- package/dest/public/avm/opcodes/ec_add.d.ts.map +1 -1
- package/dest/public/avm/opcodes/ec_add.js +2 -2
- package/dest/public/avm/opcodes/environment_getters.d.ts +2 -2
- package/dest/public/avm/opcodes/environment_getters.d.ts.map +1 -1
- package/dest/public/avm/opcodes/environment_getters.js +12 -12
- package/dest/public/avm/opcodes/external_calls.d.ts +8 -7
- package/dest/public/avm/opcodes/external_calls.d.ts.map +1 -1
- package/dest/public/avm/opcodes/external_calls.js +39 -33
- 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/instruction.d.ts +14 -10
- package/dest/public/avm/opcodes/instruction.d.ts.map +1 -1
- package/dest/public/avm/opcodes/instruction.js +18 -13
- package/dest/public/avm/opcodes/memory.d.ts +4 -4
- 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.map +1 -1
- package/dest/public/avm/opcodes/misc.js +17 -12
- 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 +0 -2
- package/dest/public/avm/serialization/buffer_cursor.d.ts.map +1 -1
- package/dest/public/avm/serialization/bytecode_serialization.d.ts +2 -6
- 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 +5 -4
- package/dest/public/avm/serialization/instruction_serialization.d.ts.map +1 -1
- package/dest/public/avm/serialization/instruction_serialization.js +60 -35
- package/dest/public/avm/test_utils.d.ts +10 -13
- package/dest/public/avm/test_utils.d.ts.map +1 -1
- package/dest/public/avm/test_utils.js +12 -17
- package/dest/public/db_interfaces.d.ts +56 -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 +10 -3
- 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 +9 -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 +393 -0
- package/dest/public/fixtures/index.d.ts +6 -0
- package/dest/public/fixtures/index.d.ts.map +1 -1
- package/dest/public/fixtures/index.js +6 -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 +43 -0
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts +33 -13
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
- package/dest/public/fixtures/public_tx_simulation_tester.js +90 -70
- package/dest/public/{avm/fixtures → fixtures}/simple_contract_data_source.d.ts +6 -6
- 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 +95 -0
- package/dest/public/fixtures/utils.d.ts +16 -3
- 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 +68 -0
- package/dest/public/hinting_db_sources.d.ts.map +1 -0
- package/dest/public/hinting_db_sources.js +294 -0
- package/dest/public/index.d.ts +4 -8
- package/dest/public/index.d.ts.map +1 -1
- package/dest/public/index.js +4 -7
- package/dest/public/public_db_sources.d.ts +30 -39
- package/dest/public/public_db_sources.d.ts.map +1 -1
- package/dest/public/public_db_sources.js +141 -67
- package/dest/public/public_processor/guarded_merkle_tree.d.ts +47 -0
- package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -0
- package/dest/public/public_processor/guarded_merkle_tree.js +105 -0
- package/dest/public/public_processor/public_processor.d.ts +19 -29
- package/dest/public/public_processor/public_processor.d.ts.map +1 -1
- package/dest/public/public_processor/public_processor.js +133 -94
- package/dest/public/public_processor/public_processor_metrics.d.ts +2 -2
- 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/index.d.ts +3 -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 +23 -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 +52 -0
- package/dest/public/public_tx_simulator/public_tx_context.d.ts +17 -29
- package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/public_tx_context.js +59 -91
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +27 -42
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/public_tx_simulator.js +128 -171
- package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts +20 -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_trace.d.ts +10 -62
- package/dest/public/side_effect_trace.d.ts.map +1 -1
- package/dest/public/side_effect_trace.js +43 -108
- package/dest/public/side_effect_trace_interface.d.ts +5 -22
- 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 +2 -2
- package/dest/public/state_manager/nullifiers.d.ts.map +1 -0
- package/dest/public/{avm/journal → state_manager}/nullifiers.js +2 -2
- package/dest/public/{avm/journal → state_manager}/public_storage.d.ts +2 -2
- package/dest/public/state_manager/public_storage.d.ts.map +1 -0
- package/dest/public/{avm/journal/journal.d.ts → state_manager/state_manager.d.ts} +37 -85
- package/dest/public/state_manager/state_manager.d.ts.map +1 -0
- package/dest/public/state_manager/state_manager.js +352 -0
- package/dest/public/test_executor_metrics.d.ts +54 -0
- package/dest/public/test_executor_metrics.d.ts.map +1 -0
- package/dest/public/test_executor_metrics.js +306 -0
- package/dest/public/unique_class_ids.d.ts.map +1 -1
- package/dest/public/utils.d.ts +2 -4
- package/dest/public/utils.d.ts.map +1 -1
- package/dest/public/utils.js +4 -21
- package/dest/server.d.ts +6 -3
- 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 +31 -30
- 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} +31 -15
- 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 +7 -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 +30 -29
- package/src/public/avm/avm_simulator_interface.ts +8 -0
- package/src/public/avm/errors.ts +1 -53
- package/src/public/avm/fixtures/avm_simulation_tester.ts +19 -18
- package/src/public/avm/fixtures/base_avm_simulation_tester.ts +15 -14
- package/src/public/avm/fixtures/initializers.ts +103 -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 +62 -27
- package/src/public/avm/opcodes/addressing_mode.ts +57 -33
- 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 +23 -3
- package/src/public/avm/opcodes/ec_add.ts +5 -2
- package/src/public/avm/opcodes/environment_getters.ts +22 -15
- package/src/public/avm/opcodes/external_calls.ts +61 -28
- package/src/public/avm/opcodes/hashing.ts +28 -8
- package/src/public/avm/opcodes/instruction.ts +23 -15
- package/src/public/avm/opcodes/memory.ts +71 -32
- package/src/public/avm/opcodes/misc.ts +24 -16
- 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 +63 -34
- package/src/public/avm/test_utils.ts +23 -32
- package/src/public/db_interfaces.ts +61 -0
- package/src/{common → public}/debug_fn_name.ts +7 -7
- package/src/public/executor_metrics.ts +55 -6
- package/src/public/executor_metrics_interface.ts +14 -0
- package/src/public/fixtures/amm_test.ts +331 -0
- package/src/public/fixtures/bulk_test.ts +151 -0
- package/src/public/fixtures/index.ts +6 -0
- package/src/public/fixtures/minimal_public_tx.ts +59 -0
- package/src/public/fixtures/public_tx_simulation_tester.ts +154 -113
- package/src/public/{avm/fixtures → fixtures}/simple_contract_data_source.ts +36 -18
- package/src/public/fixtures/token_test.ts +140 -0
- package/src/public/fixtures/utils.ts +141 -68
- package/src/public/hinting_db_sources.ts +500 -0
- package/src/public/index.ts +4 -8
- package/src/public/public_db_sources.ts +179 -96
- package/src/public/public_processor/guarded_merkle_tree.ts +149 -0
- package/src/public/public_processor/public_processor.ts +179 -139
- package/src/public/public_processor/public_processor_metrics.ts +2 -2
- package/src/public/public_tx_simulator/index.ts +2 -0
- package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +106 -0
- package/src/public/public_tx_simulator/public_tx_context.ts +153 -193
- package/src/public/public_tx_simulator/public_tx_simulator.ts +167 -211
- package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +72 -0
- package/src/public/side_effect_trace.ts +52 -303
- package/src/public/side_effect_trace_interface.ts +4 -58
- package/src/public/state_manager/index.ts +1 -0
- package/src/public/{avm/journal → state_manager}/nullifiers.ts +4 -4
- package/src/public/{avm/journal → state_manager}/public_storage.ts +2 -2
- package/src/public/state_manager/state_manager.ts +512 -0
- package/src/public/test_executor_metrics.ts +395 -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.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.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.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/execution.d.ts +0 -108
- package/dest/public/execution.d.ts.map +0 -1
- package/dest/public/execution.js +0 -9
- 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/execution.ts +0 -140
- package/src/test/utils.ts +0 -36
- /package/dest/public/{avm/journal → state_manager}/public_storage.js +0 -0
|
@@ -1,53 +1,23 @@
|
|
|
1
1
|
import {
|
|
2
|
-
L1_TO_L2_MSG_TREE_HEIGHT,
|
|
3
|
-
MAX_ENQUEUED_CALLS_PER_TX,
|
|
4
2
|
MAX_L2_TO_L1_MSGS_PER_TX,
|
|
5
3
|
MAX_NOTE_HASHES_PER_TX,
|
|
6
4
|
MAX_NULLIFIERS_PER_TX,
|
|
7
5
|
MAX_PUBLIC_CALLS_TO_UNIQUE_CONTRACT_CLASS_IDS,
|
|
8
6
|
MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
|
|
9
7
|
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
|
-
|
|
15
|
-
PUBLIC_LOG_DATA_SIZE_IN_FIELDS,
|
|
9
|
+
PUBLIC_LOG_SIZE_IN_FIELDS,
|
|
16
10
|
} from '@aztec/constants';
|
|
17
11
|
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
18
12
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
19
13
|
import { Fr } from '@aztec/foundation/fields';
|
|
20
14
|
import { createLogger } from '@aztec/foundation/log';
|
|
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';
|
|
15
|
+
import { PublicDataUpdateRequest } from '@aztec/stdlib/avm';
|
|
36
16
|
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
17
|
import { computePublicDataTreeLeafSlot } from '@aztec/stdlib/hash';
|
|
40
|
-
import {
|
|
41
|
-
NoteHash,
|
|
42
|
-
Nullifier,
|
|
43
|
-
PrivateToAvmAccumulatedData,
|
|
44
|
-
PrivateToAvmAccumulatedDataArrayLengths,
|
|
45
|
-
PublicCallRequest,
|
|
46
|
-
} from '@aztec/stdlib/kernel';
|
|
18
|
+
import { NoteHash, Nullifier } from '@aztec/stdlib/kernel';
|
|
47
19
|
import { PublicLog } from '@aztec/stdlib/logs';
|
|
48
20
|
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
21
|
|
|
52
22
|
import { strict as assert } from 'assert';
|
|
53
23
|
|
|
@@ -55,24 +25,16 @@ import { SideEffectLimitReachedError } from './side_effect_errors.js';
|
|
|
55
25
|
import type { PublicSideEffectTraceInterface } from './side_effect_trace_interface.js';
|
|
56
26
|
import { UniqueClassIds } from './unique_class_ids.js';
|
|
57
27
|
|
|
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
28
|
/**
|
|
64
29
|
* A struct containing just the side effects as regular arrays
|
|
65
30
|
* as opposed to "Tuple" arrays used by circuit public inputs.
|
|
66
31
|
* This struct is helpful for testing and checking array lengths.
|
|
67
32
|
**/
|
|
68
33
|
export type SideEffects = {
|
|
69
|
-
enqueuedCalls: PublicCallRequest[];
|
|
70
|
-
|
|
71
34
|
publicDataWrites: PublicDataUpdateRequest[];
|
|
72
35
|
noteHashes: NoteHash[];
|
|
73
36
|
nullifiers: Nullifier[];
|
|
74
37
|
l2ToL1Msgs: ScopedL2ToL1Message[];
|
|
75
|
-
|
|
76
38
|
publicLogs: PublicLog[];
|
|
77
39
|
};
|
|
78
40
|
|
|
@@ -100,8 +62,6 @@ export class SideEffectTrace implements PublicSideEffectTraceInterface {
|
|
|
100
62
|
/** The side effect counter increments with every call to the trace. */
|
|
101
63
|
private sideEffectCounter: number;
|
|
102
64
|
|
|
103
|
-
private enqueuedCalls: PublicCallRequest[] = [];
|
|
104
|
-
|
|
105
65
|
private publicDataWrites: PublicDataUpdateRequest[] = [];
|
|
106
66
|
private protocolPublicDataWritesLength: number = 0;
|
|
107
67
|
private userPublicDataWritesLength: number = 0;
|
|
@@ -110,8 +70,6 @@ export class SideEffectTrace implements PublicSideEffectTraceInterface {
|
|
|
110
70
|
private l2ToL1Messages: ScopedL2ToL1Message[] = [];
|
|
111
71
|
private publicLogs: PublicLog[] = [];
|
|
112
72
|
|
|
113
|
-
private avmCircuitHints: AvmExecutionHints;
|
|
114
|
-
|
|
115
73
|
/** Make sure a forked trace is never merged twice. */
|
|
116
74
|
private alreadyMergedIntoParent = false;
|
|
117
75
|
|
|
@@ -124,9 +82,9 @@ export class SideEffectTrace implements PublicSideEffectTraceInterface {
|
|
|
124
82
|
private readonly previousSideEffectArrayLengths: SideEffectArrayLengths = SideEffectArrayLengths.empty(),
|
|
125
83
|
/** We need to track the set of class IDs used, to enforce limits. */
|
|
126
84
|
private uniqueClassIds: UniqueClassIds = new UniqueClassIds(),
|
|
85
|
+
private writtenPublicDataSlots: Set<string> = new Set(),
|
|
127
86
|
) {
|
|
128
87
|
this.sideEffectCounter = startSideEffectCounter;
|
|
129
|
-
this.avmCircuitHints = AvmExecutionHints.empty();
|
|
130
88
|
}
|
|
131
89
|
|
|
132
90
|
public fork() {
|
|
@@ -141,6 +99,7 @@ export class SideEffectTrace implements PublicSideEffectTraceInterface {
|
|
|
141
99
|
this.previousSideEffectArrayLengths.publicLogs + this.publicLogs.length,
|
|
142
100
|
),
|
|
143
101
|
this.uniqueClassIds.fork(),
|
|
102
|
+
new Set(this.writtenPublicDataSlots),
|
|
144
103
|
);
|
|
145
104
|
}
|
|
146
105
|
|
|
@@ -153,7 +112,7 @@ export class SideEffectTrace implements PublicSideEffectTraceInterface {
|
|
|
153
112
|
forkedTrace.alreadyMergedIntoParent = true;
|
|
154
113
|
|
|
155
114
|
this.sideEffectCounter = forkedTrace.sideEffectCounter;
|
|
156
|
-
this.
|
|
115
|
+
this.uniqueClassIds.acceptAndMerge(forkedTrace.uniqueClassIds);
|
|
157
116
|
|
|
158
117
|
if (!reverted) {
|
|
159
118
|
this.publicDataWrites.push(...forkedTrace.publicDataWrites);
|
|
@@ -161,22 +120,12 @@ export class SideEffectTrace implements PublicSideEffectTraceInterface {
|
|
|
161
120
|
this.nullifiers.push(...forkedTrace.nullifiers);
|
|
162
121
|
this.l2ToL1Messages.push(...forkedTrace.l2ToL1Messages);
|
|
163
122
|
this.publicLogs.push(...forkedTrace.publicLogs);
|
|
123
|
+
this.userPublicDataWritesLength += forkedTrace.userPublicDataWritesLength;
|
|
124
|
+
this.protocolPublicDataWritesLength += forkedTrace.protocolPublicDataWritesLength;
|
|
125
|
+
for (const slot of forkedTrace.writtenPublicDataSlots) {
|
|
126
|
+
this.writtenPublicDataSlots.add(slot);
|
|
127
|
+
}
|
|
164
128
|
}
|
|
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
129
|
}
|
|
181
130
|
|
|
182
131
|
public getCounter() {
|
|
@@ -191,148 +140,85 @@ export class SideEffectTrace implements PublicSideEffectTraceInterface {
|
|
|
191
140
|
return this.previousSideEffectArrayLengths.noteHashes + this.noteHashes.length;
|
|
192
141
|
}
|
|
193
142
|
|
|
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
143
|
public async tracePublicStorageWrite(
|
|
210
144
|
contractAddress: AztecAddress,
|
|
211
145
|
slot: Fr,
|
|
212
146
|
value: Fr,
|
|
213
147
|
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
148
|
): Promise<void> {
|
|
220
|
-
if
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
149
|
+
// Only increment counts if the storage slot has not been written to before.
|
|
150
|
+
if (this.isStorageCold(contractAddress, slot)) {
|
|
151
|
+
if (protocolWrite) {
|
|
152
|
+
if (
|
|
153
|
+
this.protocolPublicDataWritesLength + this.previousSideEffectArrayLengths.protocolPublicDataWrites >=
|
|
154
|
+
PROTOCOL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX
|
|
155
|
+
) {
|
|
156
|
+
throw new SideEffectLimitReachedError(
|
|
157
|
+
'protocol public data (contract storage) write',
|
|
158
|
+
PROTOCOL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
|
|
159
|
+
);
|
|
160
|
+
}
|
|
161
|
+
this.protocolPublicDataWritesLength++;
|
|
162
|
+
} else {
|
|
163
|
+
if (
|
|
164
|
+
this.userPublicDataWritesLength + this.previousSideEffectArrayLengths.publicDataWrites >=
|
|
165
|
+
MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX
|
|
166
|
+
) {
|
|
167
|
+
throw new SideEffectLimitReachedError(
|
|
168
|
+
'public data (contract storage) write',
|
|
169
|
+
MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
|
|
170
|
+
);
|
|
171
|
+
}
|
|
172
|
+
this.userPublicDataWritesLength++;
|
|
240
173
|
}
|
|
241
|
-
this.userPublicDataWritesLength++;
|
|
242
174
|
}
|
|
243
175
|
|
|
244
176
|
const leafSlot = await computePublicDataTreeLeafSlot(contractAddress, slot);
|
|
245
177
|
this.publicDataWrites.push(new PublicDataUpdateRequest(leafSlot, value, this.sideEffectCounter));
|
|
246
178
|
|
|
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
179
|
this.log.trace(
|
|
254
180
|
`Traced public data write (address=${contractAddress}, slot=${slot}): value=${value} (counter=${this.sideEffectCounter}, isProtocol:${protocolWrite})`,
|
|
255
181
|
);
|
|
256
182
|
this.incrementSideEffectCounter();
|
|
183
|
+
this.writtenPublicDataSlots.add(this.computePublicDataSlotKey(contractAddress, slot));
|
|
257
184
|
}
|
|
258
185
|
|
|
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})`);
|
|
186
|
+
private computePublicDataSlotKey(contractAddress: AztecAddress, slot: Fr): string {
|
|
187
|
+
return `${contractAddress.toString()}:${slot.toString()}`;
|
|
271
188
|
}
|
|
272
189
|
|
|
273
|
-
public
|
|
190
|
+
public isStorageCold(contractAddress: AztecAddress, slot: Fr): boolean {
|
|
191
|
+
return !this.writtenPublicDataSlots.has(this.computePublicDataSlotKey(contractAddress, slot));
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
public traceNewNoteHash(noteHash: Fr) {
|
|
274
195
|
if (this.noteHashes.length + this.previousSideEffectArrayLengths.noteHashes >= MAX_NOTE_HASHES_PER_TX) {
|
|
275
196
|
throw new SideEffectLimitReachedError('note hash', MAX_NOTE_HASHES_PER_TX);
|
|
276
197
|
}
|
|
277
198
|
|
|
278
199
|
this.noteHashes.push(new NoteHash(noteHash, this.sideEffectCounter));
|
|
279
|
-
this.avmCircuitHints.noteHashWrites.push(new AvmAppendTreeHint(leafIndex, noteHash, path));
|
|
280
200
|
this.log.trace(`Tracing new note hash (counter=${this.sideEffectCounter})`);
|
|
281
201
|
this.incrementSideEffectCounter();
|
|
282
202
|
}
|
|
283
203
|
|
|
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
|
-
) {
|
|
204
|
+
public traceNewNullifier(siloedNullifier: Fr) {
|
|
303
205
|
if (this.nullifiers.length + this.previousSideEffectArrayLengths.nullifiers >= MAX_NULLIFIERS_PER_TX) {
|
|
304
206
|
throw new SideEffectLimitReachedError('nullifier', MAX_NULLIFIERS_PER_TX);
|
|
305
207
|
}
|
|
306
208
|
|
|
307
209
|
this.nullifiers.push(new Nullifier(siloedNullifier, this.sideEffectCounter, /*noteHash=*/ Fr.ZERO));
|
|
308
210
|
|
|
309
|
-
const lowLeafReadHint = new AvmNullifierReadTreeHint(lowLeafPreimage, lowLeafIndex, lowLeafPath);
|
|
310
|
-
this.avmCircuitHints.nullifierWrites.push(new AvmNullifierWriteTreeHint(lowLeafReadHint, insertionPath));
|
|
311
211
|
this.log.trace(`Tracing new nullifier (counter=${this.sideEffectCounter})`);
|
|
312
212
|
this.incrementSideEffectCounter();
|
|
313
213
|
}
|
|
314
214
|
|
|
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
215
|
public traceNewL2ToL1Message(contractAddress: AztecAddress, recipient: Fr, content: Fr) {
|
|
328
216
|
if (this.l2ToL1Messages.length + this.previousSideEffectArrayLengths.l2ToL1Msgs >= MAX_L2_TO_L1_MSGS_PER_TX) {
|
|
329
217
|
throw new SideEffectLimitReachedError('l2 to l1 message', MAX_L2_TO_L1_MSGS_PER_TX);
|
|
330
218
|
}
|
|
331
219
|
|
|
332
220
|
const recipientAddress = EthAddress.fromField(recipient);
|
|
333
|
-
this.l2ToL1Messages.push(
|
|
334
|
-
new L2ToL1Message(recipientAddress, content, this.sideEffectCounter).scope(contractAddress),
|
|
335
|
-
);
|
|
221
|
+
this.l2ToL1Messages.push(new L2ToL1Message(recipientAddress, content).scope(contractAddress));
|
|
336
222
|
this.log.trace(`Tracing new l2 to l1 message (counter=${this.sideEffectCounter})`);
|
|
337
223
|
this.incrementSideEffectCounter();
|
|
338
224
|
}
|
|
@@ -342,46 +228,18 @@ export class SideEffectTrace implements PublicSideEffectTraceInterface {
|
|
|
342
228
|
throw new SideEffectLimitReachedError('public log', MAX_PUBLIC_LOGS_PER_TX);
|
|
343
229
|
}
|
|
344
230
|
|
|
345
|
-
if (log.length >
|
|
346
|
-
throw new Error(`Emitted public log is too large, max: ${
|
|
231
|
+
if (log.length > PUBLIC_LOG_SIZE_IN_FIELDS) {
|
|
232
|
+
throw new Error(`Emitted public log is too large, max: ${PUBLIC_LOG_SIZE_IN_FIELDS}, passed: ${log.length}`);
|
|
347
233
|
}
|
|
348
|
-
const publicLog = new PublicLog(contractAddress, padArrayEnd(log, Fr.ZERO,
|
|
234
|
+
const publicLog = new PublicLog(contractAddress, padArrayEnd(log, Fr.ZERO, PUBLIC_LOG_SIZE_IN_FIELDS), log.length);
|
|
349
235
|
this.publicLogs.push(publicLog);
|
|
350
236
|
this.log.trace(`Tracing new public log (counter=${this.sideEffectCounter})`);
|
|
351
237
|
this.incrementSideEffectCounter();
|
|
352
238
|
}
|
|
353
239
|
|
|
354
|
-
public
|
|
355
|
-
|
|
356
|
-
exists
|
|
357
|
-
instance: SerializableContractInstance = SerializableContractInstance.default(),
|
|
358
|
-
updateMembershipHint: AvmPublicDataReadTreeHint = AvmPublicDataReadTreeHint.empty(),
|
|
359
|
-
updatePreimage: Fr[] = [],
|
|
360
|
-
) {
|
|
361
|
-
this.avmCircuitHints.contractInstances.push(
|
|
362
|
-
new AvmContractInstanceHint(
|
|
363
|
-
contractAddress,
|
|
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();
|
|
377
|
-
}
|
|
378
|
-
|
|
379
|
-
public traceGetContractClass(contractClassId: Fr, exists: boolean, contractClass?: ContractClassWithCommitment) {
|
|
380
|
-
if (!exists) {
|
|
381
|
-
this.avmCircuitHints.contractClasses.push(
|
|
382
|
-
new AvmContractClassHint(contractClassId, exists, Fr.zero(), Fr.zero(), Fr.zero(), Buffer.alloc(0)),
|
|
383
|
-
);
|
|
384
|
-
} else if (!this.uniqueClassIds.has(contractClassId.toString())) {
|
|
240
|
+
public traceGetContractClass(contractClassId: Fr, exists: boolean) {
|
|
241
|
+
// We limit the number of unique contract class IDs due to hashing and the trace length limit.
|
|
242
|
+
if (exists && !this.uniqueClassIds.has(contractClassId.toString())) {
|
|
385
243
|
if (this.uniqueClassIds.size() >= MAX_PUBLIC_CALLS_TO_UNIQUE_CONTRACT_CLASS_IDS) {
|
|
386
244
|
this.log.debug(`Bytecode retrieval failure for contract class ID ${contractClassId} (limit reached)`);
|
|
387
245
|
throw new SideEffectLimitReachedError(
|
|
@@ -389,43 +247,14 @@ export class SideEffectTrace implements PublicSideEffectTraceInterface {
|
|
|
389
247
|
MAX_PUBLIC_CALLS_TO_UNIQUE_CONTRACT_CLASS_IDS,
|
|
390
248
|
);
|
|
391
249
|
}
|
|
392
|
-
|
|
250
|
+
this.log.trace(`Adding contract class ID ${contractClassId} (counter=${this.sideEffectCounter})`);
|
|
393
251
|
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
252
|
this.incrementSideEffectCounter();
|
|
406
253
|
}
|
|
407
254
|
}
|
|
408
255
|
|
|
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
256
|
public getSideEffects(): SideEffects {
|
|
427
257
|
return {
|
|
428
|
-
enqueuedCalls: this.enqueuedCalls,
|
|
429
258
|
publicDataWrites: this.publicDataWrites,
|
|
430
259
|
noteHashes: this.noteHashes,
|
|
431
260
|
nullifiers: this.nullifiers,
|
|
@@ -433,84 +262,4 @@ export class SideEffectTrace implements PublicSideEffectTraceInterface {
|
|
|
433
262
|
publicLogs: this.publicLogs,
|
|
434
263
|
};
|
|
435
264
|
}
|
|
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
265
|
}
|
|
@@ -1,76 +1,22 @@
|
|
|
1
1
|
import type { Fr } from '@aztec/foundation/fields';
|
|
2
|
-
import type { AvmPublicDataReadTreeHint } from '@aztec/stdlib/avm';
|
|
3
2
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
4
|
-
import type { ContractClassWithCommitment, SerializableContractInstance } from '@aztec/stdlib/contract';
|
|
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';
|
|
8
3
|
|
|
9
4
|
export interface PublicSideEffectTraceInterface {
|
|
10
5
|
fork(): PublicSideEffectTraceInterface;
|
|
11
6
|
merge(nestedTrace: PublicSideEffectTraceInterface, reverted?: boolean): void;
|
|
12
7
|
getCounter(): number;
|
|
13
8
|
// 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
9
|
tracePublicStorageWrite(
|
|
23
10
|
contractAddress: AztecAddress,
|
|
24
11
|
slot: Fr, // This is the storage slot not the computed leaf slot
|
|
25
12
|
value: Fr,
|
|
26
13
|
protocolWrite: boolean,
|
|
27
|
-
lowLeafPreimage?: PublicDataTreeLeafPreimage,
|
|
28
|
-
lowLeafIndex?: Fr,
|
|
29
|
-
lowLeafPath?: Fr[],
|
|
30
|
-
newLeafPreimage?: PublicDataTreeLeafPreimage,
|
|
31
|
-
insertionPath?: Fr[],
|
|
32
14
|
): Promise<void>;
|
|
33
|
-
|
|
34
|
-
traceNewNoteHash(uniqueNoteHash: Fr
|
|
15
|
+
isStorageCold(contractAddress: AztecAddress, slot: Fr): boolean;
|
|
16
|
+
traceNewNoteHash(uniqueNoteHash: Fr): void;
|
|
35
17
|
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;
|
|
18
|
+
traceNewNullifier(siloedNullifier: Fr): void;
|
|
57
19
|
traceNewL2ToL1Message(contractAddress: AztecAddress, recipient: Fr, content: Fr): void;
|
|
58
20
|
tracePublicLog(contractAddress: AztecAddress, log: Fr[]): void;
|
|
59
|
-
|
|
60
|
-
contractAddress: AztecAddress,
|
|
61
|
-
exists: boolean,
|
|
62
|
-
instance?: SerializableContractInstance,
|
|
63
|
-
updateMembershipHint?: AvmPublicDataReadTreeHint,
|
|
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[];
|
|
21
|
+
traceGetContractClass(contractClassId: Fr, exists: boolean): void;
|
|
76
22
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './state_manager.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Fr } from '@aztec/foundation/fields';
|
|
2
2
|
|
|
3
|
-
import type {
|
|
3
|
+
import type { PublicTreesDB } from '../public_db_sources.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* A class to manage new nullifier staging and existence checks during a contract call's AVM simulation.
|
|
@@ -10,7 +10,7 @@ import type { WorldStateDB } from '../../public_db_sources.js';
|
|
|
10
10
|
export class NullifierManager {
|
|
11
11
|
constructor(
|
|
12
12
|
/** Reference to node storage. Checked on parent cache-miss. */
|
|
13
|
-
private readonly hostNullifiers:
|
|
13
|
+
private readonly hostNullifiers: PublicTreesDB,
|
|
14
14
|
/** Cache of siloed nullifiers. */
|
|
15
15
|
private cache: Set<bigint> = new Set(),
|
|
16
16
|
/** Parent nullifier manager to fall back on */
|
|
@@ -64,8 +64,8 @@ export class NullifierManager {
|
|
|
64
64
|
// `${MerkleTreeId[MerkleTreeId.NULLIFIER_TREE]} low leaf index should always be found (even if target leaf does not exist)`,
|
|
65
65
|
//);
|
|
66
66
|
//existsInTree = leafOrLowLeafIndex.alreadyPresent;
|
|
67
|
-
const
|
|
68
|
-
existsInTree =
|
|
67
|
+
const exists = await this.hostNullifiers.checkNullifierExists(siloedNullifier);
|
|
68
|
+
existsInTree = exists;
|
|
69
69
|
}
|
|
70
70
|
const exists = cacheHit || existsInTree;
|
|
71
71
|
return Promise.resolve({ exists, cacheHit });
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Fr } from '@aztec/foundation/fields';
|
|
2
2
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
3
3
|
|
|
4
|
-
import type {
|
|
4
|
+
import type { PublicStateDBInterface } from '../db_interfaces.js';
|
|
5
5
|
|
|
6
6
|
type PublicStorageReadResult = {
|
|
7
7
|
value: Fr;
|
|
@@ -19,7 +19,7 @@ export class PublicStorage {
|
|
|
19
19
|
|
|
20
20
|
constructor(
|
|
21
21
|
/** Reference to node storage. Checked on parent cache-miss. */
|
|
22
|
-
private readonly hostPublicStorage:
|
|
22
|
+
private readonly hostPublicStorage: PublicStateDBInterface,
|
|
23
23
|
/** Parent's storage. Checked on this' cache-miss. */
|
|
24
24
|
private readonly parent?: PublicStorage,
|
|
25
25
|
) {
|