@aztec/simulator 0.0.1-commit.b655e406 → 0.0.1-commit.b6e433891
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 -1
- 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 +4 -4
- 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 +4 -3
- package/dest/private/circuit_recording/circuit_recorder.d.ts.map +1 -1
- package/dest/private/circuit_recording/circuit_recorder.js +23 -20
- package/dest/private/circuit_recording/file_circuit_recorder.d.ts +3 -2
- package/dest/private/circuit_recording/file_circuit_recorder.d.ts.map +1 -1
- package/dest/private/circuit_recording/file_circuit_recorder.js +2 -2
- 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_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/avm_context.d.ts +3 -3
- package/dest/public/avm/avm_context.d.ts.map +1 -1
- package/dest/public/avm/avm_contract_call_result.d.ts +6 -6
- package/dest/public/avm/avm_contract_call_result.d.ts.map +1 -1
- package/dest/public/avm/avm_contract_call_result.js +3 -3
- package/dest/public/avm/avm_execution_environment.d.ts +9 -8
- package/dest/public/avm/avm_execution_environment.d.ts.map +1 -1
- package/dest/public/avm/avm_execution_environment.js +5 -8
- package/dest/public/avm/avm_gas.d.ts +2 -2
- package/dest/public/avm/avm_gas.d.ts.map +1 -1
- package/dest/public/avm/avm_gas.js +3 -3
- package/dest/public/avm/avm_machine_state.d.ts +7 -6
- package/dest/public/avm/avm_machine_state.d.ts.map +1 -1
- package/dest/public/avm/avm_machine_state.js +3 -2
- package/dest/public/avm/avm_memory_types.d.ts +14 -14
- package/dest/public/avm/avm_memory_types.d.ts.map +1 -1
- package/dest/public/avm/avm_memory_types.js +4 -1
- package/dest/public/avm/avm_simulator.d.ts +5 -3
- package/dest/public/avm/avm_simulator.d.ts.map +1 -1
- package/dest/public/avm/avm_simulator.js +13 -11
- package/dest/public/avm/avm_simulator_interface.d.ts +1 -1
- package/dest/public/avm/calldata.d.ts +51 -0
- package/dest/public/avm/calldata.d.ts.map +1 -0
- package/dest/public/avm/calldata.js +63 -0
- package/dest/public/avm/errors.d.ts +8 -2
- package/dest/public/avm/errors.d.ts.map +1 -1
- package/dest/public/avm/errors.js +14 -2
- package/dest/public/avm/fixtures/account_proof_fetcher.d.ts +2 -0
- package/dest/public/avm/fixtures/account_proof_fetcher.d.ts.map +1 -0
- package/dest/public/avm/fixtures/account_proof_fetcher.js +152 -0
- package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +1 -1
- package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +1 -1
- package/dest/public/avm/fixtures/avm_simulation_tester.js +15 -5
- package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts +2 -2
- package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +1 -1
- package/dest/public/avm/fixtures/base_avm_simulation_tester.js +1 -1
- package/dest/public/avm/fixtures/initializers.d.ts +2 -3
- package/dest/public/avm/fixtures/initializers.d.ts.map +1 -1
- package/dest/public/avm/fixtures/initializers.js +8 -5
- package/dest/public/avm/fixtures/utils.d.ts +4 -3
- package/dest/public/avm/fixtures/utils.d.ts.map +1 -1
- package/dest/public/avm/fixtures/utils.js +3 -2
- package/dest/public/avm/index.d.ts +1 -1
- package/dest/public/avm/opcodes/accrued_substate.d.ts +17 -18
- package/dest/public/avm/opcodes/accrued_substate.d.ts.map +1 -1
- package/dest/public/avm/opcodes/accrued_substate.js +42 -43
- package/dest/public/avm/opcodes/addressing_mode.d.ts +1 -1
- package/dest/public/avm/opcodes/addressing_mode.d.ts.map +1 -1
- package/dest/public/avm/opcodes/addressing_mode.js +2 -2
- package/dest/public/avm/opcodes/arithmetic.d.ts +3 -1
- package/dest/public/avm/opcodes/arithmetic.d.ts.map +1 -1
- package/dest/public/avm/opcodes/arithmetic.js +12 -2
- package/dest/public/avm/opcodes/bitwise.d.ts +3 -3
- package/dest/public/avm/opcodes/bitwise.d.ts.map +1 -1
- package/dest/public/avm/opcodes/bitwise.js +5 -5
- package/dest/public/avm/opcodes/comparators.d.ts +1 -1
- package/dest/public/avm/opcodes/comparators.d.ts.map +1 -1
- package/dest/public/avm/opcodes/comparators.js +1 -1
- package/dest/public/avm/opcodes/contract.d.ts +3 -3
- package/dest/public/avm/opcodes/contract.d.ts.map +1 -1
- package/dest/public/avm/opcodes/contract.js +8 -8
- package/dest/public/avm/opcodes/control_flow.d.ts +3 -3
- package/dest/public/avm/opcodes/control_flow.d.ts.map +1 -1
- package/dest/public/avm/opcodes/control_flow.js +4 -4
- package/dest/public/avm/opcodes/conversion.d.ts +3 -3
- package/dest/public/avm/opcodes/conversion.d.ts.map +1 -1
- package/dest/public/avm/opcodes/conversion.js +4 -4
- package/dest/public/avm/opcodes/ec_add.d.ts +3 -3
- package/dest/public/avm/opcodes/ec_add.d.ts.map +1 -1
- package/dest/public/avm/opcodes/ec_add.js +17 -8
- package/dest/public/avm/opcodes/environment_getters.d.ts +5 -5
- package/dest/public/avm/opcodes/environment_getters.d.ts.map +1 -1
- package/dest/public/avm/opcodes/environment_getters.js +6 -6
- package/dest/public/avm/opcodes/external_calls.d.ts +9 -9
- package/dest/public/avm/opcodes/external_calls.d.ts.map +1 -1
- package/dest/public/avm/opcodes/external_calls.js +23 -22
- package/dest/public/avm/opcodes/hashing.d.ts +7 -7
- package/dest/public/avm/opcodes/hashing.d.ts.map +1 -1
- package/dest/public/avm/opcodes/hashing.js +21 -16
- package/dest/public/avm/opcodes/index.d.ts +1 -1
- package/dest/public/avm/opcodes/instruction.d.ts +2 -2
- package/dest/public/avm/opcodes/instruction.d.ts.map +1 -1
- package/dest/public/avm/opcodes/instruction_impl.d.ts +4 -4
- package/dest/public/avm/opcodes/instruction_impl.d.ts.map +1 -1
- package/dest/public/avm/opcodes/instruction_impl.js +4 -4
- package/dest/public/avm/opcodes/memory.d.ts +13 -13
- package/dest/public/avm/opcodes/memory.d.ts.map +1 -1
- package/dest/public/avm/opcodes/memory.js +26 -26
- package/dest/public/avm/opcodes/misc.d.ts +3 -3
- package/dest/public/avm/opcodes/misc.d.ts.map +1 -1
- package/dest/public/avm/opcodes/misc.js +8 -8
- package/dest/public/avm/opcodes/storage.d.ts +14 -13
- package/dest/public/avm/opcodes/storage.d.ts.map +1 -1
- package/dest/public/avm/opcodes/storage.js +34 -24
- package/dest/public/avm/revert_reason.d.ts +2 -2
- package/dest/public/avm/revert_reason.d.ts.map +1 -1
- package/dest/public/avm/revert_reason.js +3 -2
- package/dest/public/avm/serialization/buffer_cursor.d.ts +1 -1
- package/dest/public/avm/serialization/buffer_cursor.d.ts.map +1 -1
- package/dest/public/avm/serialization/bytecode_serialization.d.ts +1 -1
- package/dest/public/avm/serialization/bytecode_serialization.d.ts.map +1 -1
- package/dest/public/avm/serialization/bytecode_serialization.js +12 -9
- package/dest/public/avm/serialization/instruction_serialization.d.ts +2 -2
- package/dest/public/avm/serialization/instruction_serialization.d.ts.map +1 -1
- package/dest/public/avm/serialization/instruction_serialization.js +2 -2
- package/dest/public/avm/test_utils.d.ts +2 -2
- package/dest/public/avm/test_utils.d.ts.map +1 -1
- package/dest/public/avm/test_utils.js +1 -1
- package/dest/public/contracts_db_checkpoint.d.ts +16 -0
- package/dest/public/contracts_db_checkpoint.d.ts.map +1 -0
- package/dest/public/contracts_db_checkpoint.js +30 -0
- package/dest/public/db_interfaces.d.ts +14 -2
- package/dest/public/db_interfaces.d.ts.map +1 -1
- package/dest/public/debug_fn_name.d.ts +16 -3
- package/dest/public/debug_fn_name.d.ts.map +1 -1
- package/dest/public/debug_fn_name.js +31 -3
- 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 +4 -4
- 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 +5 -69
- 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/custom_bytecode_tests.d.ts +11 -8
- package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +1 -1
- package/dest/public/fixtures/custom_bytecode_tests.js +83 -18
- package/dest/public/fixtures/index.d.ts +4 -2
- package/dest/public/fixtures/index.d.ts.map +1 -1
- package/dest/public/fixtures/index.js +3 -1
- package/dest/public/fixtures/minimal_public_tx.d.ts +2 -8
- package/dest/public/fixtures/minimal_public_tx.d.ts.map +1 -1
- package/dest/public/fixtures/minimal_public_tx.js +6 -16
- package/dest/public/fixtures/opcode_spammer.d.ts +122 -0
- package/dest/public/fixtures/opcode_spammer.d.ts.map +1 -0
- package/dest/public/fixtures/opcode_spammer.js +1653 -0
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts +29 -10
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
- package/dest/public/fixtures/public_tx_simulation_tester.js +96 -28
- package/dest/public/fixtures/simple_contract_data_source.d.ts +5 -4
- package/dest/public/fixtures/simple_contract_data_source.d.ts.map +1 -1
- package/dest/public/fixtures/simple_contract_data_source.js +4 -4
- package/dest/public/fixtures/token_test.d.ts +6 -2
- package/dest/public/fixtures/token_test.d.ts.map +1 -1
- package/dest/public/fixtures/token_test.js +13 -12
- package/dest/public/fixtures/utils.d.ts +3 -3
- package/dest/public/fixtures/utils.d.ts.map +1 -1
- package/dest/public/fixtures/utils.js +10 -9
- package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts +60 -0
- package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts.map +1 -0
- package/dest/public/fuzzing/avm_fuzzer_simulator.js +171 -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/hinting_db_sources.d.ts +17 -7
- package/dest/public/hinting_db_sources.d.ts.map +1 -1
- package/dest/public/hinting_db_sources.js +77 -18
- package/dest/public/index.d.ts +3 -2
- package/dest/public/index.d.ts.map +1 -1
- package/dest/public/index.js +1 -1
- package/dest/public/public_db_sources.d.ts +25 -65
- package/dest/public/public_db_sources.d.ts.map +1 -1
- package/dest/public/public_db_sources.js +78 -135
- 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 +9 -7
- package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -1
- package/dest/public/public_processor/guarded_merkle_tree.js +9 -4
- package/dest/public/public_processor/public_processor.d.ts +17 -20
- package/dest/public/public_processor/public_processor.d.ts.map +1 -1
- package/dest/public/public_processor/public_processor.js +508 -103
- package/dest/public/public_processor/public_processor_metrics.d.ts +2 -2
- package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
- package/dest/public/public_processor/public_processor_metrics.js +28 -45
- package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts +19 -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 +35 -23
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +95 -53
- 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 +23 -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 +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 +5 -1
- package/dest/public/public_tx_simulator/index.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/index.js +3 -0
- package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +14 -7
- package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/measured_public_tx_simulator.js +5 -5
- package/dest/public/public_tx_simulator/public_tx_context.d.ts +8 -4
- package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/public_tx_context.js +17 -9
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +15 -33
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/public_tx_simulator.js +118 -130
- 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/public_tx_simulator/telemetry_public_tx_simulator.d.ts +4 -4
- package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.js +395 -19
- package/dest/public/side_effect_errors.d.ts +1 -1
- package/dest/public/side_effect_errors.d.ts.map +1 -1
- package/dest/public/side_effect_trace.d.ts +5 -5
- package/dest/public/side_effect_trace.d.ts.map +1 -1
- package/dest/public/side_effect_trace.js +4 -4
- package/dest/public/side_effect_trace_interface.d.ts +3 -4
- package/dest/public/side_effect_trace_interface.d.ts.map +1 -1
- package/dest/public/state_manager/index.d.ts +1 -1
- package/dest/public/state_manager/nullifiers.d.ts +2 -2
- package/dest/public/state_manager/nullifiers.d.ts.map +1 -1
- package/dest/public/state_manager/public_storage.d.ts +2 -2
- package/dest/public/state_manager/public_storage.d.ts.map +1 -1
- package/dest/public/state_manager/public_storage.js +1 -1
- package/dest/public/state_manager/state_manager.d.ts +16 -12
- package/dest/public/state_manager/state_manager.d.ts.map +1 -1
- package/dest/public/state_manager/state_manager.js +21 -10
- package/dest/public/test_executor_metrics.d.ts +11 -4
- package/dest/public/test_executor_metrics.d.ts.map +1 -1
- package/dest/public/test_executor_metrics.js +29 -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 +20 -20
- 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 +7 -3
- package/src/private/circuit_recording/circuit_recorder.ts +24 -21
- package/src/private/circuit_recording/file_circuit_recorder.ts +7 -2
- package/src/private/circuit_recording/memory_circuit_recorder.ts +6 -4
- package/src/private/factory.ts +7 -4
- package/src/public/avm/avm_context.ts +2 -2
- package/src/public/avm/avm_contract_call_result.ts +8 -6
- package/src/public/avm/avm_execution_environment.ts +13 -10
- package/src/public/avm/avm_gas.ts +5 -5
- package/src/public/avm/avm_machine_state.ts +7 -6
- package/src/public/avm/avm_memory_types.ts +5 -1
- package/src/public/avm/avm_simulator.ts +19 -14
- package/src/public/avm/calldata.ts +100 -0
- package/src/public/avm/errors.ts +17 -3
- package/src/public/avm/fixtures/account_proof.json +553 -0
- package/src/public/avm/fixtures/account_proof_fetcher.ts +166 -0
- package/src/public/avm/fixtures/avm_simulation_tester.ts +18 -4
- package/src/public/avm/fixtures/base_avm_simulation_tester.ts +1 -1
- package/src/public/avm/fixtures/initializers.ts +10 -11
- package/src/public/avm/fixtures/utils.ts +3 -2
- package/src/public/avm/opcodes/accrued_substate.ts +31 -34
- package/src/public/avm/opcodes/addressing_mode.ts +2 -2
- package/src/public/avm/opcodes/arithmetic.ts +14 -2
- package/src/public/avm/opcodes/bitwise.ts +3 -3
- package/src/public/avm/opcodes/comparators.ts +1 -1
- package/src/public/avm/opcodes/contract.ts +4 -7
- package/src/public/avm/opcodes/control_flow.ts +2 -2
- package/src/public/avm/opcodes/conversion.ts +3 -3
- package/src/public/avm/opcodes/ec_add.ts +15 -6
- package/src/public/avm/opcodes/environment_getters.ts +7 -7
- package/src/public/avm/opcodes/external_calls.ts +17 -15
- package/src/public/avm/opcodes/hashing.ts +16 -10
- package/src/public/avm/opcodes/instruction_impl.ts +2 -2
- package/src/public/avm/opcodes/memory.ts +20 -20
- package/src/public/avm/opcodes/misc.ts +6 -6
- package/src/public/avm/opcodes/storage.ts +30 -22
- package/src/public/avm/revert_reason.ts +6 -3
- package/src/public/avm/serialization/bytecode_serialization.ts +19 -8
- package/src/public/avm/serialization/instruction_serialization.ts +2 -2
- package/src/public/avm/test_utils.ts +1 -1
- package/src/public/contracts_db_checkpoint.ts +41 -0
- package/src/public/db_interfaces.ts +16 -1
- package/src/public/debug_fn_name.ts +39 -5
- package/src/public/executor_metrics.ts +11 -34
- package/src/public/executor_metrics_interface.ts +2 -1
- package/src/public/fixtures/amm_test.ts +4 -4
- package/src/public/fixtures/bulk_test.ts +9 -9
- package/src/public/fixtures/custom_bytecode_tester.ts +54 -20
- package/src/public/fixtures/custom_bytecode_tests.ts +111 -18
- package/src/public/fixtures/index.ts +7 -1
- package/src/public/fixtures/minimal_public_tx.ts +7 -17
- package/src/public/fixtures/opcode_spammer.ts +1717 -0
- package/src/public/fixtures/public_tx_simulation_tester.ts +133 -23
- package/src/public/fixtures/simple_contract_data_source.ts +8 -9
- package/src/public/fixtures/token_test.ts +18 -10
- package/src/public/fixtures/utils.ts +8 -8
- package/src/public/fuzzing/avm_fuzzer_simulator.ts +288 -0
- package/src/public/fuzzing/avm_simulator_bin.ts +175 -0
- package/src/public/hinting_db_sources.ts +120 -16
- package/src/public/index.ts +6 -4
- package/src/public/public_db_sources.ts +107 -176
- package/src/public/public_processor/guarded_merkle_tree.ts +13 -8
- package/src/public/public_processor/public_processor.ts +161 -108
- package/src/public/public_processor/public_processor_metrics.ts +16 -44
- package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +124 -0
- package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +141 -59
- package/src/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.ts +134 -0
- package/src/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.ts +239 -0
- package/src/public/public_tx_simulator/dumping_cpp_public_tx_simulator.ts +83 -0
- package/src/public/public_tx_simulator/factories.ts +44 -0
- package/src/public/public_tx_simulator/index.ts +4 -0
- package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +10 -14
- package/src/public/public_tx_simulator/public_tx_context.ts +22 -9
- package/src/public/public_tx_simulator/public_tx_simulator.ts +177 -198
- package/src/public/public_tx_simulator/public_tx_simulator_interface.ts +24 -2
- package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +3 -3
- package/src/public/side_effect_trace.ts +6 -3
- package/src/public/side_effect_trace_interface.ts +1 -1
- package/src/public/state_manager/nullifiers.ts +1 -1
- package/src/public/state_manager/public_storage.ts +1 -1
- package/src/public/state_manager/state_manager.ts +35 -26
- package/src/public/test_executor_metrics.ts +34 -8
- 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/tx_contract_cache.ts +0 -69
|
@@ -1,6 +1,14 @@
|
|
|
1
|
+
import {
|
|
2
|
+
DEFAULT_TEARDOWN_DA_GAS_LIMIT,
|
|
3
|
+
DEFAULT_TEARDOWN_L2_GAS_LIMIT,
|
|
4
|
+
PUBLIC_TX_L2_GAS_OVERHEAD,
|
|
5
|
+
TX_DA_GAS_OVERHEAD,
|
|
6
|
+
} from '@aztec/constants';
|
|
1
7
|
import { asyncMap } from '@aztec/foundation/async-map';
|
|
2
|
-
import {
|
|
8
|
+
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
9
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
10
|
import { type ContractArtifact, encodeArguments } from '@aztec/stdlib/abi';
|
|
11
|
+
import { PublicSimulatorConfig, type PublicTxResult } from '@aztec/stdlib/avm';
|
|
4
12
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
5
13
|
import { Gas, GasFees } from '@aztec/stdlib/gas';
|
|
6
14
|
import type { MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
|
|
@@ -16,9 +24,8 @@ import {
|
|
|
16
24
|
getFunctionSelector,
|
|
17
25
|
} from '../avm/fixtures/utils.js';
|
|
18
26
|
import { PublicContractsDB } from '../public_db_sources.js';
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import type { PublicTxResult } from '../public_tx_simulator/public_tx_simulator.js';
|
|
27
|
+
import { MeasuredCppPublicTxSimulator } from '../public_tx_simulator/cpp_public_tx_simulator.js';
|
|
28
|
+
import { MeasuredCppVsTsPublicTxSimulator } from '../public_tx_simulator/cpp_vs_ts_public_tx_simulator.js';
|
|
22
29
|
import type { MeasuredPublicTxSimulatorInterface } from '../public_tx_simulator/public_tx_simulator_interface.js';
|
|
23
30
|
import { TestExecutorMetrics } from '../test_executor_metrics.js';
|
|
24
31
|
import { SimpleContractDataSource } from './simple_contract_data_source.js';
|
|
@@ -29,12 +36,32 @@ const DEFAULT_GAS_FEES = new GasFees(2, 3);
|
|
|
29
36
|
export type TestEnqueuedCall = {
|
|
30
37
|
sender?: AztecAddress;
|
|
31
38
|
address: AztecAddress;
|
|
32
|
-
fnName
|
|
39
|
+
fnName?: string;
|
|
33
40
|
args: any[];
|
|
34
41
|
isStaticCall?: boolean;
|
|
35
42
|
contractArtifact?: ContractArtifact;
|
|
36
43
|
};
|
|
37
44
|
|
|
45
|
+
const defaultConfig: PublicSimulatorConfig = PublicSimulatorConfig.from({
|
|
46
|
+
skipFeeEnforcement: false,
|
|
47
|
+
collectCallMetadata: true,
|
|
48
|
+
collectDebugLogs: true,
|
|
49
|
+
collectHints: false,
|
|
50
|
+
collectPublicInputs: false,
|
|
51
|
+
collectStatistics: false,
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Factory type for creating a MeasuredPublicTxSimulatorInterface.
|
|
56
|
+
*/
|
|
57
|
+
export type MeasuredSimulatorFactory = (
|
|
58
|
+
merkleTree: MerkleTreeWriteOperations,
|
|
59
|
+
contractsDB: PublicContractsDB,
|
|
60
|
+
globals: GlobalVariables,
|
|
61
|
+
metrics: TestExecutorMetrics,
|
|
62
|
+
config: PublicSimulatorConfig,
|
|
63
|
+
) => MeasuredPublicTxSimulatorInterface;
|
|
64
|
+
|
|
38
65
|
/**
|
|
39
66
|
* A test class that extends the BaseAvmSimulationTester to enable real-app testing of the PublicTxSimulator.
|
|
40
67
|
* It provides an interface for simulating one transaction at a time and maintains state between subsequent
|
|
@@ -50,19 +77,17 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
|
|
|
50
77
|
contractDataSource: SimpleContractDataSource,
|
|
51
78
|
globals: GlobalVariables = defaultGlobals(),
|
|
52
79
|
private metrics: TestExecutorMetrics = new TestExecutorMetrics(),
|
|
53
|
-
|
|
80
|
+
simulatorFactory?: MeasuredSimulatorFactory,
|
|
81
|
+
config: PublicSimulatorConfig = defaultConfig,
|
|
54
82
|
) {
|
|
55
83
|
super(contractDataSource, merkleTree);
|
|
56
84
|
|
|
57
85
|
const contractsDB = new PublicContractsDB(contractDataSource);
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
}
|
|
63
|
-
this.simulator = useCppSimulator
|
|
64
|
-
? new MeasuredCppPublicTxSimulatorHintedDbs(merkleTree, contractsDB, globals, this.metrics, config)
|
|
65
|
-
: new MeasuredPublicTxSimulator(merkleTree, contractsDB, globals, this.metrics, config);
|
|
86
|
+
if (simulatorFactory) {
|
|
87
|
+
this.simulator = simulatorFactory(merkleTree, contractsDB, globals, this.metrics, config);
|
|
88
|
+
} else {
|
|
89
|
+
this.simulator = new MeasuredCppPublicTxSimulator(merkleTree, contractsDB, globals, this.metrics, config);
|
|
90
|
+
}
|
|
66
91
|
}
|
|
67
92
|
|
|
68
93
|
public static async create(
|
|
@@ -70,10 +95,14 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
|
|
|
70
95
|
globals: GlobalVariables = defaultGlobals(),
|
|
71
96
|
metrics: TestExecutorMetrics = new TestExecutorMetrics(),
|
|
72
97
|
useCppSimulator = false,
|
|
98
|
+
config: PublicSimulatorConfig = defaultConfig,
|
|
73
99
|
): Promise<PublicTxSimulationTester> {
|
|
74
100
|
const contractDataSource = new SimpleContractDataSource();
|
|
75
101
|
const merkleTree = await worldStateService.fork();
|
|
76
|
-
|
|
102
|
+
const simulatorFactory: MeasuredSimulatorFactory = useCppSimulator
|
|
103
|
+
? (mt, cdb, g, m, c) => new MeasuredCppPublicTxSimulator(mt, cdb, g, m, c)
|
|
104
|
+
: (mt, cdb, g, m, c) => new MeasuredCppVsTsPublicTxSimulator(mt, cdb, g, m, c);
|
|
105
|
+
return new PublicTxSimulationTester(merkleTree, contractDataSource, globals, metrics, simulatorFactory, config);
|
|
77
106
|
}
|
|
78
107
|
|
|
79
108
|
public setMetricsPrefix(prefix: string) {
|
|
@@ -88,6 +117,7 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
|
|
|
88
117
|
feePayer: AztecAddress = sender,
|
|
89
118
|
/* need some unique first nullifier for note-nonce computations */
|
|
90
119
|
privateInsertions: TestPrivateInsertions = { nonRevertible: { nullifiers: [new Fr(420000 + this.txCount)] } },
|
|
120
|
+
gasLimits?: Gas,
|
|
91
121
|
): Promise<Tx> {
|
|
92
122
|
const setupCallRequests = await asyncMap(setupCalls, call =>
|
|
93
123
|
this.#createPubicCallRequestForCall(call, call.sender ?? sender),
|
|
@@ -106,8 +136,14 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
|
|
|
106
136
|
appCallRequests,
|
|
107
137
|
teardownCallRequest,
|
|
108
138
|
feePayer,
|
|
109
|
-
/*gasUsedByPrivate*/
|
|
139
|
+
/*gasUsedByPrivate*/ teardownCall
|
|
140
|
+
? new Gas(
|
|
141
|
+
DEFAULT_TEARDOWN_DA_GAS_LIMIT + TX_DA_GAS_OVERHEAD,
|
|
142
|
+
DEFAULT_TEARDOWN_L2_GAS_LIMIT + PUBLIC_TX_L2_GAS_OVERHEAD,
|
|
143
|
+
)
|
|
144
|
+
: new Gas(TX_DA_GAS_OVERHEAD, PUBLIC_TX_L2_GAS_OVERHEAD),
|
|
110
145
|
defaultGlobals(),
|
|
146
|
+
gasLimits,
|
|
111
147
|
);
|
|
112
148
|
}
|
|
113
149
|
|
|
@@ -120,16 +156,24 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
|
|
|
120
156
|
/* need some unique first nullifier for note-nonce computations */
|
|
121
157
|
privateInsertions?: TestPrivateInsertions,
|
|
122
158
|
txLabel: string = 'unlabeledTx',
|
|
159
|
+
gasLimits?: Gas,
|
|
123
160
|
): Promise<PublicTxResult> {
|
|
124
|
-
const tx = await this.createTx(sender, setupCalls, appCalls, teardownCall, feePayer, privateInsertions);
|
|
161
|
+
const tx = await this.createTx(sender, setupCalls, appCalls, teardownCall, feePayer, privateInsertions, gasLimits);
|
|
125
162
|
|
|
126
163
|
await this.setFeePayerBalance(feePayer);
|
|
127
164
|
|
|
128
165
|
const txLabelWithCount = `${txLabel}/${this.txCount - 1}`;
|
|
129
166
|
const fullTxLabel = this.metricsPrefix ? `${this.metricsPrefix}/${txLabelWithCount}` : txLabelWithCount;
|
|
130
167
|
|
|
168
|
+
if (!this.simulator) {
|
|
169
|
+
throw new Error(
|
|
170
|
+
'No simulator configured. Pass a simulatorFactory to the constructor or use PublicTxSimulationTester.create()',
|
|
171
|
+
);
|
|
172
|
+
}
|
|
131
173
|
const avmResult = await this.simulator.simulate(tx, fullTxLabel);
|
|
132
174
|
|
|
175
|
+
await this.#recordBytecodeSizes(fullTxLabel, [...setupCalls, ...appCalls, ...(teardownCall ? [teardownCall] : [])]);
|
|
176
|
+
|
|
133
177
|
// Something like this is often useful for debugging:
|
|
134
178
|
//if (avmResult.revertReason) {
|
|
135
179
|
// // resolve / enrich revert reason
|
|
@@ -159,8 +203,18 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
|
|
|
159
203
|
teardownCall?: TestEnqueuedCall,
|
|
160
204
|
feePayer?: AztecAddress,
|
|
161
205
|
privateInsertions?: TestPrivateInsertions,
|
|
206
|
+
gasLimits?: Gas,
|
|
162
207
|
): Promise<PublicTxResult> {
|
|
163
|
-
return await this.simulateTx(
|
|
208
|
+
return await this.simulateTx(
|
|
209
|
+
sender,
|
|
210
|
+
setupCalls,
|
|
211
|
+
appCalls,
|
|
212
|
+
teardownCall,
|
|
213
|
+
feePayer,
|
|
214
|
+
privateInsertions,
|
|
215
|
+
txLabel,
|
|
216
|
+
gasLimits,
|
|
217
|
+
);
|
|
164
218
|
}
|
|
165
219
|
|
|
166
220
|
/**
|
|
@@ -178,6 +232,7 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
|
|
|
178
232
|
teardownCall?: TestEnqueuedCall,
|
|
179
233
|
feePayer?: AztecAddress,
|
|
180
234
|
privateInsertions?: TestPrivateInsertions,
|
|
235
|
+
gasLimits?: Gas,
|
|
181
236
|
): Promise<PublicTxResult> {
|
|
182
237
|
return await this.simulateTxWithLabel(
|
|
183
238
|
txLabel,
|
|
@@ -187,6 +242,7 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
|
|
|
187
242
|
teardownCall,
|
|
188
243
|
feePayer,
|
|
189
244
|
privateInsertions,
|
|
245
|
+
gasLimits,
|
|
190
246
|
);
|
|
191
247
|
}
|
|
192
248
|
|
|
@@ -194,6 +250,25 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
|
|
|
194
250
|
this.metrics.prettyPrint();
|
|
195
251
|
}
|
|
196
252
|
|
|
253
|
+
/**
|
|
254
|
+
* Cancel the current simulation if one is in progress.
|
|
255
|
+
* This signals the underlying simulator (e.g., C++) to stop at the next safe point.
|
|
256
|
+
* Safe to call even if no simulation is in progress.
|
|
257
|
+
*
|
|
258
|
+
* @param waitTimeoutMs - If provided, wait up to this many ms for the simulation to actually stop.
|
|
259
|
+
*/
|
|
260
|
+
public async cancel(waitTimeoutMs?: number): Promise<void> {
|
|
261
|
+
await this.simulator.cancel?.(waitTimeoutMs);
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
* Get the underlying simulator for advanced test scenarios.
|
|
266
|
+
* Use this when you need direct control over simulation (e.g., for testing cancellation).
|
|
267
|
+
*/
|
|
268
|
+
public getSimulator(): MeasuredPublicTxSimulatorInterface {
|
|
269
|
+
return this.simulator;
|
|
270
|
+
}
|
|
271
|
+
|
|
197
272
|
async #createPubicCallRequestForCall(
|
|
198
273
|
call: TestEnqueuedCall,
|
|
199
274
|
sender: AztecAddress,
|
|
@@ -204,21 +279,56 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
|
|
|
204
279
|
throw new Error(`Contract artifact not found for address: ${address}`);
|
|
205
280
|
}
|
|
206
281
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
282
|
+
let calldata: Fr[] = [];
|
|
283
|
+
if (!call.fnName) {
|
|
284
|
+
this.logger.debug(
|
|
285
|
+
`No function name specified for call to contract ${call.address.toString()}. Assuming this is a custom bytecode with no public_dispatch function.`,
|
|
286
|
+
);
|
|
287
|
+
this.logger.debug(`Not using ABI to encode arguments. Not prepending fn selector to calldata.`);
|
|
288
|
+
try {
|
|
289
|
+
calldata = call.args.map(arg => new Fr(arg));
|
|
290
|
+
} catch (error) {
|
|
291
|
+
this.logger.warn(`Tried assuming that all arguments are Field-like. Failed. Error: ${error}`);
|
|
292
|
+
throw error;
|
|
293
|
+
}
|
|
294
|
+
} else {
|
|
295
|
+
const fnSelector = await getFunctionSelector(call.fnName, contractArtifact);
|
|
296
|
+
const fnAbi = getContractFunctionAbi(call.fnName, contractArtifact)!;
|
|
297
|
+
const encodedArgs = encodeArguments(fnAbi, call.args);
|
|
298
|
+
calldata = [fnSelector.toField(), ...encodedArgs];
|
|
299
|
+
}
|
|
211
300
|
const isStaticCall = call.isStaticCall ?? false;
|
|
212
301
|
const request = await PublicCallRequest.fromCalldata(sender, address, isStaticCall, calldata);
|
|
213
302
|
|
|
214
303
|
return new PublicCallRequestWithCalldata(request, calldata);
|
|
215
304
|
}
|
|
305
|
+
|
|
306
|
+
// WARNING: Deduplicates by artifact name, so two different artifacts with the same name
|
|
307
|
+
// in a single tx would only record the first one's bytecode size.
|
|
308
|
+
async #recordBytecodeSizes(txLabel: string, calls: TestEnqueuedCall[]) {
|
|
309
|
+
const seenArtifactNames = new Set<string>();
|
|
310
|
+
for (const call of calls) {
|
|
311
|
+
const artifact = await this.contractDataSource.getContractArtifact(call.address);
|
|
312
|
+
if (!artifact || seenArtifactNames.has(artifact.name)) {
|
|
313
|
+
continue;
|
|
314
|
+
}
|
|
315
|
+
seenArtifactNames.add(artifact.name);
|
|
316
|
+
const instance = await this.contractDataSource.getContract(call.address);
|
|
317
|
+
if (!instance) {
|
|
318
|
+
continue;
|
|
319
|
+
}
|
|
320
|
+
const contractClass = await this.contractDataSource.getContractClass(instance.currentContractClassId);
|
|
321
|
+
if (contractClass) {
|
|
322
|
+
this.metrics.recordBytecodeSize(txLabel, artifact.name, contractClass.packedBytecode.length);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
}
|
|
216
326
|
}
|
|
217
327
|
|
|
218
328
|
export function defaultGlobals() {
|
|
219
329
|
const globals = GlobalVariables.empty();
|
|
220
330
|
globals.timestamp = DEFAULT_TIMESTAMP;
|
|
221
331
|
globals.gasFees = DEFAULT_GAS_FEES; // apply some nonzero default gas fees
|
|
222
|
-
globals.blockNumber = DEFAULT_BLOCK_NUMBER;
|
|
332
|
+
globals.blockNumber = BlockNumber(DEFAULT_BLOCK_NUMBER);
|
|
223
333
|
return globals;
|
|
224
334
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
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';
|
|
@@ -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,11 +7,17 @@ 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
|
|
|
@@ -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
|
}
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
PRIVATE_LOG_SIZE_IN_FIELDS,
|
|
10
10
|
} from '@aztec/constants';
|
|
11
11
|
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
12
|
-
import { Fr } from '@aztec/foundation/
|
|
12
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
13
13
|
import { CONTRACT_INSTANCE_PUBLISHED_EVENT_TAG } from '@aztec/protocol-contracts';
|
|
14
14
|
import { bufferAsFields } from '@aztec/stdlib/abi';
|
|
15
15
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
@@ -62,13 +62,14 @@ export async function createTxForPublicCalls(
|
|
|
62
62
|
feePayer = AztecAddress.zero(),
|
|
63
63
|
gasUsedByPrivate: Gas = Gas.empty(),
|
|
64
64
|
globals: GlobalVariables = GlobalVariables.empty(),
|
|
65
|
+
gasLimits?: Gas,
|
|
65
66
|
): Promise<Tx> {
|
|
66
67
|
assert(
|
|
67
68
|
setupCallRequests.length > 0 || appCallRequests.length > 0 || teardownCallRequest !== undefined,
|
|
68
69
|
"Can't create public tx with no enqueued calls",
|
|
69
70
|
);
|
|
70
71
|
// use max limits
|
|
71
|
-
|
|
72
|
+
gasLimits = gasLimits ?? new Gas(DEFAULT_DA_GAS_LIMIT, DEFAULT_L2_GAS_LIMIT);
|
|
72
73
|
|
|
73
74
|
const forPublic = PartialPrivateTailPublicInputsForPublic.empty();
|
|
74
75
|
|
|
@@ -132,16 +133,15 @@ export async function createTxForPublicCalls(
|
|
|
132
133
|
: Gas.empty();
|
|
133
134
|
const gasSettings = new GasSettings(gasLimits, teardownGasLimits, maxFeesPerGas, GasFees.empty());
|
|
134
135
|
const txContext = new TxContext(Fr.zero(), Fr.zero(), gasSettings);
|
|
135
|
-
const header = BlockHeader.empty();
|
|
136
|
-
header.globalVariables = globals;
|
|
136
|
+
const header = BlockHeader.empty({ globalVariables: globals });
|
|
137
137
|
const constantData = new TxConstantData(header, txContext, Fr.zero(), Fr.zero());
|
|
138
|
-
const
|
|
138
|
+
const expirationTimestamp = 0n; // Not used in the simulator.
|
|
139
139
|
|
|
140
140
|
const txData = new PrivateKernelTailCircuitPublicInputs(
|
|
141
141
|
constantData,
|
|
142
142
|
/*gasUsed=*/ gasUsedByPrivate,
|
|
143
143
|
feePayer,
|
|
144
|
-
|
|
144
|
+
expirationTimestamp,
|
|
145
145
|
forPublic,
|
|
146
146
|
);
|
|
147
147
|
|
|
@@ -172,13 +172,13 @@ export async function createTxForPrivateOnly(
|
|
|
172
172
|
const gasSettings = new GasSettings(gasLimits, Gas.empty(), maxFeesPerGas, GasFees.empty());
|
|
173
173
|
const txContext = new TxContext(Fr.zero(), Fr.zero(), gasSettings);
|
|
174
174
|
const constantData = new TxConstantData(BlockHeader.empty(), txContext, Fr.zero(), Fr.zero());
|
|
175
|
-
const
|
|
175
|
+
const expirationTimestamp = 0n; // Not used in the simulator.
|
|
176
176
|
|
|
177
177
|
const txData = new PrivateKernelTailCircuitPublicInputs(
|
|
178
178
|
constantData,
|
|
179
179
|
/*gasUsed=*/ gasUsedByPrivate,
|
|
180
180
|
feePayer,
|
|
181
|
-
|
|
181
|
+
expirationTimestamp,
|
|
182
182
|
/*forPublic=*/ undefined,
|
|
183
183
|
forRollup,
|
|
184
184
|
);
|