@aztec/simulator 0.0.1-commit.343b43af6 → 0.0.1-commit.350e0a4d
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/acvm_wasm.d.ts +1 -1
- package/dest/private/acvm_wasm.d.ts.map +1 -1
- package/dest/private/acvm_wasm.js +3 -1
- 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/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/{fixtures → testing}/base_avm_simulation_tester.d.ts +2 -1
- 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 +18 -3
- package/dest/public/avm/testing/utils.d.ts +32 -0
- package/dest/public/avm/testing/utils.d.ts.map +1 -0
- package/dest/public/avm/{fixtures → testing}/utils.js +4 -34
- package/dest/public/contracts_db_checkpoint.d.ts +2 -2
- package/dest/public/contracts_db_checkpoint.d.ts.map +1 -1
- package/dest/public/contracts_db_checkpoint.js +1 -1
- package/dest/public/fixtures/amm_test.js +2 -2
- package/dest/public/fixtures/bulk_test.d.ts +1 -1
- package/dest/public/fixtures/bulk_test.d.ts.map +1 -1
- package/dest/public/fixtures/bulk_test.js +33 -6
- 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/index.d.ts +1 -4
- package/dest/public/fixtures/index.d.ts.map +1 -1
- package/dest/public/fixtures/index.js +0 -3
- 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 +10 -36
- 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 +16 -15
- package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts +6 -4
- package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts.map +1 -1
- package/dest/public/fuzzing/avm_fuzzer_simulator.js +12 -7
- package/dest/public/fuzzing/avm_simulator_bin.js +4 -4
- 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_db_sources.d.ts +6 -3
- package/dest/public/public_db_sources.d.ts.map +1 -1
- package/dest/public/public_db_sources.js +16 -10
- package/dest/public/public_processor/guarded_merkle_tree.d.ts +7 -6
- package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -1
- package/dest/public/public_processor/guarded_merkle_tree.js +7 -4
- package/dest/public/public_processor/public_processor.d.ts +4 -3
- package/dest/public/public_processor/public_processor.d.ts.map +1 -1
- package/dest/public/public_processor/public_processor.js +69 -46
- package/dest/public/public_processor/public_processor_metrics.d.ts +4 -1
- package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
- package/dest/public/public_processor/public_processor_metrics.js +8 -0
- package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts +1 -1
- package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/contract_provider_for_cpp.js +5 -4
- package/dest/public/public_tx_simulator/dumping_public_tx_simulator.d.ts +23 -0
- package/dest/public/public_tx_simulator/dumping_public_tx_simulator.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/{dumping_cpp_public_tx_simulator.js → dumping_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 +3 -5
- package/dest/public/public_tx_simulator/index.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/index.js +2 -4
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +41 -70
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/public_tx_simulator.js +98 -319
- package/dest/public/public_tx_simulator/public_tx_simulator_base.d.ts +22 -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 +28 -0
- package/dest/public/test_executor_metrics.d.ts +1 -6
- package/dest/public/test_executor_metrics.d.ts.map +1 -1
- package/dest/public/test_executor_metrics.js +0 -22
- package/package.json +17 -18
- package/src/client.ts +0 -2
- package/src/private/acvm_wasm.ts +4 -1
- 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/{fixtures → testing}/base_avm_simulation_tester.ts +23 -3
- package/src/public/avm/{fixtures → testing}/utils.ts +4 -40
- package/src/public/contracts_db_checkpoint.ts +1 -1
- package/src/public/fixtures/amm_test.ts +2 -2
- package/src/public/fixtures/bulk_test.ts +31 -6
- package/src/public/fixtures/custom_bytecode_tester.ts +2 -2
- package/src/public/fixtures/index.ts +0 -3
- package/src/public/fixtures/public_tx_simulation_tester.ts +10 -42
- 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 +18 -20
- package/src/public/fuzzing/avm_fuzzer_simulator.ts +15 -18
- package/src/public/fuzzing/avm_simulator_bin.ts +3 -5
- package/src/public/index.ts +3 -3
- package/src/public/public_db_sources.ts +21 -14
- package/src/public/public_processor/guarded_merkle_tree.ts +10 -7
- package/src/public/public_processor/public_processor.ts +88 -54
- package/src/public/public_processor/public_processor_metrics.ts +12 -0
- package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +5 -4
- package/src/public/public_tx_simulator/{dumping_cpp_public_tx_simulator.ts → dumping_public_tx_simulator.ts} +2 -2
- package/src/public/public_tx_simulator/factories.ts +6 -6
- package/src/public/public_tx_simulator/index.ts +2 -4
- package/src/public/public_tx_simulator/public_tx_simulator.ts +150 -476
- package/src/public/public_tx_simulator/public_tx_simulator_base.ts +35 -0
- package/src/public/test_executor_metrics.ts +0 -24
- 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 -24
- package/dest/public/avm/avm_execution_environment.d.ts.map +0 -1
- package/dest/public/avm/avm_execution_environment.js +0 -33
- 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 -98
- package/dest/public/avm/avm_machine_state.d.ts.map +0 -1
- package/dest/public/avm/avm_machine_state.js +0 -110
- 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 -354
- package/dest/public/avm/avm_simulator.d.ts +0 -41
- package/dest/public/avm/avm_simulator.d.ts.map +0 -1
- package/dest/public/avm/avm_simulator.js +0 -192
- 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/calldata.d.ts +0 -51
- package/dest/public/avm/calldata.d.ts.map +0 -1
- package/dest/public/avm/calldata.js +0 -63
- package/dest/public/avm/errors.d.ts +0 -104
- package/dest/public/avm/errors.d.ts.map +0 -1
- package/dest/public/avm/errors.js +0 -141
- package/dest/public/avm/fixtures/account_proof_fetcher.d.ts +0 -2
- package/dest/public/avm/fixtures/account_proof_fetcher.d.ts.map +0 -1
- 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 -84
- package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +0 -1
- package/dest/public/avm/fixtures/initializers.d.ts +0 -42
- package/dest/public/avm/fixtures/initializers.d.ts.map +0 -1
- package/dest/public/avm/fixtures/initializers.js +0 -45
- package/dest/public/avm/fixtures/utils.d.ts +0 -39
- 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 -74
- package/dest/public/avm/opcodes/accrued_substate.d.ts.map +0 -1
- package/dest/public/avm/opcodes/accrued_substate.js +0 -254
- 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 -49
- package/dest/public/avm/opcodes/arithmetic.d.ts.map +0 -1
- package/dest/public/avm/opcodes/arithmetic.js +0 -97
- 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 -93
- 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 -210
- 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 -119
- 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 -25
- package/dest/public/avm/opcodes/storage.d.ts.map +0 -1
- package/dest/public/avm/opcodes/storage.js +0 -78
- 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 -39
- 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 -336
- 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 -18
- package/dest/public/debug_fn_name.d.ts.map +0 -1
- package/dest/public/debug_fn_name.js +0 -37
- package/dest/public/fixtures/custom_bytecode_tests.d.ts +0 -12
- package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +0 -1
- package/dest/public/fixtures/custom_bytecode_tests.js +0 -174
- package/dest/public/fixtures/minimal_public_tx.d.ts +0 -4
- package/dest/public/fixtures/minimal_public_tx.d.ts.map +0 -1
- package/dest/public/fixtures/minimal_public_tx.js +0 -19
- package/dest/public/fixtures/opcode_spammer.d.ts +0 -122
- package/dest/public/fixtures/opcode_spammer.d.ts.map +0 -1
- package/dest/public/fixtures/opcode_spammer.js +0 -1653
- package/dest/public/hinting_db_sources.d.ts +0 -80
- package/dest/public/hinting_db_sources.d.ts.map +0 -1
- package/dest/public/hinting_db_sources.js +0 -355
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +0 -53
- 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 -131
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts +0 -42
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts.map +0 -1
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.js +0 -86
- package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts +0 -30
- package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts.map +0 -1
- package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.js +0 -171
- package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts +0 -23
- package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts.map +0 -1
- package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +0 -31
- 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 -131
- 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 -300
- 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 -415
- 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 -22
- 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 -170
- package/dest/public/state_manager/state_manager.d.ts.map +0 -1
- package/dest/public/state_manager/state_manager.js +0 -402
- package/src/public/avm/avm_context.ts +0 -61
- package/src/public/avm/avm_contract_call_result.ts +0 -69
- package/src/public/avm/avm_execution_environment.ts +0 -51
- package/src/public/avm/avm_gas.ts +0 -183
- package/src/public/avm/avm_machine_state.ts +0 -170
- package/src/public/avm/avm_memory_types.ts +0 -440
- package/src/public/avm/avm_simulator.ts +0 -279
- package/src/public/avm/avm_simulator_interface.ts +0 -8
- package/src/public/avm/calldata.ts +0 -100
- package/src/public/avm/errors.ts +0 -177
- package/src/public/avm/fixtures/avm_simulation_tester.ts +0 -122
- package/src/public/avm/fixtures/initializers.ts +0 -103
- package/src/public/avm/index.ts +0 -1
- package/src/public/avm/opcodes/accrued_substate.ts +0 -285
- package/src/public/avm/opcodes/addressing_mode.ts +0 -111
- package/src/public/avm/opcodes/arithmetic.ts +0 -129
- 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 -72
- 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 -105
- package/src/public/avm/opcodes/environment_getters.ts +0 -87
- package/src/public/avm/opcodes/external_calls.ts +0 -262
- package/src/public/avm/opcodes/hashing.ts +0 -151
- 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 -95
- package/src/public/avm/revert_reason.ts +0 -58
- package/src/public/avm/serialization/buffer_cursor.ts +0 -118
- package/src/public/avm/serialization/bytecode_serialization.ts +0 -215
- 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 -52
- package/src/public/fixtures/custom_bytecode_tests.ts +0 -228
- package/src/public/fixtures/minimal_public_tx.ts +0 -26
- package/src/public/fixtures/opcode_spammer.ts +0 -1717
- package/src/public/hinting_db_sources.ts +0 -607
- package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +0 -210
- package/src/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.ts +0 -134
- package/src/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.ts +0 -239
- package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +0 -105
- package/src/public/public_tx_simulator/public_tx_context.ts +0 -484
- package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +0 -63
- package/src/public/side_effect_trace.ts +0 -293
- 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 -569
- /package/dest/public/avm/{fixtures → testing}/account_proof_fetcher.js +0 -0
- /package/src/public/avm/{fixtures → testing}/account_proof.json +0 -0
- /package/src/public/avm/{fixtures → testing}/account_proof_fetcher.ts +0 -0
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
deserializeFromMessagePack,
|
|
8
8
|
serializeWithMessagePack,
|
|
9
9
|
} from '@aztec/stdlib/avm';
|
|
10
|
-
import { GlobalVariables,
|
|
10
|
+
import { GlobalVariables, TreeSnapshots } from '@aztec/stdlib/tx';
|
|
11
11
|
import { NativeWorldStateService } from '@aztec/world-state';
|
|
12
12
|
|
|
13
13
|
import { createInterface } from 'readline';
|
|
@@ -58,7 +58,6 @@ 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++
|
|
62
61
|
): Promise<{
|
|
63
62
|
reverted: boolean;
|
|
64
63
|
output: Fr[];
|
|
@@ -68,7 +67,7 @@ async function simulateWithFuzzer(
|
|
|
68
67
|
}> {
|
|
69
68
|
const worldStateService = await openExistingWorldState(dataDir, mapSizeKb);
|
|
70
69
|
|
|
71
|
-
const simulator = await AvmFuzzerSimulator.create(worldStateService, globals
|
|
70
|
+
const simulator = await AvmFuzzerSimulator.create(worldStateService, globals);
|
|
72
71
|
|
|
73
72
|
await simulator.applyNoteHashes(rawNoteHashes);
|
|
74
73
|
|
|
@@ -108,7 +107,7 @@ async function execute(base64Line: string): Promise<void> {
|
|
|
108
107
|
const rawRequest = deserializeFromMessagePack(buffer);
|
|
109
108
|
const request = FuzzerSimulationRequest.fromPlainObject(rawRequest);
|
|
110
109
|
|
|
111
|
-
// Run the
|
|
110
|
+
// Run the simulation on the C++ AVM simulator
|
|
112
111
|
const result = await simulateWithFuzzer(
|
|
113
112
|
request.wsDataDir,
|
|
114
113
|
request.wsMapSizeKb,
|
|
@@ -118,7 +117,6 @@ async function execute(base64Line: string): Promise<void> {
|
|
|
118
117
|
request.contractInstances,
|
|
119
118
|
request.publicDataWrites,
|
|
120
119
|
request.noteHashes,
|
|
121
|
-
request.protocolContracts,
|
|
122
120
|
);
|
|
123
121
|
|
|
124
122
|
// Serialize the result to msgpack and encode it in base64 for output
|
package/src/public/index.ts
CHANGED
|
@@ -2,11 +2,11 @@ export { PublicContractsDB } from './public_db_sources.js';
|
|
|
2
2
|
export { GuardedMerkleTreeOperations } from './public_processor/guarded_merkle_tree.js';
|
|
3
3
|
export { PublicProcessor, PublicProcessorFactory } from './public_processor/public_processor.js';
|
|
4
4
|
export {
|
|
5
|
-
|
|
5
|
+
PublicTxSimulator,
|
|
6
6
|
createPublicTxSimulatorForBlockBuilding,
|
|
7
|
-
|
|
7
|
+
DumpingPublicTxSimulator,
|
|
8
8
|
type PublicTxSimulatorInterface,
|
|
9
|
-
|
|
9
|
+
TelemetryPublicTxSimulator,
|
|
10
10
|
} from './public_tx_simulator/index.js';
|
|
11
11
|
export type { PublicTxResult, PublicSimulatorConfig as PublicTxSimulatorConfig } from '@aztec/stdlib/avm';
|
|
12
12
|
export { getCallRequestsWithCalldataByPhase } from './utils.js';
|
|
@@ -55,10 +55,11 @@ export class PublicContractsDB implements PublicContractsDBInterface {
|
|
|
55
55
|
this.log = createLogger('simulator:contracts-data-source', bindings);
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
/** Parses raw log data from the C++/NAPI bridge and inserts the resulting contracts into the current checkpoint. */
|
|
59
|
+
public addContractsFromLogs(contractDeploymentData: ContractDeploymentData): void {
|
|
59
60
|
const currentState = this.getCurrentState();
|
|
60
61
|
|
|
61
|
-
|
|
62
|
+
this.addContractClassesFromEvents(
|
|
62
63
|
ContractClassPublishedEvent.extractContractClassEvents(contractDeploymentData.getContractClassLogs()),
|
|
63
64
|
currentState,
|
|
64
65
|
);
|
|
@@ -69,10 +70,18 @@ export class PublicContractsDB implements PublicContractsDBInterface {
|
|
|
69
70
|
);
|
|
70
71
|
}
|
|
71
72
|
|
|
72
|
-
public
|
|
73
|
+
public addNewContracts(tx: Tx): void {
|
|
73
74
|
const contractDeploymentData = AllContractDeploymentData.fromTx(tx);
|
|
74
|
-
|
|
75
|
-
|
|
75
|
+
this.addContractsFromLogs(contractDeploymentData.getNonRevertibleContractDeploymentData());
|
|
76
|
+
this.addContractsFromLogs(contractDeploymentData.getRevertibleContractDeploymentData());
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/** Inserts typed contract instances directly into the current checkpoint. */
|
|
80
|
+
public addContracts(contractInstances?: ContractInstanceWithAddress[]): void {
|
|
81
|
+
const currentState = this.getCurrentState();
|
|
82
|
+
for (const instance of contractInstances ?? []) {
|
|
83
|
+
currentState.addInstance(instance.address, instance);
|
|
84
|
+
}
|
|
76
85
|
}
|
|
77
86
|
|
|
78
87
|
/**
|
|
@@ -81,7 +90,7 @@ export class PublicContractsDB implements PublicContractsDBInterface {
|
|
|
81
90
|
*/
|
|
82
91
|
public createCheckpoint(): void {
|
|
83
92
|
const currentState = this.getCurrentState();
|
|
84
|
-
const newState = currentState.
|
|
93
|
+
const newState = currentState.fork();
|
|
85
94
|
this.contractStateStack.push(newState);
|
|
86
95
|
}
|
|
87
96
|
|
|
@@ -174,17 +183,15 @@ export class PublicContractsDB implements PublicContractsDBInterface {
|
|
|
174
183
|
return await this.dataSource.getDebugFunctionName(address, selector);
|
|
175
184
|
}
|
|
176
185
|
|
|
177
|
-
private
|
|
186
|
+
private addContractClassesFromEvents(
|
|
178
187
|
contractClassEvents: ContractClassPublishedEvent[],
|
|
179
188
|
state: ContractsDbCheckpoint,
|
|
180
189
|
) {
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
}),
|
|
187
|
-
);
|
|
190
|
+
for (const event of contractClassEvents) {
|
|
191
|
+
this.log.debug(`Adding class ${event.contractClassId.toString()} to contract state`);
|
|
192
|
+
const contractClass = event.toContractClassPublic();
|
|
193
|
+
state.addClass(event.contractClassId, contractClass);
|
|
194
|
+
}
|
|
188
195
|
}
|
|
189
196
|
|
|
190
197
|
private addContractInstancesFromEvents(
|
|
@@ -12,7 +12,7 @@ import type {
|
|
|
12
12
|
TreeInfo,
|
|
13
13
|
} from '@aztec/stdlib/trees';
|
|
14
14
|
import type { BlockHeader, StateReference } from '@aztec/stdlib/tx';
|
|
15
|
-
import type { WorldStateRevision
|
|
15
|
+
import type { WorldStateRevision } from '@aztec/stdlib/world-state';
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
18
|
* Wraps an instance of `MerkleTreeWriteOperations` to allow the sequencer to gate access.
|
|
@@ -94,9 +94,12 @@ export class GuardedMerkleTreeOperations implements MerkleTreeWriteOperations {
|
|
|
94
94
|
getInitialHeader(): BlockHeader {
|
|
95
95
|
return this.target.getInitialHeader();
|
|
96
96
|
}
|
|
97
|
-
public getRevision(): WorldStateRevision
|
|
97
|
+
public getRevision(): WorldStateRevision {
|
|
98
98
|
return this.target.getRevision();
|
|
99
99
|
}
|
|
100
|
+
public getIpcPath(): string {
|
|
101
|
+
return this.target.getIpcPath();
|
|
102
|
+
}
|
|
100
103
|
getSiblingPath<ID extends MerkleTreeId>(treeId: ID, index: bigint): Promise<SiblingPath<TreeHeights[ID]>> {
|
|
101
104
|
return this.guardAndPush(() => this.target.getSiblingPath(treeId, index));
|
|
102
105
|
}
|
|
@@ -134,7 +137,7 @@ export class GuardedMerkleTreeOperations implements MerkleTreeWriteOperations {
|
|
|
134
137
|
): Promise<(BlockNumber | undefined)[]> {
|
|
135
138
|
return this.guardAndPush(() => this.target.getBlockNumbersForLeafIndices(treeId, leafIndices));
|
|
136
139
|
}
|
|
137
|
-
createCheckpoint(): Promise<
|
|
140
|
+
createCheckpoint(): Promise<number> {
|
|
138
141
|
return this.guardAndPush(() => this.target.createCheckpoint());
|
|
139
142
|
}
|
|
140
143
|
commitCheckpoint(): Promise<void> {
|
|
@@ -143,11 +146,11 @@ export class GuardedMerkleTreeOperations implements MerkleTreeWriteOperations {
|
|
|
143
146
|
revertCheckpoint(): Promise<void> {
|
|
144
147
|
return this.guardAndPush(() => this.target.revertCheckpoint());
|
|
145
148
|
}
|
|
146
|
-
|
|
147
|
-
return this.guardAndPush(() => this.target.
|
|
149
|
+
commitAllCheckpointsTo(depth: number): Promise<void> {
|
|
150
|
+
return this.guardAndPush(() => this.target.commitAllCheckpointsTo(depth));
|
|
148
151
|
}
|
|
149
|
-
|
|
150
|
-
return this.guardAndPush(() => this.target.
|
|
152
|
+
revertAllCheckpointsTo(depth: number): Promise<void> {
|
|
153
|
+
return this.guardAndPush(() => this.target.revertAllCheckpointsTo(depth));
|
|
151
154
|
}
|
|
152
155
|
findSiblingPaths<ID extends MerkleTreeId>(
|
|
153
156
|
treeId: ID,
|
|
@@ -3,7 +3,7 @@ import { padArrayEnd } from '@aztec/foundation/collection';
|
|
|
3
3
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
4
|
import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
|
|
5
5
|
import { sleep } from '@aztec/foundation/sleep';
|
|
6
|
-
import { DateProvider, Timer, elapsed,
|
|
6
|
+
import { DateProvider, Timer, elapsed, execWithSignal } from '@aztec/foundation/timer';
|
|
7
7
|
import { ProtocolContractAddress } from '@aztec/protocol-contracts';
|
|
8
8
|
import { ContractClassPublishedEvent } from '@aztec/protocol-contracts/class-registry';
|
|
9
9
|
import { computeFeePayerBalanceLeafSlot, computeFeePayerBalanceStorageSlot } from '@aztec/protocol-contracts/fee-juice';
|
|
@@ -54,7 +54,7 @@ import { PublicContractsDB, PublicTreesDB } from '../public_db_sources.js';
|
|
|
54
54
|
import {
|
|
55
55
|
type PublicTxSimulatorConfig,
|
|
56
56
|
type PublicTxSimulatorInterface,
|
|
57
|
-
|
|
57
|
+
TelemetryPublicTxSimulator,
|
|
58
58
|
} from '../public_tx_simulator/index.js';
|
|
59
59
|
import { GuardedMerkleTreeOperations } from './guarded_merkle_tree.js';
|
|
60
60
|
import { PublicProcessorMetrics } from './public_processor_metrics.js';
|
|
@@ -76,17 +76,15 @@ export class PublicProcessorFactory {
|
|
|
76
76
|
/**
|
|
77
77
|
* Creates a new instance of a PublicProcessor.
|
|
78
78
|
* @param globalVariables - The global variables for the block being processed.
|
|
79
|
-
* @param
|
|
79
|
+
* @param contractsDB - Optional pre-populated contracts DB; a fresh one is constructed if omitted.
|
|
80
80
|
* @returns A new instance of a PublicProcessor.
|
|
81
81
|
*/
|
|
82
82
|
public create(
|
|
83
83
|
merkleTree: MerkleTreeWriteOperations,
|
|
84
84
|
globalVariables: GlobalVariables,
|
|
85
85
|
config: PublicSimulatorConfig,
|
|
86
|
+
contractsDB: PublicContractsDB = new PublicContractsDB(this.contractDataSource, this.log.getBindings()),
|
|
86
87
|
): PublicProcessor {
|
|
87
|
-
const bindings = this.log.getBindings();
|
|
88
|
-
const contractsDB = new PublicContractsDB(this.contractDataSource, bindings);
|
|
89
|
-
|
|
90
88
|
const guardedFork = new GuardedMerkleTreeOperations(merkleTree);
|
|
91
89
|
const publicTxSimulator = this.createPublicTxSimulator(guardedFork, contractsDB, globalVariables, config);
|
|
92
90
|
|
|
@@ -97,7 +95,7 @@ export class PublicProcessorFactory {
|
|
|
97
95
|
publicTxSimulator,
|
|
98
96
|
this.dateProvider,
|
|
99
97
|
this.telemetryClient,
|
|
100
|
-
createLogger('simulator:public-processor',
|
|
98
|
+
createLogger('simulator:public-processor', this.log.getBindings()),
|
|
101
99
|
);
|
|
102
100
|
}
|
|
103
101
|
|
|
@@ -107,7 +105,7 @@ export class PublicProcessorFactory {
|
|
|
107
105
|
globalVariables: GlobalVariables,
|
|
108
106
|
config?: Partial<PublicTxSimulatorConfig>,
|
|
109
107
|
): PublicTxSimulatorInterface {
|
|
110
|
-
return new
|
|
108
|
+
return new TelemetryPublicTxSimulator(
|
|
111
109
|
merkleTree,
|
|
112
110
|
contractsDB,
|
|
113
111
|
globalVariables,
|
|
@@ -125,6 +123,17 @@ class PublicProcessorTimeoutError extends Error {
|
|
|
125
123
|
}
|
|
126
124
|
}
|
|
127
125
|
|
|
126
|
+
class PublicProcessorAbortError extends Error {
|
|
127
|
+
constructor(message: string = 'Aborted while processing tx') {
|
|
128
|
+
super(message);
|
|
129
|
+
this.name = 'PublicProcessorAbortError';
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
function isPublicProcessorInterruptError(err: any) {
|
|
134
|
+
return err?.name === 'PublicProcessorTimeoutError' || err?.name === 'PublicProcessorAbortError';
|
|
135
|
+
}
|
|
136
|
+
|
|
128
137
|
/**
|
|
129
138
|
* Converts Txs lifted from the P2P module into ProcessedTx objects by executing
|
|
130
139
|
* any public function calls in them. Txs with private calls only are unaffected.
|
|
@@ -161,7 +170,7 @@ export class PublicProcessor implements Traceable {
|
|
|
161
170
|
limits: PublicProcessorLimits = {},
|
|
162
171
|
validator: PublicProcessorValidator = {},
|
|
163
172
|
): Promise<[ProcessedTx[], FailedTx[], Tx[], NestedProcessReturnValues[], DebugLog[]]> {
|
|
164
|
-
const { maxTransactions, deadline, maxBlockGas, maxBlobFields, isBuildingProposal } = limits;
|
|
173
|
+
const { maxTransactions, deadline, maxBlockGas, maxBlobFields, isBuildingProposal, signal } = limits;
|
|
165
174
|
const { preprocessValidator, nullifierCache } = validator;
|
|
166
175
|
const result: ProcessedTx[] = [];
|
|
167
176
|
const usedTxs: Tx[] = [];
|
|
@@ -174,6 +183,8 @@ export class PublicProcessor implements Traceable {
|
|
|
174
183
|
let totalPublicGas = new Gas(0, 0);
|
|
175
184
|
let totalBlockGas = new Gas(0, 0);
|
|
176
185
|
let totalBlobFields = 0;
|
|
186
|
+
let silentlySkippedCount = 0;
|
|
187
|
+
let totalSilentlySkippedDurationMs = 0;
|
|
177
188
|
|
|
178
189
|
for await (const tx of txs) {
|
|
179
190
|
// Only process up to the max tx limit
|
|
@@ -182,11 +193,15 @@ export class PublicProcessor implements Traceable {
|
|
|
182
193
|
break;
|
|
183
194
|
}
|
|
184
195
|
|
|
185
|
-
// Bail if we've hit the deadline
|
|
196
|
+
// Bail if we've hit the deadline or have been interrupted.
|
|
186
197
|
if (deadline && this.dateProvider.now() > +deadline) {
|
|
187
198
|
this.log.warn(`Stopping tx processing due to timeout.`);
|
|
188
199
|
break;
|
|
189
200
|
}
|
|
201
|
+
if (signal?.aborted) {
|
|
202
|
+
this.log.warn(`Stopping tx processing due to abort signal.`);
|
|
203
|
+
break;
|
|
204
|
+
}
|
|
190
205
|
|
|
191
206
|
const txHash = tx.getTxHash().toString();
|
|
192
207
|
|
|
@@ -224,11 +239,6 @@ export class PublicProcessor implements Traceable {
|
|
|
224
239
|
failed.push({ tx, error: new Error(`Tx failed preprocess validation: ${reason}`) });
|
|
225
240
|
returns.push(new NestedProcessReturnValues([]));
|
|
226
241
|
continue;
|
|
227
|
-
} else if (result.result === 'skipped') {
|
|
228
|
-
const reason = result.reason.join(', ');
|
|
229
|
-
this.log.debug(`Skipping tx ${txHash.toString()} due to pre-process validation: ${reason}`);
|
|
230
|
-
returns.push(new NestedProcessReturnValues([]));
|
|
231
|
-
continue;
|
|
232
242
|
} else {
|
|
233
243
|
this.log.trace(`Tx ${txHash.toString()} is valid before processing.`);
|
|
234
244
|
}
|
|
@@ -244,7 +254,9 @@ export class PublicProcessor implements Traceable {
|
|
|
244
254
|
this.contractsDB.createCheckpoint();
|
|
245
255
|
|
|
246
256
|
try {
|
|
247
|
-
const [processedTx, returnValues, txDebugLogs] = await
|
|
257
|
+
const [txProcessingTimeMs, [processedTx, returnValues, txDebugLogs]] = await elapsed(() =>
|
|
258
|
+
this.processTx(tx, deadline, signal),
|
|
259
|
+
);
|
|
248
260
|
|
|
249
261
|
// Inject a fake processing failure after N txs if requested
|
|
250
262
|
const fakeThrowAfter = this.opts.fakeThrowAfterProcessingTxCount;
|
|
@@ -265,8 +277,12 @@ export class PublicProcessor implements Traceable {
|
|
|
265
277
|
txBlobFields,
|
|
266
278
|
totalBlobFields,
|
|
267
279
|
maxBlobFields,
|
|
280
|
+
txProcessingTimeMs,
|
|
268
281
|
},
|
|
269
282
|
);
|
|
283
|
+
silentlySkippedCount += 1;
|
|
284
|
+
totalSilentlySkippedDurationMs += txProcessingTimeMs;
|
|
285
|
+
this.metrics.recordSilentlySkipped(txProcessingTimeMs);
|
|
270
286
|
// Need to revert the checkpoint here and don't go any further
|
|
271
287
|
await checkpoint.revert();
|
|
272
288
|
this.contractsDB.revertCheckpoint();
|
|
@@ -306,16 +322,15 @@ export class PublicProcessor implements Traceable {
|
|
|
306
322
|
totalBlockGas = totalBlockGas.add(processedTx.gasUsed.totalGas);
|
|
307
323
|
totalSizeInBytes += txSize;
|
|
308
324
|
totalBlobFields += txBlobFields;
|
|
325
|
+
|
|
326
|
+
// Commit the tx-level contracts checkpoint on success
|
|
327
|
+
this.contractsDB.commitCheckpoint();
|
|
309
328
|
} catch (err: any) {
|
|
310
|
-
if (err
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
//
|
|
314
|
-
// Signal cancellation AND WAIT for the simulation to actually stop.
|
|
315
|
-
// This is critical because C++ might be in the middle of a slow operation (e.g., pad_trees)
|
|
316
|
-
// and won't check the cancellation flag until that operation completes.
|
|
317
|
-
// Without waiting, we'd proceed to revert checkpoints while C++ is still writing to state.
|
|
318
|
-
// Wait for C++ to stop gracefully.
|
|
329
|
+
if (isPublicProcessorInterruptError(err)) {
|
|
330
|
+
const interruptReason = err.name === 'PublicProcessorTimeoutError' ? 'timeout' : 'abort signal';
|
|
331
|
+
this.log.warn(`Stopping tx processing due to ${interruptReason}.`);
|
|
332
|
+
// The tx may still be executing on a worker thread (C++ via NAPI).
|
|
333
|
+
// Signal cancellation AND WAIT for the simulation to actually stop before touching fork checkpoints.
|
|
319
334
|
await this.publicTxSimulator.cancel?.();
|
|
320
335
|
|
|
321
336
|
// Now stop the guarded fork to prevent any further TS-side access to the world state.
|
|
@@ -325,14 +340,10 @@ export class PublicProcessor implements Traceable {
|
|
|
325
340
|
// 1. At least one outstanding checkpoint that has not been committed (the one created before we processed the tx).
|
|
326
341
|
// 2. Possible state updates on that checkpoint or any others created during execution.
|
|
327
342
|
|
|
328
|
-
//
|
|
329
|
-
//
|
|
330
|
-
//
|
|
331
|
-
await checkpoint.
|
|
332
|
-
|
|
333
|
-
// Now we want to revert any/all remaining checkpoints, destroying any outstanding state updates.
|
|
334
|
-
// This needs to be done directly on the underlying fork as the guarded fork has been stopped.
|
|
335
|
-
await this.guardedMerkleTree.getUnderlyingFork().revertAllCheckpoints();
|
|
343
|
+
// Revert all checkpoints at or above this checkpoint's depth (inclusive), destroying any outstanding state
|
|
344
|
+
// updates from this tx and any nested checkpoints created during execution. This preserves any checkpoints
|
|
345
|
+
// created by callers below our depth.
|
|
346
|
+
await checkpoint.revertToCheckpoint();
|
|
336
347
|
|
|
337
348
|
// Revert any contracts added to the DB for the tx.
|
|
338
349
|
this.contractsDB.revertCheckpoint();
|
|
@@ -344,9 +355,9 @@ export class PublicProcessor implements Traceable {
|
|
|
344
355
|
break;
|
|
345
356
|
}
|
|
346
357
|
|
|
347
|
-
// Roll back state to start of TX before proceeding to next TX
|
|
348
|
-
|
|
349
|
-
await
|
|
358
|
+
// Roll back state to start of TX before proceeding to next TX.
|
|
359
|
+
// Reverts all checkpoints at or above this checkpoint's depth, preserving any caller checkpoints below.
|
|
360
|
+
await checkpoint.revertToCheckpoint();
|
|
350
361
|
this.contractsDB.revertCheckpoint();
|
|
351
362
|
const errorMessage = err instanceof Error || err instanceof AssertionError ? err.message : 'Unknown error';
|
|
352
363
|
this.log.warn(`Failed to process tx ${txHash.toString()}: ${errorMessage} ${err?.stack}`);
|
|
@@ -358,7 +369,6 @@ export class PublicProcessor implements Traceable {
|
|
|
358
369
|
} finally {
|
|
359
370
|
// Base case is we always commit the checkpoint. Using the ForkCheckpoint means this has no effect if the tx was previously reverted
|
|
360
371
|
await checkpoint.commit();
|
|
361
|
-
this.contractsDB.commitCheckpointOkIfNone();
|
|
362
372
|
}
|
|
363
373
|
}
|
|
364
374
|
|
|
@@ -366,13 +376,24 @@ export class PublicProcessor implements Traceable {
|
|
|
366
376
|
const rate = duration > 0 ? totalPublicGas.l2Gas / duration : 0;
|
|
367
377
|
this.metrics.recordAllTxs(totalPublicGas, rate);
|
|
368
378
|
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
379
|
+
const silentlySkippedDurationMs = Math.round(totalSilentlySkippedDurationMs);
|
|
380
|
+
this.log.info(
|
|
381
|
+
`Processed ${result.length} successful txs and ${failed.length} failed txs ` +
|
|
382
|
+
`(${silentlySkippedCount} silently skipped, ${silentlySkippedDurationMs}ms wasted) ` +
|
|
383
|
+
`in ${duration}s`,
|
|
384
|
+
{
|
|
385
|
+
blockNumber: this.globalVariables.blockNumber,
|
|
386
|
+
successfulCount: result.length,
|
|
387
|
+
failedCount: failed.length,
|
|
388
|
+
duration,
|
|
389
|
+
rate,
|
|
390
|
+
totalPublicGas,
|
|
391
|
+
totalBlockGas,
|
|
392
|
+
totalSizeInBytes,
|
|
393
|
+
silentlySkippedCount,
|
|
394
|
+
silentlySkippedDurationMs,
|
|
395
|
+
},
|
|
396
|
+
);
|
|
376
397
|
|
|
377
398
|
return [result, failed, usedTxs, returns, debugLogs];
|
|
378
399
|
}
|
|
@@ -397,9 +418,10 @@ export class PublicProcessor implements Traceable {
|
|
|
397
418
|
private async processTx(
|
|
398
419
|
tx: Tx,
|
|
399
420
|
deadline: Date | undefined,
|
|
421
|
+
signal: AbortSignal | undefined,
|
|
400
422
|
): Promise<[ProcessedTx, NestedProcessReturnValues[], DebugLog[]]> {
|
|
401
423
|
const [time, [processedTx, returnValues, debugLogs]] = await elapsed(() =>
|
|
402
|
-
this.processTxWithinDeadline(tx, deadline),
|
|
424
|
+
this.processTxWithinDeadline(tx, deadline, signal),
|
|
403
425
|
);
|
|
404
426
|
|
|
405
427
|
this.log.verbose(
|
|
@@ -453,10 +475,11 @@ export class PublicProcessor implements Traceable {
|
|
|
453
475
|
this.metrics.recordTreeInsertions(Number(treeInsertionEnd - treeInsertionStart) / 1_000);
|
|
454
476
|
}
|
|
455
477
|
|
|
456
|
-
/** Processes the given tx within deadline
|
|
478
|
+
/** Processes the given tx within deadline or until the signal is aborted. */
|
|
457
479
|
private async processTxWithinDeadline(
|
|
458
480
|
tx: Tx,
|
|
459
481
|
deadline: Date | undefined,
|
|
482
|
+
signal: AbortSignal | undefined,
|
|
460
483
|
): Promise<[ProcessedTx, NestedProcessReturnValues[] | undefined, DebugLog[]]> {
|
|
461
484
|
const innerProcessFn: () => Promise<[ProcessedTx, NestedProcessReturnValues[] | undefined, DebugLog[]]> =
|
|
462
485
|
tx.hasPublicCalls() ? () => this.processTxWithPublicCalls(tx) : () => this.processPrivateOnlyTx(tx);
|
|
@@ -473,27 +496,38 @@ export class PublicProcessor implements Traceable {
|
|
|
473
496
|
}
|
|
474
497
|
: innerProcessFn;
|
|
475
498
|
|
|
476
|
-
|
|
499
|
+
const processingSignal = this.getProcessingSignal(tx, deadline, signal);
|
|
500
|
+
if (!processingSignal) {
|
|
477
501
|
return await processFn();
|
|
478
502
|
}
|
|
479
503
|
|
|
480
|
-
|
|
504
|
+
return await execWithSignal(
|
|
505
|
+
() => processFn(),
|
|
506
|
+
processingSignal,
|
|
507
|
+
signal =>
|
|
508
|
+
signal.reason?.name === 'TimeoutError' ? new PublicProcessorTimeoutError() : new PublicProcessorAbortError(),
|
|
509
|
+
);
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
private getProcessingSignal(tx: Tx, deadline: Date | undefined, signal: AbortSignal | undefined) {
|
|
513
|
+
if (!deadline) {
|
|
514
|
+
return signal;
|
|
515
|
+
}
|
|
516
|
+
|
|
481
517
|
const timeout = +deadline - this.dateProvider.now();
|
|
482
518
|
if (timeout <= 0) {
|
|
483
519
|
throw new PublicProcessorTimeoutError();
|
|
484
520
|
}
|
|
485
521
|
|
|
522
|
+
const txHash = tx.getTxHash();
|
|
486
523
|
this.log.debug(`Processing tx ${txHash.toString()} within ${timeout}ms`, {
|
|
487
524
|
deadline: deadline.toISOString(),
|
|
488
525
|
now: new Date(this.dateProvider.now()).toISOString(),
|
|
489
526
|
txHash,
|
|
490
527
|
});
|
|
491
528
|
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
timeout,
|
|
495
|
-
() => new PublicProcessorTimeoutError(),
|
|
496
|
-
);
|
|
529
|
+
const timeoutSignal = AbortSignal.timeout(timeout);
|
|
530
|
+
return signal ? AbortSignal.any([signal, timeoutSignal]) : timeoutSignal;
|
|
497
531
|
}
|
|
498
532
|
|
|
499
533
|
/**
|
|
@@ -550,7 +584,7 @@ export class PublicProcessor implements Traceable {
|
|
|
550
584
|
// Fee payment insertion has already been done. Do the rest.
|
|
551
585
|
await this.doTreeInsertionsForPrivateOnlyTx(processedTx);
|
|
552
586
|
|
|
553
|
-
|
|
587
|
+
this.contractsDB.addNewContracts(tx);
|
|
554
588
|
|
|
555
589
|
return [processedTx, undefined, []];
|
|
556
590
|
}
|
|
@@ -30,6 +30,9 @@ export class PublicProcessorMetrics {
|
|
|
30
30
|
|
|
31
31
|
private treeInsertionDuration: Histogram;
|
|
32
32
|
|
|
33
|
+
private silentlySkippedCount: UpDownCounter;
|
|
34
|
+
private silentlySkippedDuration: Histogram;
|
|
35
|
+
|
|
33
36
|
constructor(client: TelemetryClient, name = 'PublicProcessor') {
|
|
34
37
|
this.tracer = client.getTracer(name);
|
|
35
38
|
const meter = client.getMeter(name);
|
|
@@ -60,6 +63,10 @@ export class PublicProcessorMetrics {
|
|
|
60
63
|
this.gasRate = meter.createHistogram(Metrics.PUBLIC_PROCESSOR_GAS_RATE);
|
|
61
64
|
|
|
62
65
|
this.treeInsertionDuration = meter.createHistogram(Metrics.PUBLIC_PROCESSOR_TREE_INSERTION);
|
|
66
|
+
|
|
67
|
+
this.silentlySkippedCount = createUpDownCounterWithDefault(meter, Metrics.PUBLIC_PROCESSOR_SILENTLY_SKIPPED_COUNT);
|
|
68
|
+
|
|
69
|
+
this.silentlySkippedDuration = meter.createHistogram(Metrics.PUBLIC_PROCESSOR_SILENTLY_SKIPPED_DURATION);
|
|
63
70
|
}
|
|
64
71
|
|
|
65
72
|
recordPhaseDuration(phaseName: TxExecutionPhase, durationMs: number) {
|
|
@@ -123,4 +130,9 @@ export class PublicProcessorMetrics {
|
|
|
123
130
|
recordTreeInsertions(durationUs: number) {
|
|
124
131
|
this.treeInsertionDuration.record(Math.ceil(durationUs));
|
|
125
132
|
}
|
|
133
|
+
|
|
134
|
+
recordSilentlySkipped(durationMs: number) {
|
|
135
|
+
this.silentlySkippedCount.add(1);
|
|
136
|
+
this.silentlySkippedDuration.record(Math.ceil(durationMs));
|
|
137
|
+
}
|
|
126
138
|
}
|
|
@@ -23,7 +23,7 @@ export class ContractProviderForCpp implements ContractProvider {
|
|
|
23
23
|
public getContractInstance = async (address: string): Promise<Buffer | undefined> => {
|
|
24
24
|
this.log.trace(`Contract provider callback: getContractInstance(${address})`);
|
|
25
25
|
|
|
26
|
-
const aztecAddr = AztecAddress.
|
|
26
|
+
const aztecAddr = AztecAddress.fromStringUnsafe(address);
|
|
27
27
|
|
|
28
28
|
const instance = await this.contractsDB.getContractInstance(aztecAddr, this.globalVariables.timestamp);
|
|
29
29
|
|
|
@@ -52,6 +52,7 @@ export class ContractProviderForCpp implements ContractProvider {
|
|
|
52
52
|
return serializeWithMessagePack(contractClass);
|
|
53
53
|
};
|
|
54
54
|
|
|
55
|
+
// eslint-disable-next-line require-await
|
|
55
56
|
public addContracts = async (contractDeploymentDataBuffer: Buffer): Promise<void> => {
|
|
56
57
|
this.log.trace(`Contract provider callback: addContracts`);
|
|
57
58
|
|
|
@@ -61,8 +62,8 @@ export class ContractProviderForCpp implements ContractProvider {
|
|
|
61
62
|
const contractDeploymentData = ContractDeploymentData.fromPlainObject(rawData);
|
|
62
63
|
|
|
63
64
|
// Add contracts to the contracts DB
|
|
64
|
-
this.log.trace(`Calling contractsDB.
|
|
65
|
-
|
|
65
|
+
this.log.trace(`Calling contractsDB.addContractsFromLogs`);
|
|
66
|
+
this.contractsDB.addContractsFromLogs(contractDeploymentData);
|
|
66
67
|
};
|
|
67
68
|
|
|
68
69
|
public getBytecodeCommitment = async (classId: string): Promise<Buffer | undefined> => {
|
|
@@ -87,7 +88,7 @@ export class ContractProviderForCpp implements ContractProvider {
|
|
|
87
88
|
this.log.trace(`Contract provider callback: getDebugFunctionName(${address}, ${selector})`);
|
|
88
89
|
|
|
89
90
|
// Parse address and selector strings
|
|
90
|
-
const aztecAddr = AztecAddress.
|
|
91
|
+
const aztecAddr = AztecAddress.fromStringUnsafe(address);
|
|
91
92
|
const selectorFr = Fr.fromString(selector);
|
|
92
93
|
const functionSelector = FunctionSelector.fromFieldOrUndefined(selectorFr);
|
|
93
94
|
|
|
@@ -15,13 +15,13 @@ import { mkdirSync, writeFileSync } from 'fs';
|
|
|
15
15
|
import { join } from 'path';
|
|
16
16
|
|
|
17
17
|
import type { PublicContractsDB } from '../public_db_sources.js';
|
|
18
|
-
import {
|
|
18
|
+
import { PublicTxSimulator } from './public_tx_simulator.js';
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
21
|
* A C++ public tx simulator that dumps AVM circuit inputs to disk after simulation.
|
|
22
22
|
* Used during nightly CI runs to collect circuit inputs for benchmarking.
|
|
23
23
|
*/
|
|
24
|
-
export class
|
|
24
|
+
export class DumpingPublicTxSimulator extends PublicTxSimulator {
|
|
25
25
|
private readonly outputDir: string;
|
|
26
26
|
|
|
27
27
|
constructor(
|
|
@@ -5,13 +5,13 @@ import type { GlobalVariables } from '@aztec/stdlib/tx';
|
|
|
5
5
|
import type { TelemetryClient } from '@aztec/telemetry-client';
|
|
6
6
|
|
|
7
7
|
import type { PublicContractsDB } from '../public_db_sources.js';
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
8
|
+
import { DumpingPublicTxSimulator } from './dumping_public_tx_simulator.js';
|
|
9
|
+
import { TelemetryPublicTxSimulator } from './public_tx_simulator.js';
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* Creates a public tx simulator for block building.
|
|
13
|
-
* Uses
|
|
14
|
-
* otherwise uses
|
|
13
|
+
* Uses DumpingPublicTxSimulator if DUMP_AVM_INPUTS_TO_DIR env var is set (for CI/testing avm circuit),
|
|
14
|
+
* otherwise uses TelemetryPublicTxSimulator (for production).
|
|
15
15
|
*/
|
|
16
16
|
export function createPublicTxSimulatorForBlockBuilding(
|
|
17
17
|
merkleTree: MerkleTreeWriteOperations,
|
|
@@ -38,7 +38,7 @@ export function createPublicTxSimulatorForBlockBuilding(
|
|
|
38
38
|
collectHints: true,
|
|
39
39
|
collectPublicInputs: true,
|
|
40
40
|
};
|
|
41
|
-
return new
|
|
41
|
+
return new DumpingPublicTxSimulator(merkleTree, contractsDB, globalVariables, dumpingConfig, dumpDir, bindings);
|
|
42
42
|
}
|
|
43
|
-
return new
|
|
43
|
+
return new TelemetryPublicTxSimulator(merkleTree, contractsDB, globalVariables, telemetryClient, config, bindings);
|
|
44
44
|
}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
export
|
|
2
|
-
export {
|
|
3
|
-
export { DumpingCppPublicTxSimulator } from './dumping_cpp_public_tx_simulator.js';
|
|
1
|
+
export { PublicTxSimulator, TelemetryPublicTxSimulator } from './public_tx_simulator.js';
|
|
2
|
+
export { DumpingPublicTxSimulator } from './dumping_public_tx_simulator.js';
|
|
4
3
|
export { createPublicTxSimulatorForBlockBuilding } from './factories.js';
|
|
5
4
|
export type { PublicTxSimulatorInterface } from './public_tx_simulator_interface.js';
|
|
6
|
-
export { TelemetryPublicTxSimulator } from './telemetry_public_tx_simulator.js';
|
|
7
5
|
export type { PublicTxResult, PublicSimulatorConfig as PublicTxSimulatorConfig } from '@aztec/stdlib/avm';
|