@aztec/simulator 4.0.0-nightly.20250907 → 4.0.0-nightly.20260107
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/dest/client.d.ts +1 -1
- package/dest/common/errors.d.ts +2 -8
- package/dest/common/errors.d.ts.map +1 -1
- package/dest/common/index.d.ts +1 -1
- package/dest/common/stats/index.d.ts +1 -1
- package/dest/common/stats/stats.d.ts +1 -1
- package/dest/private/acvm/acvm.d.ts +1 -1
- package/dest/private/acvm/acvm_types.d.ts +1 -1
- package/dest/private/acvm/deserialize.d.ts +2 -2
- package/dest/private/acvm/deserialize.d.ts.map +1 -1
- package/dest/private/acvm/deserialize.js +1 -1
- package/dest/private/acvm/index.d.ts +1 -1
- package/dest/private/acvm/serialize.d.ts +2 -2
- package/dest/private/acvm/serialize.d.ts.map +1 -1
- package/dest/private/acvm/serialize.js +1 -1
- package/dest/private/acvm_native.d.ts +2 -3
- package/dest/private/acvm_native.d.ts.map +1 -1
- package/dest/private/acvm_native.js +15 -13
- package/dest/private/acvm_wasm.d.ts +1 -1
- package/dest/private/acvm_wasm.d.ts.map +1 -1
- package/dest/private/acvm_wasm_with_blobs.d.ts +1 -1
- package/dest/private/acvm_wasm_with_blobs.d.ts.map +1 -1
- package/dest/private/circuit_recording/circuit_recorder.d.ts +1 -1
- package/dest/private/circuit_recording/circuit_recorder.d.ts.map +1 -1
- package/dest/private/circuit_recording/circuit_recorder.js +16 -15
- package/dest/private/circuit_recording/file_circuit_recorder.d.ts +1 -1
- package/dest/private/circuit_recording/file_circuit_recorder.d.ts.map +1 -1
- package/dest/private/circuit_recording/memory_circuit_recorder.d.ts +1 -1
- package/dest/private/circuit_recording/memory_circuit_recorder.d.ts.map +1 -1
- package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts +2 -2
- package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts.map +1 -1
- package/dest/private/circuit_simulator.d.ts +1 -1
- package/dest/private/factory.d.ts +1 -1
- package/dest/public/avm/avm_context.d.ts +2 -2
- package/dest/public/avm/avm_context.d.ts.map +1 -1
- package/dest/public/avm/avm_contract_call_result.d.ts +2 -2
- package/dest/public/avm/avm_contract_call_result.d.ts.map +1 -1
- package/dest/public/avm/avm_execution_environment.d.ts +5 -4
- package/dest/public/avm/avm_execution_environment.d.ts.map +1 -1
- package/dest/public/avm/avm_execution_environment.js +5 -5
- package/dest/public/avm/avm_gas.d.ts +2 -2
- package/dest/public/avm/avm_gas.d.ts.map +1 -1
- package/dest/public/avm/avm_gas.js +2 -2
- package/dest/public/avm/avm_machine_state.d.ts +2 -2
- package/dest/public/avm/avm_machine_state.d.ts.map +1 -1
- package/dest/public/avm/avm_memory_types.d.ts +20 -14
- package/dest/public/avm/avm_memory_types.d.ts.map +1 -1
- package/dest/public/avm/avm_memory_types.js +10 -3
- package/dest/public/avm/avm_simulator.d.ts +4 -3
- package/dest/public/avm/avm_simulator.d.ts.map +1 -1
- package/dest/public/avm/avm_simulator.js +19 -25
- package/dest/public/avm/avm_simulator_interface.d.ts +1 -1
- package/dest/public/avm/errors.d.ts +13 -16
- package/dest/public/avm/errors.d.ts.map +1 -1
- package/dest/public/avm/errors.js +21 -22
- package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +3 -2
- package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +1 -1
- package/dest/public/avm/fixtures/avm_simulation_tester.js +14 -6
- package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts +4 -2
- package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +1 -1
- package/dest/public/avm/fixtures/base_avm_simulation_tester.js +23 -1
- package/dest/public/avm/fixtures/initializers.d.ts +2 -3
- package/dest/public/avm/fixtures/initializers.d.ts.map +1 -1
- package/dest/public/avm/fixtures/initializers.js +6 -4
- package/dest/public/avm/fixtures/utils.d.ts +4 -3
- package/dest/public/avm/fixtures/utils.d.ts.map +1 -1
- package/dest/public/avm/fixtures/utils.js +3 -2
- package/dest/public/avm/index.d.ts +1 -1
- package/dest/public/avm/opcodes/accrued_substate.d.ts +3 -3
- package/dest/public/avm/opcodes/accrued_substate.d.ts.map +1 -1
- package/dest/public/avm/opcodes/accrued_substate.js +8 -8
- package/dest/public/avm/opcodes/addressing_mode.d.ts +1 -1
- package/dest/public/avm/opcodes/addressing_mode.d.ts.map +1 -1
- package/dest/public/avm/opcodes/addressing_mode.js +4 -5
- package/dest/public/avm/opcodes/arithmetic.d.ts +10 -8
- package/dest/public/avm/opcodes/arithmetic.d.ts.map +1 -1
- package/dest/public/avm/opcodes/arithmetic.js +11 -1
- package/dest/public/avm/opcodes/bitwise.d.ts +5 -5
- package/dest/public/avm/opcodes/bitwise.d.ts.map +1 -1
- package/dest/public/avm/opcodes/comparators.d.ts +4 -4
- package/dest/public/avm/opcodes/comparators.d.ts.map +1 -1
- package/dest/public/avm/opcodes/contract.d.ts +1 -1
- package/dest/public/avm/opcodes/contract.d.ts.map +1 -1
- package/dest/public/avm/opcodes/control_flow.d.ts +1 -1
- package/dest/public/avm/opcodes/control_flow.d.ts.map +1 -1
- package/dest/public/avm/opcodes/conversion.d.ts +1 -1
- package/dest/public/avm/opcodes/conversion.d.ts.map +1 -1
- package/dest/public/avm/opcodes/conversion.js +3 -0
- package/dest/public/avm/opcodes/ec_add.d.ts +2 -2
- package/dest/public/avm/opcodes/ec_add.d.ts.map +1 -1
- package/dest/public/avm/opcodes/ec_add.js +6 -6
- package/dest/public/avm/opcodes/environment_getters.d.ts +1 -1
- package/dest/public/avm/opcodes/environment_getters.d.ts.map +1 -1
- package/dest/public/avm/opcodes/environment_getters.js +5 -7
- package/dest/public/avm/opcodes/external_calls.d.ts +1 -1
- package/dest/public/avm/opcodes/external_calls.d.ts.map +1 -1
- package/dest/public/avm/opcodes/external_calls.js +1 -1
- package/dest/public/avm/opcodes/hashing.d.ts +2 -2
- package/dest/public/avm/opcodes/hashing.d.ts.map +1 -1
- package/dest/public/avm/opcodes/hashing.js +9 -4
- package/dest/public/avm/opcodes/index.d.ts +1 -1
- package/dest/public/avm/opcodes/instruction.d.ts +2 -2
- package/dest/public/avm/opcodes/instruction.d.ts.map +1 -1
- package/dest/public/avm/opcodes/instruction.js +5 -6
- package/dest/public/avm/opcodes/instruction_impl.d.ts +1 -1
- package/dest/public/avm/opcodes/instruction_impl.d.ts.map +1 -1
- package/dest/public/avm/opcodes/memory.d.ts +2 -2
- package/dest/public/avm/opcodes/memory.d.ts.map +1 -1
- package/dest/public/avm/opcodes/memory.js +1 -1
- package/dest/public/avm/opcodes/misc.d.ts +3 -2
- package/dest/public/avm/opcodes/misc.d.ts.map +1 -1
- package/dest/public/avm/opcodes/misc.js +28 -8
- package/dest/public/avm/opcodes/storage.d.ts +3 -3
- package/dest/public/avm/opcodes/storage.d.ts.map +1 -1
- package/dest/public/avm/revert_reason.d.ts +2 -2
- package/dest/public/avm/revert_reason.d.ts.map +1 -1
- package/dest/public/avm/revert_reason.js +3 -2
- package/dest/public/avm/serialization/buffer_cursor.d.ts +1 -1
- package/dest/public/avm/serialization/buffer_cursor.d.ts.map +1 -1
- package/dest/public/avm/serialization/bytecode_serialization.d.ts +1 -1
- package/dest/public/avm/serialization/bytecode_serialization.d.ts.map +1 -1
- package/dest/public/avm/serialization/bytecode_serialization.js +9 -6
- package/dest/public/avm/serialization/instruction_serialization.d.ts +9 -1
- package/dest/public/avm/serialization/instruction_serialization.d.ts.map +1 -1
- package/dest/public/avm/serialization/instruction_serialization.js +11 -1
- package/dest/public/avm/test_utils.d.ts +4 -4
- package/dest/public/avm/test_utils.d.ts.map +1 -1
- package/dest/public/avm/test_utils.js +7 -10
- package/dest/public/contracts_db_checkpoint.d.ts +16 -0
- package/dest/public/contracts_db_checkpoint.d.ts.map +1 -0
- package/dest/public/contracts_db_checkpoint.js +30 -0
- package/dest/public/db_interfaces.d.ts +14 -2
- package/dest/public/db_interfaces.d.ts.map +1 -1
- package/dest/public/debug_fn_name.d.ts +15 -2
- package/dest/public/debug_fn_name.d.ts.map +1 -1
- package/dest/public/debug_fn_name.js +28 -2
- package/dest/public/executor_metrics.d.ts +3 -2
- package/dest/public/executor_metrics.d.ts.map +1 -1
- package/dest/public/executor_metrics.js +1 -1
- package/dest/public/executor_metrics_interface.d.ts +3 -2
- package/dest/public/executor_metrics_interface.d.ts.map +1 -1
- package/dest/public/fixtures/amm_test.d.ts +1 -1
- package/dest/public/fixtures/amm_test.js +2 -2
- package/dest/public/fixtures/bulk_test.d.ts +1 -1
- package/dest/public/fixtures/bulk_test.d.ts.map +1 -1
- package/dest/public/fixtures/bulk_test.js +59 -161
- package/dest/public/fixtures/custom_bytecode_tester.d.ts +34 -0
- package/dest/public/fixtures/custom_bytecode_tester.d.ts.map +1 -0
- package/dest/public/fixtures/custom_bytecode_tester.js +53 -0
- package/dest/public/fixtures/custom_bytecode_tests.d.ts +12 -0
- package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +1 -0
- package/dest/public/fixtures/custom_bytecode_tests.js +174 -0
- package/dest/public/fixtures/index.d.ts +5 -2
- package/dest/public/fixtures/index.d.ts.map +1 -1
- package/dest/public/fixtures/index.js +4 -1
- package/dest/public/fixtures/minimal_public_tx.d.ts +4 -9
- package/dest/public/fixtures/minimal_public_tx.d.ts.map +1 -1
- package/dest/public/fixtures/minimal_public_tx.js +8 -32
- package/dest/public/fixtures/opcode_spammer.d.ts +123 -0
- package/dest/public/fixtures/opcode_spammer.d.ts.map +1 -0
- package/dest/public/fixtures/opcode_spammer.js +1681 -0
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts +25 -5
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
- package/dest/public/fixtures/public_tx_simulation_tester.js +63 -17
- package/dest/public/fixtures/simple_contract_data_source.d.ts +5 -4
- package/dest/public/fixtures/simple_contract_data_source.d.ts.map +1 -1
- package/dest/public/fixtures/simple_contract_data_source.js +4 -4
- package/dest/public/fixtures/token_test.d.ts +6 -2
- package/dest/public/fixtures/token_test.d.ts.map +1 -1
- package/dest/public/fixtures/token_test.js +13 -12
- package/dest/public/fixtures/utils.d.ts +2 -2
- package/dest/public/fixtures/utils.d.ts.map +1 -1
- package/dest/public/fixtures/utils.js +7 -6
- package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts +46 -0
- package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts.map +1 -0
- package/dest/public/fuzzing/avm_fuzzer_simulator.js +139 -0
- package/dest/public/fuzzing/avm_simulator_bin.d.ts +2 -0
- package/dest/public/fuzzing/avm_simulator_bin.d.ts.map +1 -0
- package/dest/public/fuzzing/avm_simulator_bin.js +100 -0
- package/dest/public/hinting_db_sources.d.ts +16 -4
- package/dest/public/hinting_db_sources.d.ts.map +1 -1
- package/dest/public/hinting_db_sources.js +74 -13
- package/dest/public/index.d.ts +3 -2
- package/dest/public/index.d.ts.map +1 -1
- package/dest/public/index.js +1 -1
- package/dest/public/public_db_sources.d.ts +24 -65
- package/dest/public/public_db_sources.d.ts.map +1 -1
- package/dest/public/public_db_sources.js +85 -132
- package/dest/public/public_errors.d.ts +12 -0
- package/dest/public/public_errors.d.ts.map +1 -0
- package/dest/public/public_errors.js +13 -0
- package/dest/public/public_processor/guarded_merkle_tree.d.ts +6 -2
- package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -1
- package/dest/public/public_processor/guarded_merkle_tree.js +8 -0
- package/dest/public/public_processor/public_processor.d.ts +11 -13
- package/dest/public/public_processor/public_processor.d.ts.map +1 -1
- package/dest/public/public_processor/public_processor.js +477 -70
- package/dest/public/public_processor/public_processor_metrics.d.ts +1 -1
- package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts +18 -0
- package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/contract_provider_for_cpp.js +98 -0
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +53 -0
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +131 -0
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts +42 -0
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.js +86 -0
- package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts +30 -0
- package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.js +171 -0
- package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts +22 -0
- package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.js +52 -0
- package/dest/public/public_tx_simulator/factories.d.ts +13 -0
- package/dest/public/public_tx_simulator/factories.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/factories.js +28 -0
- package/dest/public/public_tx_simulator/index.d.ts +6 -1
- package/dest/public/public_tx_simulator/index.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/index.js +3 -0
- package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +16 -8
- package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/measured_public_tx_simulator.js +7 -8
- package/dest/public/public_tx_simulator/public_tx_context.d.ts +9 -4
- package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/public_tx_context.js +22 -10
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +22 -29
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/public_tx_simulator.js +178 -127
- package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts +32 -0
- package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/public_tx_simulator_interface.js +1 -0
- package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts +4 -3
- package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.js +396 -20
- package/dest/public/side_effect_errors.d.ts +42 -2
- package/dest/public/side_effect_errors.d.ts.map +1 -1
- package/dest/public/side_effect_errors.js +70 -1
- package/dest/public/side_effect_trace.d.ts +13 -7
- package/dest/public/side_effect_trace.d.ts.map +1 -1
- package/dest/public/side_effect_trace.js +36 -21
- package/dest/public/side_effect_trace_interface.d.ts +9 -4
- package/dest/public/side_effect_trace_interface.d.ts.map +1 -1
- package/dest/public/state_manager/index.d.ts +1 -1
- package/dest/public/state_manager/nullifiers.d.ts +2 -5
- package/dest/public/state_manager/nullifiers.d.ts.map +1 -1
- package/dest/public/state_manager/nullifiers.js +1 -6
- package/dest/public/state_manager/public_storage.d.ts +2 -2
- package/dest/public/state_manager/public_storage.d.ts.map +1 -1
- package/dest/public/state_manager/public_storage.js +1 -1
- package/dest/public/state_manager/state_manager.d.ts +16 -13
- package/dest/public/state_manager/state_manager.d.ts.map +1 -1
- package/dest/public/state_manager/state_manager.js +64 -21
- package/dest/public/test_executor_metrics.d.ts +4 -3
- package/dest/public/test_executor_metrics.d.ts.map +1 -1
- package/dest/public/test_executor_metrics.js +5 -4
- package/dest/public/unique_class_ids.d.ts +1 -1
- package/dest/public/unique_class_ids.d.ts.map +1 -1
- package/dest/public/utils.d.ts +1 -1
- package/dest/server.d.ts +1 -1
- package/dest/testing.d.ts +1 -1
- package/package.json +24 -19
- package/src/common/errors.ts +1 -1
- package/src/private/acvm/deserialize.ts +1 -1
- package/src/private/acvm/serialize.ts +1 -1
- package/src/private/acvm_native.ts +18 -11
- package/src/private/circuit_recording/circuit_recorder.ts +17 -16
- package/src/private/circuit_recording/simulator_recorder_wrapper.ts +1 -1
- package/src/public/avm/avm_context.ts +1 -1
- package/src/public/avm/avm_contract_call_result.ts +1 -1
- package/src/public/avm/avm_execution_environment.ts +4 -3
- package/src/public/avm/avm_gas.ts +5 -5
- package/src/public/avm/avm_machine_state.ts +1 -1
- package/src/public/avm/avm_memory_types.ts +12 -3
- package/src/public/avm/avm_simulator.ts +24 -33
- package/src/public/avm/errors.ts +24 -27
- package/src/public/avm/fixtures/avm_simulation_tester.ts +14 -4
- package/src/public/avm/fixtures/base_avm_simulation_tester.ts +33 -1
- package/src/public/avm/fixtures/initializers.ts +7 -8
- package/src/public/avm/fixtures/utils.ts +3 -2
- package/src/public/avm/opcodes/accrued_substate.ts +5 -5
- package/src/public/avm/opcodes/addressing_mode.ts +5 -5
- package/src/public/avm/opcodes/arithmetic.ts +13 -1
- package/src/public/avm/opcodes/conversion.ts +4 -0
- package/src/public/avm/opcodes/ec_add.ts +6 -6
- package/src/public/avm/opcodes/environment_getters.ts +6 -8
- package/src/public/avm/opcodes/external_calls.ts +1 -1
- package/src/public/avm/opcodes/hashing.ts +10 -4
- package/src/public/avm/opcodes/instruction.ts +8 -6
- package/src/public/avm/opcodes/memory.ts +1 -1
- package/src/public/avm/opcodes/misc.ts +41 -7
- package/src/public/avm/revert_reason.ts +6 -3
- package/src/public/avm/serialization/bytecode_serialization.ts +17 -6
- package/src/public/avm/serialization/instruction_serialization.ts +13 -1
- package/src/public/avm/test_utils.ts +7 -15
- package/src/public/contracts_db_checkpoint.ts +41 -0
- package/src/public/db_interfaces.ts +16 -1
- package/src/public/debug_fn_name.ts +35 -3
- package/src/public/executor_metrics.ts +2 -1
- package/src/public/executor_metrics_interface.ts +2 -1
- package/src/public/fixtures/amm_test.ts +2 -2
- package/src/public/fixtures/bulk_test.ts +38 -25
- package/src/public/fixtures/custom_bytecode_tester.ts +83 -0
- package/src/public/fixtures/custom_bytecode_tests.ts +219 -0
- package/src/public/fixtures/index.ts +8 -1
- package/src/public/fixtures/minimal_public_tx.ts +9 -42
- package/src/public/fixtures/opcode_spammer.ts +1638 -0
- package/src/public/fixtures/public_tx_simulation_tester.ts +90 -22
- package/src/public/fixtures/simple_contract_data_source.ts +8 -9
- package/src/public/fixtures/token_test.ts +18 -10
- package/src/public/fixtures/utils.ts +5 -6
- package/src/public/fuzzing/avm_fuzzer_simulator.ts +240 -0
- package/src/public/fuzzing/avm_simulator_bin.ts +140 -0
- package/src/public/hinting_db_sources.ts +117 -10
- package/src/public/index.ts +8 -1
- package/src/public/public_db_sources.ts +112 -175
- package/src/public/public_errors.ts +14 -0
- package/src/public/public_processor/guarded_merkle_tree.ts +10 -1
- package/src/public/public_processor/public_processor.ts +112 -79
- package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +121 -0
- package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +200 -0
- package/src/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.ts +132 -0
- package/src/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.ts +237 -0
- package/src/public/public_tx_simulator/dumping_cpp_public_tx_simulator.ts +81 -0
- package/src/public/public_tx_simulator/factories.ts +41 -0
- package/src/public/public_tx_simulator/index.ts +5 -0
- package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +13 -14
- package/src/public/public_tx_simulator/public_tx_context.ts +20 -7
- package/src/public/public_tx_simulator/public_tx_simulator.ts +265 -179
- package/src/public/public_tx_simulator/public_tx_simulator_interface.ts +33 -0
- package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +4 -13
- package/src/public/side_effect_errors.ts +91 -1
- package/src/public/side_effect_trace.ts +49 -24
- package/src/public/side_effect_trace_interface.ts +7 -1
- package/src/public/state_manager/nullifiers.ts +2 -8
- package/src/public/state_manager/public_storage.ts +1 -1
- package/src/public/state_manager/state_manager.ts +87 -39
- package/src/public/test_executor_metrics.ts +7 -5
- package/dest/public/bytecode_errors.d.ts +0 -4
- package/dest/public/bytecode_errors.d.ts.map +0 -1
- package/dest/public/bytecode_errors.js +0 -6
- package/dest/public/tx_contract_cache.d.ts +0 -41
- package/dest/public/tx_contract_cache.d.ts.map +0 -1
- package/dest/public/tx_contract_cache.js +0 -49
- package/src/public/bytecode_errors.ts +0 -6
- package/src/public/tx_contract_cache.ts +0 -69
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
+
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
3
|
+
import {
|
|
4
|
+
AvmCircuitPublicInputs,
|
|
5
|
+
type AvmTxHint,
|
|
6
|
+
deserializeFromMessagePack,
|
|
7
|
+
serializeWithMessagePack,
|
|
8
|
+
} from '@aztec/stdlib/avm';
|
|
9
|
+
import { GlobalVariables, TreeSnapshots } from '@aztec/stdlib/tx';
|
|
10
|
+
import { NativeWorldStateService } from '@aztec/world-state';
|
|
11
|
+
|
|
12
|
+
import { writeSync } from 'fs';
|
|
13
|
+
import { createInterface } from 'readline';
|
|
14
|
+
|
|
15
|
+
import { AvmFuzzerSimulator, FuzzerSimulationRequest } from './avm_fuzzer_simulator.js';
|
|
16
|
+
|
|
17
|
+
// This cache holds opened world states to avoid reopening them for each invocation.
|
|
18
|
+
// It's a map so that in the future we could support multiple world states (if we had multiple fuzzers).
|
|
19
|
+
const worldStateCache = new Map<string, NativeWorldStateService>();
|
|
20
|
+
|
|
21
|
+
async function openExistingWorldState(dataDir: string, mapSizeKb: number): Promise<NativeWorldStateService> {
|
|
22
|
+
const cached = worldStateCache.get(dataDir);
|
|
23
|
+
if (cached) {
|
|
24
|
+
return cached;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const ws = await NativeWorldStateService.new(EthAddress.ZERO, dataDir, {
|
|
28
|
+
archiveTreeMapSizeKb: mapSizeKb,
|
|
29
|
+
nullifierTreeMapSizeKb: mapSizeKb,
|
|
30
|
+
noteHashTreeMapSizeKb: mapSizeKb,
|
|
31
|
+
messageTreeMapSizeKb: mapSizeKb,
|
|
32
|
+
publicDataTreeMapSizeKb: mapSizeKb,
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
worldStateCache.set(dataDir, ws);
|
|
36
|
+
return ws;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
async function simulateWithFuzzer(
|
|
40
|
+
dataDir: string,
|
|
41
|
+
mapSizeKb: number,
|
|
42
|
+
txHint: AvmTxHint,
|
|
43
|
+
globals: GlobalVariables,
|
|
44
|
+
rawContractClasses: any[], // Replace these when we are moving contract classes to TS
|
|
45
|
+
rawContractInstances: [any, any][], // Replace these when we are moving contract instances to TS
|
|
46
|
+
): Promise<{ reverted: boolean; output: Fr[]; revertReason?: string; publicInputs: AvmCircuitPublicInputs }> {
|
|
47
|
+
const worldStateService = await openExistingWorldState(dataDir, mapSizeKb);
|
|
48
|
+
|
|
49
|
+
const simulator = await AvmFuzzerSimulator.create(worldStateService, globals);
|
|
50
|
+
|
|
51
|
+
// Register contract classes from C++
|
|
52
|
+
for (const rawClass of rawContractClasses) {
|
|
53
|
+
await simulator.addContractClassFromCpp(rawClass);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// Register contract instances from C++
|
|
57
|
+
for (const [rawAddress, rawInstance] of rawContractInstances) {
|
|
58
|
+
await simulator.addContractInstanceFromCpp(rawAddress, rawInstance);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
const result = await simulator.simulate(txHint);
|
|
62
|
+
|
|
63
|
+
const output = result
|
|
64
|
+
.getAppLogicReturnValues()
|
|
65
|
+
.flatMap((rv: { values?: Fr[] } | undefined) => rv?.values?.filter((v: Fr | null | undefined) => v != null) ?? []);
|
|
66
|
+
|
|
67
|
+
return {
|
|
68
|
+
reverted: !result.revertCode.isOK(),
|
|
69
|
+
output,
|
|
70
|
+
revertReason: result.findRevertReason()?.message,
|
|
71
|
+
publicInputs: result.publicInputs!,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
async function execute(base64Line: string): Promise<void> {
|
|
76
|
+
try {
|
|
77
|
+
// Decode base64 and deserialize the entire request from msgpack
|
|
78
|
+
const buffer = Buffer.from(base64Line.trim(), 'base64');
|
|
79
|
+
const rawRequest = deserializeFromMessagePack(buffer);
|
|
80
|
+
const request = FuzzerSimulationRequest.fromPlainObject(rawRequest);
|
|
81
|
+
|
|
82
|
+
// Run the TS simulation
|
|
83
|
+
const result = await simulateWithFuzzer(
|
|
84
|
+
request.wsDataDir,
|
|
85
|
+
request.wsMapSizeKb,
|
|
86
|
+
request.tx,
|
|
87
|
+
request.globals,
|
|
88
|
+
request.contractClasses,
|
|
89
|
+
request.contractInstances,
|
|
90
|
+
);
|
|
91
|
+
|
|
92
|
+
// Serialize the result to msgpack and encode it in base64 for output
|
|
93
|
+
const resultBuffer = serializeWithMessagePack({
|
|
94
|
+
reverted: result.reverted,
|
|
95
|
+
output: result.output,
|
|
96
|
+
revertReason: result.revertReason ?? '',
|
|
97
|
+
endTreeSnapshots: result.publicInputs.endTreeSnapshots,
|
|
98
|
+
});
|
|
99
|
+
writeSync(process.stdout.fd, resultBuffer.toString('base64') + '\n');
|
|
100
|
+
} catch (error: any) {
|
|
101
|
+
// If we error, treat as reverted
|
|
102
|
+
const errorResult = serializeWithMessagePack({
|
|
103
|
+
reverted: true,
|
|
104
|
+
output: [] as string[],
|
|
105
|
+
revertReason: `Unexpected Error ${error.message}`,
|
|
106
|
+
endTreeSnapshots: TreeSnapshots.empty(),
|
|
107
|
+
});
|
|
108
|
+
writeSync(process.stdout.fd, errorResult.toString('base64') + '\n');
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
function mainLoop() {
|
|
113
|
+
const rl = createInterface({ input: process.stdin, terminal: false });
|
|
114
|
+
|
|
115
|
+
// Process lines sequentially to avoid race conditions in responses
|
|
116
|
+
const lineQueue: string[] = [];
|
|
117
|
+
let processing = false;
|
|
118
|
+
|
|
119
|
+
async function processQueue() {
|
|
120
|
+
if (processing || lineQueue.length === 0) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
processing = true;
|
|
124
|
+
while (lineQueue.length > 0) {
|
|
125
|
+
const line = lineQueue.shift()!;
|
|
126
|
+
await execute(line);
|
|
127
|
+
}
|
|
128
|
+
processing = false;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
rl.on('line', (line: string) => {
|
|
132
|
+
if (line.trim()) {
|
|
133
|
+
lineQueue.push(line);
|
|
134
|
+
void processQueue();
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
rl.on('close', () => process.exit(0));
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
void mainLoop();
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import type { BlockNumber } from '@aztec/foundation/branded-types';
|
|
2
|
+
import { sha256Trunc } from '@aztec/foundation/crypto/sha256';
|
|
3
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
4
|
import { type Logger, createLogger } from '@aztec/foundation/log';
|
|
4
5
|
import type { IndexedTreeLeafPreimage, SiblingPath } from '@aztec/foundation/trees';
|
|
5
6
|
import type { FunctionSelector } from '@aztec/stdlib/abi';
|
|
@@ -8,8 +9,12 @@ import {
|
|
|
8
9
|
AvmBytecodeCommitmentHint,
|
|
9
10
|
AvmCommitCheckpointHint,
|
|
10
11
|
AvmContractClassHint,
|
|
12
|
+
AvmContractDbCommitCheckpointHint,
|
|
13
|
+
AvmContractDbCreateCheckpointHint,
|
|
14
|
+
AvmContractDbRevertCheckpointHint,
|
|
11
15
|
AvmContractInstanceHint,
|
|
12
16
|
AvmCreateCheckpointHint,
|
|
17
|
+
AvmDebugFunctionNameHint,
|
|
13
18
|
type AvmExecutionHints,
|
|
14
19
|
AvmGetLeafPreimageHintNullifierTree,
|
|
15
20
|
AvmGetLeafPreimageHintPublicDataTree,
|
|
@@ -40,6 +45,7 @@ import {
|
|
|
40
45
|
} from '@aztec/stdlib/trees';
|
|
41
46
|
import { TreeSnapshots } from '@aztec/stdlib/tx';
|
|
42
47
|
import type { UInt64 } from '@aztec/stdlib/types';
|
|
48
|
+
import type { WorldStateRevision } from '@aztec/stdlib/world-state';
|
|
43
49
|
|
|
44
50
|
import { strict as assert } from 'assert';
|
|
45
51
|
|
|
@@ -49,8 +55,11 @@ import type { PublicContractsDBInterface } from './db_interfaces.js';
|
|
|
49
55
|
* A public contracts database that forwards requests and collects AVM hints.
|
|
50
56
|
*/
|
|
51
57
|
export class HintingPublicContractsDB implements PublicContractsDBInterface {
|
|
52
|
-
|
|
53
|
-
|
|
58
|
+
private static readonly log: Logger = createLogger('simulator:hinting-public-contracts-db');
|
|
59
|
+
|
|
60
|
+
private checkpointActionCounter: number = 0;
|
|
61
|
+
private nextCheckpointId: number = 1;
|
|
62
|
+
private checkpointStack: number[] = [0];
|
|
54
63
|
|
|
55
64
|
constructor(
|
|
56
65
|
private readonly db: PublicContractsDBInterface,
|
|
@@ -63,9 +72,11 @@ export class HintingPublicContractsDB implements PublicContractsDBInterface {
|
|
|
63
72
|
): Promise<ContractInstanceWithAddress | undefined> {
|
|
64
73
|
const instance = await this.db.getContractInstance(address, timestamp);
|
|
65
74
|
if (instance) {
|
|
66
|
-
|
|
75
|
+
const hintKey = this.getHintKey();
|
|
76
|
+
|
|
67
77
|
this.hints.contractInstances.push(
|
|
68
78
|
new AvmContractInstanceHint(
|
|
79
|
+
hintKey,
|
|
69
80
|
instance.address,
|
|
70
81
|
instance.salt,
|
|
71
82
|
instance.deployer,
|
|
@@ -75,22 +86,31 @@ export class HintingPublicContractsDB implements PublicContractsDBInterface {
|
|
|
75
86
|
instance.publicKeys,
|
|
76
87
|
),
|
|
77
88
|
);
|
|
89
|
+
|
|
90
|
+
HintingPublicContractsDB.log.trace(
|
|
91
|
+
`[getContractInstance:${hintKey}] Added contract instance ${instance.address.toString()} to hints.`,
|
|
92
|
+
);
|
|
78
93
|
}
|
|
79
94
|
return instance;
|
|
80
95
|
}
|
|
81
96
|
|
|
82
97
|
public async getContractClass(contractClassId: Fr): Promise<ContractClassPublic | undefined> {
|
|
83
98
|
const contractClass = await this.db.getContractClass(contractClassId);
|
|
84
|
-
if (contractClass
|
|
85
|
-
this.
|
|
99
|
+
if (contractClass) {
|
|
100
|
+
const hintKey = this.getHintKey();
|
|
86
101
|
this.hints.contractClasses.push(
|
|
87
102
|
new AvmContractClassHint(
|
|
103
|
+
hintKey,
|
|
88
104
|
contractClass.id,
|
|
89
105
|
contractClass.artifactHash,
|
|
90
106
|
contractClass.privateFunctionsRoot,
|
|
91
107
|
contractClass.packedBytecode,
|
|
92
108
|
),
|
|
93
109
|
);
|
|
110
|
+
|
|
111
|
+
HintingPublicContractsDB.log.trace(
|
|
112
|
+
`[getContractClass:${hintKey}] Added contract class ${contractClassId.toString()} to hints.`,
|
|
113
|
+
);
|
|
94
114
|
}
|
|
95
115
|
return contractClass;
|
|
96
116
|
}
|
|
@@ -98,7 +118,12 @@ export class HintingPublicContractsDB implements PublicContractsDBInterface {
|
|
|
98
118
|
public async getBytecodeCommitment(contractClassId: Fr): Promise<Fr | undefined> {
|
|
99
119
|
const commitment = await this.db.getBytecodeCommitment(contractClassId);
|
|
100
120
|
if (commitment) {
|
|
101
|
-
this.
|
|
121
|
+
const hintKey = this.getHintKey();
|
|
122
|
+
this.hints.bytecodeCommitments.push(new AvmBytecodeCommitmentHint(hintKey, contractClassId, commitment));
|
|
123
|
+
|
|
124
|
+
HintingPublicContractsDB.log.trace(
|
|
125
|
+
`[getBytecodeCommitment:${hintKey}] Added bytecode commitment ${commitment.toString()} to hints for contract class ${contractClassId.toString()}.`,
|
|
126
|
+
);
|
|
102
127
|
}
|
|
103
128
|
return commitment;
|
|
104
129
|
}
|
|
@@ -107,7 +132,81 @@ export class HintingPublicContractsDB implements PublicContractsDBInterface {
|
|
|
107
132
|
contractAddress: AztecAddress,
|
|
108
133
|
selector: FunctionSelector,
|
|
109
134
|
): Promise<string | undefined> {
|
|
110
|
-
|
|
135
|
+
const name = await this.db.getDebugFunctionName(contractAddress, selector);
|
|
136
|
+
if (name) {
|
|
137
|
+
HintingPublicContractsDB.log.debug(
|
|
138
|
+
`[getDebugFunctionName] Adding debug function name ${name} to hints for contract ${contractAddress.toString()} and selector ${selector.toString()}.`,
|
|
139
|
+
);
|
|
140
|
+
// We hint selector as a field to make things way simpler in C++.
|
|
141
|
+
this.hints.debugFunctionNames.push(new AvmDebugFunctionNameHint(contractAddress, selector.toField(), name));
|
|
142
|
+
}
|
|
143
|
+
return name;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
public createCheckpoint(): void {
|
|
147
|
+
const hintKey = this.getHintKey();
|
|
148
|
+
this.checkpointActionCounter++;
|
|
149
|
+
const oldCheckpointId = this.getCurrentCheckpointId();
|
|
150
|
+
|
|
151
|
+
this.db.createCheckpoint();
|
|
152
|
+
|
|
153
|
+
const newCheckpointId = this.nextCheckpointId++;
|
|
154
|
+
this.checkpointStack.push(newCheckpointId);
|
|
155
|
+
|
|
156
|
+
this.hints.contractDbCreateCheckpointHints.push(
|
|
157
|
+
new AvmContractDbCreateCheckpointHint(hintKey, oldCheckpointId, newCheckpointId),
|
|
158
|
+
);
|
|
159
|
+
|
|
160
|
+
HintingPublicContractsDB.log.trace(
|
|
161
|
+
`[createCheckpoint:${hintKey}] Checkpoint evolved ${oldCheckpointId} -> ${newCheckpointId}.`,
|
|
162
|
+
);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
public commitCheckpoint(): void {
|
|
166
|
+
const hintKey = this.getHintKey();
|
|
167
|
+
this.checkpointActionCounter++;
|
|
168
|
+
const oldCheckpointId = this.getCurrentCheckpointId();
|
|
169
|
+
|
|
170
|
+
this.db.commitCheckpoint();
|
|
171
|
+
|
|
172
|
+
this.checkpointStack.pop();
|
|
173
|
+
const newCheckpointId = this.getCurrentCheckpointId();
|
|
174
|
+
|
|
175
|
+
this.hints.contractDbCommitCheckpointHints.push(
|
|
176
|
+
new AvmContractDbCommitCheckpointHint(hintKey, oldCheckpointId, newCheckpointId),
|
|
177
|
+
);
|
|
178
|
+
|
|
179
|
+
HintingPublicContractsDB.log.trace(
|
|
180
|
+
`[commitCheckpoint:${hintKey}] Checkpoint evolved ${oldCheckpointId} -> ${newCheckpointId}.`,
|
|
181
|
+
);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
public revertCheckpoint(): void {
|
|
185
|
+
const hintKey = this.getHintKey();
|
|
186
|
+
this.checkpointActionCounter++;
|
|
187
|
+
const oldCheckpointId = this.getCurrentCheckpointId();
|
|
188
|
+
|
|
189
|
+
this.db.revertCheckpoint();
|
|
190
|
+
|
|
191
|
+
this.checkpointStack.pop();
|
|
192
|
+
const newCheckpointId = this.getCurrentCheckpointId();
|
|
193
|
+
|
|
194
|
+
this.hints.contractDbRevertCheckpointHints.push(
|
|
195
|
+
new AvmContractDbRevertCheckpointHint(hintKey, oldCheckpointId, newCheckpointId),
|
|
196
|
+
);
|
|
197
|
+
|
|
198
|
+
HintingPublicContractsDB.log.trace(
|
|
199
|
+
`[revertCheckpoint:${hintKey}] Checkpoint evolved ${oldCheckpointId} -> ${newCheckpointId}.`,
|
|
200
|
+
);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
// Private methods.
|
|
204
|
+
private getHintKey(): number {
|
|
205
|
+
return this.checkpointActionCounter;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
private getCurrentCheckpointId(): number {
|
|
209
|
+
return this.checkpointStack[this.checkpointStack.length - 1];
|
|
111
210
|
}
|
|
112
211
|
}
|
|
113
212
|
|
|
@@ -449,6 +548,10 @@ export class HintingMerkleWriteOperations implements MerkleTreeWriteOperations {
|
|
|
449
548
|
return this.db.getInitialHeader();
|
|
450
549
|
}
|
|
451
550
|
|
|
551
|
+
public getRevision(): WorldStateRevision {
|
|
552
|
+
return this.db.getRevision();
|
|
553
|
+
}
|
|
554
|
+
|
|
452
555
|
public async updateArchive(header: any): Promise<void> {
|
|
453
556
|
return await this.db.updateArchive(header);
|
|
454
557
|
}
|
|
@@ -469,6 +572,10 @@ export class HintingMerkleWriteOperations implements MerkleTreeWriteOperations {
|
|
|
469
572
|
return await this.db.close();
|
|
470
573
|
}
|
|
471
574
|
|
|
575
|
+
async [Symbol.dispose](): Promise<void> {
|
|
576
|
+
await this.close();
|
|
577
|
+
}
|
|
578
|
+
|
|
472
579
|
public async findLeafIndices<ID extends MerkleTreeId>(
|
|
473
580
|
treeId: ID,
|
|
474
581
|
values: MerkleTreeLeafType<ID>[],
|
|
@@ -494,7 +601,7 @@ export class HintingMerkleWriteOperations implements MerkleTreeWriteOperations {
|
|
|
494
601
|
public async getBlockNumbersForLeafIndices<ID extends MerkleTreeId>(
|
|
495
602
|
treeId: ID,
|
|
496
603
|
leafIndices: bigint[],
|
|
497
|
-
): Promise<(
|
|
604
|
+
): Promise<(BlockNumber | undefined)[]> {
|
|
498
605
|
return await this.db.getBlockNumbersForLeafIndices(treeId, leafIndices);
|
|
499
606
|
}
|
|
500
607
|
}
|
package/src/public/index.ts
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
export { PublicContractsDB } from './public_db_sources.js';
|
|
2
2
|
export { GuardedMerkleTreeOperations } from './public_processor/guarded_merkle_tree.js';
|
|
3
3
|
export { PublicProcessor, PublicProcessorFactory } from './public_processor/public_processor.js';
|
|
4
|
-
export {
|
|
4
|
+
export {
|
|
5
|
+
CppPublicTxSimulator,
|
|
6
|
+
createPublicTxSimulatorForBlockBuilding,
|
|
7
|
+
DumpingCppPublicTxSimulator,
|
|
8
|
+
type PublicTxSimulatorInterface,
|
|
9
|
+
TelemetryCppPublicTxSimulator,
|
|
10
|
+
} from './public_tx_simulator/index.js';
|
|
11
|
+
export type { PublicTxResult, PublicSimulatorConfig as PublicTxSimulatorConfig } from '@aztec/stdlib/avm';
|
|
5
12
|
export { getCallRequestsWithCalldataByPhase } from './utils.js';
|