@aztec/simulator 0.0.1-commit.2f68f620 → 0.0.1-commit.3100065
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/client.d.ts +1 -3
- package/dest/client.d.ts.map +1 -1
- package/dest/client.js +0 -2
- package/dest/private/circuit_recording/circuit_recorder.d.ts +36 -23
- package/dest/private/circuit_recording/circuit_recorder.d.ts.map +1 -1
- package/dest/private/circuit_recording/circuit_recorder.js +65 -69
- package/dest/private/circuit_recording/file_circuit_recorder.d.ts +7 -19
- package/dest/private/circuit_recording/file_circuit_recorder.d.ts.map +1 -1
- package/dest/private/circuit_recording/file_circuit_recorder.js +38 -42
- 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/public/avm/avm_context.d.ts +41 -0
- package/dest/public/avm/avm_context.d.ts.map +1 -0
- package/dest/public/avm/avm_context.js +44 -0
- package/dest/public/avm/avm_contract_call_result.d.ts +32 -0
- package/dest/public/avm/avm_contract_call_result.d.ts.map +1 -0
- package/dest/public/avm/avm_contract_call_result.js +54 -0
- package/dest/public/avm/avm_execution_environment.d.ts +24 -0
- package/dest/public/avm/avm_execution_environment.d.ts.map +1 -0
- package/dest/public/avm/avm_execution_environment.js +33 -0
- package/dest/public/avm/avm_gas.d.ts +44 -0
- package/dest/public/avm/avm_gas.d.ts.map +1 -0
- package/dest/public/avm/avm_gas.js +195 -0
- package/dest/public/avm/avm_machine_state.d.ts +98 -0
- package/dest/public/avm/avm_machine_state.d.ts.map +1 -0
- package/dest/public/avm/avm_machine_state.js +110 -0
- package/dest/public/avm/avm_memory_types.d.ts +275 -0
- package/dest/public/avm/avm_memory_types.d.ts.map +1 -0
- package/dest/public/avm/avm_memory_types.js +354 -0
- package/dest/public/avm/avm_simulator.d.ts +41 -0
- package/dest/public/avm/avm_simulator.d.ts.map +1 -0
- package/dest/public/avm/avm_simulator.js +192 -0
- package/dest/public/avm/avm_simulator_interface.d.ts +9 -0
- package/dest/public/avm/avm_simulator_interface.d.ts.map +1 -0
- package/dest/public/avm/avm_simulator_interface.js +3 -0
- package/dest/public/avm/calldata.d.ts +51 -0
- package/dest/public/avm/calldata.d.ts.map +1 -0
- package/dest/public/avm/calldata.js +64 -0
- package/dest/public/avm/errors.d.ts +104 -0
- package/dest/public/avm/errors.d.ts.map +1 -0
- package/dest/public/avm/errors.js +141 -0
- 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/avm_simulation_tester.d.ts +22 -0
- package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +1 -0
- package/dest/public/avm/fixtures/avm_simulation_tester.js +84 -0
- package/dest/public/avm/{testing → fixtures}/base_avm_simulation_tester.d.ts +1 -1
- package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +1 -0
- package/dest/public/avm/{testing → fixtures}/base_avm_simulation_tester.js +1 -1
- package/dest/public/avm/fixtures/initializers.d.ts +42 -0
- package/dest/public/avm/fixtures/initializers.d.ts.map +1 -0
- package/dest/public/avm/fixtures/initializers.js +45 -0
- package/dest/public/avm/fixtures/utils.d.ts +39 -0
- package/dest/public/avm/fixtures/utils.d.ts.map +1 -0
- package/dest/public/avm/{testing → fixtures}/utils.js +34 -1
- package/dest/public/avm/index.d.ts +2 -0
- package/dest/public/avm/index.d.ts.map +1 -0
- package/dest/public/avm/index.js +1 -0
- package/dest/public/avm/opcodes/accrued_substate.d.ts +74 -0
- package/dest/public/avm/opcodes/accrued_substate.d.ts.map +1 -0
- package/dest/public/avm/opcodes/accrued_substate.js +254 -0
- package/dest/public/avm/opcodes/addressing_mode.d.ts +31 -0
- package/dest/public/avm/opcodes/addressing_mode.d.ts.map +1 -0
- package/dest/public/avm/opcodes/addressing_mode.js +94 -0
- package/dest/public/avm/opcodes/arithmetic.d.ts +49 -0
- package/dest/public/avm/opcodes/arithmetic.d.ts.map +1 -0
- package/dest/public/avm/opcodes/arithmetic.js +97 -0
- package/dest/public/avm/opcodes/bitwise.d.ts +42 -0
- package/dest/public/avm/opcodes/bitwise.d.ts.map +1 -0
- package/dest/public/avm/opcodes/bitwise.js +99 -0
- package/dest/public/avm/opcodes/comparators.d.ts +25 -0
- package/dest/public/avm/opcodes/comparators.d.ts.map +1 -0
- package/dest/public/avm/opcodes/comparators.js +43 -0
- package/dest/public/avm/opcodes/contract.d.ts +21 -0
- package/dest/public/avm/opcodes/contract.d.ts.map +1 -0
- package/dest/public/avm/opcodes/contract.js +69 -0
- package/dest/public/avm/opcodes/control_flow.d.ts +41 -0
- package/dest/public/avm/opcodes/control_flow.d.ts.map +1 -0
- package/dest/public/avm/opcodes/control_flow.js +107 -0
- package/dest/public/avm/opcodes/conversion.d.ts +18 -0
- package/dest/public/avm/opcodes/conversion.d.ts.map +1 -0
- package/dest/public/avm/opcodes/conversion.js +333 -0
- package/dest/public/avm/opcodes/ec_add.d.ts +17 -0
- package/dest/public/avm/opcodes/ec_add.d.ts.map +1 -0
- package/dest/public/avm/opcodes/ec_add.js +79 -0
- package/dest/public/avm/opcodes/environment_getters.d.ts +28 -0
- package/dest/public/avm/opcodes/environment_getters.d.ts.map +1 -0
- package/dest/public/avm/opcodes/environment_getters.js +77 -0
- package/dest/public/avm/opcodes/external_calls.d.ts +59 -0
- package/dest/public/avm/opcodes/external_calls.d.ts.map +1 -0
- package/dest/public/avm/opcodes/external_calls.js +210 -0
- package/dest/public/avm/opcodes/hashing.d.ts +36 -0
- package/dest/public/avm/opcodes/hashing.d.ts.map +1 -0
- package/dest/public/avm/opcodes/hashing.js +119 -0
- package/dest/public/avm/opcodes/index.d.ts +16 -0
- package/dest/public/avm/opcodes/index.d.ts.map +1 -0
- package/dest/public/avm/opcodes/index.js +15 -0
- package/dest/public/avm/opcodes/instruction.d.ts +74 -0
- package/dest/public/avm/opcodes/instruction.d.ts.map +1 -0
- package/dest/public/avm/opcodes/instruction.js +95 -0
- package/dest/public/avm/opcodes/instruction_impl.d.ts +19 -0
- package/dest/public/avm/opcodes/instruction_impl.d.ts.map +1 -0
- package/dest/public/avm/opcodes/instruction_impl.js +30 -0
- package/dest/public/avm/opcodes/memory.d.ts +74 -0
- package/dest/public/avm/opcodes/memory.d.ts.map +1 -0
- package/dest/public/avm/opcodes/memory.js +257 -0
- package/dest/public/avm/opcodes/misc.d.ts +18 -0
- package/dest/public/avm/opcodes/misc.d.ts.map +1 -0
- package/dest/public/avm/opcodes/misc.js +73 -0
- package/dest/public/avm/opcodes/storage.d.ts +25 -0
- package/dest/public/avm/opcodes/storage.d.ts.map +1 -0
- package/dest/public/avm/opcodes/storage.js +78 -0
- package/dest/public/avm/revert_reason.d.ts +18 -0
- package/dest/public/avm/revert_reason.d.ts.map +1 -0
- package/dest/public/avm/revert_reason.js +39 -0
- package/dest/public/avm/serialization/buffer_cursor.d.ts +26 -0
- package/dest/public/avm/serialization/buffer_cursor.d.ts.map +1 -0
- package/dest/public/avm/serialization/buffer_cursor.js +99 -0
- package/dest/public/avm/serialization/bytecode_serialization.d.ts +17 -0
- package/dest/public/avm/serialization/bytecode_serialization.d.ts.map +1 -0
- package/dest/public/avm/serialization/bytecode_serialization.js +336 -0
- package/dest/public/avm/serialization/instruction_serialization.d.ts +114 -0
- package/dest/public/avm/serialization/instruction_serialization.d.ts.map +1 -0
- package/dest/public/avm/serialization/instruction_serialization.js +261 -0
- package/dest/public/avm/test_utils.d.ts +15 -0
- package/dest/public/avm/test_utils.d.ts.map +1 -0
- package/dest/public/avm/test_utils.js +44 -0
- package/dest/public/debug_fn_name.d.ts +18 -0
- package/dest/public/debug_fn_name.d.ts.map +1 -0
- package/dest/public/debug_fn_name.js +37 -0
- package/dest/public/fixtures/amm_test.js +2 -2
- package/dest/public/fixtures/bulk_test.js +2 -2
- package/dest/public/fixtures/custom_bytecode_tester.d.ts +1 -1
- package/dest/public/fixtures/custom_bytecode_tester.d.ts.map +1 -1
- package/dest/public/fixtures/custom_bytecode_tester.js +2 -2
- package/dest/public/fixtures/custom_bytecode_tests.d.ts +19 -0
- package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +1 -0
- package/dest/public/fixtures/custom_bytecode_tests.js +263 -0
- package/dest/public/fixtures/index.d.ts +4 -1
- package/dest/public/fixtures/index.d.ts.map +1 -1
- package/dest/public/fixtures/index.js +3 -0
- package/dest/public/fixtures/minimal_public_tx.d.ts +4 -0
- package/dest/public/fixtures/minimal_public_tx.d.ts.map +1 -0
- package/dest/public/fixtures/minimal_public_tx.js +19 -0
- package/dest/public/fixtures/opcode_spammer.d.ts +122 -0
- package/dest/public/fixtures/opcode_spammer.d.ts.map +1 -0
- package/dest/public/fixtures/opcode_spammer.js +1645 -0
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts +3 -3
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
- package/dest/public/fixtures/public_tx_simulation_tester.js +38 -8
- package/dest/public/fixtures/simple_contract_data_source.js +1 -1
- package/dest/public/fixtures/token_test.js +3 -3
- package/dest/public/fixtures/utils.d.ts +1 -1
- package/dest/public/fixtures/utils.d.ts.map +1 -1
- package/dest/public/fixtures/utils.js +5 -3
- package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts +4 -6
- package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts.map +1 -1
- package/dest/public/fuzzing/avm_fuzzer_simulator.js +7 -12
- package/dest/public/fuzzing/avm_simulator_bin.js +4 -4
- package/dest/public/hinting_db_sources.d.ts +80 -0
- package/dest/public/hinting_db_sources.d.ts.map +1 -0
- package/dest/public/hinting_db_sources.js +356 -0
- package/dest/public/index.d.ts +2 -2
- package/dest/public/index.d.ts.map +1 -1
- package/dest/public/index.js +1 -1
- package/dest/public/public_processor/guarded_merkle_tree.d.ts +3 -4
- package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -1
- package/dest/public/public_processor/guarded_merkle_tree.js +0 -3
- package/dest/public/public_processor/public_processor.d.ts +1 -1
- package/dest/public/public_processor/public_processor.d.ts.map +1 -1
- package/dest/public/public_processor/public_processor.js +22 -3
- package/dest/public/public_tx_simulator/contract_provider_for_cpp.js +2 -2
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +53 -0
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +131 -0
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts +42 -0
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.js +86 -0
- package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts +30 -0
- package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.js +171 -0
- package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts +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_public_tx_simulator.js → dumping_cpp_public_tx_simulator.js} +2 -2
- package/dest/public/public_tx_simulator/factories.d.ts +6 -6
- package/dest/public/public_tx_simulator/factories.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/factories.js +6 -6
- package/dest/public/public_tx_simulator/index.d.ts +5 -3
- package/dest/public/public_tx_simulator/index.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/index.js +4 -2
- package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +31 -0
- package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/measured_public_tx_simulator.js +51 -0
- package/dest/public/public_tx_simulator/public_tx_context.d.ts +135 -0
- package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/public_tx_context.js +298 -0
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +74 -41
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/public_tx_simulator.js +324 -98
- package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts +21 -0
- package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.js +415 -0
- package/dest/public/side_effect_trace.d.ts +87 -0
- package/dest/public/side_effect_trace.d.ts.map +1 -0
- package/dest/public/side_effect_trace.js +199 -0
- package/dest/public/side_effect_trace_interface.d.ts +22 -0
- package/dest/public/side_effect_trace_interface.d.ts.map +1 -0
- package/dest/public/side_effect_trace_interface.js +1 -0
- package/dest/public/state_manager/index.d.ts +2 -0
- package/dest/public/state_manager/index.d.ts.map +1 -0
- package/dest/public/state_manager/index.js +1 -0
- package/dest/public/state_manager/nullifiers.d.ts +61 -0
- package/dest/public/state_manager/nullifiers.d.ts.map +1 -0
- package/dest/public/state_manager/nullifiers.js +92 -0
- package/dest/public/state_manager/public_storage.d.ts +66 -0
- package/dest/public/state_manager/public_storage.d.ts.map +1 -0
- package/dest/public/state_manager/public_storage.js +145 -0
- package/dest/public/state_manager/state_manager.d.ts +170 -0
- package/dest/public/state_manager/state_manager.d.ts.map +1 -0
- package/dest/public/state_manager/state_manager.js +402 -0
- package/dest/public/test_executor_metrics.d.ts +6 -1
- package/dest/public/test_executor_metrics.d.ts.map +1 -1
- package/dest/public/test_executor_metrics.js +22 -0
- package/package.json +18 -17
- package/src/client.ts +0 -2
- package/src/private/circuit_recording/circuit_recorder.ts +84 -78
- package/src/private/circuit_recording/file_circuit_recorder.ts +38 -48
- package/src/private/circuit_recording/simulator_recorder_wrapper.ts +9 -15
- package/src/public/avm/avm_context.ts +61 -0
- package/src/public/avm/avm_contract_call_result.ts +69 -0
- package/src/public/avm/avm_execution_environment.ts +51 -0
- package/src/public/avm/avm_gas.ts +183 -0
- package/src/public/avm/avm_machine_state.ts +170 -0
- package/src/public/avm/avm_memory_types.ts +440 -0
- package/src/public/avm/avm_simulator.ts +279 -0
- package/src/public/avm/avm_simulator_interface.ts +8 -0
- package/src/public/avm/calldata.ts +101 -0
- package/src/public/avm/errors.ts +177 -0
- package/src/public/avm/fixtures/avm_simulation_tester.ts +122 -0
- package/src/public/avm/{testing → fixtures}/base_avm_simulation_tester.ts +1 -1
- package/src/public/avm/fixtures/initializers.ts +103 -0
- package/src/public/avm/{testing → fixtures}/utils.ts +40 -1
- package/src/public/avm/index.ts +1 -0
- package/src/public/avm/opcodes/accrued_substate.ts +285 -0
- package/src/public/avm/opcodes/addressing_mode.ts +111 -0
- package/src/public/avm/opcodes/arithmetic.ts +129 -0
- package/src/public/avm/opcodes/bitwise.ts +113 -0
- package/src/public/avm/opcodes/comparators.ts +55 -0
- package/src/public/avm/opcodes/contract.ts +76 -0
- package/src/public/avm/opcodes/control_flow.ts +123 -0
- package/src/public/avm/opcodes/conversion.ts +104 -0
- package/src/public/avm/opcodes/ec_add.ts +86 -0
- package/src/public/avm/opcodes/environment_getters.ts +87 -0
- package/src/public/avm/opcodes/external_calls.ts +262 -0
- package/src/public/avm/opcodes/hashing.ts +151 -0
- package/src/public/avm/opcodes/index.ts +15 -0
- package/src/public/avm/opcodes/instruction.ts +136 -0
- package/src/public/avm/opcodes/instruction_impl.ts +36 -0
- package/src/public/avm/opcodes/memory.ts +293 -0
- package/src/public/avm/opcodes/misc.ts +102 -0
- package/src/public/avm/opcodes/storage.ts +95 -0
- package/src/public/avm/revert_reason.ts +58 -0
- package/src/public/avm/serialization/buffer_cursor.ts +118 -0
- package/src/public/avm/serialization/bytecode_serialization.ts +215 -0
- package/src/public/avm/serialization/instruction_serialization.ts +249 -0
- package/src/public/avm/test_utils.ts +64 -0
- package/src/public/debug_fn_name.ts +52 -0
- package/src/public/fixtures/amm_test.ts +2 -2
- package/src/public/fixtures/bulk_test.ts +2 -2
- package/src/public/fixtures/custom_bytecode_tester.ts +2 -2
- package/src/public/fixtures/custom_bytecode_tests.ts +435 -0
- package/src/public/fixtures/index.ts +3 -0
- package/src/public/fixtures/minimal_public_tx.ts +26 -0
- package/src/public/fixtures/opcode_spammer.ts +1713 -0
- package/src/public/fixtures/public_tx_simulation_tester.ts +36 -11
- package/src/public/fixtures/simple_contract_data_source.ts +1 -1
- package/src/public/fixtures/token_test.ts +3 -3
- package/src/public/fixtures/utils.ts +6 -11
- package/src/public/fuzzing/avm_fuzzer_simulator.ts +18 -15
- package/src/public/fuzzing/avm_simulator_bin.ts +5 -3
- package/src/public/hinting_db_sources.ts +610 -0
- package/src/public/index.ts +3 -3
- package/src/public/public_processor/guarded_merkle_tree.ts +2 -5
- package/src/public/public_processor/public_processor.ts +24 -3
- package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +2 -2
- package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +210 -0
- 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_public_tx_simulator.ts → dumping_cpp_public_tx_simulator.ts} +2 -2
- package/src/public/public_tx_simulator/factories.ts +6 -6
- package/src/public/public_tx_simulator/index.ts +4 -2
- package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +105 -0
- package/src/public/public_tx_simulator/public_tx_context.ts +482 -0
- package/src/public/public_tx_simulator/public_tx_simulator.ts +480 -150
- package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +63 -0
- package/src/public/side_effect_trace.ts +293 -0
- package/src/public/side_effect_trace_interface.ts +28 -0
- package/src/public/state_manager/index.ts +1 -0
- package/src/public/state_manager/nullifiers.ts +103 -0
- package/src/public/state_manager/public_storage.ts +174 -0
- package/src/public/state_manager/state_manager.ts +569 -0
- package/src/public/test_executor_metrics.ts +24 -0
- package/dest/public/avm/testing/account_proof_fetcher.d.ts +0 -2
- package/dest/public/avm/testing/account_proof_fetcher.d.ts.map +0 -1
- package/dest/public/avm/testing/base_avm_simulation_tester.d.ts.map +0 -1
- package/dest/public/avm/testing/utils.d.ts +0 -32
- package/dest/public/avm/testing/utils.d.ts.map +0 -1
- package/dest/public/public_tx_simulator/dumping_public_tx_simulator.d.ts +0 -23
- package/dest/public/public_tx_simulator/dumping_public_tx_simulator.d.ts.map +0 -1
- package/dest/public/public_tx_simulator/public_tx_simulator_base.d.ts +0 -22
- package/dest/public/public_tx_simulator/public_tx_simulator_base.d.ts.map +0 -1
- package/dest/public/public_tx_simulator/public_tx_simulator_base.js +0 -28
- package/src/public/public_tx_simulator/public_tx_simulator_base.ts +0 -35
- /package/dest/public/avm/{testing → fixtures}/account_proof_fetcher.js +0 -0
- /package/src/public/avm/{testing → fixtures}/account_proof.json +0 -0
- /package/src/public/avm/{testing → fixtures}/account_proof_fetcher.ts +0 -0
|
@@ -5,27 +5,30 @@ import { Fr } from '@aztec/foundation/curves/bn254';
|
|
|
5
5
|
import { type ContractArtifact, encodeArguments } from '@aztec/stdlib/abi';
|
|
6
6
|
import { PublicSimulatorConfig, type PublicTxResult } from '@aztec/stdlib/avm';
|
|
7
7
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
8
|
-
import {
|
|
8
|
+
import { Gas, GasFees } from '@aztec/stdlib/gas';
|
|
9
9
|
import type { MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
|
|
10
10
|
import { PublicCallRequest } from '@aztec/stdlib/kernel';
|
|
11
11
|
import { GlobalVariables, PublicCallRequestWithCalldata, type Tx } from '@aztec/stdlib/tx';
|
|
12
12
|
import { NativeWorldStateService } from '@aztec/world-state';
|
|
13
13
|
|
|
14
|
-
import { BaseAvmSimulationTester } from '../avm/
|
|
14
|
+
import { BaseAvmSimulationTester } from '../avm/fixtures/base_avm_simulation_tester.js';
|
|
15
15
|
import {
|
|
16
16
|
DEFAULT_BLOCK_NUMBER,
|
|
17
17
|
DEFAULT_TIMESTAMP,
|
|
18
18
|
getContractFunctionAbi,
|
|
19
19
|
getFunctionSelector,
|
|
20
|
-
} from '../avm/
|
|
20
|
+
} from '../avm/fixtures/utils.js';
|
|
21
21
|
import { PublicContractsDB } from '../public_db_sources.js';
|
|
22
|
-
import {
|
|
22
|
+
import { MeasuredCppPublicTxSimulator } from '../public_tx_simulator/cpp_public_tx_simulator.js';
|
|
23
|
+
import { MeasuredCppVsTsPublicTxSimulator } from '../public_tx_simulator/cpp_vs_ts_public_tx_simulator.js';
|
|
23
24
|
import type { MeasuredPublicTxSimulatorInterface } from '../public_tx_simulator/public_tx_simulator_interface.js';
|
|
24
25
|
import { TestExecutorMetrics } from '../test_executor_metrics.js';
|
|
25
26
|
import { SimpleContractDataSource } from './simple_contract_data_source.js';
|
|
26
27
|
import { type TestPrivateInsertions, createTxForPublicCalls } from './utils.js';
|
|
27
28
|
|
|
28
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;
|
|
29
32
|
|
|
30
33
|
export type TestEnqueuedCall = {
|
|
31
34
|
sender?: AztecAddress;
|
|
@@ -80,7 +83,7 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
|
|
|
80
83
|
if (simulatorFactory) {
|
|
81
84
|
this.simulator = simulatorFactory(merkleTree, contractsDB, globals, this.metrics, config);
|
|
82
85
|
} else {
|
|
83
|
-
this.simulator = new
|
|
86
|
+
this.simulator = new MeasuredCppPublicTxSimulator(merkleTree, contractsDB, globals, this.metrics, config);
|
|
84
87
|
}
|
|
85
88
|
}
|
|
86
89
|
|
|
@@ -88,12 +91,14 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
|
|
|
88
91
|
worldStateService: NativeWorldStateService, // make sure to close this later
|
|
89
92
|
globals: GlobalVariables = defaultGlobals(),
|
|
90
93
|
metrics: TestExecutorMetrics = new TestExecutorMetrics(),
|
|
94
|
+
useCppSimulator = false,
|
|
91
95
|
config: PublicSimulatorConfig = defaultConfig,
|
|
92
96
|
): Promise<PublicTxSimulationTester> {
|
|
93
97
|
const contractDataSource = new SimpleContractDataSource();
|
|
94
98
|
const merkleTree = await worldStateService.fork();
|
|
95
|
-
const simulatorFactory: MeasuredSimulatorFactory =
|
|
96
|
-
new
|
|
99
|
+
const simulatorFactory: MeasuredSimulatorFactory = useCppSimulator
|
|
100
|
+
? (mt, cdb, g, m, c) => new MeasuredCppPublicTxSimulator(mt, cdb, g, m, c)
|
|
101
|
+
: (mt, cdb, g, m, c) => new MeasuredCppVsTsPublicTxSimulator(mt, cdb, g, m, c);
|
|
97
102
|
return new PublicTxSimulationTester(merkleTree, contractDataSource, globals, metrics, simulatorFactory, config);
|
|
98
103
|
}
|
|
99
104
|
|
|
@@ -129,10 +134,7 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
|
|
|
129
134
|
teardownCallRequest,
|
|
130
135
|
feePayer,
|
|
131
136
|
/*gasUsedByPrivate*/ teardownCall
|
|
132
|
-
? new Gas(
|
|
133
|
-
FALLBACK_TEARDOWN_DA_GAS_LIMIT + TX_DA_GAS_OVERHEAD,
|
|
134
|
-
FALLBACK_TEARDOWN_L2_GAS_LIMIT + PUBLIC_TX_L2_GAS_OVERHEAD,
|
|
135
|
-
)
|
|
137
|
+
? new Gas(TEARDOWN_DA_GAS_LIMIT + TX_DA_GAS_OVERHEAD, TEARDOWN_L2_GAS_LIMIT + PUBLIC_TX_L2_GAS_OVERHEAD)
|
|
136
138
|
: new Gas(TX_DA_GAS_OVERHEAD, PUBLIC_TX_L2_GAS_OVERHEAD),
|
|
137
139
|
defaultGlobals(),
|
|
138
140
|
gasLimits,
|
|
@@ -164,6 +166,8 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
|
|
|
164
166
|
}
|
|
165
167
|
const avmResult = await this.simulator.simulate(tx, fullTxLabel);
|
|
166
168
|
|
|
169
|
+
await this.#recordBytecodeSizes(fullTxLabel, [...setupCalls, ...appCalls, ...(teardownCall ? [teardownCall] : [])]);
|
|
170
|
+
|
|
167
171
|
// Something like this is often useful for debugging:
|
|
168
172
|
//if (avmResult.revertReason) {
|
|
169
173
|
// // resolve / enrich revert reason
|
|
@@ -292,6 +296,27 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
|
|
|
292
296
|
|
|
293
297
|
return new PublicCallRequestWithCalldata(request, calldata);
|
|
294
298
|
}
|
|
299
|
+
|
|
300
|
+
// WARNING: Deduplicates by artifact name, so two different artifacts with the same name
|
|
301
|
+
// in a single tx would only record the first one's bytecode size.
|
|
302
|
+
async #recordBytecodeSizes(txLabel: string, calls: TestEnqueuedCall[]) {
|
|
303
|
+
const seenArtifactNames = new Set<string>();
|
|
304
|
+
for (const call of calls) {
|
|
305
|
+
const artifact = await this.contractDataSource.getContractArtifact(call.address);
|
|
306
|
+
if (!artifact || seenArtifactNames.has(artifact.name)) {
|
|
307
|
+
continue;
|
|
308
|
+
}
|
|
309
|
+
seenArtifactNames.add(artifact.name);
|
|
310
|
+
const instance = await this.contractDataSource.getContract(call.address);
|
|
311
|
+
if (!instance) {
|
|
312
|
+
continue;
|
|
313
|
+
}
|
|
314
|
+
const contractClass = await this.contractDataSource.getContractClass(instance.currentContractClassId);
|
|
315
|
+
if (contractClass) {
|
|
316
|
+
this.metrics.recordBytecodeSize(txLabel, artifact.name, contractClass.packedBytecode.length);
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
}
|
|
295
320
|
}
|
|
296
321
|
|
|
297
322
|
export function defaultGlobals() {
|
|
@@ -5,7 +5,7 @@ import type { ContractArtifact, FunctionSelector } from '@aztec/stdlib/abi';
|
|
|
5
5
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
6
6
|
import type { ContractClassPublic, ContractDataSource, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
7
7
|
|
|
8
|
-
import { getFunctionSelector } from '../avm/
|
|
8
|
+
import { getFunctionSelector } from '../avm/fixtures/utils.js';
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* This class is used during public/avm testing to function as a database of
|
|
@@ -21,9 +21,9 @@ export async function tokenTest(
|
|
|
21
21
|
) {
|
|
22
22
|
const timer = new Timer();
|
|
23
23
|
|
|
24
|
-
const admin = AztecAddress.
|
|
25
|
-
const sender = AztecAddress.
|
|
26
|
-
const receiver = AztecAddress.
|
|
24
|
+
const admin = AztecAddress.fromNumberUnsafe(42);
|
|
25
|
+
const sender = AztecAddress.fromNumberUnsafe(111);
|
|
26
|
+
const receiver = AztecAddress.fromNumberUnsafe(222);
|
|
27
27
|
|
|
28
28
|
const token = await setUpToken(tester, tokenArtifact, admin, expectToBeTrue);
|
|
29
29
|
|
|
@@ -12,13 +12,7 @@ import { CONTRACT_INSTANCE_PUBLISHED_EVENT_TAG } from '@aztec/protocol-contracts
|
|
|
12
12
|
import { bufferAsFields } from '@aztec/stdlib/abi';
|
|
13
13
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
14
14
|
import type { ContractClassPublic, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
15
|
-
import {
|
|
16
|
-
FALLBACK_TEARDOWN_DA_GAS_LIMIT,
|
|
17
|
-
FALLBACK_TEARDOWN_L2_GAS_LIMIT,
|
|
18
|
-
Gas,
|
|
19
|
-
GasFees,
|
|
20
|
-
GasSettings,
|
|
21
|
-
} from '@aztec/stdlib/gas';
|
|
15
|
+
import { Gas, GasFees, GasSettings } from '@aztec/stdlib/gas';
|
|
22
16
|
import { siloNullifier } from '@aztec/stdlib/hash';
|
|
23
17
|
import {
|
|
24
18
|
LogHash,
|
|
@@ -42,6 +36,9 @@ import {
|
|
|
42
36
|
|
|
43
37
|
import { strict as assert } from 'assert';
|
|
44
38
|
|
|
39
|
+
const TEARDOWN_DA_GAS_LIMIT = 98_304;
|
|
40
|
+
const TEARDOWN_L2_GAS_LIMIT = 817_500;
|
|
41
|
+
|
|
45
42
|
export type TestPrivateInsertions = {
|
|
46
43
|
revertible?: {
|
|
47
44
|
nullifiers?: Fr[];
|
|
@@ -132,9 +129,7 @@ export async function createTxForPublicCalls(
|
|
|
132
129
|
}
|
|
133
130
|
|
|
134
131
|
const maxFeesPerGas = feePayer.isZero() ? GasFees.empty() : new GasFees(10, 10);
|
|
135
|
-
const teardownGasLimits = teardownCallRequest
|
|
136
|
-
? new Gas(FALLBACK_TEARDOWN_DA_GAS_LIMIT, FALLBACK_TEARDOWN_L2_GAS_LIMIT)
|
|
137
|
-
: Gas.empty();
|
|
132
|
+
const teardownGasLimits = teardownCallRequest ? new Gas(TEARDOWN_DA_GAS_LIMIT, TEARDOWN_L2_GAS_LIMIT) : Gas.empty();
|
|
138
133
|
const gasSettings = new GasSettings(gasLimits, teardownGasLimits, maxFeesPerGas, GasFees.empty());
|
|
139
134
|
const txContext = new TxContext(Fr.zero(), Fr.zero(), gasSettings);
|
|
140
135
|
const header = BlockHeader.empty({ globalVariables: globals });
|
|
@@ -260,7 +255,7 @@ export async function addNewContractInstanceToTx(
|
|
|
260
255
|
);
|
|
261
256
|
|
|
262
257
|
const contractAddressNullifier = await siloNullifier(
|
|
263
|
-
AztecAddress.
|
|
258
|
+
AztecAddress.fromNumberUnsafe(CONTRACT_INSTANCE_REGISTRY_CONTRACT_ADDRESS),
|
|
264
259
|
contractInstance.address.toField(),
|
|
265
260
|
);
|
|
266
261
|
|
|
@@ -33,7 +33,7 @@ import {
|
|
|
33
33
|
} from '@aztec/stdlib/tx';
|
|
34
34
|
import type { NativeWorldStateService } from '@aztec/world-state';
|
|
35
35
|
|
|
36
|
-
import { BaseAvmSimulationTester } from '../avm/
|
|
36
|
+
import { BaseAvmSimulationTester } from '../avm/fixtures/base_avm_simulation_tester.js';
|
|
37
37
|
import { SimpleContractDataSource } from '../fixtures/simple_contract_data_source.js';
|
|
38
38
|
import { PublicContractsDB } from '../public_db_sources.js';
|
|
39
39
|
import { PublicTxSimulator } from '../public_tx_simulator/public_tx_simulator.js';
|
|
@@ -75,7 +75,7 @@ export class FuzzerSimulationRequest {
|
|
|
75
75
|
|
|
76
76
|
/**
|
|
77
77
|
* Creates a TypeScript Tx object from a deserialized C++ Tx (AvmTxHint-like structure).
|
|
78
|
-
* This allows
|
|
78
|
+
* This allows using PublicTxSimulator.simulate() with fuzzer-generated transactions.
|
|
79
79
|
*/
|
|
80
80
|
async function createTxFromHint(cppTx: AvmTxHint): Promise<Tx> {
|
|
81
81
|
// Create TxHash from the C++ tx hash string
|
|
@@ -189,8 +189,6 @@ async function createTxFromHint(cppTx: AvmTxHint): Promise<Tx> {
|
|
|
189
189
|
/**
|
|
190
190
|
* A simulator class for the AVM fuzzer that extends BaseAvmSimulationTester.
|
|
191
191
|
* It provides methods for registering contracts from C++ msgpack data and simulating transactions.
|
|
192
|
-
* The simulation itself runs on the production C++ AVM simulator, so the fuzzer compares brillig
|
|
193
|
-
* execution against the real AVM rather than a TS reference.
|
|
194
192
|
*/
|
|
195
193
|
export class AvmFuzzerSimulator extends BaseAvmSimulationTester {
|
|
196
194
|
private simulator: PublicTxSimulator;
|
|
@@ -199,19 +197,23 @@ export class AvmFuzzerSimulator extends BaseAvmSimulationTester {
|
|
|
199
197
|
merkleTrees: MerkleTreeWriteOperations,
|
|
200
198
|
contractDataSource: SimpleContractDataSource,
|
|
201
199
|
globals: GlobalVariables,
|
|
200
|
+
protocolContracts: ProtocolContracts,
|
|
202
201
|
) {
|
|
203
202
|
super(contractDataSource, merkleTrees);
|
|
204
203
|
const contractsDb = new PublicContractsDB(contractDataSource);
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
204
|
+
this.simulator = new PublicTxSimulator(
|
|
205
|
+
merkleTrees,
|
|
206
|
+
contractsDb,
|
|
207
|
+
globals,
|
|
208
|
+
{
|
|
209
|
+
skipFeeEnforcement: false,
|
|
210
|
+
collectDebugLogs: false,
|
|
211
|
+
collectHints: false,
|
|
212
|
+
collectStatistics: false,
|
|
213
|
+
collectCallMetadata: false,
|
|
214
|
+
},
|
|
215
|
+
protocolContracts,
|
|
216
|
+
);
|
|
215
217
|
}
|
|
216
218
|
|
|
217
219
|
/**
|
|
@@ -220,10 +222,11 @@ export class AvmFuzzerSimulator extends BaseAvmSimulationTester {
|
|
|
220
222
|
public static async create(
|
|
221
223
|
worldStateService: NativeWorldStateService,
|
|
222
224
|
globals: GlobalVariables,
|
|
225
|
+
protocolContracts: ProtocolContracts,
|
|
223
226
|
): Promise<AvmFuzzerSimulator> {
|
|
224
227
|
const contractDataSource = new SimpleContractDataSource();
|
|
225
228
|
const merkleTrees = await worldStateService.fork();
|
|
226
|
-
return new AvmFuzzerSimulator(merkleTrees, contractDataSource, globals);
|
|
229
|
+
return new AvmFuzzerSimulator(merkleTrees, contractDataSource, globals, protocolContracts);
|
|
227
230
|
}
|
|
228
231
|
|
|
229
232
|
/**
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
deserializeFromMessagePack,
|
|
8
8
|
serializeWithMessagePack,
|
|
9
9
|
} from '@aztec/stdlib/avm';
|
|
10
|
-
import { GlobalVariables, TreeSnapshots } from '@aztec/stdlib/tx';
|
|
10
|
+
import { GlobalVariables, ProtocolContracts, TreeSnapshots } from '@aztec/stdlib/tx';
|
|
11
11
|
import { NativeWorldStateService } from '@aztec/world-state';
|
|
12
12
|
|
|
13
13
|
import { createInterface } from 'readline';
|
|
@@ -58,6 +58,7 @@ async function simulateWithFuzzer(
|
|
|
58
58
|
rawContractInstances: [any, any][], // Replace these when we are moving contract instances to TS
|
|
59
59
|
rawPublicDataWrites: any[], // Public data tree writes to apply before simulation
|
|
60
60
|
rawNoteHashes: any[], // Note hashes to apply before simulation
|
|
61
|
+
protocolContracts: ProtocolContracts, // Protocol contracts mapping from C++
|
|
61
62
|
): Promise<{
|
|
62
63
|
reverted: boolean;
|
|
63
64
|
output: Fr[];
|
|
@@ -67,7 +68,7 @@ async function simulateWithFuzzer(
|
|
|
67
68
|
}> {
|
|
68
69
|
const worldStateService = await openExistingWorldState(dataDir, mapSizeKb);
|
|
69
70
|
|
|
70
|
-
const simulator = await AvmFuzzerSimulator.create(worldStateService, globals);
|
|
71
|
+
const simulator = await AvmFuzzerSimulator.create(worldStateService, globals, protocolContracts);
|
|
71
72
|
|
|
72
73
|
await simulator.applyNoteHashes(rawNoteHashes);
|
|
73
74
|
|
|
@@ -107,7 +108,7 @@ async function execute(base64Line: string): Promise<void> {
|
|
|
107
108
|
const rawRequest = deserializeFromMessagePack(buffer);
|
|
108
109
|
const request = FuzzerSimulationRequest.fromPlainObject(rawRequest);
|
|
109
110
|
|
|
110
|
-
// Run the simulation
|
|
111
|
+
// Run the TS simulation
|
|
111
112
|
const result = await simulateWithFuzzer(
|
|
112
113
|
request.wsDataDir,
|
|
113
114
|
request.wsMapSizeKb,
|
|
@@ -117,6 +118,7 @@ async function execute(base64Line: string): Promise<void> {
|
|
|
117
118
|
request.contractInstances,
|
|
118
119
|
request.publicDataWrites,
|
|
119
120
|
request.noteHashes,
|
|
121
|
+
request.protocolContracts,
|
|
120
122
|
);
|
|
121
123
|
|
|
122
124
|
// Serialize the result to msgpack and encode it in base64 for output
|