@aztec/simulator 0.0.0-test.0 → 0.0.1-commit.03f7ef2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -0
- package/dest/client.d.ts +6 -4
- package/dest/client.d.ts.map +1 -1
- package/dest/client.js +4 -2
- package/dest/common/errors.d.ts +6 -15
- package/dest/common/errors.d.ts.map +1 -1
- package/dest/common/errors.js +51 -32
- package/dest/common/index.d.ts +1 -2
- package/dest/common/index.d.ts.map +1 -1
- package/dest/common/index.js +0 -1
- package/dest/common/stats/index.d.ts +1 -1
- package/dest/common/stats/stats.d.ts +1 -1
- package/dest/private/acvm/acvm.d.ts +12 -6
- package/dest/private/acvm/acvm.d.ts.map +1 -1
- package/dest/private/acvm/acvm.js +10 -16
- package/dest/private/acvm/acvm_types.d.ts +2 -2
- package/dest/private/acvm/acvm_types.d.ts.map +1 -1
- package/dest/private/acvm/deserialize.d.ts +19 -20
- package/dest/private/acvm/deserialize.d.ts.map +1 -1
- package/dest/private/acvm/deserialize.js +32 -24
- package/dest/private/acvm/index.d.ts +1 -2
- package/dest/private/acvm/index.d.ts.map +1 -1
- package/dest/private/acvm/index.js +0 -1
- package/dest/private/acvm/serialize.d.ts +21 -4
- package/dest/private/acvm/serialize.d.ts.map +1 -1
- package/dest/private/acvm/serialize.js +54 -1
- package/dest/private/acvm_native.d.ts +39 -0
- package/dest/private/acvm_native.d.ts.map +1 -0
- package/dest/private/{providers/acvm_native.js → acvm_native.js} +26 -20
- package/dest/private/acvm_wasm.d.ts +15 -0
- package/dest/private/acvm_wasm.d.ts.map +1 -0
- package/dest/private/{providers/acvm_wasm.js → acvm_wasm.js} +22 -19
- package/dest/private/acvm_wasm_with_blobs.d.ts +20 -0
- package/dest/private/acvm_wasm_with_blobs.d.ts.map +1 -0
- package/dest/private/acvm_wasm_with_blobs.js +35 -0
- package/dest/private/circuit_recording/circuit_recorder.d.ts +108 -0
- package/dest/private/circuit_recording/circuit_recorder.d.ts.map +1 -0
- package/dest/private/circuit_recording/circuit_recorder.js +209 -0
- package/dest/private/circuit_recording/file_circuit_recorder.d.ts +31 -0
- package/dest/private/circuit_recording/file_circuit_recorder.d.ts.map +1 -0
- package/dest/private/circuit_recording/file_circuit_recorder.js +135 -0
- package/dest/private/circuit_recording/memory_circuit_recorder.d.ts +5 -0
- package/dest/private/circuit_recording/memory_circuit_recorder.d.ts.map +1 -0
- package/dest/private/circuit_recording/memory_circuit_recorder.js +9 -0
- package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts +21 -0
- package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts.map +1 -0
- package/dest/private/circuit_recording/simulator_recorder_wrapper.js +44 -0
- package/dest/private/circuit_simulator.d.ts +35 -0
- package/dest/private/circuit_simulator.d.ts.map +1 -0
- package/dest/private/circuit_simulator.js +43 -0
- package/dest/private/factory.d.ts +12 -0
- package/dest/private/factory.d.ts.map +1 -0
- package/dest/private/{providers/factory.js → factory.js} +2 -2
- package/dest/public/avm/avm_context.d.ts +7 -7
- package/dest/public/avm/avm_context.d.ts.map +1 -1
- package/dest/public/avm/avm_contract_call_result.d.ts +6 -4
- 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 +5 -3
- package/dest/public/avm/avm_execution_environment.d.ts.map +1 -1
- package/dest/public/avm/avm_execution_environment.js +5 -3
- package/dest/public/avm/avm_gas.d.ts +5 -21
- package/dest/public/avm/avm_gas.d.ts.map +1 -1
- package/dest/public/avm/avm_gas.js +27 -35
- package/dest/public/avm/avm_machine_state.d.ts +4 -2
- 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 +100 -89
- package/dest/public/avm/avm_memory_types.d.ts.map +1 -1
- package/dest/public/avm/avm_memory_types.js +18 -7
- package/dest/public/avm/avm_simulator.d.ts +7 -7
- package/dest/public/avm/avm_simulator.d.ts.map +1 -1
- package/dest/public/avm/avm_simulator.js +28 -39
- 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 +11 -29
- package/dest/public/avm/errors.d.ts.map +1 -1
- package/dest/public/avm/errors.js +19 -57
- package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +6 -5
- package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +1 -1
- package/dest/public/avm/fixtures/avm_simulation_tester.js +23 -16
- package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts +8 -6
- package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +1 -1
- package/dest/public/avm/fixtures/base_avm_simulation_tester.js +38 -15
- package/dest/public/avm/fixtures/initializers.d.ts +42 -0
- package/dest/public/avm/fixtures/initializers.d.ts.map +1 -0
- package/dest/public/avm/fixtures/initializers.js +44 -0
- package/dest/public/avm/fixtures/utils.d.ts +39 -0
- package/dest/public/avm/fixtures/utils.d.ts.map +1 -0
- package/dest/public/avm/fixtures/utils.js +96 -0
- package/dest/public/avm/index.d.ts +1 -3
- package/dest/public/avm/index.d.ts.map +1 -1
- package/dest/public/avm/index.js +0 -2
- package/dest/public/avm/opcodes/accrued_substate.d.ts +3 -3
- package/dest/public/avm/opcodes/accrued_substate.d.ts.map +1 -1
- package/dest/public/avm/opcodes/accrued_substate.js +28 -25
- package/dest/public/avm/opcodes/addressing_mode.d.ts +12 -8
- package/dest/public/avm/opcodes/addressing_mode.d.ts.map +1 -1
- package/dest/public/avm/opcodes/addressing_mode.js +46 -26
- package/dest/public/avm/opcodes/arithmetic.d.ts +19 -7
- package/dest/public/avm/opcodes/arithmetic.d.ts.map +1 -1
- package/dest/public/avm/opcodes/arithmetic.js +27 -3
- package/dest/public/avm/opcodes/bitwise.d.ts +10 -18
- package/dest/public/avm/opcodes/bitwise.d.ts.map +1 -1
- package/dest/public/avm/opcodes/bitwise.js +19 -26
- package/dest/public/avm/opcodes/comparators.d.ts +4 -4
- package/dest/public/avm/opcodes/comparators.d.ts.map +1 -1
- package/dest/public/avm/opcodes/comparators.js +3 -3
- package/dest/public/avm/opcodes/contract.d.ts +2 -3
- package/dest/public/avm/opcodes/contract.d.ts.map +1 -1
- package/dest/public/avm/opcodes/contract.js +9 -10
- package/dest/public/avm/opcodes/control_flow.d.ts +1 -1
- package/dest/public/avm/opcodes/control_flow.d.ts.map +1 -1
- package/dest/public/avm/opcodes/control_flow.js +10 -8
- package/dest/public/avm/opcodes/conversion.d.ts +2 -1
- package/dest/public/avm/opcodes/conversion.d.ts.map +1 -1
- package/dest/public/avm/opcodes/conversion.js +267 -3
- package/dest/public/avm/opcodes/ec_add.d.ts +2 -2
- package/dest/public/avm/opcodes/ec_add.d.ts.map +1 -1
- package/dest/public/avm/opcodes/ec_add.js +8 -8
- package/dest/public/avm/opcodes/environment_getters.d.ts +3 -3
- package/dest/public/avm/opcodes/environment_getters.d.ts.map +1 -1
- package/dest/public/avm/opcodes/environment_getters.js +17 -19
- package/dest/public/avm/opcodes/external_calls.d.ts +9 -8
- package/dest/public/avm/opcodes/external_calls.d.ts.map +1 -1
- package/dest/public/avm/opcodes/external_calls.js +39 -34
- package/dest/public/avm/opcodes/hashing.d.ts +2 -2
- package/dest/public/avm/opcodes/hashing.d.ts.map +1 -1
- package/dest/public/avm/opcodes/hashing.js +15 -10
- package/dest/public/avm/opcodes/index.d.ts +1 -1
- package/dest/public/avm/opcodes/instruction.d.ts +15 -11
- package/dest/public/avm/opcodes/instruction.d.ts.map +1 -1
- package/dest/public/avm/opcodes/instruction.js +23 -19
- package/dest/public/avm/opcodes/instruction_impl.d.ts +1 -1
- package/dest/public/avm/opcodes/instruction_impl.d.ts.map +1 -1
- package/dest/public/avm/opcodes/memory.d.ts +6 -6
- package/dest/public/avm/opcodes/memory.d.ts.map +1 -1
- package/dest/public/avm/opcodes/memory.js +37 -33
- package/dest/public/avm/opcodes/misc.d.ts +3 -2
- package/dest/public/avm/opcodes/misc.d.ts.map +1 -1
- package/dest/public/avm/opcodes/misc.js +41 -16
- package/dest/public/avm/opcodes/storage.d.ts +3 -3
- package/dest/public/avm/opcodes/storage.d.ts.map +1 -1
- package/dest/public/avm/opcodes/storage.js +7 -5
- package/dest/public/avm/revert_reason.d.ts +18 -0
- package/dest/public/avm/revert_reason.d.ts.map +1 -0
- package/dest/public/avm/revert_reason.js +39 -0
- package/dest/public/avm/serialization/buffer_cursor.d.ts +1 -3
- package/dest/public/avm/serialization/buffer_cursor.d.ts.map +1 -1
- package/dest/public/avm/serialization/bytecode_serialization.d.ts +3 -7
- package/dest/public/avm/serialization/bytecode_serialization.d.ts.map +1 -1
- package/dest/public/avm/serialization/bytecode_serialization.js +79 -75
- package/dest/public/avm/serialization/instruction_serialization.d.ts +14 -5
- package/dest/public/avm/serialization/instruction_serialization.d.ts.map +1 -1
- package/dest/public/avm/serialization/instruction_serialization.js +70 -35
- package/dest/public/avm/test_utils.d.ts +12 -15
- package/dest/public/avm/test_utils.d.ts.map +1 -1
- package/dest/public/avm/test_utils.js +17 -25
- package/dest/public/contracts_db_checkpoint.d.ts +16 -0
- package/dest/public/contracts_db_checkpoint.d.ts.map +1 -0
- package/dest/public/contracts_db_checkpoint.js +30 -0
- package/dest/public/db_interfaces.d.ts +68 -0
- package/dest/public/db_interfaces.d.ts.map +1 -0
- package/dest/public/db_interfaces.js +3 -0
- package/dest/public/debug_fn_name.d.ts +18 -0
- package/dest/public/debug_fn_name.d.ts.map +1 -0
- package/dest/public/debug_fn_name.js +35 -0
- package/dest/public/executor_metrics.d.ts +12 -4
- package/dest/public/executor_metrics.d.ts.map +1 -1
- package/dest/public/executor_metrics.js +37 -6
- package/dest/public/executor_metrics_interface.d.ts +10 -0
- package/dest/public/executor_metrics_interface.d.ts.map +1 -0
- package/dest/public/executor_metrics_interface.js +1 -0
- package/dest/public/fixtures/amm_test.d.ts +10 -0
- package/dest/public/fixtures/amm_test.d.ts.map +1 -0
- package/dest/public/fixtures/amm_test.js +213 -0
- package/dest/public/fixtures/bulk_test.d.ts +6 -0
- package/dest/public/fixtures/bulk_test.d.ts.map +1 -0
- package/dest/public/fixtures/bulk_test.js +278 -0
- package/dest/public/fixtures/custom_bytecode_tester.d.ts +34 -0
- package/dest/public/fixtures/custom_bytecode_tester.d.ts.map +1 -0
- package/dest/public/fixtures/custom_bytecode_tester.js +53 -0
- package/dest/public/fixtures/custom_bytecode_tests.d.ts +12 -0
- package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +1 -0
- package/dest/public/fixtures/custom_bytecode_tests.js +174 -0
- package/dest/public/fixtures/index.d.ts +10 -1
- package/dest/public/fixtures/index.d.ts.map +1 -1
- package/dest/public/fixtures/index.js +9 -0
- package/dest/public/fixtures/minimal_public_tx.d.ts +4 -0
- package/dest/public/fixtures/minimal_public_tx.d.ts.map +1 -0
- package/dest/public/fixtures/minimal_public_tx.js +19 -0
- package/dest/public/fixtures/opcode_spammer.d.ts +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 +55 -15
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
- package/dest/public/fixtures/public_tx_simulation_tester.js +138 -72
- package/dest/public/fixtures/simple_contract_data_source.d.ts +36 -0
- package/dest/public/fixtures/simple_contract_data_source.d.ts.map +1 -0
- package/dest/public/{avm/fixtures → fixtures}/simple_contract_data_source.js +31 -10
- package/dest/public/fixtures/token_test.d.ts +12 -0
- package/dest/public/fixtures/token_test.d.ts.map +1 -0
- package/dest/public/fixtures/token_test.js +96 -0
- package/dest/public/fixtures/utils.d.ts +18 -5
- package/dest/public/fixtures/utils.d.ts.map +1 -1
- package/dest/public/fixtures/utils.js +102 -59
- package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts +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 +80 -0
- package/dest/public/hinting_db_sources.d.ts.map +1 -0
- package/dest/public/hinting_db_sources.js +353 -0
- package/dest/public/index.d.ts +6 -9
- package/dest/public/index.d.ts.map +1 -1
- package/dest/public/index.js +4 -7
- package/dest/public/public_db_sources.d.ts +52 -102
- package/dest/public/public_db_sources.d.ts.map +1 -1
- package/dest/public/public_db_sources.js +220 -193
- package/dest/public/public_errors.d.ts +12 -0
- package/dest/public/public_errors.d.ts.map +1 -0
- package/dest/public/public_errors.js +13 -0
- package/dest/public/public_processor/guarded_merkle_tree.d.ts +51 -0
- package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -0
- package/dest/public/public_processor/guarded_merkle_tree.js +111 -0
- package/dest/public/public_processor/public_processor.d.ts +26 -38
- package/dest/public/public_processor/public_processor.d.ts.map +1 -1
- package/dest/public/public_processor/public_processor.js +177 -121
- package/dest/public/public_processor/public_processor_metrics.d.ts +3 -3
- package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
- package/dest/public/public_processor/public_processor_metrics.js +1 -1
- package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts +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 +8 -0
- package/dest/public/public_tx_simulator/index.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/index.js +5 -0
- package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +31 -0
- package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/measured_public_tx_simulator.js +51 -0
- package/dest/public/public_tx_simulator/public_tx_context.d.ts +24 -31
- package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/public_tx_context.js +72 -92
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +36 -58
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/public_tx_simulator.js +213 -205
- package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts +32 -0
- package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/public_tx_simulator_interface.js +1 -0
- package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts +21 -0
- package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.js +39 -0
- package/dest/public/side_effect_errors.d.ts +42 -2
- package/dest/public/side_effect_errors.d.ts.map +1 -1
- package/dest/public/side_effect_errors.js +70 -1
- package/dest/public/side_effect_trace.d.ts +22 -68
- package/dest/public/side_effect_trace.d.ts.map +1 -1
- package/dest/public/side_effect_trace.js +72 -122
- package/dest/public/side_effect_trace_interface.d.ts +13 -25
- package/dest/public/side_effect_trace_interface.d.ts.map +1 -1
- package/dest/public/state_manager/index.d.ts +2 -0
- package/dest/public/state_manager/index.d.ts.map +1 -0
- package/dest/public/state_manager/index.js +1 -0
- package/dest/public/{avm/journal → state_manager}/nullifiers.d.ts +4 -7
- package/dest/public/state_manager/nullifiers.d.ts.map +1 -0
- package/dest/public/{avm/journal → state_manager}/nullifiers.js +3 -8
- package/dest/public/{avm/journal → state_manager}/public_storage.d.ts +4 -4
- package/dest/public/state_manager/public_storage.d.ts.map +1 -0
- package/dest/public/{avm/journal → state_manager}/public_storage.js +1 -1
- package/dest/public/state_manager/state_manager.d.ts +164 -0
- package/dest/public/state_manager/state_manager.d.ts.map +1 -0
- package/dest/public/state_manager/state_manager.js +395 -0
- package/dest/public/test_executor_metrics.d.ts +55 -0
- package/dest/public/test_executor_metrics.d.ts.map +1 -0
- package/dest/public/test_executor_metrics.js +307 -0
- package/dest/public/unique_class_ids.d.ts +1 -1
- package/dest/public/unique_class_ids.d.ts.map +1 -1
- package/dest/public/utils.d.ts +3 -5
- package/dest/public/utils.d.ts.map +1 -1
- package/dest/public/utils.js +4 -21
- package/dest/server.d.ts +7 -4
- package/dest/server.d.ts.map +1 -1
- package/dest/server.js +5 -2
- package/dest/testing.d.ts +2 -0
- package/dest/testing.d.ts.map +1 -0
- package/dest/testing.js +1 -0
- package/package.json +39 -33
- package/src/client.ts +5 -3
- package/src/common/errors.ts +80 -45
- 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 +36 -30
- package/src/private/acvm/index.ts +0 -1
- package/src/private/acvm/serialize.ts +64 -1
- package/src/private/{providers/acvm_native.ts → acvm_native.ts} +47 -24
- package/src/private/acvm_wasm.ts +72 -0
- package/src/private/acvm_wasm_with_blobs.ts +54 -0
- package/src/private/circuit_recording/circuit_recorder.ts +260 -0
- package/src/private/circuit_recording/file_circuit_recorder.ts +158 -0
- package/src/private/circuit_recording/memory_circuit_recorder.ts +11 -0
- package/src/private/circuit_recording/simulator_recorder_wrapper.ts +91 -0
- package/src/private/circuit_simulator.ts +90 -0
- package/src/private/{providers/factory.ts → factory.ts} +6 -6
- package/src/public/avm/avm_context.ts +5 -5
- package/src/public/avm/avm_contract_call_result.ts +18 -6
- package/src/public/avm/avm_execution_environment.ts +9 -2
- package/src/public/avm/avm_gas.ts +26 -38
- package/src/public/avm/avm_machine_state.ts +6 -1
- package/src/public/avm/avm_memory_types.ts +20 -7
- package/src/public/avm/avm_simulator.ts +50 -58
- package/src/public/avm/avm_simulator_interface.ts +8 -0
- package/src/public/avm/errors.ts +20 -75
- package/src/public/avm/fixtures/avm_simulation_tester.ts +33 -22
- package/src/public/avm/fixtures/base_avm_simulation_tester.ts +46 -13
- package/src/public/avm/fixtures/initializers.ts +102 -0
- package/src/public/avm/fixtures/utils.ts +151 -0
- package/src/public/avm/index.ts +0 -2
- package/src/public/avm/opcodes/accrued_substate.ts +64 -29
- package/src/public/avm/opcodes/addressing_mode.ts +56 -32
- package/src/public/avm/opcodes/arithmetic.ts +37 -3
- package/src/public/avm/opcodes/bitwise.ts +33 -29
- package/src/public/avm/opcodes/comparators.ts +6 -3
- package/src/public/avm/opcodes/contract.ts +10 -7
- package/src/public/avm/opcodes/control_flow.ts +19 -10
- package/src/public/avm/opcodes/conversion.ts +27 -3
- package/src/public/avm/opcodes/ec_add.ts +11 -8
- package/src/public/avm/opcodes/environment_getters.ts +27 -22
- package/src/public/avm/opcodes/external_calls.ts +61 -29
- package/src/public/avm/opcodes/hashing.ts +38 -12
- package/src/public/avm/opcodes/instruction.ts +31 -21
- package/src/public/avm/opcodes/memory.ts +71 -32
- package/src/public/avm/opcodes/misc.ts +60 -18
- package/src/public/avm/opcodes/storage.ts +22 -6
- package/src/public/avm/revert_reason.ts +58 -0
- package/src/public/avm/serialization/buffer_cursor.ts +4 -1
- package/src/public/avm/serialization/bytecode_serialization.ts +89 -80
- package/src/public/avm/serialization/instruction_serialization.ts +75 -34
- package/src/public/avm/test_utils.ts +25 -42
- package/src/public/contracts_db_checkpoint.ts +41 -0
- package/src/public/db_interfaces.ts +76 -0
- package/src/public/debug_fn_name.ts +50 -0
- package/src/public/executor_metrics.ts +56 -6
- package/src/public/executor_metrics_interface.ts +15 -0
- package/src/public/fixtures/amm_test.ts +331 -0
- package/src/public/fixtures/bulk_test.ts +169 -0
- package/src/public/fixtures/custom_bytecode_tester.ts +83 -0
- package/src/public/fixtures/custom_bytecode_tests.ts +219 -0
- package/src/public/fixtures/index.ts +13 -0
- package/src/public/fixtures/minimal_public_tx.ts +26 -0
- package/src/public/fixtures/opcode_spammer.ts +1638 -0
- package/src/public/fixtures/public_tx_simulation_tester.ts +223 -114
- package/src/public/{avm/fixtures → fixtures}/simple_contract_data_source.ts +37 -20
- package/src/public/fixtures/token_test.ts +148 -0
- package/src/public/fixtures/utils.ts +141 -69
- package/src/public/fuzzing/avm_fuzzer_simulator.ts +240 -0
- package/src/public/fuzzing/avm_simulator_bin.ts +140 -0
- package/src/public/hinting_db_sources.ts +607 -0
- package/src/public/index.ts +11 -8
- package/src/public/public_db_sources.ts +279 -259
- package/src/public/public_errors.ts +14 -0
- package/src/public/public_processor/guarded_merkle_tree.ts +158 -0
- package/src/public/public_processor/public_processor.ts +242 -178
- package/src/public/public_processor/public_processor_metrics.ts +2 -2
- 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 +7 -0
- package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +105 -0
- package/src/public/public_tx_simulator/public_tx_context.ts +168 -195
- package/src/public/public_tx_simulator/public_tx_simulator.ts +302 -260
- package/src/public/public_tx_simulator/public_tx_simulator_interface.ts +33 -0
- package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +63 -0
- package/src/public/side_effect_errors.ts +91 -1
- package/src/public/side_effect_trace.ts +95 -321
- package/src/public/side_effect_trace_interface.ts +11 -59
- package/src/public/state_manager/index.ts +1 -0
- package/src/public/{avm/journal → state_manager}/nullifiers.ts +6 -12
- package/src/public/{avm/journal → state_manager}/public_storage.ts +3 -3
- package/src/public/state_manager/state_manager.ts +560 -0
- package/src/public/test_executor_metrics.ts +397 -0
- package/src/public/utils.ts +5 -21
- package/src/server.ts +6 -3
- package/src/testing.ts +1 -0
- package/dest/common/db_interfaces.d.ts +0 -80
- package/dest/common/db_interfaces.d.ts.map +0 -1
- package/dest/common/db_interfaces.js +0 -1
- package/dest/common/debug_fn_name.d.ts +0 -5
- package/dest/common/debug_fn_name.d.ts.map +0 -1
- package/dest/common/debug_fn_name.js +0 -6
- package/dest/common/message_load_oracle_inputs.d.ts +0 -15
- package/dest/common/message_load_oracle_inputs.d.ts.map +0 -1
- package/dest/common/message_load_oracle_inputs.js +0 -15
- package/dest/private/acvm/oracle/index.d.ts +0 -14
- package/dest/private/acvm/oracle/index.d.ts.map +0 -1
- package/dest/private/acvm/oracle/index.js +0 -2
- package/dest/private/acvm/oracle/oracle.d.ts +0 -49
- package/dest/private/acvm/oracle/oracle.d.ts.map +0 -1
- package/dest/private/acvm/oracle/oracle.js +0 -263
- package/dest/private/acvm/oracle/typed_oracle.d.ts +0 -83
- package/dest/private/acvm/oracle/typed_oracle.d.ts.map +0 -1
- package/dest/private/acvm/oracle/typed_oracle.js +0 -132
- package/dest/private/execution_data_provider.d.ts +0 -261
- package/dest/private/execution_data_provider.d.ts.map +0 -1
- package/dest/private/execution_data_provider.js +0 -14
- package/dest/private/execution_note_cache.d.ts +0 -93
- package/dest/private/execution_note_cache.d.ts.map +0 -1
- package/dest/private/execution_note_cache.js +0 -180
- package/dest/private/hashed_values_cache.d.ts +0 -28
- package/dest/private/hashed_values_cache.d.ts.map +0 -1
- package/dest/private/hashed_values_cache.js +0 -46
- package/dest/private/index.d.ts +0 -13
- package/dest/private/index.d.ts.map +0 -1
- package/dest/private/index.js +0 -12
- package/dest/private/pick_notes.d.ts +0 -85
- package/dest/private/pick_notes.d.ts.map +0 -1
- package/dest/private/pick_notes.js +0 -51
- package/dest/private/private_execution.d.ts +0 -25
- package/dest/private/private_execution.d.ts.map +0 -1
- package/dest/private/private_execution.js +0 -92
- package/dest/private/private_execution_oracle.d.ts +0 -215
- package/dest/private/private_execution_oracle.d.ts.map +0 -1
- package/dest/private/private_execution_oracle.js +0 -382
- package/dest/private/providers/acvm_native.d.ts +0 -40
- package/dest/private/providers/acvm_native.d.ts.map +0 -1
- package/dest/private/providers/acvm_wasm.d.ts +0 -15
- package/dest/private/providers/acvm_wasm.d.ts.map +0 -1
- package/dest/private/providers/acvm_wasm_with_blobs.d.ts +0 -19
- package/dest/private/providers/acvm_wasm_with_blobs.d.ts.map +0 -1
- package/dest/private/providers/acvm_wasm_with_blobs.js +0 -32
- package/dest/private/providers/factory.d.ts +0 -12
- package/dest/private/providers/factory.d.ts.map +0 -1
- package/dest/private/providers/simulation_provider.d.ts +0 -19
- package/dest/private/providers/simulation_provider.d.ts.map +0 -1
- package/dest/private/providers/simulation_provider.js +0 -24
- package/dest/private/simulator.d.ts +0 -34
- package/dest/private/simulator.d.ts.map +0 -1
- package/dest/private/simulator.js +0 -76
- package/dest/private/unconstrained_execution.d.ts +0 -10
- package/dest/private/unconstrained_execution.d.ts.map +0 -1
- package/dest/private/unconstrained_execution.js +0 -27
- package/dest/private/unconstrained_execution_oracle.d.ts +0 -161
- package/dest/private/unconstrained_execution_oracle.d.ts.map +0 -1
- package/dest/private/unconstrained_execution_oracle.js +0 -258
- package/dest/public/avm/bytecode_utils.d.ts +0 -5
- package/dest/public/avm/bytecode_utils.d.ts.map +0 -1
- package/dest/public/avm/bytecode_utils.js +0 -17
- package/dest/public/avm/fixtures/index.d.ts +0 -84
- package/dest/public/avm/fixtures/index.d.ts.map +0 -1
- package/dest/public/avm/fixtures/index.js +0 -175
- package/dest/public/avm/fixtures/simple_contract_data_source.d.ts +0 -35
- package/dest/public/avm/fixtures/simple_contract_data_source.d.ts.map +0 -1
- package/dest/public/avm/journal/index.d.ts +0 -2
- package/dest/public/avm/journal/index.d.ts.map +0 -1
- package/dest/public/avm/journal/index.js +0 -1
- package/dest/public/avm/journal/journal.d.ts +0 -209
- package/dest/public/avm/journal/journal.d.ts.map +0 -1
- package/dest/public/avm/journal/journal.js +0 -486
- package/dest/public/avm/journal/nullifiers.d.ts.map +0 -1
- package/dest/public/avm/journal/public_storage.d.ts.map +0 -1
- package/dest/public/bytecode_errors.d.ts +0 -4
- package/dest/public/bytecode_errors.d.ts.map +0 -1
- package/dest/public/bytecode_errors.js +0 -6
- package/dest/public/execution.d.ts +0 -108
- package/dest/public/execution.d.ts.map +0 -1
- package/dest/public/execution.js +0 -9
- package/dest/public/tx_contract_cache.d.ts +0 -41
- package/dest/public/tx_contract_cache.d.ts.map +0 -1
- package/dest/public/tx_contract_cache.js +0 -49
- package/dest/test/utils.d.ts +0 -13
- package/dest/test/utils.d.ts.map +0 -1
- package/dest/test/utils.js +0 -22
- package/src/common/db_interfaces.ts +0 -94
- package/src/common/debug_fn_name.ts +0 -18
- package/src/common/message_load_oracle_inputs.ts +0 -15
- package/src/private/acvm/oracle/index.ts +0 -16
- package/src/private/acvm/oracle/oracle.ts +0 -455
- package/src/private/acvm/oracle/typed_oracle.ts +0 -259
- package/src/private/execution_data_provider.ts +0 -323
- package/src/private/execution_note_cache.ts +0 -217
- package/src/private/hashed_values_cache.ts +0 -55
- package/src/private/index.ts +0 -16
- package/src/private/pick_notes.ts +0 -141
- package/src/private/private_execution.ts +0 -151
- package/src/private/private_execution_oracle.ts +0 -614
- package/src/private/providers/acvm_wasm.ts +0 -63
- package/src/private/providers/acvm_wasm_with_blobs.ts +0 -50
- package/src/private/providers/simulation_provider.ts +0 -45
- package/src/private/simulator.ts +0 -147
- package/src/private/unconstrained_execution.ts +0 -50
- package/src/private/unconstrained_execution_oracle.ts +0 -373
- package/src/public/avm/bytecode_utils.ts +0 -17
- package/src/public/avm/fixtures/index.ts +0 -296
- package/src/public/avm/journal/index.ts +0 -1
- package/src/public/avm/journal/journal.ts +0 -742
- package/src/public/avm/opcodes/.eslintrc.cjs +0 -8
- package/src/public/bytecode_errors.ts +0 -6
- package/src/public/execution.ts +0 -140
- package/src/public/tx_contract_cache.ts +0 -69
- package/src/test/utils.ts +0 -36
|
@@ -1,99 +1,169 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
CONTRACT_CLASS_PUBLISHED_MAGIC_VALUE,
|
|
3
|
+
CONTRACT_CLASS_REGISTRY_CONTRACT_ADDRESS,
|
|
4
|
+
CONTRACT_INSTANCE_REGISTRY_CONTRACT_ADDRESS,
|
|
5
|
+
DEFAULT_DA_GAS_LIMIT,
|
|
6
|
+
DEFAULT_L2_GAS_LIMIT,
|
|
7
|
+
DEFAULT_TEARDOWN_DA_GAS_LIMIT,
|
|
8
|
+
DEFAULT_TEARDOWN_L2_GAS_LIMIT,
|
|
6
9
|
PRIVATE_LOG_SIZE_IN_FIELDS,
|
|
7
|
-
REGISTERER_CONTRACT_ADDRESS,
|
|
8
|
-
REGISTERER_CONTRACT_CLASS_REGISTERED_MAGIC_VALUE,
|
|
9
10
|
} from '@aztec/constants';
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
11
|
+
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
12
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
13
|
+
import { CONTRACT_INSTANCE_PUBLISHED_EVENT_TAG } from '@aztec/protocol-contracts';
|
|
13
14
|
import { bufferAsFields } from '@aztec/stdlib/abi';
|
|
14
15
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
15
16
|
import type { ContractClassPublic, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
16
17
|
import { Gas, GasFees, GasSettings } from '@aztec/stdlib/gas';
|
|
17
18
|
import { siloNullifier } from '@aztec/stdlib/hash';
|
|
18
19
|
import {
|
|
20
|
+
LogHash,
|
|
19
21
|
PartialPrivateTailPublicInputsForPublic,
|
|
20
22
|
PartialPrivateTailPublicInputsForRollup,
|
|
21
23
|
PrivateKernelTailCircuitPublicInputs,
|
|
22
|
-
RollupValidationRequests,
|
|
23
|
-
ScopedLogHash,
|
|
24
24
|
countAccumulatedItems,
|
|
25
25
|
} from '@aztec/stdlib/kernel';
|
|
26
|
-
import {
|
|
27
|
-
import
|
|
28
|
-
import {
|
|
26
|
+
import { ContractClassLogFields, PrivateLog } from '@aztec/stdlib/logs';
|
|
27
|
+
import type { ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
|
|
28
|
+
import { ChonkProof } from '@aztec/stdlib/proofs';
|
|
29
|
+
import {
|
|
30
|
+
BlockHeader,
|
|
31
|
+
GlobalVariables,
|
|
32
|
+
HashedValues,
|
|
33
|
+
PublicCallRequestWithCalldata,
|
|
34
|
+
Tx,
|
|
35
|
+
TxConstantData,
|
|
36
|
+
TxContext,
|
|
37
|
+
} from '@aztec/stdlib/tx';
|
|
29
38
|
|
|
30
39
|
import { strict as assert } from 'assert';
|
|
31
40
|
|
|
41
|
+
export type TestPrivateInsertions = {
|
|
42
|
+
revertible?: {
|
|
43
|
+
nullifiers?: Fr[];
|
|
44
|
+
noteHashes?: Fr[];
|
|
45
|
+
l2ToL1Msgs?: ScopedL2ToL1Message[];
|
|
46
|
+
};
|
|
47
|
+
nonRevertible?: {
|
|
48
|
+
nullifiers?: Fr[];
|
|
49
|
+
noteHashes?: Fr[];
|
|
50
|
+
l2ToL1Msgs?: ScopedL2ToL1Message[];
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
|
|
32
54
|
/**
|
|
33
55
|
* Craft a carrier transaction for some public calls for simulation by PublicTxSimulator.
|
|
34
56
|
*/
|
|
35
57
|
export async function createTxForPublicCalls(
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
58
|
+
privateInsertions: TestPrivateInsertions,
|
|
59
|
+
setupCallRequests: PublicCallRequestWithCalldata[],
|
|
60
|
+
appCallRequests: PublicCallRequestWithCalldata[],
|
|
61
|
+
teardownCallRequest?: PublicCallRequestWithCalldata,
|
|
40
62
|
feePayer = AztecAddress.zero(),
|
|
41
63
|
gasUsedByPrivate: Gas = Gas.empty(),
|
|
64
|
+
globals: GlobalVariables = GlobalVariables.empty(),
|
|
42
65
|
): Promise<Tx> {
|
|
43
66
|
assert(
|
|
44
|
-
|
|
67
|
+
setupCallRequests.length > 0 || appCallRequests.length > 0 || teardownCallRequest !== undefined,
|
|
45
68
|
"Can't create public tx with no enqueued calls",
|
|
46
69
|
);
|
|
47
|
-
const setupCallRequests = await Promise.all(setupExecutionRequests.map(er => er.toCallRequest()));
|
|
48
|
-
const appCallRequests = await Promise.all(appExecutionRequests.map(er => er.toCallRequest()));
|
|
49
70
|
// use max limits
|
|
50
|
-
const gasLimits = new Gas(
|
|
71
|
+
const gasLimits = new Gas(DEFAULT_DA_GAS_LIMIT, DEFAULT_L2_GAS_LIMIT);
|
|
51
72
|
|
|
52
73
|
const forPublic = PartialPrivateTailPublicInputsForPublic.empty();
|
|
53
|
-
// TODO(#9269): Remove this fake nullifier method as we move away from 1st nullifier as hash.
|
|
54
|
-
forPublic.nonRevertibleAccumulatedData.nullifiers[0] = firstNullifier;
|
|
55
74
|
|
|
56
|
-
//
|
|
57
|
-
|
|
58
|
-
|
|
75
|
+
// Non revertible private insertions
|
|
76
|
+
if (!privateInsertions.nonRevertible?.nullifiers?.length) {
|
|
77
|
+
throw new Error('At least one non-revertible nullifier is required');
|
|
59
78
|
}
|
|
60
|
-
|
|
61
|
-
|
|
79
|
+
|
|
80
|
+
for (let i = 0; i < privateInsertions.nonRevertible.nullifiers.length; i++) {
|
|
81
|
+
assert(i < forPublic.nonRevertibleAccumulatedData.nullifiers.length, 'Nullifier index out of bounds');
|
|
82
|
+
forPublic.nonRevertibleAccumulatedData.nullifiers[i] = privateInsertions.nonRevertible.nullifiers[i];
|
|
62
83
|
}
|
|
63
|
-
if (
|
|
64
|
-
|
|
84
|
+
if (privateInsertions.nonRevertible.noteHashes) {
|
|
85
|
+
for (let i = 0; i < privateInsertions.nonRevertible.noteHashes.length; i++) {
|
|
86
|
+
assert(i < forPublic.nonRevertibleAccumulatedData.noteHashes.length, 'Note hash index out of bounds');
|
|
87
|
+
forPublic.nonRevertibleAccumulatedData.noteHashes[i] = privateInsertions.nonRevertible.noteHashes[i];
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
if (privateInsertions.nonRevertible.l2ToL1Msgs) {
|
|
91
|
+
for (let i = 0; i < privateInsertions.nonRevertible.l2ToL1Msgs.length; i++) {
|
|
92
|
+
assert(i < forPublic.nonRevertibleAccumulatedData.l2ToL1Msgs.length, 'L2 to L1 message index out of bounds');
|
|
93
|
+
forPublic.nonRevertibleAccumulatedData.l2ToL1Msgs[i] = privateInsertions.nonRevertible.l2ToL1Msgs[i];
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// Revertible private insertions
|
|
98
|
+
if (privateInsertions.revertible) {
|
|
99
|
+
if (privateInsertions.revertible.noteHashes) {
|
|
100
|
+
for (let i = 0; i < privateInsertions.revertible.noteHashes.length; i++) {
|
|
101
|
+
assert(i < forPublic.revertibleAccumulatedData.noteHashes.length, 'Note hash index out of bounds');
|
|
102
|
+
forPublic.revertibleAccumulatedData.noteHashes[i] = privateInsertions.revertible.noteHashes[i];
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
if (privateInsertions.revertible.nullifiers) {
|
|
106
|
+
for (let i = 0; i < privateInsertions.revertible.nullifiers.length; i++) {
|
|
107
|
+
assert(i < forPublic.revertibleAccumulatedData.nullifiers.length, 'Nullifier index out of bounds');
|
|
108
|
+
forPublic.revertibleAccumulatedData.nullifiers[i] = privateInsertions.revertible.nullifiers[i];
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
if (privateInsertions.revertible.l2ToL1Msgs) {
|
|
112
|
+
for (let i = 0; i < privateInsertions.revertible.l2ToL1Msgs.length; i++) {
|
|
113
|
+
assert(i < forPublic.revertibleAccumulatedData.l2ToL1Msgs.length, 'L2 to L1 message index out of bounds');
|
|
114
|
+
forPublic.revertibleAccumulatedData.l2ToL1Msgs[i] = privateInsertions.revertible.l2ToL1Msgs[i];
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
for (let i = 0; i < setupCallRequests.length; i++) {
|
|
120
|
+
forPublic.nonRevertibleAccumulatedData.publicCallRequests[i] = setupCallRequests[i].request;
|
|
121
|
+
}
|
|
122
|
+
for (let i = 0; i < appCallRequests.length; i++) {
|
|
123
|
+
forPublic.revertibleAccumulatedData.publicCallRequests[i] = appCallRequests[i].request;
|
|
124
|
+
}
|
|
125
|
+
if (teardownCallRequest) {
|
|
126
|
+
forPublic.publicTeardownCallRequest = teardownCallRequest.request;
|
|
65
127
|
}
|
|
66
128
|
|
|
67
129
|
const maxFeesPerGas = feePayer.isZero() ? GasFees.empty() : new GasFees(10, 10);
|
|
68
|
-
const teardownGasLimits =
|
|
130
|
+
const teardownGasLimits = teardownCallRequest
|
|
131
|
+
? new Gas(DEFAULT_TEARDOWN_DA_GAS_LIMIT, DEFAULT_TEARDOWN_L2_GAS_LIMIT)
|
|
132
|
+
: Gas.empty();
|
|
69
133
|
const gasSettings = new GasSettings(gasLimits, teardownGasLimits, maxFeesPerGas, GasFees.empty());
|
|
70
134
|
const txContext = new TxContext(Fr.zero(), Fr.zero(), gasSettings);
|
|
71
|
-
const
|
|
135
|
+
const header = BlockHeader.empty({ globalVariables: globals });
|
|
136
|
+
const constantData = new TxConstantData(header, txContext, Fr.zero(), Fr.zero());
|
|
137
|
+
const includeByTimestamp = 0n; // Not used in the simulator.
|
|
72
138
|
|
|
73
139
|
const txData = new PrivateKernelTailCircuitPublicInputs(
|
|
74
140
|
constantData,
|
|
75
|
-
RollupValidationRequests.empty(),
|
|
76
141
|
/*gasUsed=*/ gasUsedByPrivate,
|
|
77
142
|
feePayer,
|
|
143
|
+
includeByTimestamp,
|
|
78
144
|
forPublic,
|
|
79
145
|
);
|
|
80
|
-
const tx = Tx.newWithTxData(txData, teardownExecutionRequest);
|
|
81
146
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
for (let i = setupExecutionRequests.length - 1; i >= 0; i--) {
|
|
88
|
-
tx.enqueuedPublicFunctionCalls.push(setupExecutionRequests[i]);
|
|
89
|
-
}
|
|
147
|
+
const calldata = [
|
|
148
|
+
...setupCallRequests,
|
|
149
|
+
...appCallRequests,
|
|
150
|
+
...(teardownCallRequest ? [teardownCallRequest] : []),
|
|
151
|
+
].map(r => new HashedValues(r.calldata, r.request.calldataHash));
|
|
90
152
|
|
|
91
|
-
return
|
|
153
|
+
return await Tx.create({
|
|
154
|
+
data: txData,
|
|
155
|
+
chonkProof: ChonkProof.random(),
|
|
156
|
+
contractClassLogFields: [],
|
|
157
|
+
publicFunctionCalldata: calldata,
|
|
158
|
+
});
|
|
92
159
|
}
|
|
93
160
|
|
|
94
|
-
export function createTxForPrivateOnly(
|
|
161
|
+
export async function createTxForPrivateOnly(
|
|
162
|
+
feePayer = AztecAddress.zero(),
|
|
163
|
+
gasUsedByPrivate: Gas = new Gas(10, 10),
|
|
164
|
+
): Promise<Tx> {
|
|
95
165
|
// use max limits
|
|
96
|
-
const gasLimits = new Gas(
|
|
166
|
+
const gasLimits = new Gas(DEFAULT_DA_GAS_LIMIT, DEFAULT_L2_GAS_LIMIT);
|
|
97
167
|
|
|
98
168
|
const forRollup = PartialPrivateTailPublicInputsForRollup.empty();
|
|
99
169
|
|
|
@@ -101,16 +171,22 @@ export function createTxForPrivateOnly(feePayer = AztecAddress.zero(), gasUsedBy
|
|
|
101
171
|
const gasSettings = new GasSettings(gasLimits, Gas.empty(), maxFeesPerGas, GasFees.empty());
|
|
102
172
|
const txContext = new TxContext(Fr.zero(), Fr.zero(), gasSettings);
|
|
103
173
|
const constantData = new TxConstantData(BlockHeader.empty(), txContext, Fr.zero(), Fr.zero());
|
|
174
|
+
const includeByTimestamp = 0n; // Not used in the simulator.
|
|
104
175
|
|
|
105
176
|
const txData = new PrivateKernelTailCircuitPublicInputs(
|
|
106
177
|
constantData,
|
|
107
|
-
RollupValidationRequests.empty(),
|
|
108
178
|
/*gasUsed=*/ gasUsedByPrivate,
|
|
109
179
|
feePayer,
|
|
180
|
+
includeByTimestamp,
|
|
110
181
|
/*forPublic=*/ undefined,
|
|
111
182
|
forRollup,
|
|
112
183
|
);
|
|
113
|
-
return Tx.
|
|
184
|
+
return await Tx.create({
|
|
185
|
+
data: txData,
|
|
186
|
+
chonkProof: ChonkProof.empty(),
|
|
187
|
+
contractClassLogFields: [],
|
|
188
|
+
publicFunctionCalldata: [],
|
|
189
|
+
});
|
|
114
190
|
}
|
|
115
191
|
|
|
116
192
|
export async function addNewContractClassToTx(
|
|
@@ -119,25 +195,21 @@ export async function addNewContractClassToTx(
|
|
|
119
195
|
skipNullifierInsertion = false,
|
|
120
196
|
) {
|
|
121
197
|
const contractClassLogFields = [
|
|
122
|
-
new Fr(
|
|
198
|
+
new Fr(CONTRACT_CLASS_PUBLISHED_MAGIC_VALUE),
|
|
123
199
|
contractClass.id,
|
|
124
200
|
new Fr(contractClass.version),
|
|
125
201
|
new Fr(contractClass.artifactHash),
|
|
126
202
|
new Fr(contractClass.privateFunctionsRoot),
|
|
127
203
|
...bufferAsFields(contractClass.packedBytecode, Math.ceil(contractClass.packedBytecode.length / 31) + 1),
|
|
128
204
|
];
|
|
129
|
-
const
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
new Fr(7),
|
|
138
|
-
new Fr(contractClassLog.getEmittedLength()),
|
|
139
|
-
new Fr(REGISTERER_CONTRACT_ADDRESS),
|
|
140
|
-
]);
|
|
205
|
+
const contractAddress = new AztecAddress(new Fr(CONTRACT_CLASS_REGISTRY_CONTRACT_ADDRESS));
|
|
206
|
+
const emittedLength = contractClassLogFields.length;
|
|
207
|
+
const logFields = ContractClassLogFields.fromEmittedFields(contractClassLogFields);
|
|
208
|
+
|
|
209
|
+
const contractClassLogHash = LogHash.from({
|
|
210
|
+
value: await logFields.hash(),
|
|
211
|
+
length: emittedLength,
|
|
212
|
+
}).scope(contractAddress);
|
|
141
213
|
|
|
142
214
|
const accumulatedData = tx.data.forPublic ? tx.data.forPublic!.revertibleAccumulatedData : tx.data.forRollup!.end;
|
|
143
215
|
if (!skipNullifierInsertion) {
|
|
@@ -148,7 +220,7 @@ export async function addNewContractClassToTx(
|
|
|
148
220
|
const nextLogIndex = countAccumulatedItems(accumulatedData.contractClassLogsHashes);
|
|
149
221
|
accumulatedData.contractClassLogsHashes[nextLogIndex] = contractClassLogHash;
|
|
150
222
|
|
|
151
|
-
tx.
|
|
223
|
+
tx.contractClassLogFields.push(logFields);
|
|
152
224
|
}
|
|
153
225
|
|
|
154
226
|
export async function addNewContractInstanceToTx(
|
|
@@ -168,8 +240,8 @@ export async function addNewContractInstanceToTx(
|
|
|
168
240
|
contractInstance.publicKeys.masterTaggingPublicKey.x,
|
|
169
241
|
contractInstance.publicKeys.masterTaggingPublicKey.y,
|
|
170
242
|
];
|
|
171
|
-
const
|
|
172
|
-
|
|
243
|
+
const logFields = [
|
|
244
|
+
CONTRACT_INSTANCE_PUBLISHED_EVENT_TAG,
|
|
173
245
|
contractInstance.address.toField(),
|
|
174
246
|
new Fr(contractInstance.version),
|
|
175
247
|
new Fr(contractInstance.salt),
|
|
@@ -177,14 +249,14 @@ export async function addNewContractInstanceToTx(
|
|
|
177
249
|
contractInstance.initializationHash,
|
|
178
250
|
...publicKeysAsFields,
|
|
179
251
|
contractInstance.deployer.toField(),
|
|
180
|
-
new Fr(0),
|
|
181
|
-
new Fr(0),
|
|
182
|
-
new Fr(0),
|
|
183
252
|
];
|
|
184
|
-
const contractInstanceLog = new PrivateLog(
|
|
253
|
+
const contractInstanceLog = new PrivateLog(
|
|
254
|
+
padArrayEnd(logFields, Fr.ZERO, PRIVATE_LOG_SIZE_IN_FIELDS),
|
|
255
|
+
logFields.length,
|
|
256
|
+
);
|
|
185
257
|
|
|
186
258
|
const contractAddressNullifier = await siloNullifier(
|
|
187
|
-
AztecAddress.fromNumber(
|
|
259
|
+
AztecAddress.fromNumber(CONTRACT_INSTANCE_REGISTRY_CONTRACT_ADDRESS),
|
|
188
260
|
contractInstance.address.toField(),
|
|
189
261
|
);
|
|
190
262
|
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import {
|
|
2
|
+
MAX_ENQUEUED_CALLS_PER_TX,
|
|
3
|
+
MAX_L2_TO_L1_MSGS_PER_TX,
|
|
4
|
+
MAX_NOTE_HASHES_PER_TX,
|
|
5
|
+
MAX_NULLIFIERS_PER_TX,
|
|
6
|
+
MAX_PRIVATE_LOGS_PER_TX,
|
|
7
|
+
} from '@aztec/constants';
|
|
8
|
+
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
9
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
10
|
+
import { AvmTxHint, type PublicTxResult } from '@aztec/stdlib/avm';
|
|
11
|
+
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
12
|
+
import { contractClassPublicFromPlainObject, contractInstanceWithAddressFromPlainObject } from '@aztec/stdlib/contract';
|
|
13
|
+
import {
|
|
14
|
+
PartialPrivateTailPublicInputsForPublic,
|
|
15
|
+
PrivateKernelTailCircuitPublicInputs,
|
|
16
|
+
PrivateToPublicAccumulatedData,
|
|
17
|
+
PublicCallRequest,
|
|
18
|
+
} from '@aztec/stdlib/kernel';
|
|
19
|
+
import { PrivateLog } from '@aztec/stdlib/logs';
|
|
20
|
+
import { ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
|
|
21
|
+
import { ChonkProof } from '@aztec/stdlib/proofs';
|
|
22
|
+
import type { MerkleTreeWriteOperations } from '@aztec/stdlib/trees';
|
|
23
|
+
import { BlockHeader, GlobalVariables, HashedValues, Tx, TxConstantData, TxContext, TxHash } from '@aztec/stdlib/tx';
|
|
24
|
+
import type { NativeWorldStateService } from '@aztec/world-state';
|
|
25
|
+
|
|
26
|
+
import { BaseAvmSimulationTester } from '../avm/fixtures/base_avm_simulation_tester.js';
|
|
27
|
+
import { SimpleContractDataSource } from '../fixtures/simple_contract_data_source.js';
|
|
28
|
+
import { PublicContractsDB } from '../public_db_sources.js';
|
|
29
|
+
import { PublicTxSimulator } from '../public_tx_simulator/public_tx_simulator.js';
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Request structure for fuzzer simulation communication from C++.
|
|
33
|
+
* Matches the C++ FuzzerSimulationRequest struct
|
|
34
|
+
*/
|
|
35
|
+
export class FuzzerSimulationRequest {
|
|
36
|
+
constructor(
|
|
37
|
+
public readonly wsDataDir: string,
|
|
38
|
+
public readonly wsMapSizeKb: number,
|
|
39
|
+
public readonly tx: AvmTxHint,
|
|
40
|
+
public readonly globals: GlobalVariables,
|
|
41
|
+
public readonly contractClasses: any[], // Raw, processed by addContractClassFromCpp
|
|
42
|
+
public readonly contractInstances: [any, any][], // Raw pairs [address, instance]
|
|
43
|
+
) {}
|
|
44
|
+
|
|
45
|
+
static fromPlainObject(obj: any): FuzzerSimulationRequest {
|
|
46
|
+
if (obj instanceof FuzzerSimulationRequest) {
|
|
47
|
+
return obj;
|
|
48
|
+
}
|
|
49
|
+
return new FuzzerSimulationRequest(
|
|
50
|
+
obj.wsDataDir,
|
|
51
|
+
obj.wsMapSizeKb,
|
|
52
|
+
AvmTxHint.fromPlainObject(obj.tx),
|
|
53
|
+
GlobalVariables.fromPlainObject(obj.globals),
|
|
54
|
+
obj.contractClasses,
|
|
55
|
+
obj.contractInstances,
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Creates a TypeScript Tx object from a deserialized C++ Tx (AvmTxHint-like structure).
|
|
62
|
+
* This allows using PublicTxSimulator.simulate() with fuzzer-generated transactions.
|
|
63
|
+
*/
|
|
64
|
+
async function createTxFromHint(cppTx: AvmTxHint): Promise<Tx> {
|
|
65
|
+
// Create TxHash from the C++ tx hash string
|
|
66
|
+
if (!cppTx.hash) {
|
|
67
|
+
throw new Error(`cppTx.hash is undefined. Keys: ${Object.keys(cppTx || {}).join(', ')}`);
|
|
68
|
+
}
|
|
69
|
+
const txHash = TxHash.fromString(cppTx.hash);
|
|
70
|
+
|
|
71
|
+
// Extract PublicCallRequest instances from enqueued calls
|
|
72
|
+
const setupCallRequests = cppTx.setupEnqueuedCalls.map(call => call.request);
|
|
73
|
+
const paddedSetupCalls = padArrayEnd(setupCallRequests, PublicCallRequest.empty(), MAX_ENQUEUED_CALLS_PER_TX);
|
|
74
|
+
|
|
75
|
+
const appLogicCallRequests = cppTx.appLogicEnqueuedCalls.map(call => call.request);
|
|
76
|
+
const paddedAppLogicCalls = padArrayEnd(appLogicCallRequests, PublicCallRequest.empty(), MAX_ENQUEUED_CALLS_PER_TX);
|
|
77
|
+
|
|
78
|
+
// Build non-revertible accumulated data from C++ tx
|
|
79
|
+
const emptyNonRevertible = PrivateToPublicAccumulatedData.empty();
|
|
80
|
+
const nonRevertibleAccumulatedData = new PrivateToPublicAccumulatedData(
|
|
81
|
+
padArrayEnd(cppTx.nonRevertibleAccumulatedData.noteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX),
|
|
82
|
+
padArrayEnd(cppTx.nonRevertibleAccumulatedData.nullifiers, Fr.ZERO, MAX_NULLIFIERS_PER_TX),
|
|
83
|
+
padArrayEnd(
|
|
84
|
+
cppTx.nonRevertibleAccumulatedData.l2ToL1Messages,
|
|
85
|
+
ScopedL2ToL1Message.empty(),
|
|
86
|
+
MAX_L2_TO_L1_MSGS_PER_TX,
|
|
87
|
+
),
|
|
88
|
+
padArrayEnd(cppTx.nonRevertibleContractDeploymentData.privateLogs, PrivateLog.empty(), MAX_PRIVATE_LOGS_PER_TX),
|
|
89
|
+
emptyNonRevertible.contractClassLogsHashes,
|
|
90
|
+
paddedSetupCalls,
|
|
91
|
+
);
|
|
92
|
+
|
|
93
|
+
// Build revertible accumulated data from C++ tx
|
|
94
|
+
const emptyRevertible = PrivateToPublicAccumulatedData.empty();
|
|
95
|
+
const revertibleAccumulatedData = new PrivateToPublicAccumulatedData(
|
|
96
|
+
padArrayEnd(cppTx.revertibleAccumulatedData.noteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX),
|
|
97
|
+
padArrayEnd(cppTx.revertibleAccumulatedData.nullifiers, Fr.ZERO, MAX_NULLIFIERS_PER_TX),
|
|
98
|
+
padArrayEnd(cppTx.revertibleAccumulatedData.l2ToL1Messages, ScopedL2ToL1Message.empty(), MAX_L2_TO_L1_MSGS_PER_TX),
|
|
99
|
+
padArrayEnd(cppTx.revertibleContractDeploymentData.privateLogs, PrivateLog.empty(), MAX_PRIVATE_LOGS_PER_TX),
|
|
100
|
+
emptyRevertible.contractClassLogsHashes,
|
|
101
|
+
paddedAppLogicCalls,
|
|
102
|
+
);
|
|
103
|
+
|
|
104
|
+
// Build teardown call request (if exists)
|
|
105
|
+
const teardownCallRequest = cppTx.teardownEnqueuedCall?.request ?? PublicCallRequest.empty();
|
|
106
|
+
|
|
107
|
+
// Create forPublic structure
|
|
108
|
+
const forPublic = new PartialPrivateTailPublicInputsForPublic(
|
|
109
|
+
nonRevertibleAccumulatedData,
|
|
110
|
+
revertibleAccumulatedData,
|
|
111
|
+
teardownCallRequest,
|
|
112
|
+
);
|
|
113
|
+
|
|
114
|
+
// Build TxContext - gasSettings is already a proper GasSettings after AvmTxHint.fromPlainObject
|
|
115
|
+
const txContext = new TxContext(
|
|
116
|
+
Fr.ZERO, // chainId - this is fine because simulation actually reads from globalVariables not here
|
|
117
|
+
Fr.ZERO, // version - this is fine because simulation actually reads from globalVariables not here
|
|
118
|
+
cppTx.gasSettings,
|
|
119
|
+
);
|
|
120
|
+
|
|
121
|
+
// Build TxConstantData
|
|
122
|
+
const constants = new TxConstantData(
|
|
123
|
+
BlockHeader.empty(), // anchorBlockHeader (unused in simulation)
|
|
124
|
+
txContext,
|
|
125
|
+
Fr.ZERO, // vkTreeRoot - not needed for public simulation
|
|
126
|
+
Fr.ZERO, // protocolContractsHash - not needed for public simulation
|
|
127
|
+
);
|
|
128
|
+
|
|
129
|
+
const data = new PrivateKernelTailCircuitPublicInputs(
|
|
130
|
+
constants,
|
|
131
|
+
cppTx.gasUsedByPrivate,
|
|
132
|
+
cppTx.feePayer,
|
|
133
|
+
0n, // includeByTimestamp
|
|
134
|
+
forPublic,
|
|
135
|
+
undefined, // forRollup - not needed for public simulation
|
|
136
|
+
);
|
|
137
|
+
|
|
138
|
+
// Build publicFunctionCalldata from all enqueued calls
|
|
139
|
+
// Calldata is already Fr[] after AvmTxHint.fromPlainObject
|
|
140
|
+
const publicFunctionCalldata: HashedValues[] = [];
|
|
141
|
+
|
|
142
|
+
// Add setup calls
|
|
143
|
+
for (const call of cppTx.setupEnqueuedCalls || []) {
|
|
144
|
+
publicFunctionCalldata.push(await HashedValues.fromCalldata(call.calldata));
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// Add app logic calls
|
|
148
|
+
for (const call of cppTx.appLogicEnqueuedCalls || []) {
|
|
149
|
+
publicFunctionCalldata.push(await HashedValues.fromCalldata(call.calldata));
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
// Add teardown call if present
|
|
153
|
+
if (cppTx.teardownEnqueuedCall) {
|
|
154
|
+
publicFunctionCalldata.push(await HashedValues.fromCalldata(cppTx.teardownEnqueuedCall.calldata));
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
// Extract contract class log fields from ContractDeploymentData
|
|
158
|
+
const contractClassLogFields = [
|
|
159
|
+
...cppTx.nonRevertibleContractDeploymentData.contractClassLogs.map(log => log.fields),
|
|
160
|
+
...cppTx.revertibleContractDeploymentData.contractClassLogs.map(log => log.fields),
|
|
161
|
+
];
|
|
162
|
+
|
|
163
|
+
// Create the Tx
|
|
164
|
+
return new Tx(
|
|
165
|
+
txHash,
|
|
166
|
+
data,
|
|
167
|
+
ChonkProof.empty(), // No real proof needed for simulation
|
|
168
|
+
contractClassLogFields,
|
|
169
|
+
publicFunctionCalldata,
|
|
170
|
+
);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* A simulator class for the AVM fuzzer that extends BaseAvmSimulationTester.
|
|
175
|
+
* It provides methods for registering contracts from C++ msgpack data and simulating transactions.
|
|
176
|
+
*/
|
|
177
|
+
export class AvmFuzzerSimulator extends BaseAvmSimulationTester {
|
|
178
|
+
private simulator: PublicTxSimulator;
|
|
179
|
+
|
|
180
|
+
constructor(
|
|
181
|
+
merkleTrees: MerkleTreeWriteOperations,
|
|
182
|
+
contractDataSource: SimpleContractDataSource,
|
|
183
|
+
globals: GlobalVariables,
|
|
184
|
+
) {
|
|
185
|
+
super(contractDataSource, merkleTrees);
|
|
186
|
+
const contractsDb = new PublicContractsDB(contractDataSource);
|
|
187
|
+
this.simulator = new PublicTxSimulator(merkleTrees, contractsDb, globals, {
|
|
188
|
+
skipFeeEnforcement: false,
|
|
189
|
+
collectDebugLogs: false,
|
|
190
|
+
collectHints: false,
|
|
191
|
+
collectStatistics: false,
|
|
192
|
+
collectCallMetadata: false,
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Static factory method to create an AvmFuzzerSimulator.
|
|
198
|
+
*/
|
|
199
|
+
public static async create(
|
|
200
|
+
worldStateService: NativeWorldStateService,
|
|
201
|
+
globals: GlobalVariables,
|
|
202
|
+
): Promise<AvmFuzzerSimulator> {
|
|
203
|
+
const contractDataSource = new SimpleContractDataSource();
|
|
204
|
+
const merkleTrees = await worldStateService.fork();
|
|
205
|
+
return new AvmFuzzerSimulator(merkleTrees, contractDataSource, globals);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* Simulate a transaction from a C++ AvmTxHint.
|
|
210
|
+
*/
|
|
211
|
+
public async simulate(txHint: AvmTxHint): Promise<PublicTxResult> {
|
|
212
|
+
// Compute fee from gas limits and max fees per gas (upper bound on fee)
|
|
213
|
+
const totalFee =
|
|
214
|
+
BigInt(txHint.gasSettings.gasLimits.daGas) * txHint.gasSettings.maxFeesPerGas.feePerDaGas +
|
|
215
|
+
BigInt(txHint.gasSettings.gasLimits.l2Gas) * txHint.gasSettings.maxFeesPerGas.feePerL2Gas;
|
|
216
|
+
|
|
217
|
+
await this.setFeePayerBalance(txHint.feePayer, new Fr(totalFee));
|
|
218
|
+
|
|
219
|
+
const tx = await createTxFromHint(txHint);
|
|
220
|
+
return await this.simulator.simulate(tx);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* Add a contract class from C++ raw msgpack data.
|
|
225
|
+
*/
|
|
226
|
+
public async addContractClassFromCpp(rawClass: any): Promise<void> {
|
|
227
|
+
const contractClass = contractClassPublicFromPlainObject(rawClass);
|
|
228
|
+
await this.contractDataSource.addContractClass(contractClass);
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* Add a contract instance from C++ raw msgpack data.
|
|
233
|
+
* This also inserts the contract address nullifier into the nullifier tree.
|
|
234
|
+
*/
|
|
235
|
+
public async addContractInstanceFromCpp(rawAddress: any, rawInstance: any): Promise<void> {
|
|
236
|
+
const address = AztecAddress.fromPlainObject(rawAddress);
|
|
237
|
+
const instance = contractInstanceWithAddressFromPlainObject(address, rawInstance);
|
|
238
|
+
await this.addContractInstance(instance);
|
|
239
|
+
}
|
|
240
|
+
}
|