@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,3 +1,5 @@
|
|
|
1
|
+
import { type Bufferable, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
2
|
+
|
|
1
3
|
import { AvmExecutionError, AvmParsingError, InvalidOpcodeError, InvalidProgramCounterError } from '../errors.js';
|
|
2
4
|
import {
|
|
3
5
|
Add,
|
|
@@ -53,106 +55,102 @@ import { MAX_OPCODE_VALUE, Opcode } from './instruction_serialization.js';
|
|
|
53
55
|
|
|
54
56
|
export type InstructionDeserializer = (buf: BufferCursor | Buffer) => Instruction;
|
|
55
57
|
|
|
56
|
-
export interface Serializable {
|
|
57
|
-
serialize(): Buffer;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
58
|
export interface Deserializable {
|
|
61
59
|
deserialize: InstructionDeserializer;
|
|
62
60
|
}
|
|
63
61
|
|
|
64
62
|
export type InstructionSet = Map<Opcode, InstructionDeserializer>;
|
|
65
63
|
export const INSTRUCTION_SET = new Map<Opcode, InstructionDeserializer>([
|
|
66
|
-
[Opcode.ADD_8, Add.as(Add.wireFormat8).
|
|
67
|
-
[Opcode.ADD_16, Add.as(Add.wireFormat16).
|
|
68
|
-
[Opcode.SUB_8, Sub.as(Sub.wireFormat8).
|
|
69
|
-
[Opcode.SUB_16, Sub.as(Sub.wireFormat16).
|
|
70
|
-
[Opcode.MUL_8, Mul.as(Mul.wireFormat8).
|
|
71
|
-
[Opcode.MUL_16, Mul.as(Mul.wireFormat16).
|
|
72
|
-
[Opcode.DIV_8, Div.as(Div.wireFormat8).
|
|
73
|
-
[Opcode.DIV_16, Div.as(Div.wireFormat16).
|
|
74
|
-
[Opcode.FDIV_8, FieldDiv.as(FieldDiv.wireFormat8).
|
|
75
|
-
[Opcode.FDIV_16, FieldDiv.as(FieldDiv.wireFormat16).
|
|
76
|
-
[Opcode.EQ_8, Eq.as(Eq.wireFormat8).
|
|
77
|
-
[Opcode.EQ_16, Eq.as(Eq.wireFormat16).
|
|
78
|
-
[Opcode.LT_8, Lt.as(Lt.wireFormat8).
|
|
79
|
-
[Opcode.LT_16, Lt.as(Lt.wireFormat16).
|
|
80
|
-
[Opcode.LTE_8, Lte.as(Lte.wireFormat8).
|
|
81
|
-
[Opcode.LTE_16, Lte.as(Lte.wireFormat16).
|
|
82
|
-
[Opcode.AND_8, And.as(And.wireFormat8).
|
|
83
|
-
[Opcode.AND_16, And.as(And.wireFormat16).
|
|
84
|
-
[Opcode.OR_8, Or.as(Or.wireFormat8).
|
|
85
|
-
[Opcode.OR_16, Or.as(Or.wireFormat16).
|
|
86
|
-
[Opcode.XOR_8, Xor.as(Xor.wireFormat8).
|
|
87
|
-
[Opcode.XOR_16, Xor.as(Xor.wireFormat16).
|
|
88
|
-
[Opcode.NOT_8, Not.as(Not.wireFormat8).
|
|
89
|
-
[Opcode.NOT_16, Not.as(Not.wireFormat16).
|
|
90
|
-
[Opcode.SHL_8, Shl.as(Shl.wireFormat8).
|
|
91
|
-
[Opcode.SHL_16, Shl.as(Shl.wireFormat16).
|
|
92
|
-
[Opcode.SHR_8, Shr.as(Shr.wireFormat8).
|
|
93
|
-
[Opcode.SHR_16, Shr.as(Shr.wireFormat16).
|
|
94
|
-
[Opcode.CAST_8, Cast.as(Cast.wireFormat8).
|
|
95
|
-
[Opcode.CAST_16, Cast.as(Cast.wireFormat16).
|
|
64
|
+
[Opcode.ADD_8, Add.as(Add.wireFormat8).fromBuffer],
|
|
65
|
+
[Opcode.ADD_16, Add.as(Add.wireFormat16).fromBuffer],
|
|
66
|
+
[Opcode.SUB_8, Sub.as(Sub.wireFormat8).fromBuffer],
|
|
67
|
+
[Opcode.SUB_16, Sub.as(Sub.wireFormat16).fromBuffer],
|
|
68
|
+
[Opcode.MUL_8, Mul.as(Mul.wireFormat8).fromBuffer],
|
|
69
|
+
[Opcode.MUL_16, Mul.as(Mul.wireFormat16).fromBuffer],
|
|
70
|
+
[Opcode.DIV_8, Div.as(Div.wireFormat8).fromBuffer],
|
|
71
|
+
[Opcode.DIV_16, Div.as(Div.wireFormat16).fromBuffer],
|
|
72
|
+
[Opcode.FDIV_8, FieldDiv.as(FieldDiv.wireFormat8).fromBuffer],
|
|
73
|
+
[Opcode.FDIV_16, FieldDiv.as(FieldDiv.wireFormat16).fromBuffer],
|
|
74
|
+
[Opcode.EQ_8, Eq.as(Eq.wireFormat8).fromBuffer],
|
|
75
|
+
[Opcode.EQ_16, Eq.as(Eq.wireFormat16).fromBuffer],
|
|
76
|
+
[Opcode.LT_8, Lt.as(Lt.wireFormat8).fromBuffer],
|
|
77
|
+
[Opcode.LT_16, Lt.as(Lt.wireFormat16).fromBuffer],
|
|
78
|
+
[Opcode.LTE_8, Lte.as(Lte.wireFormat8).fromBuffer],
|
|
79
|
+
[Opcode.LTE_16, Lte.as(Lte.wireFormat16).fromBuffer],
|
|
80
|
+
[Opcode.AND_8, And.as(And.wireFormat8).fromBuffer],
|
|
81
|
+
[Opcode.AND_16, And.as(And.wireFormat16).fromBuffer],
|
|
82
|
+
[Opcode.OR_8, Or.as(Or.wireFormat8).fromBuffer],
|
|
83
|
+
[Opcode.OR_16, Or.as(Or.wireFormat16).fromBuffer],
|
|
84
|
+
[Opcode.XOR_8, Xor.as(Xor.wireFormat8).fromBuffer],
|
|
85
|
+
[Opcode.XOR_16, Xor.as(Xor.wireFormat16).fromBuffer],
|
|
86
|
+
[Opcode.NOT_8, Not.as(Not.wireFormat8).fromBuffer],
|
|
87
|
+
[Opcode.NOT_16, Not.as(Not.wireFormat16).fromBuffer],
|
|
88
|
+
[Opcode.SHL_8, Shl.as(Shl.wireFormat8).fromBuffer],
|
|
89
|
+
[Opcode.SHL_16, Shl.as(Shl.wireFormat16).fromBuffer],
|
|
90
|
+
[Opcode.SHR_8, Shr.as(Shr.wireFormat8).fromBuffer],
|
|
91
|
+
[Opcode.SHR_16, Shr.as(Shr.wireFormat16).fromBuffer],
|
|
92
|
+
[Opcode.CAST_8, Cast.as(Cast.wireFormat8).fromBuffer],
|
|
93
|
+
[Opcode.CAST_16, Cast.as(Cast.wireFormat16).fromBuffer],
|
|
96
94
|
// Execution Environment
|
|
97
|
-
[Opcode.GETENVVAR_16, GetEnvVar.as(GetEnvVar.wireFormat16).
|
|
98
|
-
[CalldataCopy.opcode, Instruction.
|
|
99
|
-
[SuccessCopy.opcode, Instruction.
|
|
100
|
-
[Opcode.RETURNDATASIZE, Instruction.
|
|
101
|
-
[Opcode.RETURNDATACOPY, Instruction.
|
|
95
|
+
[Opcode.GETENVVAR_16, GetEnvVar.as(GetEnvVar.wireFormat16).fromBuffer],
|
|
96
|
+
[CalldataCopy.opcode, Instruction.fromBuffer.bind(CalldataCopy)],
|
|
97
|
+
[SuccessCopy.opcode, Instruction.fromBuffer.bind(SuccessCopy)],
|
|
98
|
+
[Opcode.RETURNDATASIZE, Instruction.fromBuffer.bind(ReturndataSize)],
|
|
99
|
+
[Opcode.RETURNDATACOPY, Instruction.fromBuffer.bind(ReturndataCopy)],
|
|
102
100
|
|
|
103
101
|
// Machine State - Internal Control Flow
|
|
104
|
-
[Jump.opcode, Instruction.
|
|
105
|
-
[JumpI.opcode, Instruction.
|
|
106
|
-
[InternalCall.opcode, Instruction.
|
|
107
|
-
[InternalReturn.opcode, Instruction.
|
|
108
|
-
[Opcode.SET_8, Set.as(Set.wireFormat8).
|
|
109
|
-
[Opcode.SET_16, Set.as(Set.wireFormat16).
|
|
110
|
-
[Opcode.SET_32, Set.as(Set.wireFormat32).
|
|
111
|
-
[Opcode.SET_64, Set.as(Set.wireFormat64).
|
|
112
|
-
[Opcode.SET_128, Set.as(Set.wireFormat128).
|
|
113
|
-
[Opcode.SET_FF, Set.as(Set.wireFormatFF).
|
|
114
|
-
[Opcode.MOV_8, Mov.as(Mov.wireFormat8).
|
|
115
|
-
[Opcode.MOV_16, Mov.as(Mov.wireFormat16).
|
|
102
|
+
[Jump.opcode, Instruction.fromBuffer.bind(Jump)],
|
|
103
|
+
[JumpI.opcode, Instruction.fromBuffer.bind(JumpI)],
|
|
104
|
+
[InternalCall.opcode, Instruction.fromBuffer.bind(InternalCall)],
|
|
105
|
+
[InternalReturn.opcode, Instruction.fromBuffer.bind(InternalReturn)],
|
|
106
|
+
[Opcode.SET_8, Set.as(Set.wireFormat8).fromBuffer],
|
|
107
|
+
[Opcode.SET_16, Set.as(Set.wireFormat16).fromBuffer],
|
|
108
|
+
[Opcode.SET_32, Set.as(Set.wireFormat32).fromBuffer],
|
|
109
|
+
[Opcode.SET_64, Set.as(Set.wireFormat64).fromBuffer],
|
|
110
|
+
[Opcode.SET_128, Set.as(Set.wireFormat128).fromBuffer],
|
|
111
|
+
[Opcode.SET_FF, Set.as(Set.wireFormatFF).fromBuffer],
|
|
112
|
+
[Opcode.MOV_8, Mov.as(Mov.wireFormat8).fromBuffer],
|
|
113
|
+
[Opcode.MOV_16, Mov.as(Mov.wireFormat16).fromBuffer],
|
|
116
114
|
|
|
117
115
|
// World State
|
|
118
|
-
[SLoad.opcode, Instruction.
|
|
119
|
-
[SStore.opcode, Instruction.
|
|
120
|
-
[NoteHashExists.opcode, Instruction.
|
|
121
|
-
[EmitNoteHash.opcode, Instruction.
|
|
122
|
-
[NullifierExists.opcode, Instruction.
|
|
123
|
-
[EmitNullifier.opcode, Instruction.
|
|
124
|
-
[L1ToL2MessageExists.opcode, Instruction.
|
|
116
|
+
[SLoad.opcode, Instruction.fromBuffer.bind(SLoad)], // Public Storage
|
|
117
|
+
[SStore.opcode, Instruction.fromBuffer.bind(SStore)], // Public Storage
|
|
118
|
+
[NoteHashExists.opcode, Instruction.fromBuffer.bind(NoteHashExists)], // Notes & Nullifiers
|
|
119
|
+
[EmitNoteHash.opcode, Instruction.fromBuffer.bind(EmitNoteHash)], // Notes & Nullifiers
|
|
120
|
+
[NullifierExists.opcode, Instruction.fromBuffer.bind(NullifierExists)], // Notes & Nullifiers
|
|
121
|
+
[EmitNullifier.opcode, Instruction.fromBuffer.bind(EmitNullifier)], // Notes & Nullifiers
|
|
122
|
+
[L1ToL2MessageExists.opcode, Instruction.fromBuffer.bind(L1ToL2MessageExists)], // Messages
|
|
125
123
|
|
|
126
124
|
// Accrued Substate
|
|
127
|
-
[EmitUnencryptedLog.opcode, Instruction.
|
|
128
|
-
[SendL2ToL1Message.opcode, Instruction.
|
|
129
|
-
[GetContractInstance.opcode, Instruction.
|
|
125
|
+
[EmitUnencryptedLog.opcode, Instruction.fromBuffer.bind(EmitUnencryptedLog)],
|
|
126
|
+
[SendL2ToL1Message.opcode, Instruction.fromBuffer.bind(SendL2ToL1Message)],
|
|
127
|
+
[GetContractInstance.opcode, Instruction.fromBuffer.bind(GetContractInstance)],
|
|
130
128
|
|
|
131
129
|
// Control Flow - Contract Calls
|
|
132
|
-
[Call.opcode, Instruction.
|
|
133
|
-
[StaticCall.opcode, Instruction.
|
|
134
|
-
[Return.opcode, Instruction.
|
|
135
|
-
[Opcode.REVERT_8, Revert.as(Revert.wireFormat8).
|
|
136
|
-
[Opcode.REVERT_16, Revert.as(Revert.wireFormat16).
|
|
130
|
+
[Call.opcode, Instruction.fromBuffer.bind(Call)],
|
|
131
|
+
[StaticCall.opcode, Instruction.fromBuffer.bind(StaticCall)],
|
|
132
|
+
[Return.opcode, Instruction.fromBuffer.bind(Return)],
|
|
133
|
+
[Opcode.REVERT_8, Revert.as(Revert.wireFormat8).fromBuffer],
|
|
134
|
+
[Opcode.REVERT_16, Revert.as(Revert.wireFormat16).fromBuffer],
|
|
137
135
|
|
|
138
136
|
// Misc
|
|
139
|
-
[DebugLog.opcode, Instruction.
|
|
137
|
+
[DebugLog.opcode, Instruction.fromBuffer.bind(DebugLog)],
|
|
140
138
|
|
|
141
139
|
// Gadgets
|
|
142
|
-
[EcAdd.opcode, Instruction.
|
|
143
|
-
[Poseidon2.opcode, Instruction.
|
|
144
|
-
[Sha256Compression.opcode, Instruction.
|
|
145
|
-
[KeccakF1600.opcode, Instruction.
|
|
140
|
+
[EcAdd.opcode, Instruction.fromBuffer.bind(EcAdd)],
|
|
141
|
+
[Poseidon2.opcode, Instruction.fromBuffer.bind(Poseidon2)],
|
|
142
|
+
[Sha256Compression.opcode, Instruction.fromBuffer.bind(Sha256Compression)],
|
|
143
|
+
[KeccakF1600.opcode, Instruction.fromBuffer.bind(KeccakF1600)],
|
|
146
144
|
|
|
147
145
|
// Conversions
|
|
148
|
-
[ToRadixBE.opcode, Instruction.
|
|
146
|
+
[ToRadixBE.opcode, Instruction.fromBuffer.bind(ToRadixBE)],
|
|
149
147
|
]);
|
|
150
148
|
|
|
151
149
|
/**
|
|
152
150
|
* Serializes an array of instructions to bytecode.
|
|
153
151
|
*/
|
|
154
|
-
export function encodeToBytecode(instructions:
|
|
155
|
-
return
|
|
152
|
+
export function encodeToBytecode(instructions: Bufferable[]): Buffer {
|
|
153
|
+
return serializeToBuffer(instructions);
|
|
156
154
|
}
|
|
157
155
|
|
|
158
156
|
// For testing only
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
2
|
+
|
|
1
3
|
import { strict as assert } from 'assert';
|
|
2
4
|
|
|
5
|
+
import { TaggedMemory } from '../avm_memory_types.js';
|
|
3
6
|
import { BufferCursor } from './buffer_cursor.js';
|
|
4
7
|
|
|
5
8
|
/**
|
|
@@ -92,10 +95,8 @@ export const MAX_OPCODE_VALUE = Math.max(
|
|
|
92
95
|
.filter(k => !isNaN(k)),
|
|
93
96
|
);
|
|
94
97
|
|
|
95
|
-
// Possible types for an instruction's operand in its wire format.
|
|
96
|
-
//
|
|
97
|
-
// Note that cpp code introduced an additional enum value TAG to express the instruction tag. In TS,
|
|
98
|
-
// this one is parsed as UINT8.
|
|
98
|
+
// Possible types for an instruction's operand in its wire format.
|
|
99
|
+
// The counterpart cpp file is: vm2/simulation/lib/serialization.hpp.
|
|
99
100
|
export enum OperandType {
|
|
100
101
|
UINT8,
|
|
101
102
|
UINT16,
|
|
@@ -103,8 +104,12 @@ export enum OperandType {
|
|
|
103
104
|
UINT64,
|
|
104
105
|
UINT128,
|
|
105
106
|
FF,
|
|
107
|
+
TAG,
|
|
106
108
|
}
|
|
107
109
|
|
|
110
|
+
// Define a type that represents the possible types of the deserialized values.
|
|
111
|
+
type DeserializedValue = number | bigint;
|
|
112
|
+
|
|
108
113
|
type OperandNativeType = number | bigint;
|
|
109
114
|
type OperandWriter = (value: any) => void;
|
|
110
115
|
|
|
@@ -113,45 +118,58 @@ const OPERAND_SPEC = new Map<OperandType, [number, (offset: number) => OperandNa
|
|
|
113
118
|
[OperandType.UINT8, [1, Buffer.prototype.readUint8, Buffer.prototype.writeUint8]],
|
|
114
119
|
[OperandType.UINT16, [2, Buffer.prototype.readUint16BE, Buffer.prototype.writeUint16BE]],
|
|
115
120
|
[OperandType.UINT32, [4, Buffer.prototype.readUint32BE, Buffer.prototype.writeUint32BE]],
|
|
116
|
-
[OperandType.UINT64, [8,
|
|
117
|
-
[OperandType.UINT128, [16,
|
|
118
|
-
[OperandType.FF, [32,
|
|
121
|
+
[OperandType.UINT64, [8, readUint64BE, writeUint64BE]],
|
|
122
|
+
[OperandType.UINT128, [16, readUint128BE, writeUint128BE]],
|
|
123
|
+
[OperandType.FF, [32, readUint254BE, writeUint254BE]],
|
|
124
|
+
[OperandType.TAG, [1, Buffer.prototype.readUint8, Buffer.prototype.writeUint8]],
|
|
119
125
|
]);
|
|
120
126
|
|
|
121
|
-
function
|
|
122
|
-
|
|
123
|
-
let ret: bigint = 0n;
|
|
127
|
+
function readUintBE(buf: Buffer, offset: number, totalBytes: number): bigint {
|
|
128
|
+
let value: bigint = 0n;
|
|
124
129
|
for (let i = 0; i < totalBytes; ++i) {
|
|
125
|
-
|
|
126
|
-
|
|
130
|
+
value <<= 8n;
|
|
131
|
+
value |= BigInt(buf.readUint8(i + offset));
|
|
127
132
|
}
|
|
128
|
-
return
|
|
133
|
+
return value;
|
|
129
134
|
}
|
|
130
135
|
|
|
131
|
-
function
|
|
132
|
-
const totalBytes = 32;
|
|
136
|
+
function writeUintBE(buf: Buffer, value: bigint, totalBytes: number): void {
|
|
133
137
|
for (let offset = totalBytes - 1; offset >= 0; --offset) {
|
|
134
|
-
|
|
138
|
+
buf.writeUint8(Number(value & 0xffn), offset);
|
|
135
139
|
value >>= 8n;
|
|
136
140
|
}
|
|
137
141
|
}
|
|
138
142
|
|
|
139
|
-
function
|
|
140
|
-
|
|
141
|
-
let ret: bigint = 0n;
|
|
142
|
-
for (let i = 0; i < totalBytes; ++i) {
|
|
143
|
-
ret <<= 8n;
|
|
144
|
-
ret |= BigInt(this.readUint8(i + offset));
|
|
145
|
-
}
|
|
146
|
-
return ret;
|
|
143
|
+
function readUint64BE(this: Buffer, offset: number): bigint {
|
|
144
|
+
return readUintBE(this, offset, 8);
|
|
147
145
|
}
|
|
148
146
|
|
|
149
|
-
function
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
147
|
+
function writeUint64BE(this: Buffer, value: bigint): void {
|
|
148
|
+
writeUintBE(this, value, 8);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
function readUint254BE(this: Buffer, offset: number): bigint {
|
|
152
|
+
let value = readUintBE(this, offset, 32);
|
|
153
|
+
|
|
154
|
+
// In circuit, we only support values up to Fr.MODULUS and any deserialized value
|
|
155
|
+
// would naturally undergo a modulus reduction.
|
|
156
|
+
if (value >= Fr.MODULUS) {
|
|
157
|
+
value = value % Fr.MODULUS;
|
|
154
158
|
}
|
|
159
|
+
|
|
160
|
+
return value;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
function writeUint254BE(this: Buffer, value: bigint): void {
|
|
164
|
+
writeUintBE(this, value, 32);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
function readUint128BE(this: Buffer, offset: number): bigint {
|
|
168
|
+
return readUintBE(this, offset, 16);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
function writeUint128BE(this: Buffer, value: bigint): void {
|
|
172
|
+
writeUintBE(this, value, 16);
|
|
155
173
|
}
|
|
156
174
|
|
|
157
175
|
/**
|
|
@@ -160,19 +178,30 @@ function writeBigInt128BE(this: Buffer, value: bigint): void {
|
|
|
160
178
|
* @param operands Specification of the operand types.
|
|
161
179
|
* @returns An array as big as {@code operands}, with the converted TS values.
|
|
162
180
|
*/
|
|
163
|
-
export function deserialize(cursor: BufferCursor | Buffer, operands: OperandType[]):
|
|
164
|
-
const argValues = [];
|
|
181
|
+
export function deserialize(cursor: BufferCursor | Buffer, operands: OperandType[]): DeserializedValue[] {
|
|
182
|
+
const argValues: DeserializedValue[] = [];
|
|
165
183
|
if (Buffer.isBuffer(cursor)) {
|
|
166
184
|
cursor = new BufferCursor(cursor);
|
|
167
185
|
}
|
|
168
186
|
|
|
169
|
-
for (const
|
|
170
|
-
const opType = op;
|
|
187
|
+
for (const opType of operands) {
|
|
171
188
|
const [sizeBytes, reader, _writer] = OPERAND_SPEC.get(opType)!;
|
|
172
|
-
|
|
189
|
+
const value = reader.call(cursor.buffer(), cursor.position());
|
|
190
|
+
argValues.push(value);
|
|
173
191
|
cursor.advance(sizeBytes);
|
|
174
192
|
}
|
|
175
193
|
|
|
194
|
+
// We first want to detect other parsing errors (e.g., instruction size
|
|
195
|
+
// is longer than remaining bytes) first and therefore tag validation is done after completion
|
|
196
|
+
// of parsing above. Order of errors need to match with circuit.
|
|
197
|
+
for (let i = 0; i < operands.length; i++) {
|
|
198
|
+
if (operands[i] === OperandType.TAG) {
|
|
199
|
+
// We parsed a single byte (readUInt8()) and therefore value is of number type (not bigint)
|
|
200
|
+
// We need to cast to number because checkIsValidTag expects a number.
|
|
201
|
+
TaggedMemory.checkIsValidTag(Number(argValues[i] ?? 0));
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
|
|
176
205
|
return argValues;
|
|
177
206
|
}
|
|
178
207
|
|
|
@@ -1,48 +1,35 @@
|
|
|
1
1
|
import { Fr } from '@aztec/foundation/fields';
|
|
2
|
-
import {
|
|
3
|
-
type ContractClassPublic,
|
|
4
|
-
type ContractInstanceWithAddress,
|
|
5
|
-
computePublicBytecodeCommitment,
|
|
6
|
-
} from '@aztec/stdlib/contract';
|
|
2
|
+
import type { ContractClassPublic, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
7
3
|
|
|
8
4
|
import type { jest } from '@jest/globals';
|
|
9
5
|
import { mock } from 'jest-mock-extended';
|
|
10
6
|
|
|
11
|
-
import type {
|
|
7
|
+
import type { PublicContractsDB, PublicTreesDB } from '../public_db_sources.js';
|
|
12
8
|
import type { PublicSideEffectTraceInterface } from '../side_effect_trace_interface.js';
|
|
13
9
|
|
|
14
|
-
export async function mockGetBytecode(worldStateDB: WorldStateDB, bytecode: Buffer) {
|
|
15
|
-
const commitment = await computePublicBytecodeCommitment(bytecode);
|
|
16
|
-
(worldStateDB as jest.Mocked<WorldStateDB>).getBytecodeCommitment.mockResolvedValue(commitment);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
10
|
export function mockTraceFork(trace: PublicSideEffectTraceInterface, nestedTrace?: PublicSideEffectTraceInterface) {
|
|
20
11
|
(trace as jest.Mocked<PublicSideEffectTraceInterface>).fork.mockReturnValue(
|
|
21
12
|
nestedTrace ?? mock<PublicSideEffectTraceInterface>(),
|
|
22
13
|
);
|
|
23
14
|
}
|
|
24
15
|
|
|
25
|
-
export function mockStorageRead(worldStateDB:
|
|
26
|
-
(worldStateDB as jest.Mocked<
|
|
16
|
+
export function mockStorageRead(worldStateDB: PublicTreesDB, value: Fr) {
|
|
17
|
+
(worldStateDB as jest.Mocked<PublicTreesDB>).storageRead.mockResolvedValue(value);
|
|
27
18
|
}
|
|
28
19
|
|
|
29
20
|
export function mockNoteHashCount(mockedTrace: PublicSideEffectTraceInterface, count: number) {
|
|
30
21
|
(mockedTrace as jest.Mocked<PublicSideEffectTraceInterface>).getNoteHashCount.mockReturnValue(count);
|
|
31
22
|
}
|
|
32
23
|
|
|
33
|
-
export function mockStorageReadWithMap(worldStateDB:
|
|
34
|
-
(worldStateDB as jest.Mocked<
|
|
24
|
+
export function mockStorageReadWithMap(worldStateDB: PublicTreesDB, mockedStorage: Map<bigint, Fr>) {
|
|
25
|
+
(worldStateDB as jest.Mocked<PublicTreesDB>).storageRead.mockImplementation((_address, slot) =>
|
|
35
26
|
Promise.resolve(mockedStorage.get(slot.toBigInt()) ?? Fr.ZERO),
|
|
36
27
|
);
|
|
37
28
|
}
|
|
38
29
|
|
|
39
|
-
export function
|
|
40
|
-
(worldStateDB as jest.Mocked<
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
export function mockNoteHashExists(worldStateDB: WorldStateDB, _leafIndex: Fr, value?: Fr) {
|
|
44
|
-
(worldStateDB as jest.Mocked<WorldStateDB>).getCommitmentValue.mockImplementation((index: bigint) => {
|
|
45
|
-
if (index == _leafIndex.toBigInt()) {
|
|
30
|
+
export function mockNoteHashExists(worldStateDB: PublicTreesDB, _leafIndex: bigint, value?: Fr) {
|
|
31
|
+
(worldStateDB as jest.Mocked<PublicTreesDB>).getNoteHash.mockImplementation((index: bigint) => {
|
|
32
|
+
if (index == _leafIndex) {
|
|
46
33
|
return Promise.resolve(value);
|
|
47
34
|
} else {
|
|
48
35
|
// This is ok for now since the traceing functions handle it
|
|
@@ -51,18 +38,18 @@ export function mockNoteHashExists(worldStateDB: WorldStateDB, _leafIndex: Fr, v
|
|
|
51
38
|
});
|
|
52
39
|
}
|
|
53
40
|
|
|
54
|
-
export function
|
|
55
|
-
(worldStateDB as jest.Mocked<
|
|
41
|
+
export function mockCheckNullifierExists(worldStateDB: PublicTreesDB, exists: boolean, _ignoredValue?: Fr) {
|
|
42
|
+
(worldStateDB as jest.Mocked<PublicTreesDB>).checkNullifierExists.mockResolvedValue(exists);
|
|
56
43
|
}
|
|
57
44
|
|
|
58
45
|
export function mockL1ToL2MessageExists(
|
|
59
|
-
worldStateDB:
|
|
60
|
-
leafIndex:
|
|
46
|
+
worldStateDB: PublicTreesDB,
|
|
47
|
+
leafIndex: bigint,
|
|
61
48
|
value: Fr,
|
|
62
49
|
valueAtOtherIndices?: Fr,
|
|
63
50
|
) {
|
|
64
|
-
(worldStateDB as jest.Mocked<
|
|
65
|
-
if (index == leafIndex
|
|
51
|
+
(worldStateDB as jest.Mocked<PublicTreesDB>).getL1ToL2LeafValue.mockImplementation((index: bigint) => {
|
|
52
|
+
if (index == leafIndex) {
|
|
66
53
|
return Promise.resolve(value);
|
|
67
54
|
} else {
|
|
68
55
|
// any indices other than mockAtLeafIndex will return a different value
|
|
@@ -72,10 +59,14 @@ export function mockL1ToL2MessageExists(
|
|
|
72
59
|
});
|
|
73
60
|
}
|
|
74
61
|
|
|
75
|
-
export function mockGetContractInstance(
|
|
76
|
-
(
|
|
62
|
+
export function mockGetContractInstance(contractsDB: PublicContractsDB, contractInstance: ContractInstanceWithAddress) {
|
|
63
|
+
(contractsDB as jest.Mocked<PublicContractsDB>).getContractInstance.mockResolvedValue(contractInstance);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export function mockGetContractClass(contractsDB: PublicContractsDB, contractClass: ContractClassPublic) {
|
|
67
|
+
(contractsDB as jest.Mocked<PublicContractsDB>).getContractClass.mockResolvedValue(contractClass);
|
|
77
68
|
}
|
|
78
69
|
|
|
79
|
-
export function
|
|
80
|
-
(
|
|
70
|
+
export function mockGetBytecodeCommitment(contractsDB: PublicContractsDB, commitment: Fr) {
|
|
71
|
+
(contractsDB as jest.Mocked<PublicContractsDB>).getBytecodeCommitment.mockResolvedValue(commitment);
|
|
81
72
|
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { Fr } from '@aztec/foundation/fields';
|
|
2
|
+
import type { FunctionSelector } from '@aztec/stdlib/abi';
|
|
3
|
+
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
4
|
+
import type { ContractClassPublic, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
5
|
+
import type { UInt64 } from '@aztec/stdlib/types';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Database interface for providing access to public state.
|
|
9
|
+
*/
|
|
10
|
+
export interface PublicStateDBInterface {
|
|
11
|
+
/**
|
|
12
|
+
* Reads a value from public storage, returning zero if none.
|
|
13
|
+
* @param contract - Owner of the storage.
|
|
14
|
+
* @param slot - Slot to read in the contract storage.
|
|
15
|
+
* @returns The current value in the storage slot.
|
|
16
|
+
*/
|
|
17
|
+
storageRead(contract: AztecAddress, slot: Fr): Promise<Fr>;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Records a write to public storage.
|
|
21
|
+
* @param contract - Owner of the storage.
|
|
22
|
+
* @param slot - Slot to read in the contract storage.
|
|
23
|
+
* @param newValue - The new value to store.
|
|
24
|
+
*/
|
|
25
|
+
storageWrite(contract: AztecAddress, slot: Fr, newValue: Fr): Promise<void>;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Database interface for providing access to public contract data.
|
|
30
|
+
*/
|
|
31
|
+
export interface PublicContractsDBInterface {
|
|
32
|
+
/**
|
|
33
|
+
* Returns a contract instance given its address and the given timestamp, or undefined if not exists.
|
|
34
|
+
* @param address - Address of the contract.
|
|
35
|
+
* @param timestamp - Timestamp to get the contract instance at. Contract updates might change the instance.
|
|
36
|
+
* @returns The contract instance or undefined if not found.
|
|
37
|
+
*/
|
|
38
|
+
getContractInstance(address: AztecAddress, timestamp: UInt64): Promise<ContractInstanceWithAddress | undefined>;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Returns a publicly deployed contract class.
|
|
42
|
+
* @param contractClassId - ID of the contract class.
|
|
43
|
+
* @returns The contract class or undefined if not found
|
|
44
|
+
*/
|
|
45
|
+
getContractClass(contractClassId: Fr): Promise<ContractClassPublic | undefined>;
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Returns the commitment to the bytecode of a contract class.
|
|
49
|
+
* @param contractClassId - ID of the contract class.
|
|
50
|
+
* @returns The commitment to the bytecode or undefined if not found.
|
|
51
|
+
*/
|
|
52
|
+
getBytecodeCommitment(contractClassId: Fr): Promise<Fr | undefined>;
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Returns the function name of a contract's function given its selector.
|
|
56
|
+
* @param contractAddress - Address of the contract.
|
|
57
|
+
* @param selector - Selector of the function.
|
|
58
|
+
* @returns The name of the function or undefined if not found.
|
|
59
|
+
*/
|
|
60
|
+
getDebugFunctionName(contractAddress: AztecAddress, selector: FunctionSelector): Promise<string | undefined>;
|
|
61
|
+
}
|
|
@@ -2,17 +2,17 @@ import type { Fr } from '@aztec/foundation/fields';
|
|
|
2
2
|
import { FunctionSelector } from '@aztec/stdlib/abi';
|
|
3
3
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
4
4
|
|
|
5
|
-
import type {
|
|
5
|
+
import type { PublicContractsDBInterface } from './db_interfaces.js';
|
|
6
6
|
|
|
7
7
|
export async function getPublicFunctionDebugName(
|
|
8
|
-
db:
|
|
8
|
+
db: PublicContractsDBInterface,
|
|
9
9
|
contractAddress: AztecAddress,
|
|
10
10
|
calldata: Fr[],
|
|
11
11
|
): Promise<string> {
|
|
12
12
|
// Public function is dispatched and therefore the target function is passed in the first argument.
|
|
13
|
-
|
|
14
|
-
calldata[0]
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
return
|
|
13
|
+
if (!calldata[0]) {
|
|
14
|
+
return `<calldata[0] undefined> (Contract Address: ${contractAddress})`;
|
|
15
|
+
}
|
|
16
|
+
const selector = FunctionSelector.fromField(calldata[0]);
|
|
17
|
+
return (await db.getDebugFunctionName(contractAddress, selector)) ?? selector.toString();
|
|
18
18
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { RevertCode } from '@aztec/stdlib/avm';
|
|
1
2
|
import {
|
|
2
3
|
Attributes,
|
|
3
4
|
type Histogram,
|
|
@@ -8,11 +9,16 @@ import {
|
|
|
8
9
|
ValueType,
|
|
9
10
|
} from '@aztec/telemetry-client';
|
|
10
11
|
|
|
11
|
-
|
|
12
|
+
import type { ExecutorMetricsInterface } from './executor_metrics_interface.js';
|
|
13
|
+
|
|
14
|
+
export class ExecutorMetrics implements ExecutorMetricsInterface {
|
|
12
15
|
public readonly tracer: Tracer;
|
|
13
16
|
private fnCount: UpDownCounter;
|
|
14
17
|
private fnDuration: Histogram;
|
|
15
18
|
private manaPerSecond: Histogram;
|
|
19
|
+
private manaUsed: Histogram;
|
|
20
|
+
private totalInstructionsExecuted: Histogram;
|
|
21
|
+
private txHashing: Histogram;
|
|
16
22
|
private privateEffectsInsertions: Histogram;
|
|
17
23
|
|
|
18
24
|
constructor(client: TelemetryClient, name = 'PublicExecutor') {
|
|
@@ -35,20 +41,58 @@ export class ExecutorMetrics {
|
|
|
35
41
|
valueType: ValueType.INT,
|
|
36
42
|
});
|
|
37
43
|
|
|
38
|
-
this.
|
|
44
|
+
this.manaUsed = meter.createHistogram(Metrics.PUBLIC_EXECUTOR_SIMULATION_MANA_USED, {
|
|
45
|
+
description: 'Total mana used',
|
|
46
|
+
unit: 'mana',
|
|
47
|
+
valueType: ValueType.INT,
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
this.totalInstructionsExecuted = meter.createHistogram(Metrics.PUBLIC_EXECUTOR_SIMULATION_TOTAL_INSTRUCTIONS, {
|
|
51
|
+
description: 'Total number of instructions executed',
|
|
52
|
+
unit: '#instructions',
|
|
53
|
+
valueType: ValueType.INT,
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
this.txHashing = meter.createHistogram(Metrics.PUBLIC_EXECUTOR_TX_HASHING, {
|
|
57
|
+
description: 'Tx hashing time',
|
|
58
|
+
unit: 'ms',
|
|
59
|
+
valueType: ValueType.INT,
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
this.privateEffectsInsertions = meter.createHistogram(Metrics.PUBLIC_EXECUTOR_PRIVATE_EFFECTS_INSERTION, {
|
|
39
63
|
description: 'Private effects insertion time',
|
|
40
64
|
unit: 'us',
|
|
41
65
|
valueType: ValueType.INT,
|
|
42
66
|
});
|
|
43
67
|
}
|
|
44
68
|
|
|
45
|
-
|
|
69
|
+
startRecordingTxSimulation(_txLabel: string) {
|
|
70
|
+
// do nothing (unimplemented)
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
stopRecordingTxSimulation(_txLabel: string, _revertedCode?: RevertCode) {
|
|
74
|
+
// do nothing (unimplemented)
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
recordEnqueuedCallSimulation(
|
|
78
|
+
fnName: string,
|
|
79
|
+
durationMs: number,
|
|
80
|
+
manaUsed: number,
|
|
81
|
+
totalInstructionsExecuted: number,
|
|
82
|
+
) {
|
|
46
83
|
this.fnCount.add(1, {
|
|
47
84
|
[Attributes.OK]: true,
|
|
48
85
|
[Attributes.APP_CIRCUIT_NAME]: fnName,
|
|
49
|
-
[Attributes.MANA_USED]: manaUsed,
|
|
50
86
|
});
|
|
51
|
-
this.
|
|
87
|
+
this.manaUsed.record(Math.ceil(manaUsed), {
|
|
88
|
+
[Attributes.APP_CIRCUIT_NAME]: fnName,
|
|
89
|
+
});
|
|
90
|
+
this.totalInstructionsExecuted.record(Math.ceil(totalInstructionsExecuted), {
|
|
91
|
+
[Attributes.APP_CIRCUIT_NAME]: fnName,
|
|
92
|
+
});
|
|
93
|
+
this.fnDuration.record(Math.ceil(durationMs), {
|
|
94
|
+
[Attributes.APP_CIRCUIT_NAME]: fnName,
|
|
95
|
+
});
|
|
52
96
|
if (durationMs > 0 && manaUsed > 0) {
|
|
53
97
|
const manaPerSecond = Math.round((manaUsed * 1000) / durationMs);
|
|
54
98
|
this.manaPerSecond.record(manaPerSecond, {
|
|
@@ -57,7 +101,12 @@ export class ExecutorMetrics {
|
|
|
57
101
|
}
|
|
58
102
|
}
|
|
59
103
|
|
|
60
|
-
|
|
104
|
+
recordEnqueuedCallSimulationFailure(
|
|
105
|
+
_fnName: string,
|
|
106
|
+
_durationMs: number,
|
|
107
|
+
_manaUsed: number,
|
|
108
|
+
_totalInstructionsExecuted: number,
|
|
109
|
+
) {
|
|
61
110
|
this.fnCount.add(1, {
|
|
62
111
|
[Attributes.OK]: false,
|
|
63
112
|
});
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { RevertCode } from '@aztec/stdlib/avm';
|
|
2
|
+
|
|
3
|
+
export interface ExecutorMetricsInterface {
|
|
4
|
+
startRecordingTxSimulation(txLabel: string): void;
|
|
5
|
+
stopRecordingTxSimulation(txLabel: string, revertedCode?: RevertCode): void;
|
|
6
|
+
recordEnqueuedCallSimulation(fnName: string, durationMs: number, manaUsed: number, totalInstructions: number): void;
|
|
7
|
+
recordEnqueuedCallSimulationFailure(
|
|
8
|
+
fnName: string,
|
|
9
|
+
durationMs: number,
|
|
10
|
+
manaUsed: number,
|
|
11
|
+
totalInstructionsExecuted: number,
|
|
12
|
+
): void;
|
|
13
|
+
recordPrivateEffectsInsertion(durationUs: number, type: 'revertible' | 'non-revertible'): void;
|
|
14
|
+
}
|