@aztec/simulator 0.0.1-commit.b655e406 → 0.0.1-commit.b8a057fa
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 -4
- package/dest/client.d.ts +1 -3
- package/dest/client.d.ts.map +1 -1
- package/dest/client.js +0 -2
- package/dest/common/errors.d.ts +2 -2
- 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 +4 -2
- package/dest/private/acvm/acvm.d.ts.map +1 -1
- package/dest/private/acvm/acvm.js +4 -3
- 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 +5 -3
- package/dest/private/acvm_native.d.ts.map +1 -1
- package/dest/private/acvm_native.js +8 -6
- package/dest/private/acvm_wasm.d.ts +4 -3
- package/dest/private/acvm_wasm.d.ts.map +1 -1
- package/dest/private/acvm_wasm.js +7 -5
- 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 +39 -25
- package/dest/private/circuit_recording/circuit_recorder.d.ts.map +1 -1
- package/dest/private/circuit_recording/circuit_recorder.js +71 -72
- package/dest/private/circuit_recording/file_circuit_recorder.d.ts +9 -20
- package/dest/private/circuit_recording/file_circuit_recorder.d.ts.map +1 -1
- package/dest/private/circuit_recording/file_circuit_recorder.js +39 -43
- package/dest/private/circuit_recording/memory_circuit_recorder.d.ts +7 -2
- package/dest/private/circuit_recording/memory_circuit_recorder.d.ts.map +1 -1
- package/dest/private/circuit_recording/memory_circuit_recorder.js +4 -4
- package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts +1 -1
- package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts.map +1 -1
- package/dest/private/circuit_recording/simulator_recorder_wrapper.js +11 -14
- package/dest/private/circuit_simulator.d.ts +1 -1
- package/dest/private/factory.d.ts +3 -3
- package/dest/private/factory.d.ts.map +1 -1
- package/dest/private/factory.js +7 -4
- package/dest/public/avm/testing/account_proof_fetcher.d.ts +2 -0
- package/dest/public/avm/testing/account_proof_fetcher.d.ts.map +1 -0
- package/dest/public/avm/testing/account_proof_fetcher.js +152 -0
- package/dest/public/avm/{fixtures → testing}/base_avm_simulation_tester.d.ts +3 -2
- package/dest/public/avm/testing/base_avm_simulation_tester.d.ts.map +1 -0
- package/dest/public/avm/{fixtures → testing}/base_avm_simulation_tester.js +19 -4
- package/dest/public/avm/{fixtures → testing}/utils.d.ts +4 -10
- package/dest/public/avm/testing/utils.d.ts.map +1 -0
- package/dest/public/avm/{fixtures → testing}/utils.js +7 -36
- package/dest/public/avm_simulator.d.ts +28 -0
- package/dest/public/avm_simulator.d.ts.map +1 -0
- package/dest/public/avm_simulator.js +4 -0
- package/dest/public/avm_simulator_pool.d.ts +45 -0
- package/dest/public/avm_simulator_pool.d.ts.map +1 -0
- package/dest/public/avm_simulator_pool.js +197 -0
- package/dest/public/cdb/generated/api_types.d.ts +171 -0
- package/dest/public/cdb/generated/api_types.d.ts.map +1 -0
- package/dest/public/cdb/generated/api_types.js +314 -0
- package/dest/public/cdb/generated/server.d.ts +26 -0
- package/dest/public/cdb/generated/server.d.ts.map +1 -0
- package/dest/public/cdb/generated/server.js +135 -0
- package/dest/public/cdb_ipc_server.d.ts +33 -0
- package/dest/public/cdb_ipc_server.d.ts.map +1 -0
- package/dest/public/cdb_ipc_server.js +153 -0
- 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/executor_metrics.d.ts +3 -2
- package/dest/public/executor_metrics.d.ts.map +1 -1
- package/dest/public/executor_metrics.js +13 -34
- 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 +6 -6
- package/dest/public/fixtures/bulk_test.d.ts +3 -3
- package/dest/public/fixtures/bulk_test.d.ts.map +1 -1
- package/dest/public/fixtures/bulk_test.js +38 -75
- package/dest/public/fixtures/custom_bytecode_tester.d.ts +29 -7
- package/dest/public/fixtures/custom_bytecode_tester.d.ts.map +1 -1
- package/dest/public/fixtures/custom_bytecode_tester.js +36 -12
- package/dest/public/fixtures/index.d.ts +3 -3
- package/dest/public/fixtures/index.d.ts.map +1 -1
- package/dest/public/fixtures/index.js +2 -2
- package/dest/public/fixtures/public_processor_test_env.d.ts +30 -0
- package/dest/public/fixtures/public_processor_test_env.d.ts.map +1 -0
- package/dest/public/fixtures/public_processor_test_env.js +73 -0
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts +32 -9
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
- package/dest/public/fixtures/public_tx_simulation_tester.js +84 -26
- 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 +5 -5
- 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 +16 -15
- package/dest/public/fixtures/utils.d.ts +3 -3
- package/dest/public/fixtures/utils.d.ts.map +1 -1
- package/dest/public/fixtures/utils.js +25 -23
- package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts +67 -0
- package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts.map +1 -0
- package/dest/public/fuzzing/avm_fuzzer_simulator.js +185 -0
- package/dest/public/fuzzing/avm_simulator_bin.d.ts +2 -0
- package/dest/public/fuzzing/avm_simulator_bin.d.ts.map +1 -0
- package/dest/public/fuzzing/avm_simulator_bin.js +118 -0
- package/dest/public/index.d.ts +6 -2
- package/dest/public/index.d.ts.map +1 -1
- package/dest/public/index.js +2 -1
- package/dest/public/public_db_sources.d.ts +29 -66
- package/dest/public/public_db_sources.d.ts.map +1 -1
- package/dest/public/public_db_sources.js +83 -134
- package/dest/public/public_errors.d.ts +1 -1
- package/dest/public/public_errors.d.ts.map +1 -1
- package/dest/public/public_processor/guarded_merkle_tree.d.ts +8 -5
- package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -1
- package/dest/public/public_processor/guarded_merkle_tree.js +12 -4
- package/dest/public/public_processor/public_processor.d.ts +24 -22
- package/dest/public/public_processor/public_processor.d.ts.map +1 -1
- package/dest/public/public_processor/public_processor.js +559 -125
- package/dest/public/public_processor/public_processor_metrics.d.ts +5 -2
- package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
- package/dest/public/public_processor/public_processor_metrics.js +36 -45
- package/dest/public/public_tx_simulator/dumping_public_tx_simulator.d.ts +17 -0
- package/dest/public/public_tx_simulator/dumping_public_tx_simulator.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/dumping_public_tx_simulator.js +39 -0
- package/dest/public/public_tx_simulator/factories.d.ts +14 -0
- package/dest/public/public_tx_simulator/factories.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/factories.js +28 -0
- package/dest/public/public_tx_simulator/index.d.ts +6 -4
- package/dest/public/public_tx_simulator/index.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/index.js +3 -2
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +43 -90
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/public_tx_simulator.js +99 -331
- package/dest/public/public_tx_simulator/public_tx_simulator_base.d.ts +24 -0
- package/dest/public/public_tx_simulator/public_tx_simulator_base.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/public_tx_simulator_base.js +31 -0
- package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts +25 -2
- package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts.map +1 -1
- package/dest/public/side_effect_errors.d.ts +1 -1
- package/dest/public/side_effect_errors.d.ts.map +1 -1
- package/dest/public/test_executor_metrics.d.ts +6 -4
- package/dest/public/test_executor_metrics.d.ts.map +1 -1
- package/dest/public/test_executor_metrics.js +7 -6
- 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 +26 -22
- package/src/client.ts +0 -2
- package/src/common/errors.ts +1 -1
- package/src/private/acvm/acvm.ts +4 -3
- package/src/private/acvm/deserialize.ts +1 -1
- package/src/private/acvm/serialize.ts +1 -1
- package/src/private/acvm_native.ts +11 -5
- package/src/private/acvm_wasm.ts +11 -4
- package/src/private/circuit_recording/circuit_recorder.ts +90 -81
- package/src/private/circuit_recording/file_circuit_recorder.ts +45 -50
- package/src/private/circuit_recording/memory_circuit_recorder.ts +6 -4
- package/src/private/circuit_recording/simulator_recorder_wrapper.ts +9 -15
- package/src/private/factory.ts +7 -4
- package/src/public/avm/testing/account_proof.json +553 -0
- package/src/public/avm/testing/account_proof_fetcher.ts +166 -0
- package/src/public/avm/{fixtures → testing}/base_avm_simulation_tester.ts +24 -4
- package/src/public/avm/{fixtures → testing}/utils.ts +7 -42
- package/src/public/avm_simulator.ts +29 -0
- package/src/public/avm_simulator_pool.ts +226 -0
- package/src/public/cdb/generated/api_types.ts +457 -0
- package/src/public/cdb/generated/server.ts +109 -0
- package/src/public/cdb_ipc_server.ts +197 -0
- package/src/public/contracts_db_checkpoint.ts +41 -0
- package/src/public/db_interfaces.ts +16 -1
- package/src/public/executor_metrics.ts +11 -34
- package/src/public/executor_metrics_interface.ts +2 -1
- package/src/public/fixtures/amm_test.ts +6 -6
- package/src/public/fixtures/bulk_test.ts +40 -15
- package/src/public/fixtures/custom_bytecode_tester.ts +54 -20
- package/src/public/fixtures/index.ts +6 -2
- package/src/public/fixtures/public_processor_test_env.ts +88 -0
- package/src/public/fixtures/public_tx_simulation_tester.ts +117 -26
- package/src/public/fixtures/simple_contract_data_source.ts +9 -10
- package/src/public/fixtures/token_test.ts +21 -13
- package/src/public/fixtures/utils.ts +25 -27
- package/src/public/fuzzing/avm_fuzzer_simulator.ts +303 -0
- package/src/public/fuzzing/avm_simulator_bin.ts +173 -0
- package/src/public/index.ts +8 -2
- package/src/public/public_db_sources.ts +112 -174
- package/src/public/public_processor/guarded_merkle_tree.ts +14 -6
- package/src/public/public_processor/public_processor.ts +234 -138
- package/src/public/public_processor/public_processor_metrics.ts +28 -44
- package/src/public/public_tx_simulator/dumping_public_tx_simulator.ts +67 -0
- package/src/public/public_tx_simulator/factories.ts +61 -0
- package/src/public/public_tx_simulator/index.ts +8 -3
- package/src/public/public_tx_simulator/public_tx_simulator.ts +142 -500
- package/src/public/public_tx_simulator/public_tx_simulator_base.ts +37 -0
- package/src/public/public_tx_simulator/public_tx_simulator_interface.ts +24 -2
- package/src/public/test_executor_metrics.ts +10 -8
- package/dest/public/avm/avm_context.d.ts +0 -41
- package/dest/public/avm/avm_context.d.ts.map +0 -1
- package/dest/public/avm/avm_context.js +0 -44
- package/dest/public/avm/avm_contract_call_result.d.ts +0 -32
- package/dest/public/avm/avm_contract_call_result.d.ts.map +0 -1
- package/dest/public/avm/avm_contract_call_result.js +0 -54
- package/dest/public/avm/avm_execution_environment.d.ts +0 -23
- package/dest/public/avm/avm_execution_environment.d.ts.map +0 -1
- package/dest/public/avm/avm_execution_environment.js +0 -36
- package/dest/public/avm/avm_gas.d.ts +0 -44
- package/dest/public/avm/avm_gas.d.ts.map +0 -1
- package/dest/public/avm/avm_gas.js +0 -195
- package/dest/public/avm/avm_machine_state.d.ts +0 -97
- package/dest/public/avm/avm_machine_state.d.ts.map +0 -1
- package/dest/public/avm/avm_machine_state.js +0 -109
- package/dest/public/avm/avm_memory_types.d.ts +0 -275
- package/dest/public/avm/avm_memory_types.d.ts.map +0 -1
- package/dest/public/avm/avm_memory_types.js +0 -351
- package/dest/public/avm/avm_simulator.d.ts +0 -39
- package/dest/public/avm/avm_simulator.d.ts.map +0 -1
- package/dest/public/avm/avm_simulator.js +0 -190
- package/dest/public/avm/avm_simulator_interface.d.ts +0 -9
- package/dest/public/avm/avm_simulator_interface.d.ts.map +0 -1
- package/dest/public/avm/avm_simulator_interface.js +0 -3
- package/dest/public/avm/errors.d.ts +0 -98
- package/dest/public/avm/errors.d.ts.map +0 -1
- package/dest/public/avm/errors.js +0 -129
- package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +0 -22
- package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +0 -1
- package/dest/public/avm/fixtures/avm_simulation_tester.js +0 -74
- package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +0 -1
- package/dest/public/avm/fixtures/initializers.d.ts +0 -43
- package/dest/public/avm/fixtures/initializers.d.ts.map +0 -1
- package/dest/public/avm/fixtures/initializers.js +0 -42
- package/dest/public/avm/fixtures/utils.d.ts.map +0 -1
- package/dest/public/avm/index.d.ts +0 -2
- package/dest/public/avm/index.d.ts.map +0 -1
- package/dest/public/avm/index.js +0 -1
- package/dest/public/avm/opcodes/accrued_substate.d.ts +0 -75
- package/dest/public/avm/opcodes/accrued_substate.d.ts.map +0 -1
- package/dest/public/avm/opcodes/accrued_substate.js +0 -255
- package/dest/public/avm/opcodes/addressing_mode.d.ts +0 -31
- package/dest/public/avm/opcodes/addressing_mode.d.ts.map +0 -1
- package/dest/public/avm/opcodes/addressing_mode.js +0 -94
- package/dest/public/avm/opcodes/arithmetic.d.ts +0 -47
- package/dest/public/avm/opcodes/arithmetic.d.ts.map +0 -1
- package/dest/public/avm/opcodes/arithmetic.js +0 -87
- package/dest/public/avm/opcodes/bitwise.d.ts +0 -42
- package/dest/public/avm/opcodes/bitwise.d.ts.map +0 -1
- package/dest/public/avm/opcodes/bitwise.js +0 -99
- package/dest/public/avm/opcodes/comparators.d.ts +0 -25
- package/dest/public/avm/opcodes/comparators.d.ts.map +0 -1
- package/dest/public/avm/opcodes/comparators.js +0 -43
- package/dest/public/avm/opcodes/contract.d.ts +0 -20
- package/dest/public/avm/opcodes/contract.d.ts.map +0 -1
- package/dest/public/avm/opcodes/contract.js +0 -65
- package/dest/public/avm/opcodes/control_flow.d.ts +0 -41
- package/dest/public/avm/opcodes/control_flow.d.ts.map +0 -1
- package/dest/public/avm/opcodes/control_flow.js +0 -107
- package/dest/public/avm/opcodes/conversion.d.ts +0 -18
- package/dest/public/avm/opcodes/conversion.d.ts.map +0 -1
- package/dest/public/avm/opcodes/conversion.js +0 -333
- package/dest/public/avm/opcodes/ec_add.d.ts +0 -19
- package/dest/public/avm/opcodes/ec_add.d.ts.map +0 -1
- package/dest/public/avm/opcodes/ec_add.js +0 -84
- package/dest/public/avm/opcodes/environment_getters.d.ts +0 -28
- package/dest/public/avm/opcodes/environment_getters.d.ts.map +0 -1
- package/dest/public/avm/opcodes/environment_getters.js +0 -77
- package/dest/public/avm/opcodes/external_calls.d.ts +0 -59
- package/dest/public/avm/opcodes/external_calls.d.ts.map +0 -1
- package/dest/public/avm/opcodes/external_calls.js +0 -209
- package/dest/public/avm/opcodes/hashing.d.ts +0 -36
- package/dest/public/avm/opcodes/hashing.d.ts.map +0 -1
- package/dest/public/avm/opcodes/hashing.js +0 -114
- package/dest/public/avm/opcodes/index.d.ts +0 -16
- package/dest/public/avm/opcodes/index.d.ts.map +0 -1
- package/dest/public/avm/opcodes/index.js +0 -15
- package/dest/public/avm/opcodes/instruction.d.ts +0 -74
- package/dest/public/avm/opcodes/instruction.d.ts.map +0 -1
- package/dest/public/avm/opcodes/instruction.js +0 -95
- package/dest/public/avm/opcodes/instruction_impl.d.ts +0 -19
- package/dest/public/avm/opcodes/instruction_impl.d.ts.map +0 -1
- package/dest/public/avm/opcodes/instruction_impl.js +0 -30
- package/dest/public/avm/opcodes/memory.d.ts +0 -74
- package/dest/public/avm/opcodes/memory.d.ts.map +0 -1
- package/dest/public/avm/opcodes/memory.js +0 -257
- package/dest/public/avm/opcodes/misc.d.ts +0 -18
- package/dest/public/avm/opcodes/misc.d.ts.map +0 -1
- package/dest/public/avm/opcodes/misc.js +0 -73
- package/dest/public/avm/opcodes/storage.d.ts +0 -24
- package/dest/public/avm/opcodes/storage.d.ts.map +0 -1
- package/dest/public/avm/opcodes/storage.js +0 -68
- package/dest/public/avm/revert_reason.d.ts +0 -18
- package/dest/public/avm/revert_reason.d.ts.map +0 -1
- package/dest/public/avm/revert_reason.js +0 -38
- package/dest/public/avm/serialization/buffer_cursor.d.ts +0 -26
- package/dest/public/avm/serialization/buffer_cursor.d.ts.map +0 -1
- package/dest/public/avm/serialization/buffer_cursor.js +0 -99
- package/dest/public/avm/serialization/bytecode_serialization.d.ts +0 -17
- package/dest/public/avm/serialization/bytecode_serialization.d.ts.map +0 -1
- package/dest/public/avm/serialization/bytecode_serialization.js +0 -333
- package/dest/public/avm/serialization/instruction_serialization.d.ts +0 -114
- package/dest/public/avm/serialization/instruction_serialization.d.ts.map +0 -1
- package/dest/public/avm/serialization/instruction_serialization.js +0 -261
- package/dest/public/avm/test_utils.d.ts +0 -15
- package/dest/public/avm/test_utils.d.ts.map +0 -1
- package/dest/public/avm/test_utils.js +0 -44
- package/dest/public/debug_fn_name.d.ts +0 -5
- package/dest/public/debug_fn_name.d.ts.map +0 -1
- package/dest/public/debug_fn_name.js +0 -9
- package/dest/public/fixtures/custom_bytecode_tests.d.ts +0 -9
- package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +0 -1
- package/dest/public/fixtures/custom_bytecode_tests.js +0 -109
- package/dest/public/fixtures/minimal_public_tx.d.ts +0 -10
- package/dest/public/fixtures/minimal_public_tx.d.ts.map +0 -1
- package/dest/public/fixtures/minimal_public_tx.js +0 -29
- package/dest/public/hinting_db_sources.d.ts +0 -70
- package/dest/public/hinting_db_sources.d.ts.map +0 -1
- package/dest/public/hinting_db_sources.js +0 -297
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +0 -41
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +0 -1
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +0 -89
- package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +0 -24
- package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts.map +0 -1
- package/dest/public/public_tx_simulator/measured_public_tx_simulator.js +0 -51
- package/dest/public/public_tx_simulator/public_tx_context.d.ts +0 -127
- package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +0 -1
- package/dest/public/public_tx_simulator/public_tx_context.js +0 -292
- package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts +0 -21
- package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts.map +0 -1
- package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.js +0 -39
- package/dest/public/side_effect_trace.d.ts +0 -87
- package/dest/public/side_effect_trace.d.ts.map +0 -1
- package/dest/public/side_effect_trace.js +0 -199
- package/dest/public/side_effect_trace_interface.d.ts +0 -23
- package/dest/public/side_effect_trace_interface.d.ts.map +0 -1
- package/dest/public/side_effect_trace_interface.js +0 -1
- package/dest/public/state_manager/index.d.ts +0 -2
- package/dest/public/state_manager/index.d.ts.map +0 -1
- package/dest/public/state_manager/index.js +0 -1
- package/dest/public/state_manager/nullifiers.d.ts +0 -61
- package/dest/public/state_manager/nullifiers.d.ts.map +0 -1
- package/dest/public/state_manager/nullifiers.js +0 -92
- package/dest/public/state_manager/public_storage.d.ts +0 -66
- package/dest/public/state_manager/public_storage.d.ts.map +0 -1
- package/dest/public/state_manager/public_storage.js +0 -145
- package/dest/public/state_manager/state_manager.d.ts +0 -166
- package/dest/public/state_manager/state_manager.d.ts.map +0 -1
- package/dest/public/state_manager/state_manager.js +0 -391
- 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/avm/avm_context.ts +0 -61
- package/src/public/avm/avm_contract_call_result.ts +0 -67
- package/src/public/avm/avm_execution_environment.ts +0 -48
- package/src/public/avm/avm_gas.ts +0 -183
- package/src/public/avm/avm_machine_state.ts +0 -169
- package/src/public/avm/avm_memory_types.ts +0 -436
- package/src/public/avm/avm_simulator.ts +0 -274
- package/src/public/avm/avm_simulator_interface.ts +0 -8
- package/src/public/avm/errors.ts +0 -163
- package/src/public/avm/fixtures/avm_simulation_tester.ts +0 -108
- package/src/public/avm/fixtures/initializers.ts +0 -104
- package/src/public/avm/index.ts +0 -1
- package/src/public/avm/opcodes/accrued_substate.ts +0 -288
- package/src/public/avm/opcodes/addressing_mode.ts +0 -111
- package/src/public/avm/opcodes/arithmetic.ts +0 -117
- package/src/public/avm/opcodes/bitwise.ts +0 -113
- package/src/public/avm/opcodes/comparators.ts +0 -55
- package/src/public/avm/opcodes/contract.ts +0 -75
- package/src/public/avm/opcodes/control_flow.ts +0 -123
- package/src/public/avm/opcodes/conversion.ts +0 -104
- package/src/public/avm/opcodes/ec_add.ts +0 -96
- package/src/public/avm/opcodes/environment_getters.ts +0 -87
- package/src/public/avm/opcodes/external_calls.ts +0 -260
- package/src/public/avm/opcodes/hashing.ts +0 -145
- package/src/public/avm/opcodes/index.ts +0 -15
- package/src/public/avm/opcodes/instruction.ts +0 -136
- package/src/public/avm/opcodes/instruction_impl.ts +0 -36
- package/src/public/avm/opcodes/memory.ts +0 -293
- package/src/public/avm/opcodes/misc.ts +0 -102
- package/src/public/avm/opcodes/storage.ts +0 -87
- package/src/public/avm/revert_reason.ts +0 -55
- package/src/public/avm/serialization/buffer_cursor.ts +0 -118
- package/src/public/avm/serialization/bytecode_serialization.ts +0 -204
- package/src/public/avm/serialization/instruction_serialization.ts +0 -249
- package/src/public/avm/test_utils.ts +0 -64
- package/src/public/debug_fn_name.ts +0 -18
- package/src/public/fixtures/custom_bytecode_tests.ts +0 -135
- package/src/public/fixtures/minimal_public_tx.ts +0 -36
- package/src/public/hinting_db_sources.ts +0 -505
- package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +0 -128
- package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +0 -109
- package/src/public/public_tx_simulator/public_tx_context.ts +0 -471
- package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +0 -63
- package/src/public/side_effect_trace.ts +0 -290
- package/src/public/side_effect_trace_interface.ts +0 -28
- package/src/public/state_manager/index.ts +0 -1
- package/src/public/state_manager/nullifiers.ts +0 -103
- package/src/public/state_manager/public_storage.ts +0 -174
- package/src/public/state_manager/state_manager.ts +0 -560
- package/src/public/tx_contract_cache.ts +0 -69
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { createLogger } from '@aztec/foundation/log';
|
|
2
|
+
import { TestDateProvider } from '@aztec/foundation/timer';
|
|
3
|
+
import { PublicSimulatorConfig } from '@aztec/stdlib/avm';
|
|
4
|
+
import { GasFees } from '@aztec/stdlib/gas';
|
|
5
|
+
import { GlobalVariables } from '@aztec/stdlib/tx';
|
|
6
|
+
import { getTelemetryClient } from '@aztec/telemetry-client';
|
|
7
|
+
import { NativeWorldStateService } from '@aztec/world-state';
|
|
8
|
+
|
|
9
|
+
import { AvmSimulatorPool } from '../avm_simulator_pool.js';
|
|
10
|
+
import { PublicContractsDB } from '../public_db_sources.js';
|
|
11
|
+
import { GuardedMerkleTreeOperations } from '../public_processor/guarded_merkle_tree.js';
|
|
12
|
+
import { PublicProcessor } from '../public_processor/public_processor.js';
|
|
13
|
+
import { PublicTxSimulator } from '../public_tx_simulator/public_tx_simulator.js';
|
|
14
|
+
import { PublicTxSimulationTester } from './public_tx_simulation_tester.js';
|
|
15
|
+
import { SimpleContractDataSource } from './simple_contract_data_source.js';
|
|
16
|
+
|
|
17
|
+
/** Options for {@link PublicProcessorTestEnv.create}. */
|
|
18
|
+
export interface PublicProcessorTestEnvOptions {
|
|
19
|
+
/** Global variables shared by the processor and the tester. Defaults to empty with nonzero gas fees. */
|
|
20
|
+
globals?: GlobalVariables;
|
|
21
|
+
/** Simulator config for the processor's PublicTxSimulator. */
|
|
22
|
+
config?: Partial<PublicSimulatorConfig>;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function defaultGlobals(): GlobalVariables {
|
|
26
|
+
const globals = GlobalVariables.empty();
|
|
27
|
+
globals.gasFees = new GasFees(2, 3);
|
|
28
|
+
return globals;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const defaultConfig = PublicSimulatorConfig.from({
|
|
32
|
+
skipFeeEnforcement: false,
|
|
33
|
+
collectDebugLogs: true,
|
|
34
|
+
collectHints: false,
|
|
35
|
+
collectStatistics: false,
|
|
36
|
+
collectCallMetadata: true,
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Bundles the real-AVM wiring shared by public-processor app tests: a live WSDB world state, a CDB IPC
|
|
41
|
+
* server, a spawned AVM simulator, a {@link PublicProcessor} backed by all three, and a setup-only
|
|
42
|
+
* {@link PublicTxSimulationTester} sharing the same fork and contract data source for building txs and
|
|
43
|
+
* seeding balances. Own it with `await using`, or call {@link Symbol.asyncDispose} from `afterEach`.
|
|
44
|
+
*/
|
|
45
|
+
export class PublicProcessorTestEnv implements AsyncDisposable {
|
|
46
|
+
private constructor(
|
|
47
|
+
public readonly processor: PublicProcessor,
|
|
48
|
+
public readonly tester: PublicTxSimulationTester,
|
|
49
|
+
public readonly contractsDB: PublicContractsDB,
|
|
50
|
+
public readonly globals: GlobalVariables,
|
|
51
|
+
private readonly worldStateService: NativeWorldStateService,
|
|
52
|
+
private readonly avmSimulator: AvmSimulatorPool,
|
|
53
|
+
) {}
|
|
54
|
+
|
|
55
|
+
static async create(opts: PublicProcessorTestEnvOptions = {}): Promise<PublicProcessorTestEnv> {
|
|
56
|
+
const globals = opts.globals ?? defaultGlobals();
|
|
57
|
+
const config = opts.config ? PublicSimulatorConfig.from({ ...defaultConfig, ...opts.config }) : defaultConfig;
|
|
58
|
+
|
|
59
|
+
const contractDataSource = new SimpleContractDataSource();
|
|
60
|
+
const worldStateService = await NativeWorldStateService.tmp();
|
|
61
|
+
const merkleTrees = await worldStateService.fork();
|
|
62
|
+
const contractsDB = new PublicContractsDB(contractDataSource);
|
|
63
|
+
|
|
64
|
+
const forkId = merkleTrees.getRevision().forkId;
|
|
65
|
+
const avmSimulator = await AvmSimulatorPool.spawn({ wsdbIpcPath: worldStateService.getIpcPath() });
|
|
66
|
+
|
|
67
|
+
const simulator = new PublicTxSimulator(avmSimulator, globals, contractsDB, forkId, config, undefined);
|
|
68
|
+
const processor = new PublicProcessor(
|
|
69
|
+
globals,
|
|
70
|
+
new GuardedMerkleTreeOperations(merkleTrees),
|
|
71
|
+
contractsDB,
|
|
72
|
+
simulator,
|
|
73
|
+
new TestDateProvider(),
|
|
74
|
+
getTelemetryClient(),
|
|
75
|
+
createLogger('simulator:public-processor'),
|
|
76
|
+
);
|
|
77
|
+
|
|
78
|
+
const tester = new PublicTxSimulationTester(merkleTrees, contractDataSource, globals);
|
|
79
|
+
|
|
80
|
+
return new PublicProcessorTestEnv(processor, tester, contractsDB, globals, worldStateService, avmSimulator);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
async [Symbol.asyncDispose](): Promise<void> {
|
|
84
|
+
await this.avmSimulator[Symbol.asyncDispose]();
|
|
85
|
+
await this.tester.close();
|
|
86
|
+
await this.worldStateService.close();
|
|
87
|
+
}
|
|
88
|
+
}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
import { PUBLIC_TX_L2_GAS_OVERHEAD, TX_DA_GAS_OVERHEAD } from '@aztec/constants';
|
|
1
2
|
import { asyncMap } from '@aztec/foundation/async-map';
|
|
2
|
-
import {
|
|
3
|
+
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
4
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
5
|
import { type ContractArtifact, encodeArguments } from '@aztec/stdlib/abi';
|
|
6
|
+
import { PublicSimulatorConfig, type PublicTxResult } from '@aztec/stdlib/avm';
|
|
4
7
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
5
8
|
import { Gas, GasFees } from '@aztec/stdlib/gas';
|
|
6
9
|
import type { MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
|
|
@@ -8,33 +11,54 @@ import { PublicCallRequest } from '@aztec/stdlib/kernel';
|
|
|
8
11
|
import { GlobalVariables, PublicCallRequestWithCalldata, type Tx } from '@aztec/stdlib/tx';
|
|
9
12
|
import { NativeWorldStateService } from '@aztec/world-state';
|
|
10
13
|
|
|
11
|
-
import { BaseAvmSimulationTester } from '../avm/
|
|
14
|
+
import { BaseAvmSimulationTester } from '../avm/testing/base_avm_simulation_tester.js';
|
|
12
15
|
import {
|
|
13
16
|
DEFAULT_BLOCK_NUMBER,
|
|
14
17
|
DEFAULT_TIMESTAMP,
|
|
15
18
|
getContractFunctionAbi,
|
|
16
19
|
getFunctionSelector,
|
|
17
|
-
} from '../avm/
|
|
20
|
+
} from '../avm/testing/utils.js';
|
|
21
|
+
import { AvmSimulatorPool } from '../avm_simulator_pool.js';
|
|
18
22
|
import { PublicContractsDB } from '../public_db_sources.js';
|
|
19
|
-
import {
|
|
20
|
-
import { MeasuredPublicTxSimulator } from '../public_tx_simulator/measured_public_tx_simulator.js';
|
|
21
|
-
import type { PublicTxResult } from '../public_tx_simulator/public_tx_simulator.js';
|
|
23
|
+
import { MeasuredPublicTxSimulator } from '../public_tx_simulator/public_tx_simulator.js';
|
|
22
24
|
import type { MeasuredPublicTxSimulatorInterface } from '../public_tx_simulator/public_tx_simulator_interface.js';
|
|
23
25
|
import { TestExecutorMetrics } from '../test_executor_metrics.js';
|
|
24
26
|
import { SimpleContractDataSource } from './simple_contract_data_source.js';
|
|
25
27
|
import { type TestPrivateInsertions, createTxForPublicCalls } from './utils.js';
|
|
26
28
|
|
|
27
29
|
const DEFAULT_GAS_FEES = new GasFees(2, 3);
|
|
30
|
+
const TEARDOWN_DA_GAS_LIMIT = 98_304;
|
|
31
|
+
const TEARDOWN_L2_GAS_LIMIT = 817_500;
|
|
28
32
|
|
|
29
33
|
export type TestEnqueuedCall = {
|
|
30
34
|
sender?: AztecAddress;
|
|
31
35
|
address: AztecAddress;
|
|
32
|
-
fnName
|
|
36
|
+
fnName?: string;
|
|
33
37
|
args: any[];
|
|
34
38
|
isStaticCall?: boolean;
|
|
35
39
|
contractArtifact?: ContractArtifact;
|
|
36
40
|
};
|
|
37
41
|
|
|
42
|
+
const defaultConfig: PublicSimulatorConfig = PublicSimulatorConfig.from({
|
|
43
|
+
skipFeeEnforcement: false,
|
|
44
|
+
collectCallMetadata: true,
|
|
45
|
+
collectDebugLogs: true,
|
|
46
|
+
collectHints: false,
|
|
47
|
+
collectPublicInputs: false,
|
|
48
|
+
collectStatistics: false,
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Factory type for creating a MeasuredPublicTxSimulatorInterface.
|
|
53
|
+
*/
|
|
54
|
+
export type MeasuredSimulatorFactory = (
|
|
55
|
+
merkleTree: MerkleTreeWriteOperations,
|
|
56
|
+
contractsDB: PublicContractsDB,
|
|
57
|
+
globals: GlobalVariables,
|
|
58
|
+
metrics: TestExecutorMetrics,
|
|
59
|
+
config: PublicSimulatorConfig,
|
|
60
|
+
) => MeasuredPublicTxSimulatorInterface;
|
|
61
|
+
|
|
38
62
|
/**
|
|
39
63
|
* A test class that extends the BaseAvmSimulationTester to enable real-app testing of the PublicTxSimulator.
|
|
40
64
|
* It provides an interface for simulating one transaction at a time and maintains state between subsequent
|
|
@@ -42,38 +66,53 @@ export type TestEnqueuedCall = {
|
|
|
42
66
|
*/
|
|
43
67
|
export class PublicTxSimulationTester extends BaseAvmSimulationTester {
|
|
44
68
|
protected txCount: number = 0;
|
|
45
|
-
private simulator: MeasuredPublicTxSimulatorInterface;
|
|
69
|
+
private simulator: MeasuredPublicTxSimulatorInterface | undefined;
|
|
46
70
|
private metricsPrefix?: string;
|
|
71
|
+
protected avmSimulator?: AvmSimulatorPool;
|
|
47
72
|
|
|
48
73
|
constructor(
|
|
49
74
|
merkleTree: MerkleTreeWriteOperations,
|
|
50
75
|
contractDataSource: SimpleContractDataSource,
|
|
51
76
|
globals: GlobalVariables = defaultGlobals(),
|
|
52
77
|
private metrics: TestExecutorMetrics = new TestExecutorMetrics(),
|
|
53
|
-
|
|
78
|
+
simulatorFactory?: MeasuredSimulatorFactory,
|
|
79
|
+
config: PublicSimulatorConfig = defaultConfig,
|
|
54
80
|
) {
|
|
55
81
|
super(contractDataSource, merkleTree);
|
|
56
82
|
|
|
57
83
|
const contractsDB = new PublicContractsDB(contractDataSource);
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
: new MeasuredPublicTxSimulator(merkleTree, contractsDB, globals, this.metrics, config);
|
|
84
|
+
if (simulatorFactory) {
|
|
85
|
+
this.simulator = simulatorFactory(merkleTree, contractsDB, globals, this.metrics, config);
|
|
86
|
+
} else {
|
|
87
|
+
// No simulator — this tester can only be used for setup (setFeePayerBalance, createTx, etc.)
|
|
88
|
+
// To simulate, use PublicTxSimulationTester.create() or pass a simulatorFactory.
|
|
89
|
+
this.simulator = undefined;
|
|
90
|
+
}
|
|
66
91
|
}
|
|
67
92
|
|
|
68
93
|
public static async create(
|
|
69
94
|
worldStateService: NativeWorldStateService, // make sure to close this later
|
|
70
95
|
globals: GlobalVariables = defaultGlobals(),
|
|
71
96
|
metrics: TestExecutorMetrics = new TestExecutorMetrics(),
|
|
72
|
-
|
|
97
|
+
config: PublicSimulatorConfig = defaultConfig,
|
|
73
98
|
): Promise<PublicTxSimulationTester> {
|
|
74
99
|
const contractDataSource = new SimpleContractDataSource();
|
|
75
100
|
const merkleTree = await worldStateService.fork();
|
|
76
|
-
|
|
101
|
+
|
|
102
|
+
const avmSimulator = await AvmSimulatorPool.spawn({ wsdbIpcPath: worldStateService.getIpcPath() });
|
|
103
|
+
const simulatorFactory: MeasuredSimulatorFactory = (mt, cdb, g, m, c) =>
|
|
104
|
+
new MeasuredPublicTxSimulator(avmSimulator, g, cdb, mt.getRevision().forkId, m, c, undefined);
|
|
105
|
+
|
|
106
|
+
const tester = new PublicTxSimulationTester(
|
|
107
|
+
merkleTree,
|
|
108
|
+
contractDataSource,
|
|
109
|
+
globals,
|
|
110
|
+
metrics,
|
|
111
|
+
simulatorFactory,
|
|
112
|
+
config,
|
|
113
|
+
);
|
|
114
|
+
tester.avmSimulator = avmSimulator;
|
|
115
|
+
return tester;
|
|
77
116
|
}
|
|
78
117
|
|
|
79
118
|
public setMetricsPrefix(prefix: string) {
|
|
@@ -88,6 +127,7 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
|
|
|
88
127
|
feePayer: AztecAddress = sender,
|
|
89
128
|
/* need some unique first nullifier for note-nonce computations */
|
|
90
129
|
privateInsertions: TestPrivateInsertions = { nonRevertible: { nullifiers: [new Fr(420000 + this.txCount)] } },
|
|
130
|
+
gasLimits?: Gas,
|
|
91
131
|
): Promise<Tx> {
|
|
92
132
|
const setupCallRequests = await asyncMap(setupCalls, call =>
|
|
93
133
|
this.#createPubicCallRequestForCall(call, call.sender ?? sender),
|
|
@@ -106,8 +146,11 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
|
|
|
106
146
|
appCallRequests,
|
|
107
147
|
teardownCallRequest,
|
|
108
148
|
feePayer,
|
|
109
|
-
/*gasUsedByPrivate*/
|
|
149
|
+
/*gasUsedByPrivate*/ teardownCall
|
|
150
|
+
? new Gas(TEARDOWN_DA_GAS_LIMIT + TX_DA_GAS_OVERHEAD, TEARDOWN_L2_GAS_LIMIT + PUBLIC_TX_L2_GAS_OVERHEAD)
|
|
151
|
+
: new Gas(TX_DA_GAS_OVERHEAD, PUBLIC_TX_L2_GAS_OVERHEAD),
|
|
110
152
|
defaultGlobals(),
|
|
153
|
+
gasLimits,
|
|
111
154
|
);
|
|
112
155
|
}
|
|
113
156
|
|
|
@@ -120,14 +163,20 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
|
|
|
120
163
|
/* need some unique first nullifier for note-nonce computations */
|
|
121
164
|
privateInsertions?: TestPrivateInsertions,
|
|
122
165
|
txLabel: string = 'unlabeledTx',
|
|
166
|
+
gasLimits?: Gas,
|
|
123
167
|
): Promise<PublicTxResult> {
|
|
124
|
-
const tx = await this.createTx(sender, setupCalls, appCalls, teardownCall, feePayer, privateInsertions);
|
|
168
|
+
const tx = await this.createTx(sender, setupCalls, appCalls, teardownCall, feePayer, privateInsertions, gasLimits);
|
|
125
169
|
|
|
126
170
|
await this.setFeePayerBalance(feePayer);
|
|
127
171
|
|
|
128
172
|
const txLabelWithCount = `${txLabel}/${this.txCount - 1}`;
|
|
129
173
|
const fullTxLabel = this.metricsPrefix ? `${this.metricsPrefix}/${txLabelWithCount}` : txLabelWithCount;
|
|
130
174
|
|
|
175
|
+
if (!this.simulator) {
|
|
176
|
+
throw new Error(
|
|
177
|
+
'No simulator configured. Pass a simulatorFactory to the constructor or use PublicTxSimulationTester.create()',
|
|
178
|
+
);
|
|
179
|
+
}
|
|
131
180
|
const avmResult = await this.simulator.simulate(tx, fullTxLabel);
|
|
132
181
|
|
|
133
182
|
// Something like this is often useful for debugging:
|
|
@@ -194,6 +243,34 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
|
|
|
194
243
|
this.metrics.prettyPrint();
|
|
195
244
|
}
|
|
196
245
|
|
|
246
|
+
/** Clean up IPC resources (AVM simulator pool and merkle tree fork) created by create(). */
|
|
247
|
+
public async close(): Promise<void> {
|
|
248
|
+
await this.avmSimulator?.[Symbol.asyncDispose]();
|
|
249
|
+
// Close the merkle tree fork to release IPC resources before the wsdb process is killed.
|
|
250
|
+
if (this.merkleTrees?.close) {
|
|
251
|
+
await this.merkleTrees.close().catch(() => {});
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
* Cancel the current simulation if one is in progress.
|
|
257
|
+
* This signals the underlying simulator to stop at the next safe point.
|
|
258
|
+
* Safe to call even if no simulation is in progress.
|
|
259
|
+
*
|
|
260
|
+
* @param waitTimeoutMs - If provided, wait up to this many ms for the simulation to actually stop.
|
|
261
|
+
*/
|
|
262
|
+
public async cancel(waitTimeoutMs?: number): Promise<void> {
|
|
263
|
+
await this.simulator?.cancel?.(waitTimeoutMs);
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
/**
|
|
267
|
+
* Get the underlying simulator for advanced test scenarios.
|
|
268
|
+
* Use this when you need direct control over simulation (e.g., for testing cancellation).
|
|
269
|
+
*/
|
|
270
|
+
public getSimulator(): MeasuredPublicTxSimulatorInterface | undefined {
|
|
271
|
+
return this.simulator;
|
|
272
|
+
}
|
|
273
|
+
|
|
197
274
|
async #createPubicCallRequestForCall(
|
|
198
275
|
call: TestEnqueuedCall,
|
|
199
276
|
sender: AztecAddress,
|
|
@@ -204,10 +281,24 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
|
|
|
204
281
|
throw new Error(`Contract artifact not found for address: ${address}`);
|
|
205
282
|
}
|
|
206
283
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
284
|
+
let calldata: Fr[] = [];
|
|
285
|
+
if (!call.fnName) {
|
|
286
|
+
this.logger.debug(
|
|
287
|
+
`No function name specified for call to contract ${call.address.toString()}. Assuming this is a custom bytecode with no public_dispatch function.`,
|
|
288
|
+
);
|
|
289
|
+
this.logger.debug(`Not using ABI to encode arguments. Not prepending fn selector to calldata.`);
|
|
290
|
+
try {
|
|
291
|
+
calldata = call.args.map(arg => new Fr(arg));
|
|
292
|
+
} catch (error) {
|
|
293
|
+
this.logger.warn(`Tried assuming that all arguments are Field-like. Failed. Error: ${error}`);
|
|
294
|
+
throw error;
|
|
295
|
+
}
|
|
296
|
+
} else {
|
|
297
|
+
const fnSelector = await getFunctionSelector(call.fnName, contractArtifact);
|
|
298
|
+
const fnAbi = getContractFunctionAbi(call.fnName, contractArtifact)!;
|
|
299
|
+
const encodedArgs = encodeArguments(fnAbi, call.args);
|
|
300
|
+
calldata = [fnSelector.toField(), ...encodedArgs];
|
|
301
|
+
}
|
|
211
302
|
const isStaticCall = call.isStaticCall ?? false;
|
|
212
303
|
const request = await PublicCallRequest.fromCalldata(sender, address, isStaticCall, calldata);
|
|
213
304
|
|
|
@@ -219,6 +310,6 @@ export function defaultGlobals() {
|
|
|
219
310
|
const globals = GlobalVariables.empty();
|
|
220
311
|
globals.timestamp = DEFAULT_TIMESTAMP;
|
|
221
312
|
globals.gasFees = DEFAULT_GAS_FEES; // apply some nonzero default gas fees
|
|
222
|
-
globals.blockNumber = DEFAULT_BLOCK_NUMBER;
|
|
313
|
+
globals.blockNumber = BlockNumber(DEFAULT_BLOCK_NUMBER);
|
|
223
314
|
return globals;
|
|
224
315
|
}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { BlockNumber } from '@aztec/foundation/branded-types';
|
|
2
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
3
|
import { createLogger } from '@aztec/foundation/log';
|
|
3
4
|
import type { ContractArtifact, FunctionSelector } from '@aztec/stdlib/abi';
|
|
4
5
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
5
6
|
import type { ContractClassPublic, ContractDataSource, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
6
7
|
|
|
7
|
-
import { getFunctionSelector } from '../avm/
|
|
8
|
+
import { getFunctionSelector } from '../avm/testing/utils.js';
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* This class is used during public/avm testing to function as a database of
|
|
@@ -59,7 +60,7 @@ export class SimpleContractDataSource implements ContractDataSource {
|
|
|
59
60
|
|
|
60
61
|
/////////////////////////////////////////////////////////////
|
|
61
62
|
// ContractDataSource function implementations
|
|
62
|
-
getBlockNumber(): Promise<
|
|
63
|
+
getBlockNumber(): Promise<BlockNumber> {
|
|
63
64
|
throw new Error('Method not implemented.');
|
|
64
65
|
}
|
|
65
66
|
|
|
@@ -90,19 +91,17 @@ export class SimpleContractDataSource implements ContractDataSource {
|
|
|
90
91
|
return this.contractArtifacts.get(contractInstance!.currentContractClassId.toString());
|
|
91
92
|
}
|
|
92
93
|
|
|
93
|
-
async getDebugFunctionName(address: AztecAddress, selector: FunctionSelector): Promise<string> {
|
|
94
|
+
async getDebugFunctionName(address: AztecAddress, selector: FunctionSelector): Promise<string | undefined> {
|
|
94
95
|
const contractInstance = await this.getContract(address);
|
|
95
96
|
if (!contractInstance) {
|
|
96
|
-
this.logger.warn(
|
|
97
|
-
|
|
98
|
-
);
|
|
99
|
-
return `selector:${selector.toString()}`;
|
|
97
|
+
this.logger.warn(`Couldn't get fn name for debugging. Contract not in tester's ContractDataSource.`);
|
|
98
|
+
return undefined;
|
|
100
99
|
}
|
|
101
100
|
const key = `${contractInstance.currentContractClassId.toString()}:${selector.toString()}`;
|
|
102
101
|
const fnName = this.debugFunctionName.get(key);
|
|
103
102
|
if (!fnName) {
|
|
104
|
-
this.logger.warn(`Couldn't get fn name for debugging
|
|
105
|
-
return
|
|
103
|
+
this.logger.warn(`Couldn't get fn name for debugging...`);
|
|
104
|
+
return undefined;
|
|
106
105
|
}
|
|
107
106
|
return fnName;
|
|
108
107
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Fr } from '@aztec/foundation/
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
2
|
import type { Logger } from '@aztec/foundation/log';
|
|
3
3
|
import { Timer } from '@aztec/foundation/timer';
|
|
4
4
|
import type { ContractArtifact } from '@aztec/stdlib/abi';
|
|
@@ -7,17 +7,23 @@ import type { ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
|
7
7
|
|
|
8
8
|
import { PublicTxSimulationTester } from './public_tx_simulation_tester.js';
|
|
9
9
|
|
|
10
|
+
export type TokenTestOptions = {
|
|
11
|
+
/** Skip return value assertions in balance checks (useful for benchmarking with collectCallMetadata=false) */
|
|
12
|
+
skipReturnValueAssertions?: boolean;
|
|
13
|
+
};
|
|
14
|
+
|
|
10
15
|
export async function tokenTest(
|
|
11
16
|
tester: PublicTxSimulationTester,
|
|
12
17
|
logger: Logger,
|
|
13
18
|
tokenArtifact: ContractArtifact,
|
|
14
19
|
expectToBeTrue: (x: boolean) => void,
|
|
20
|
+
options: TokenTestOptions = {},
|
|
15
21
|
) {
|
|
16
22
|
const timer = new Timer();
|
|
17
23
|
|
|
18
|
-
const admin = AztecAddress.
|
|
19
|
-
const sender = AztecAddress.
|
|
20
|
-
const receiver = AztecAddress.
|
|
24
|
+
const admin = AztecAddress.fromNumberUnsafe(42);
|
|
25
|
+
const sender = AztecAddress.fromNumberUnsafe(111);
|
|
26
|
+
const receiver = AztecAddress.fromNumberUnsafe(222);
|
|
21
27
|
|
|
22
28
|
const token = await setUpToken(tester, tokenArtifact, admin, expectToBeTrue);
|
|
23
29
|
|
|
@@ -36,7 +42,7 @@ export async function tokenTest(
|
|
|
36
42
|
],
|
|
37
43
|
);
|
|
38
44
|
expectToBeTrue(mintResult.revertCode.isOK());
|
|
39
|
-
await checkBalance(tester, token, sender, sender, mintAmount, expectToBeTrue);
|
|
45
|
+
await checkBalance(tester, token, sender, sender, mintAmount, expectToBeTrue, options);
|
|
40
46
|
|
|
41
47
|
const authwitNonce = new Fr(0);
|
|
42
48
|
const transferAmount = 50n;
|
|
@@ -54,8 +60,8 @@ export async function tokenTest(
|
|
|
54
60
|
],
|
|
55
61
|
);
|
|
56
62
|
expectToBeTrue(transferResult.revertCode.isOK());
|
|
57
|
-
await checkBalance(tester, token, sender,
|
|
58
|
-
await checkBalance(tester, token, sender, receiver, transferAmount, expectToBeTrue);
|
|
63
|
+
await checkBalance(tester, token, sender, sender, mintAmount - transferAmount, expectToBeTrue, options);
|
|
64
|
+
await checkBalance(tester, token, sender, receiver, transferAmount, expectToBeTrue, options);
|
|
59
65
|
|
|
60
66
|
// EXECUTE! This means that if using AvmProvingTester subclass, it will PROVE the transaction!
|
|
61
67
|
const burnResult = await tester.executeTxWithLabel(
|
|
@@ -71,7 +77,7 @@ export async function tokenTest(
|
|
|
71
77
|
],
|
|
72
78
|
);
|
|
73
79
|
expectToBeTrue(burnResult.revertCode.isOK());
|
|
74
|
-
await checkBalance(tester, token, sender, receiver, 0n, expectToBeTrue);
|
|
80
|
+
await checkBalance(tester, token, sender, receiver, 0n, expectToBeTrue, options);
|
|
75
81
|
|
|
76
82
|
logger.info(`TokenContract test took ${timer.ms()}ms\n`);
|
|
77
83
|
}
|
|
@@ -116,6 +122,7 @@ async function checkBalance(
|
|
|
116
122
|
account: AztecAddress,
|
|
117
123
|
expectedBalance: bigint,
|
|
118
124
|
expectToBeTrue: (x: boolean) => void,
|
|
125
|
+
options: TokenTestOptions = {},
|
|
119
126
|
) {
|
|
120
127
|
// Strictly simulate this! No need to "execute" (aka prove if using AvmProvingTester subclass).
|
|
121
128
|
const balResult = await tester.simulateTxWithLabel(
|
|
@@ -132,9 +139,10 @@ async function checkBalance(
|
|
|
132
139
|
],
|
|
133
140
|
);
|
|
134
141
|
expectToBeTrue(balResult.revertCode.isOK());
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
142
|
+
if (!options.skipReturnValueAssertions) {
|
|
143
|
+
// should be 1 call with 1 return value that is expectedBalance
|
|
144
|
+
const appLogicReturnValues = balResult.getAppLogicReturnValues();
|
|
145
|
+
expectToBeTrue(appLogicReturnValues.length === 1);
|
|
146
|
+
expectToBeTrue(appLogicReturnValues[0].values?.[0]?.toBigInt() === expectedBalance);
|
|
147
|
+
}
|
|
140
148
|
}
|
|
@@ -2,14 +2,12 @@ import {
|
|
|
2
2
|
CONTRACT_CLASS_PUBLISHED_MAGIC_VALUE,
|
|
3
3
|
CONTRACT_CLASS_REGISTRY_CONTRACT_ADDRESS,
|
|
4
4
|
CONTRACT_INSTANCE_REGISTRY_CONTRACT_ADDRESS,
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
DEFAULT_TEARDOWN_DA_GAS_LIMIT,
|
|
8
|
-
DEFAULT_TEARDOWN_L2_GAS_LIMIT,
|
|
5
|
+
MAX_PROCESSABLE_DA_GAS_PER_CHECKPOINT,
|
|
6
|
+
MAX_PROCESSABLE_L2_GAS,
|
|
9
7
|
PRIVATE_LOG_SIZE_IN_FIELDS,
|
|
10
8
|
} from '@aztec/constants';
|
|
11
9
|
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
12
|
-
import { Fr } from '@aztec/foundation/
|
|
10
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
13
11
|
import { CONTRACT_INSTANCE_PUBLISHED_EVENT_TAG } from '@aztec/protocol-contracts';
|
|
14
12
|
import { bufferAsFields } from '@aztec/stdlib/abi';
|
|
15
13
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
@@ -38,6 +36,9 @@ import {
|
|
|
38
36
|
|
|
39
37
|
import { strict as assert } from 'assert';
|
|
40
38
|
|
|
39
|
+
const TEARDOWN_DA_GAS_LIMIT = 98_304;
|
|
40
|
+
const TEARDOWN_L2_GAS_LIMIT = 817_500;
|
|
41
|
+
|
|
41
42
|
export type TestPrivateInsertions = {
|
|
42
43
|
revertible?: {
|
|
43
44
|
nullifiers?: Fr[];
|
|
@@ -62,13 +63,14 @@ export async function createTxForPublicCalls(
|
|
|
62
63
|
feePayer = AztecAddress.zero(),
|
|
63
64
|
gasUsedByPrivate: Gas = Gas.empty(),
|
|
64
65
|
globals: GlobalVariables = GlobalVariables.empty(),
|
|
66
|
+
gasLimits?: Gas,
|
|
65
67
|
): Promise<Tx> {
|
|
66
68
|
assert(
|
|
67
69
|
setupCallRequests.length > 0 || appCallRequests.length > 0 || teardownCallRequest !== undefined,
|
|
68
70
|
"Can't create public tx with no enqueued calls",
|
|
69
71
|
);
|
|
70
72
|
// use max limits
|
|
71
|
-
|
|
73
|
+
gasLimits = gasLimits ?? new Gas(MAX_PROCESSABLE_DA_GAS_PER_CHECKPOINT, MAX_PROCESSABLE_L2_GAS);
|
|
72
74
|
|
|
73
75
|
const forPublic = PartialPrivateTailPublicInputsForPublic.empty();
|
|
74
76
|
|
|
@@ -127,21 +129,18 @@ export async function createTxForPublicCalls(
|
|
|
127
129
|
}
|
|
128
130
|
|
|
129
131
|
const maxFeesPerGas = feePayer.isZero() ? GasFees.empty() : new GasFees(10, 10);
|
|
130
|
-
const teardownGasLimits = teardownCallRequest
|
|
131
|
-
? new Gas(DEFAULT_TEARDOWN_DA_GAS_LIMIT, DEFAULT_TEARDOWN_L2_GAS_LIMIT)
|
|
132
|
-
: Gas.empty();
|
|
132
|
+
const teardownGasLimits = teardownCallRequest ? new Gas(TEARDOWN_DA_GAS_LIMIT, TEARDOWN_L2_GAS_LIMIT) : Gas.empty();
|
|
133
133
|
const gasSettings = new GasSettings(gasLimits, teardownGasLimits, maxFeesPerGas, GasFees.empty());
|
|
134
134
|
const txContext = new TxContext(Fr.zero(), Fr.zero(), gasSettings);
|
|
135
|
-
const header = BlockHeader.empty();
|
|
136
|
-
header.globalVariables = globals;
|
|
135
|
+
const header = BlockHeader.empty({ globalVariables: globals });
|
|
137
136
|
const constantData = new TxConstantData(header, txContext, Fr.zero(), Fr.zero());
|
|
138
|
-
const
|
|
137
|
+
const expirationTimestamp = 0n; // Not used in the simulator.
|
|
139
138
|
|
|
140
139
|
const txData = new PrivateKernelTailCircuitPublicInputs(
|
|
141
140
|
constantData,
|
|
142
141
|
/*gasUsed=*/ gasUsedByPrivate,
|
|
143
142
|
feePayer,
|
|
144
|
-
|
|
143
|
+
expirationTimestamp,
|
|
145
144
|
forPublic,
|
|
146
145
|
);
|
|
147
146
|
|
|
@@ -164,7 +163,7 @@ export async function createTxForPrivateOnly(
|
|
|
164
163
|
gasUsedByPrivate: Gas = new Gas(10, 10),
|
|
165
164
|
): Promise<Tx> {
|
|
166
165
|
// use max limits
|
|
167
|
-
const gasLimits = new Gas(
|
|
166
|
+
const gasLimits = new Gas(MAX_PROCESSABLE_DA_GAS_PER_CHECKPOINT, MAX_PROCESSABLE_L2_GAS);
|
|
168
167
|
|
|
169
168
|
const forRollup = PartialPrivateTailPublicInputsForRollup.empty();
|
|
170
169
|
|
|
@@ -172,13 +171,13 @@ export async function createTxForPrivateOnly(
|
|
|
172
171
|
const gasSettings = new GasSettings(gasLimits, Gas.empty(), maxFeesPerGas, GasFees.empty());
|
|
173
172
|
const txContext = new TxContext(Fr.zero(), Fr.zero(), gasSettings);
|
|
174
173
|
const constantData = new TxConstantData(BlockHeader.empty(), txContext, Fr.zero(), Fr.zero());
|
|
175
|
-
const
|
|
174
|
+
const expirationTimestamp = 0n; // Not used in the simulator.
|
|
176
175
|
|
|
177
176
|
const txData = new PrivateKernelTailCircuitPublicInputs(
|
|
178
177
|
constantData,
|
|
179
178
|
/*gasUsed=*/ gasUsedByPrivate,
|
|
180
179
|
feePayer,
|
|
181
|
-
|
|
180
|
+
expirationTimestamp,
|
|
182
181
|
/*forPublic=*/ undefined,
|
|
183
182
|
forRollup,
|
|
184
183
|
);
|
|
@@ -229,17 +228,15 @@ export async function addNewContractInstanceToTx(
|
|
|
229
228
|
contractInstance: ContractInstanceWithAddress,
|
|
230
229
|
skipNullifierInsertion = false,
|
|
231
230
|
) {
|
|
232
|
-
//
|
|
233
|
-
// is not broadcast in such private logs
|
|
231
|
+
// Only ivpk_m is broadcast as a point (x, y); the other five keys are hashes.
|
|
234
232
|
const publicKeysAsFields = [
|
|
235
|
-
contractInstance.publicKeys.
|
|
236
|
-
contractInstance.publicKeys.
|
|
237
|
-
contractInstance.publicKeys.
|
|
238
|
-
contractInstance.publicKeys.
|
|
239
|
-
contractInstance.publicKeys.
|
|
240
|
-
contractInstance.publicKeys.
|
|
241
|
-
contractInstance.publicKeys.
|
|
242
|
-
contractInstance.publicKeys.masterTaggingPublicKey.y,
|
|
233
|
+
contractInstance.publicKeys.npkMHash,
|
|
234
|
+
contractInstance.publicKeys.ivpkM.x,
|
|
235
|
+
contractInstance.publicKeys.ivpkM.y,
|
|
236
|
+
contractInstance.publicKeys.ovpkMHash,
|
|
237
|
+
contractInstance.publicKeys.tpkMHash,
|
|
238
|
+
contractInstance.publicKeys.mspkMHash,
|
|
239
|
+
contractInstance.publicKeys.fbpkMHash,
|
|
243
240
|
];
|
|
244
241
|
const logFields = [
|
|
245
242
|
CONTRACT_INSTANCE_PUBLISHED_EVENT_TAG,
|
|
@@ -248,6 +245,7 @@ export async function addNewContractInstanceToTx(
|
|
|
248
245
|
new Fr(contractInstance.salt),
|
|
249
246
|
contractInstance.currentContractClassId,
|
|
250
247
|
contractInstance.initializationHash,
|
|
248
|
+
contractInstance.immutablesHash,
|
|
251
249
|
...publicKeysAsFields,
|
|
252
250
|
contractInstance.deployer.toField(),
|
|
253
251
|
];
|
|
@@ -257,7 +255,7 @@ export async function addNewContractInstanceToTx(
|
|
|
257
255
|
);
|
|
258
256
|
|
|
259
257
|
const contractAddressNullifier = await siloNullifier(
|
|
260
|
-
AztecAddress.
|
|
258
|
+
AztecAddress.fromNumberUnsafe(CONTRACT_INSTANCE_REGISTRY_CONTRACT_ADDRESS),
|
|
261
259
|
contractInstance.address.toField(),
|
|
262
260
|
);
|
|
263
261
|
|