@aztec/simulator 0.0.1-commit.993d52e → 0.0.1-commit.9a89641
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/avm_simulator.d.ts +28 -0
- package/dest/public/avm_simulator.d.ts.map +1 -0
- package/dest/public/avm_simulator.js +4 -0
- package/dest/public/avm_simulator_pool.d.ts +45 -0
- package/dest/public/avm_simulator_pool.d.ts.map +1 -0
- package/dest/public/avm_simulator_pool.js +197 -0
- package/dest/public/cdb_ipc_server.d.ts +40 -0
- package/dest/public/cdb_ipc_server.d.ts.map +1 -0
- package/dest/public/cdb_ipc_server.js +153 -0
- package/dest/public/contracts_db_checkpoint.d.ts +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 +2 -4
- package/dest/public/fixtures/index.d.ts.map +1 -1
- package/dest/public/fixtures/index.js +1 -3
- package/dest/public/fixtures/public_processor_test_env.d.ts +30 -0
- package/dest/public/fixtures/public_processor_test_env.d.ts.map +1 -0
- package/dest/public/fixtures/public_processor_test_env.js +73 -0
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts +12 -7
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
- package/dest/public/fixtures/public_tx_simulation_tester.js +32 -15
- 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 +2 -2
- package/dest/public/fixtures/utils.d.ts.map +1 -1
- package/dest/public/fixtures/utils.js +17 -16
- package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts +11 -4
- package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts.map +1 -1
- package/dest/public/fuzzing/avm_fuzzer_simulator.js +24 -10
- package/dest/public/fuzzing/avm_simulator_bin.js +4 -4
- package/dest/public/index.d.ts +5 -2
- package/dest/public/index.d.ts.map +1 -1
- package/dest/public/index.js +2 -1
- package/dest/public/public_db_sources.d.ts +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 +12 -7
- package/dest/public/public_processor/public_processor.d.ts.map +1 -1
- package/dest/public/public_processor/public_processor.js +103 -74
- 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/dumping_public_tx_simulator.d.ts +17 -0
- package/dest/public/public_tx_simulator/dumping_public_tx_simulator.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/{dumping_cpp_public_tx_simulator.js → dumping_public_tx_simulator.js} +10 -23
- package/dest/public/public_tx_simulator/factories.d.ts +8 -8
- package/dest/public/public_tx_simulator/factories.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/factories.js +8 -8
- package/dest/public/public_tx_simulator/index.d.ts +4 -6
- 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 +42 -71
- 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 -318
- package/dest/public/public_tx_simulator/public_tx_simulator_base.d.ts +24 -0
- package/dest/public/public_tx_simulator/public_tx_simulator_base.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/public_tx_simulator_base.js +31 -0
- package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts +5 -5
- package/package.json +20 -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/avm_simulator.ts +29 -0
- package/src/public/avm_simulator_pool.ts +226 -0
- package/src/public/cdb_ipc_server.ts +198 -0
- 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 +1 -3
- package/src/public/fixtures/public_processor_test_env.ts +88 -0
- package/src/public/fixtures/public_tx_simulation_tester.ts +44 -25
- 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 +19 -20
- package/src/public/fuzzing/avm_fuzzer_simulator.ts +25 -10
- package/src/public/fuzzing/avm_simulator_bin.ts +3 -5
- package/src/public/index.ts +7 -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 +134 -87
- package/src/public/public_processor/public_processor_metrics.ts +12 -0
- package/src/public/public_tx_simulator/{dumping_cpp_public_tx_simulator.ts → dumping_public_tx_simulator.ts} +15 -31
- package/src/public/public_tx_simulator/factories.ts +27 -10
- package/src/public/public_tx_simulator/index.ts +6 -5
- package/src/public/public_tx_simulator/public_tx_simulator.ts +139 -476
- package/src/public/public_tx_simulator/public_tx_simulator_base.ts +37 -0
- package/src/public/public_tx_simulator/public_tx_simulator_interface.ts +5 -5
- 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/contract_provider_for_cpp.d.ts +0 -19
- package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts.map +0 -1
- package/dest/public/public_tx_simulator/contract_provider_for_cpp.js +0 -98
- 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/contract_provider_for_cpp.ts +0 -124
- 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
|
@@ -71,6 +71,9 @@ _computedKey = Symbol.asyncDispose;
|
|
|
71
71
|
getRevision() {
|
|
72
72
|
return this.target.getRevision();
|
|
73
73
|
}
|
|
74
|
+
getIpcPath() {
|
|
75
|
+
return this.target.getIpcPath();
|
|
76
|
+
}
|
|
74
77
|
getSiblingPath(treeId, index) {
|
|
75
78
|
return this.guardAndPush(()=>this.target.getSiblingPath(treeId, index));
|
|
76
79
|
}
|
|
@@ -101,11 +104,11 @@ _computedKey = Symbol.asyncDispose;
|
|
|
101
104
|
revertCheckpoint() {
|
|
102
105
|
return this.guardAndPush(()=>this.target.revertCheckpoint());
|
|
103
106
|
}
|
|
104
|
-
|
|
105
|
-
return this.guardAndPush(()=>this.target.
|
|
107
|
+
commitAllCheckpointsTo(depth) {
|
|
108
|
+
return this.guardAndPush(()=>this.target.commitAllCheckpointsTo(depth));
|
|
106
109
|
}
|
|
107
|
-
|
|
108
|
-
return this.guardAndPush(()=>this.target.
|
|
110
|
+
revertAllCheckpointsTo(depth) {
|
|
111
|
+
return this.guardAndPush(()=>this.target.revertAllCheckpointsTo(depth));
|
|
109
112
|
}
|
|
110
113
|
findSiblingPaths(treeId, values) {
|
|
111
114
|
return this.guardAndPush(()=>this.target.findSiblingPaths(treeId, values));
|
|
@@ -6,6 +6,7 @@ import type { MerkleTreeWriteOperations, PublicProcessorLimits, PublicProcessorV
|
|
|
6
6
|
import { type DebugLog, type DebugLogStore } from '@aztec/stdlib/logs';
|
|
7
7
|
import { type FailedTx, GlobalVariables, NestedProcessReturnValues, type ProcessedTx, Tx } from '@aztec/stdlib/tx';
|
|
8
8
|
import { type TelemetryClient, type Traceable, type Tracer } from '@aztec/telemetry-client';
|
|
9
|
+
import type { AvmSimulator } from '../avm_simulator.js';
|
|
9
10
|
import { PublicContractsDB } from '../public_db_sources.js';
|
|
10
11
|
import { type PublicTxSimulatorConfig, type PublicTxSimulatorInterface } from '../public_tx_simulator/index.js';
|
|
11
12
|
import { GuardedMerkleTreeOperations } from './guarded_merkle_tree.js';
|
|
@@ -14,18 +15,21 @@ import { GuardedMerkleTreeOperations } from './guarded_merkle_tree.js';
|
|
|
14
15
|
*/
|
|
15
16
|
export declare class PublicProcessorFactory {
|
|
16
17
|
private contractDataSource;
|
|
18
|
+
private avmSimulator;
|
|
17
19
|
private dateProvider;
|
|
18
20
|
protected telemetryClient: TelemetryClient;
|
|
19
21
|
private log;
|
|
20
|
-
constructor(contractDataSource: ContractDataSource, dateProvider?: DateProvider, telemetryClient?: TelemetryClient, bindings?: LoggerBindings);
|
|
22
|
+
constructor(contractDataSource: ContractDataSource, avmSimulator: AvmSimulator, dateProvider?: DateProvider, telemetryClient?: TelemetryClient, bindings?: LoggerBindings);
|
|
21
23
|
/**
|
|
22
|
-
* Creates a new instance of a PublicProcessor.
|
|
24
|
+
* Creates a new instance of a PublicProcessor. The simulator it drives reads contract data from the fork's
|
|
25
|
+
* contracts DB, scoped by the fork id so AVM requests route to the right state.
|
|
26
|
+
*
|
|
23
27
|
* @param globalVariables - The global variables for the block being processed.
|
|
24
|
-
* @param
|
|
28
|
+
* @param contractsDB - Optional pre-populated contracts DB; a fresh one is constructed if omitted.
|
|
25
29
|
* @returns A new instance of a PublicProcessor.
|
|
26
30
|
*/
|
|
27
|
-
create(merkleTree: MerkleTreeWriteOperations, globalVariables: GlobalVariables, config: PublicSimulatorConfig): PublicProcessor;
|
|
28
|
-
protected createPublicTxSimulator(
|
|
31
|
+
create(merkleTree: MerkleTreeWriteOperations, globalVariables: GlobalVariables, config: PublicSimulatorConfig, contractsDB?: PublicContractsDB): PublicProcessor;
|
|
32
|
+
protected createPublicTxSimulator(forkId: number, globalVariables: GlobalVariables, contractsDB: PublicContractsDB, config?: Partial<PublicTxSimulatorConfig>): PublicTxSimulatorInterface;
|
|
29
33
|
}
|
|
30
34
|
/**
|
|
31
35
|
* Converts Txs lifted from the P2P module into ProcessedTx objects by executing
|
|
@@ -50,11 +54,12 @@ export declare class PublicProcessor implements Traceable {
|
|
|
50
54
|
* @param validator - Pre-process validator and nullifier cache to use for processing the txs.
|
|
51
55
|
* @returns The list of processed txs with their circuit simulation outputs.
|
|
52
56
|
*/
|
|
53
|
-
process(txs: Iterable<Tx> | AsyncIterable<Tx>, limits?: PublicProcessorLimits, validator?: PublicProcessorValidator): Promise<[ProcessedTx[], FailedTx[], Tx[], NestedProcessReturnValues[],
|
|
57
|
+
process(txs: Iterable<Tx> | AsyncIterable<Tx>, limits?: PublicProcessorLimits, validator?: PublicProcessorValidator): Promise<[ProcessedTx[], FailedTx[], Tx[], NestedProcessReturnValues[], DebugLog[]]>;
|
|
54
58
|
private checkWorldStateUnchanged;
|
|
55
59
|
private processTx;
|
|
56
60
|
private doTreeInsertionsForPrivateOnlyTx;
|
|
57
61
|
private processTxWithinDeadline;
|
|
62
|
+
private getProcessingSignal;
|
|
58
63
|
private performFeePaymentPublicDataWrite;
|
|
59
64
|
private processPrivateOnlyTx;
|
|
60
65
|
private processTxWithPublicCalls;
|
|
@@ -63,4 +68,4 @@ export declare class PublicProcessor implements Traceable {
|
|
|
63
68
|
*/
|
|
64
69
|
private static generateProvingRequest;
|
|
65
70
|
}
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX3Byb2Nlc3Nvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3B1YmxpYy9wdWJsaWNfcHJvY2Vzc29yL3B1YmxpY19wcm9jZXNzb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFFLEtBQUssY0FBYyxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBRXZGLE9BQU8sRUFBRSxZQUFZLEVBQWtDLE1BQU0seUJBQXlCLENBQUM7QUFJdkYsT0FBTyxFQU1MLHFCQUFxQixFQUN0QixNQUFNLG1CQUFtQixDQUFDO0FBRTNCLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHakUsT0FBTyxLQUFLLEVBQ1YseUJBQXlCLEVBQ3pCLHFCQUFxQixFQUNyQix3QkFBd0IsRUFDeEIsZUFBZSxFQUNoQixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBRSxLQUFLLGFBQWEsRUFBcUIsTUFBTSxvQkFBb0IsQ0FBQztBQUcxRixPQUFPLEVBQ0wsS0FBSyxRQUFRLEVBQ2IsZUFBZSxFQUNmLHlCQUF5QixFQUN6QixLQUFLLFdBQVcsRUFFaEIsRUFBRSxFQUdILE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUVMLEtBQUssZUFBZSxFQUNwQixLQUFLLFNBQVMsRUFDZCxLQUFLLE1BQU0sRUFHWixNQUFNLHlCQUF5QixDQUFDO0FBS2pDLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBaUIsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRSxPQUFPLEVBQ0wsS0FBSyx1QkFBdUIsRUFDNUIsS0FBSywwQkFBMEIsRUFFaEMsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUd2RTs7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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public_processor.d.ts","sourceRoot":"","sources":["../../../src/public/public_processor/public_processor.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAEvF,OAAO,EAAE,YAAY,EAAkC,MAAM,yBAAyB,CAAC;AAIvF,OAAO,EAML,qBAAqB,EACtB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAGjE,OAAO,KAAK,EACV,yBAAyB,EACzB,qBAAqB,EACrB,wBAAwB,EACxB,eAAe,EAChB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAqB,MAAM,oBAAoB,CAAC;AAG1F,OAAO,EACL,KAAK,QAAQ,EACb,eAAe,EACf,yBAAyB,EACzB,KAAK,WAAW,EAEhB,EAAE,EAGH,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,MAAM,EAGZ,MAAM,yBAAyB,CAAC;AAKjC,OAAO,EAAE,iBAAiB,EAAiB,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,0BAA0B,EAEhC,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAGvE;;GAEG;AACH,qBAAa,sBAAsB;IAG/B,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,YAAY;IACpB,SAAS,CAAC,eAAe,EAAE,eAAe;
|
|
1
|
+
{"version":3,"file":"public_processor.d.ts","sourceRoot":"","sources":["../../../src/public/public_processor/public_processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -376,7 +376,7 @@ import { padArrayEnd } from '@aztec/foundation/collection';
|
|
|
376
376
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
377
377
|
import { createLogger } from '@aztec/foundation/log';
|
|
378
378
|
import { sleep } from '@aztec/foundation/sleep';
|
|
379
|
-
import { DateProvider, Timer, elapsed,
|
|
379
|
+
import { DateProvider, Timer, elapsed, execWithSignal } from '@aztec/foundation/timer';
|
|
380
380
|
import { ProtocolContractAddress } from '@aztec/protocol-contracts';
|
|
381
381
|
import { ContractClassPublishedEvent } from '@aztec/protocol-contracts/class-registry';
|
|
382
382
|
import { computeFeePayerBalanceLeafSlot, computeFeePayerBalanceStorageSlot } from '@aztec/protocol-contracts/fee-juice';
|
|
@@ -391,36 +391,39 @@ import { Attributes, getTelemetryClient, trackSpan } from '@aztec/telemetry-clie
|
|
|
391
391
|
import { ForkCheckpoint } from '@aztec/world-state/native';
|
|
392
392
|
import { AssertionError } from 'assert';
|
|
393
393
|
import { PublicContractsDB, PublicTreesDB } from '../public_db_sources.js';
|
|
394
|
-
import {
|
|
394
|
+
import { TelemetryPublicTxSimulator } from '../public_tx_simulator/index.js';
|
|
395
395
|
import { GuardedMerkleTreeOperations } from './guarded_merkle_tree.js';
|
|
396
396
|
import { PublicProcessorMetrics } from './public_processor_metrics.js';
|
|
397
397
|
/**
|
|
398
398
|
* Creates new instances of PublicProcessor given the provided merkle tree db and contract data source.
|
|
399
399
|
*/ export class PublicProcessorFactory {
|
|
400
400
|
contractDataSource;
|
|
401
|
+
avmSimulator;
|
|
401
402
|
dateProvider;
|
|
402
403
|
telemetryClient;
|
|
403
404
|
log;
|
|
404
|
-
constructor(contractDataSource, dateProvider = new DateProvider(), telemetryClient = getTelemetryClient(), bindings){
|
|
405
|
+
constructor(contractDataSource, avmSimulator, dateProvider = new DateProvider(), telemetryClient = getTelemetryClient(), bindings){
|
|
405
406
|
this.contractDataSource = contractDataSource;
|
|
407
|
+
this.avmSimulator = avmSimulator;
|
|
406
408
|
this.dateProvider = dateProvider;
|
|
407
409
|
this.telemetryClient = telemetryClient;
|
|
408
410
|
this.log = createLogger('simulator:public-processor-factory', bindings);
|
|
409
411
|
}
|
|
410
412
|
/**
|
|
411
|
-
* Creates a new instance of a PublicProcessor.
|
|
413
|
+
* Creates a new instance of a PublicProcessor. The simulator it drives reads contract data from the fork's
|
|
414
|
+
* contracts DB, scoped by the fork id so AVM requests route to the right state.
|
|
415
|
+
*
|
|
412
416
|
* @param globalVariables - The global variables for the block being processed.
|
|
413
|
-
* @param
|
|
417
|
+
* @param contractsDB - Optional pre-populated contracts DB; a fresh one is constructed if omitted.
|
|
414
418
|
* @returns A new instance of a PublicProcessor.
|
|
415
|
-
*/ create(merkleTree, globalVariables, config) {
|
|
416
|
-
const
|
|
417
|
-
const contractsDB = new PublicContractsDB(this.contractDataSource, bindings);
|
|
419
|
+
*/ create(merkleTree, globalVariables, config, contractsDB = new PublicContractsDB(this.contractDataSource, this.log.getBindings())) {
|
|
420
|
+
const forkId = merkleTree.getRevision().forkId;
|
|
418
421
|
const guardedFork = new GuardedMerkleTreeOperations(merkleTree);
|
|
419
|
-
const publicTxSimulator = this.createPublicTxSimulator(
|
|
420
|
-
return new PublicProcessor(globalVariables, guardedFork, contractsDB, publicTxSimulator, this.dateProvider, this.telemetryClient, createLogger('simulator:public-processor',
|
|
422
|
+
const publicTxSimulator = this.createPublicTxSimulator(forkId, globalVariables, contractsDB, config);
|
|
423
|
+
return new PublicProcessor(globalVariables, guardedFork, contractsDB, publicTxSimulator, this.dateProvider, this.telemetryClient, createLogger('simulator:public-processor', this.log.getBindings()));
|
|
421
424
|
}
|
|
422
|
-
createPublicTxSimulator(
|
|
423
|
-
return new
|
|
425
|
+
createPublicTxSimulator(forkId, globalVariables, contractsDB, config) {
|
|
426
|
+
return new TelemetryPublicTxSimulator(this.avmSimulator, globalVariables, contractsDB, forkId, this.telemetryClient, config, this.log.getBindings());
|
|
424
427
|
}
|
|
425
428
|
}
|
|
426
429
|
class PublicProcessorTimeoutError extends Error {
|
|
@@ -429,6 +432,12 @@ class PublicProcessorTimeoutError extends Error {
|
|
|
429
432
|
this.name = 'PublicProcessorTimeoutError';
|
|
430
433
|
}
|
|
431
434
|
}
|
|
435
|
+
class PublicProcessorAbortError extends Error {
|
|
436
|
+
constructor(message = 'Aborted while processing tx'){
|
|
437
|
+
super(message);
|
|
438
|
+
this.name = 'PublicProcessorAbortError';
|
|
439
|
+
}
|
|
440
|
+
}
|
|
432
441
|
_dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
433
442
|
[Attributes.TX_HASH]: tx.getTxHash().toString()
|
|
434
443
|
})), _dec1 = trackSpan('PublicProcessor.processPrivateOnlyTx', (tx)=>({
|
|
@@ -490,7 +499,7 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
490
499
|
* @param validator - Pre-process validator and nullifier cache to use for processing the txs.
|
|
491
500
|
* @returns The list of processed txs with their circuit simulation outputs.
|
|
492
501
|
*/ async process(txs, limits = {}, validator = {}) {
|
|
493
|
-
const { maxTransactions,
|
|
502
|
+
const { maxTransactions, deadline, maxBlockGas, maxBlobFields, isBuildingProposal, signal } = limits;
|
|
494
503
|
const { preprocessValidator, nullifierCache } = validator;
|
|
495
504
|
const result = [];
|
|
496
505
|
const usedTxs = [];
|
|
@@ -502,32 +511,40 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
502
511
|
let totalPublicGas = new Gas(0, 0);
|
|
503
512
|
let totalBlockGas = new Gas(0, 0);
|
|
504
513
|
let totalBlobFields = 0;
|
|
514
|
+
let silentlySkippedCount = 0;
|
|
515
|
+
let totalSilentlySkippedDurationMs = 0;
|
|
505
516
|
for await (const tx of txs){
|
|
506
517
|
// Only process up to the max tx limit
|
|
507
518
|
if (maxTransactions !== undefined && result.length >= maxTransactions) {
|
|
508
519
|
this.log.debug(`Stopping tx processing due to reaching the max tx limit.`);
|
|
509
520
|
break;
|
|
510
521
|
}
|
|
511
|
-
// Bail if we've hit the deadline
|
|
522
|
+
// Bail if we've hit the deadline or have been interrupted.
|
|
512
523
|
if (deadline && this.dateProvider.now() > +deadline) {
|
|
513
524
|
this.log.warn(`Stopping tx processing due to timeout.`);
|
|
514
525
|
break;
|
|
515
526
|
}
|
|
516
|
-
|
|
527
|
+
if (signal?.aborted) {
|
|
528
|
+
this.log.warn(`Stopping tx processing due to abort signal.`);
|
|
529
|
+
break;
|
|
530
|
+
}
|
|
517
531
|
const txHash = tx.getTxHash().toString();
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
532
|
+
// Skip this tx if its estimated blob fields would exceed the limit.
|
|
533
|
+
// Only done during proposal building: during re-execution we must process the exact txs from the proposal.
|
|
534
|
+
const txBlobFields = tx.getPrivateTxEffectsSizeInFields();
|
|
535
|
+
if (isBuildingProposal && maxBlobFields !== undefined && totalBlobFields + txBlobFields > maxBlobFields) {
|
|
536
|
+
this.log.warn(`Skipping tx ${txHash} with ${txBlobFields} fields from private side effects due to blob fields limit`, {
|
|
521
537
|
txHash,
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
538
|
+
txBlobFields,
|
|
539
|
+
totalBlobFields,
|
|
540
|
+
maxBlobFields
|
|
525
541
|
});
|
|
526
542
|
continue;
|
|
527
543
|
}
|
|
528
|
-
// Skip this tx if its gas limit would exceed the block gas limit
|
|
544
|
+
// Skip this tx if its gas limit would exceed the block gas limit (either da or l2).
|
|
545
|
+
// Only done during proposal building: during re-execution we must process the exact txs from the proposal.
|
|
529
546
|
const txGasLimit = tx.data.constants.txContext.gasSettings.gasLimits;
|
|
530
|
-
if (maxBlockGas !== undefined && totalBlockGas.add(txGasLimit).gtAny(maxBlockGas)) {
|
|
547
|
+
if (isBuildingProposal && maxBlockGas !== undefined && totalBlockGas.add(txGasLimit).gtAny(maxBlockGas)) {
|
|
531
548
|
this.log.warn(`Skipping processing of tx ${txHash} due to block gas limit`, {
|
|
532
549
|
txHash,
|
|
533
550
|
txGasLimit,
|
|
@@ -549,11 +566,6 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
549
566
|
});
|
|
550
567
|
returns.push(new NestedProcessReturnValues([]));
|
|
551
568
|
continue;
|
|
552
|
-
} else if (result.result === 'skipped') {
|
|
553
|
-
const reason = result.reason.join(', ');
|
|
554
|
-
this.log.debug(`Skipping tx ${txHash.toString()} due to pre-process validation: ${reason}`);
|
|
555
|
-
returns.push(new NestedProcessReturnValues([]));
|
|
556
|
-
continue;
|
|
557
569
|
} else {
|
|
558
570
|
this.log.trace(`Tx ${txHash.toString()} is valid before processing.`);
|
|
559
571
|
}
|
|
@@ -567,41 +579,46 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
567
579
|
const startStateReference = await this.guardedMerkleTree.getUnderlyingFork().getStateReference();
|
|
568
580
|
this.contractsDB.createCheckpoint();
|
|
569
581
|
try {
|
|
570
|
-
const [processedTx, returnValues, txDebugLogs] = await this.processTx(tx, deadline);
|
|
582
|
+
const [txProcessingTimeMs, [processedTx, returnValues, txDebugLogs]] = await elapsed(()=>this.processTx(tx, deadline, signal));
|
|
571
583
|
// Inject a fake processing failure after N txs if requested
|
|
572
584
|
const fakeThrowAfter = this.opts.fakeThrowAfterProcessingTxCount;
|
|
573
585
|
if (fakeThrowAfter !== undefined && result.length + failed.length + 1 >= fakeThrowAfter) {
|
|
574
586
|
throw new Error(`Fake error after processing ${fakeThrowAfter} txs`);
|
|
575
587
|
}
|
|
576
588
|
const txBlobFields = processedTx.txEffect.getNumBlobFields();
|
|
577
|
-
// If the actual size of this tx would exceed block size, skip it
|
|
578
589
|
const txSize = txBlobFields * Fr.SIZE_IN_BYTES;
|
|
579
|
-
|
|
580
|
-
this.log.debug(`Skipping processed tx ${txHash} sized ${txSize} due to max block size.`, {
|
|
581
|
-
txHash,
|
|
582
|
-
sizeInBytes: txSize,
|
|
583
|
-
totalSizeInBytes,
|
|
584
|
-
maxBlockSize
|
|
585
|
-
});
|
|
586
|
-
// Need to revert the checkpoint here and don't go any further
|
|
587
|
-
await checkpoint.revert();
|
|
588
|
-
this.contractsDB.revertCheckpoint();
|
|
589
|
-
continue;
|
|
590
|
-
}
|
|
591
|
-
// If the actual blob fields of this tx would exceed the limit, skip it
|
|
590
|
+
// If the actual blob fields of this tx would exceed the limit, skip it.
|
|
592
591
|
// Note: maxBlobFields already accounts for block end blob fields and previous blocks in checkpoint.
|
|
593
592
|
if (maxBlobFields !== undefined && totalBlobFields + txBlobFields > maxBlobFields) {
|
|
594
593
|
this.log.debug(`Skipping processed tx ${txHash} with ${txBlobFields} blob fields due to max blob fields limit.`, {
|
|
595
594
|
txHash,
|
|
596
595
|
txBlobFields,
|
|
597
596
|
totalBlobFields,
|
|
598
|
-
maxBlobFields
|
|
597
|
+
maxBlobFields,
|
|
598
|
+
txProcessingTimeMs
|
|
599
599
|
});
|
|
600
|
+
silentlySkippedCount += 1;
|
|
601
|
+
totalSilentlySkippedDurationMs += txProcessingTimeMs;
|
|
602
|
+
this.metrics.recordSilentlySkipped(txProcessingTimeMs);
|
|
600
603
|
// Need to revert the checkpoint here and don't go any further
|
|
601
604
|
await checkpoint.revert();
|
|
602
605
|
this.contractsDB.revertCheckpoint();
|
|
603
606
|
continue;
|
|
604
607
|
}
|
|
608
|
+
// During re-execution, check if the actual gas used by this tx would push the block over the gas limit.
|
|
609
|
+
// Unlike the proposal-building check (which uses declared gas limits pessimistically before processing),
|
|
610
|
+
// this uses actual gas and stops processing when the limit is exceeded.
|
|
611
|
+
if (!isBuildingProposal && maxBlockGas !== undefined && totalBlockGas.add(processedTx.gasUsed.totalGas).gtAny(maxBlockGas)) {
|
|
612
|
+
this.log.warn(`Stopping re-execution since tx ${txHash} would push block gas over limit`, {
|
|
613
|
+
txHash,
|
|
614
|
+
txGas: processedTx.gasUsed.totalGas,
|
|
615
|
+
totalBlockGas,
|
|
616
|
+
maxBlockGas
|
|
617
|
+
});
|
|
618
|
+
await checkpoint.revert();
|
|
619
|
+
this.contractsDB.revertCheckpoint();
|
|
620
|
+
break;
|
|
621
|
+
}
|
|
605
622
|
// FIXME(fcarreiro): it's ugly to have to notify the validator of nullifiers.
|
|
606
623
|
// I'd rather pass the validators the processedTx as well and let them deal with it.
|
|
607
624
|
nullifierCache?.addNullifiers(processedTx.txEffect.nullifiers.map((n)=>n.toBuffer()));
|
|
@@ -614,38 +631,35 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
614
631
|
totalBlockGas = totalBlockGas.add(processedTx.gasUsed.totalGas);
|
|
615
632
|
totalSizeInBytes += txSize;
|
|
616
633
|
totalBlobFields += txBlobFields;
|
|
634
|
+
// Commit the tx-level contracts checkpoint on success
|
|
635
|
+
this.contractsDB.commitCheckpoint();
|
|
617
636
|
} catch (err) {
|
|
618
|
-
if (err?.name === 'PublicProcessorTimeoutError') {
|
|
619
|
-
this.log.warn(`Stopping tx processing due to timeout.`);
|
|
620
|
-
// We hit the transaction execution deadline.
|
|
621
|
-
// There may still be a
|
|
622
|
-
// Signal cancellation AND WAIT for the simulation to actually stop.
|
|
623
|
-
//
|
|
624
|
-
// and
|
|
625
|
-
// Without waiting, we'd proceed to revert checkpoints while C++ is still writing to state.
|
|
626
|
-
// Wait for C++ to stop gracefully.
|
|
637
|
+
if (err?.name === 'PublicProcessorTimeoutError' || err?.name === 'PublicProcessorAbortError') {
|
|
638
|
+
this.log.warn(`Stopping tx processing due to ${err.name === 'PublicProcessorTimeoutError' ? 'timeout' : 'abort'}.`);
|
|
639
|
+
// We hit the transaction execution deadline or an external abort signal.
|
|
640
|
+
// There may still be a simulation in progress.
|
|
641
|
+
// Signal cancellation AND WAIT for the simulation to actually stop. Cancellation is
|
|
642
|
+
// cooperative: the simulator may be mid slow-operation and won't observe the flag until it
|
|
643
|
+
// completes, and without waiting we'd revert checkpoints while it's still writing to state.
|
|
627
644
|
await this.publicTxSimulator.cancel?.();
|
|
628
645
|
// Now stop the guarded fork to prevent any further TS-side access to the world state.
|
|
629
646
|
await this.guardedMerkleTree.stop();
|
|
630
647
|
// We now know there can't be any further access to world state. The fork is in a state where there is:
|
|
631
648
|
// 1. At least one outstanding checkpoint that has not been committed (the one created before we processed the tx).
|
|
632
649
|
// 2. Possible state updates on that checkpoint or any others created during execution.
|
|
633
|
-
//
|
|
634
|
-
//
|
|
635
|
-
//
|
|
636
|
-
await checkpoint.
|
|
637
|
-
// Now we want to revert any/all remaining checkpoints, destroying any outstanding state updates.
|
|
638
|
-
// This needs to be done directly on the underlying fork as the guarded fork has been stopped.
|
|
639
|
-
await this.guardedMerkleTree.getUnderlyingFork().revertAllCheckpoints();
|
|
650
|
+
// Revert all checkpoints at or above this checkpoint's depth (inclusive), destroying any outstanding state
|
|
651
|
+
// updates from this tx and any nested checkpoints created during execution. This preserves any checkpoints
|
|
652
|
+
// created by callers below our depth.
|
|
653
|
+
await checkpoint.revertToCheckpoint();
|
|
640
654
|
// Revert any contracts added to the DB for the tx.
|
|
641
655
|
this.contractsDB.revertCheckpoint();
|
|
642
656
|
// Ensure we're at the same state as when we started processing this tx.
|
|
643
657
|
await this.checkWorldStateUnchanged(startStateReference, txHash, err);
|
|
644
658
|
break;
|
|
645
659
|
}
|
|
646
|
-
// Roll back state to start of TX before proceeding to next TX
|
|
647
|
-
|
|
648
|
-
await
|
|
660
|
+
// Roll back state to start of TX before proceeding to next TX.
|
|
661
|
+
// Reverts all checkpoints at or above this checkpoint's depth, preserving any caller checkpoints below.
|
|
662
|
+
await checkpoint.revertToCheckpoint();
|
|
649
663
|
this.contractsDB.revertCheckpoint();
|
|
650
664
|
const errorMessage = err instanceof Error || err instanceof AssertionError ? err.message : 'Unknown error';
|
|
651
665
|
this.log.warn(`Failed to process tx ${txHash.toString()}: ${errorMessage} ${err?.stack}`);
|
|
@@ -659,25 +673,29 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
659
673
|
} finally{
|
|
660
674
|
// Base case is we always commit the checkpoint. Using the ForkCheckpoint means this has no effect if the tx was previously reverted
|
|
661
675
|
await checkpoint.commit();
|
|
662
|
-
this.contractsDB.commitCheckpointOkIfNone();
|
|
663
676
|
}
|
|
664
677
|
}
|
|
665
678
|
const duration = timer.s();
|
|
666
679
|
const rate = duration > 0 ? totalPublicGas.l2Gas / duration : 0;
|
|
667
680
|
this.metrics.recordAllTxs(totalPublicGas, rate);
|
|
668
|
-
|
|
681
|
+
const silentlySkippedDurationMs = Math.round(totalSilentlySkippedDurationMs);
|
|
682
|
+
this.log.info(`Processed ${result.length} successful txs and ${failed.length} failed txs ` + `(${silentlySkippedCount} silently skipped, ${silentlySkippedDurationMs}ms wasted) ` + `in ${duration}s`, {
|
|
683
|
+
blockNumber: this.globalVariables.blockNumber,
|
|
684
|
+
successfulCount: result.length,
|
|
685
|
+
failedCount: failed.length,
|
|
669
686
|
duration,
|
|
670
687
|
rate,
|
|
671
688
|
totalPublicGas,
|
|
672
689
|
totalBlockGas,
|
|
673
|
-
totalSizeInBytes
|
|
690
|
+
totalSizeInBytes,
|
|
691
|
+
silentlySkippedCount,
|
|
692
|
+
silentlySkippedDurationMs
|
|
674
693
|
});
|
|
675
694
|
return [
|
|
676
695
|
result,
|
|
677
696
|
failed,
|
|
678
697
|
usedTxs,
|
|
679
698
|
returns,
|
|
680
|
-
totalBlobFields,
|
|
681
699
|
debugLogs
|
|
682
700
|
];
|
|
683
701
|
}
|
|
@@ -694,8 +712,8 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
694
712
|
});
|
|
695
713
|
}
|
|
696
714
|
}
|
|
697
|
-
async processTx(tx, deadline) {
|
|
698
|
-
const [time, [processedTx, returnValues, debugLogs]] = await elapsed(()=>this.processTxWithinDeadline(tx, deadline));
|
|
715
|
+
async processTx(tx, deadline, signal) {
|
|
716
|
+
const [time, [processedTx, returnValues, debugLogs]] = await elapsed(()=>this.processTxWithinDeadline(tx, deadline, signal));
|
|
699
717
|
this.log.verbose(!tx.hasPublicCalls() ? `Processed tx ${processedTx.hash} with no public calls in ${time}ms` : `Processed tx ${processedTx.hash} with ${tx.numberOfPublicCalls()} public calls in ${time}ms`, {
|
|
700
718
|
txHash: processedTx.hash,
|
|
701
719
|
txFee: processedTx.txEffect.transactionFee.toBigInt(),
|
|
@@ -736,7 +754,7 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
736
754
|
const treeInsertionEnd = process.hrtime.bigint();
|
|
737
755
|
this.metrics.recordTreeInsertions(Number(treeInsertionEnd - treeInsertionStart) / 1_000);
|
|
738
756
|
}
|
|
739
|
-
/** Processes the given tx within deadline
|
|
757
|
+
/** Processes the given tx within deadline or until the signal is aborted. */ async processTxWithinDeadline(tx, deadline, signal) {
|
|
740
758
|
const innerProcessFn = tx.hasPublicCalls() ? ()=>this.processTxWithPublicCalls(tx) : ()=>this.processPrivateOnlyTx(tx);
|
|
741
759
|
// Fake a delay per tx if instructed (used for tests)
|
|
742
760
|
const fakeDelayPerTxMs = this.opts.fakeProcessingDelayPerTxMs;
|
|
@@ -746,20 +764,31 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
746
764
|
await sleep(fakeDelayPerTxMs);
|
|
747
765
|
return result;
|
|
748
766
|
} : innerProcessFn;
|
|
749
|
-
|
|
767
|
+
const processingSignal = this.getProcessingSignal(tx, deadline, signal);
|
|
768
|
+
if (!processingSignal) {
|
|
750
769
|
return await processFn();
|
|
751
770
|
}
|
|
752
|
-
|
|
771
|
+
return await execWithSignal(()=>processFn(), processingSignal, (signal)=>signal.reason?.name === 'TimeoutError' ? new PublicProcessorTimeoutError() : new PublicProcessorAbortError());
|
|
772
|
+
}
|
|
773
|
+
getProcessingSignal(tx, deadline, signal) {
|
|
774
|
+
if (!deadline) {
|
|
775
|
+
return signal;
|
|
776
|
+
}
|
|
753
777
|
const timeout = +deadline - this.dateProvider.now();
|
|
754
778
|
if (timeout <= 0) {
|
|
755
779
|
throw new PublicProcessorTimeoutError();
|
|
756
780
|
}
|
|
781
|
+
const txHash = tx.getTxHash();
|
|
757
782
|
this.log.debug(`Processing tx ${txHash.toString()} within ${timeout}ms`, {
|
|
758
783
|
deadline: deadline.toISOString(),
|
|
759
784
|
now: new Date(this.dateProvider.now()).toISOString(),
|
|
760
785
|
txHash
|
|
761
786
|
});
|
|
762
|
-
|
|
787
|
+
const timeoutSignal = AbortSignal.timeout(timeout);
|
|
788
|
+
return signal ? AbortSignal.any([
|
|
789
|
+
signal,
|
|
790
|
+
timeoutSignal
|
|
791
|
+
]) : timeoutSignal;
|
|
763
792
|
}
|
|
764
793
|
/**
|
|
765
794
|
* Creates the public data write for paying the tx fee.
|
|
@@ -788,7 +817,7 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
788
817
|
this.metrics.recordClassPublication(...tx.getContractClassLogs().filter((log)=>ContractClassPublishedEvent.isContractClassPublishedEvent(log)).map((log)=>ContractClassPublishedEvent.fromLog(log)));
|
|
789
818
|
// Fee payment insertion has already been done. Do the rest.
|
|
790
819
|
await this.doTreeInsertionsForPrivateOnlyTx(processedTx);
|
|
791
|
-
|
|
820
|
+
this.contractsDB.addNewContracts(tx);
|
|
792
821
|
return [
|
|
793
822
|
processedTx,
|
|
794
823
|
undefined,
|
|
@@ -15,6 +15,8 @@ export declare class PublicProcessorMetrics {
|
|
|
15
15
|
private gasRate;
|
|
16
16
|
private txGas;
|
|
17
17
|
private treeInsertionDuration;
|
|
18
|
+
private silentlySkippedCount;
|
|
19
|
+
private silentlySkippedDuration;
|
|
18
20
|
constructor(client: TelemetryClient, name?: string);
|
|
19
21
|
recordPhaseDuration(phaseName: TxExecutionPhase, durationMs: number): void;
|
|
20
22
|
recordTx(phaseCount: number, durationMs: number, gasUsed: Gas): void;
|
|
@@ -23,5 +25,6 @@ export declare class PublicProcessorMetrics {
|
|
|
23
25
|
recordRevertedPhase(phaseName: TxExecutionPhase): void;
|
|
24
26
|
recordClassPublication(...events: ContractClassPublishedEvent[]): void;
|
|
25
27
|
recordTreeInsertions(durationUs: number): void;
|
|
28
|
+
recordSilentlySkipped(durationMs: number): void;
|
|
26
29
|
}
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX3Byb2Nlc3Nvcl9tZXRyaWNzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHVibGljL3B1YmxpY19wcm9jZXNzb3IvcHVibGljX3Byb2Nlc3Nvcl9tZXRyaWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDNUYsT0FBTyxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEQsT0FBTyxFQUtMLEtBQUssZUFBZSxFQUNwQixLQUFLLE1BQU0sRUFHWixNQUFNLHlCQUF5QixDQUFDO0FBRWpDLHFCQUFhLHNCQUFzQjtJQUNqQyxTQUFnQixNQUFNLEVBQUUsTUFBTSxDQUFDO0lBRS9CLE9BQU8sQ0FBQyxVQUFVLENBQVk7SUFDOUIsT0FBTyxDQUFDLE9BQU8sQ0FBZ0I7SUFDL0IsT0FBTyxDQUFDLFlBQVksQ0FBZ0I7SUFFcEMsT0FBTyxDQUFDLGFBQWEsQ0FBWTtJQUNqQyxPQUFPLENBQUMsVUFBVSxDQUFnQjtJQUVsQyxPQUFPLENBQUMsZ0JBQWdCLENBQVk7SUFDcEMsT0FBTyxDQUFDLFFBQVEsQ0FBUTtJQUN4QixPQUFPLENBQUMsaUJBQWlCLENBQVk7SUFDckMsT0FBTyxDQUFDLE9BQU8sQ0FBWTtJQUMzQixPQUFPLENBQUMsS0FBSyxDQUFZO0lBRXpCLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBWTtJQUV6QyxPQUFPLENBQUMsb0JBQW9CLENBQWdCO0lBQzVDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBWTtJQUUzQyxZQUFZLE1BQU0sRUFBRSxlQUFlLEVBQUUsSUFBSSxTQUFvQixFQWtDNUQ7SUFFRCxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLE1BQU0sUUFHbEU7SUFFRCxRQUFRLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLFFBWTVEO0lBRUQsWUFBWSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFnQjFDO0lBRUQsY0FBYyxTQUliO0lBRUQsbUJBQW1CLENBQUMsU0FBUyxFQUFFLGdCQUFnQixRQUU5QztJQUVELHNCQUFzQixDQUFDLEdBQUcsTUFBTSxFQUFFLDJCQUEyQixFQUFFLFFBUzlEO0lBRUQsb0JBQW9CLENBQUMsVUFBVSxFQUFFLE1BQU0sUUFFdEM7SUFFRCxxQkFBcUIsQ0FBQyxVQUFVLEVBQUUsTUFBTSxRQUd2QztDQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public_processor_metrics.d.ts","sourceRoot":"","sources":["../../../src/public/public_processor/public_processor_metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,0CAA0C,CAAC;AAC5F,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAKL,KAAK,eAAe,EACpB,KAAK,MAAM,EAGZ,MAAM,yBAAyB,CAAC;AAEjC,qBAAa,sBAAsB;IACjC,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,YAAY,CAAgB;IAEpC,OAAO,CAAC,aAAa,CAAY;IACjC,OAAO,CAAC,UAAU,CAAgB;IAElC,OAAO,CAAC,gBAAgB,CAAY;IACpC,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,iBAAiB,CAAY;IACrC,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,KAAK,CAAY;IAEzB,OAAO,CAAC,qBAAqB,CAAY;IAEzC,YAAY,MAAM,EAAE,eAAe,EAAE,IAAI,SAAoB,
|
|
1
|
+
{"version":3,"file":"public_processor_metrics.d.ts","sourceRoot":"","sources":["../../../src/public/public_processor/public_processor_metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,0CAA0C,CAAC;AAC5F,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAKL,KAAK,eAAe,EACpB,KAAK,MAAM,EAGZ,MAAM,yBAAyB,CAAC;AAEjC,qBAAa,sBAAsB;IACjC,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,YAAY,CAAgB;IAEpC,OAAO,CAAC,aAAa,CAAY;IACjC,OAAO,CAAC,UAAU,CAAgB;IAElC,OAAO,CAAC,gBAAgB,CAAY;IACpC,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,iBAAiB,CAAY;IACrC,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,KAAK,CAAY;IAEzB,OAAO,CAAC,qBAAqB,CAAY;IAEzC,OAAO,CAAC,oBAAoB,CAAgB;IAC5C,OAAO,CAAC,uBAAuB,CAAY;IAE3C,YAAY,MAAM,EAAE,eAAe,EAAE,IAAI,SAAoB,EAkC5D;IAED,mBAAmB,CAAC,SAAS,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,QAGlE;IAED,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,QAY5D;IAED,YAAY,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,QAgB1C;IAED,cAAc,SAIb;IAED,mBAAmB,CAAC,SAAS,EAAE,gBAAgB,QAE9C;IAED,sBAAsB,CAAC,GAAG,MAAM,EAAE,2BAA2B,EAAE,QAS9D;IAED,oBAAoB,CAAC,UAAU,EAAE,MAAM,QAEtC;IAED,qBAAqB,CAAC,UAAU,EAAE,MAAM,QAGvC;CACF"}
|
|
@@ -13,6 +13,8 @@ export class PublicProcessorMetrics {
|
|
|
13
13
|
gasRate;
|
|
14
14
|
txGas;
|
|
15
15
|
treeInsertionDuration;
|
|
16
|
+
silentlySkippedCount;
|
|
17
|
+
silentlySkippedDuration;
|
|
16
18
|
constructor(client, name = 'PublicProcessor'){
|
|
17
19
|
this.tracer = client.getTracer(name);
|
|
18
20
|
const meter = client.getMeter(name);
|
|
@@ -42,6 +44,8 @@ export class PublicProcessorMetrics {
|
|
|
42
44
|
this.txGas = meter.createHistogram(Metrics.PUBLIC_PROCESSOR_TX_GAS);
|
|
43
45
|
this.gasRate = meter.createHistogram(Metrics.PUBLIC_PROCESSOR_GAS_RATE);
|
|
44
46
|
this.treeInsertionDuration = meter.createHistogram(Metrics.PUBLIC_PROCESSOR_TREE_INSERTION);
|
|
47
|
+
this.silentlySkippedCount = createUpDownCounterWithDefault(meter, Metrics.PUBLIC_PROCESSOR_SILENTLY_SKIPPED_COUNT);
|
|
48
|
+
this.silentlySkippedDuration = meter.createHistogram(Metrics.PUBLIC_PROCESSOR_SILENTLY_SKIPPED_DURATION);
|
|
45
49
|
}
|
|
46
50
|
recordPhaseDuration(phaseName, durationMs) {
|
|
47
51
|
this.phaseCount.add(1, {
|
|
@@ -105,4 +109,8 @@ export class PublicProcessorMetrics {
|
|
|
105
109
|
recordTreeInsertions(durationUs) {
|
|
106
110
|
this.treeInsertionDuration.record(Math.ceil(durationUs));
|
|
107
111
|
}
|
|
112
|
+
recordSilentlySkipped(durationMs) {
|
|
113
|
+
this.silentlySkippedCount.add(1);
|
|
114
|
+
this.silentlySkippedDuration.record(Math.ceil(durationMs));
|
|
115
|
+
}
|
|
108
116
|
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { LoggerBindings } from '@aztec/foundation/log';
|
|
2
|
+
import { type PublicSimulatorConfig, type PublicTxResult } from '@aztec/stdlib/avm';
|
|
3
|
+
import type { GlobalVariables, Tx } from '@aztec/stdlib/tx';
|
|
4
|
+
import type { AvmSimulator } from '../avm_simulator.js';
|
|
5
|
+
import type { PublicContractsDB } from '../public_db_sources.js';
|
|
6
|
+
import { PublicTxSimulator } from './public_tx_simulator.js';
|
|
7
|
+
/**
|
|
8
|
+
* A {@link PublicTxSimulator} that dumps AVM circuit inputs to disk after simulation.
|
|
9
|
+
* Used during nightly CI runs to collect circuit inputs for AVM proving benchmarks.
|
|
10
|
+
*/
|
|
11
|
+
export declare class DumpingPublicTxSimulator extends PublicTxSimulator {
|
|
12
|
+
private readonly outputDir;
|
|
13
|
+
constructor(avmSimulator: AvmSimulator, globalVariables: GlobalVariables, contractsDB: PublicContractsDB, forkId: number, config: Partial<PublicSimulatorConfig>, outputDir: string, bindings?: LoggerBindings);
|
|
14
|
+
simulate(tx: Tx): Promise<PublicTxResult>;
|
|
15
|
+
private dumpAvmCircuitInputs;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVtcGluZ19wdWJsaWNfdHhfc2ltdWxhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHVibGljL3B1YmxpY190eF9zaW11bGF0b3IvZHVtcGluZ19wdWJsaWNfdHhfc2ltdWxhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFJTCxLQUFLLHFCQUFxQixFQUMxQixLQUFLLGNBQWMsRUFFcEIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsRUFBRSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFNNUQsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU3RDs7O0dBR0c7QUFDSCxxQkFBYSx3QkFBeUIsU0FBUSxpQkFBaUI7SUFDN0QsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQVM7SUFFbkMsWUFDRSxZQUFZLEVBQUUsWUFBWSxFQUMxQixlQUFlLEVBQUUsZUFBZSxFQUNoQyxXQUFXLEVBQUUsaUJBQWlCLEVBQzlCLE1BQU0sRUFBRSxNQUFNLEVBQ2QsTUFBTSxFQUFFLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxFQUN0QyxTQUFTLEVBQUUsTUFBTSxFQUNqQixRQUFRLENBQUMsRUFBRSxjQUFjLEVBTTFCO0lBRXFCLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FJOUQ7SUFFRCxPQUFPLENBQUMsb0JBQW9CO0NBbUI3QiJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dumping_public_tx_simulator.d.ts","sourceRoot":"","sources":["../../../src/public/public_tx_simulator/dumping_public_tx_simulator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAIL,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EAEpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,eAAe,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAM5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D;;;GAGG;AACH,qBAAa,wBAAyB,SAAQ,iBAAiB;IAC7D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC,YACE,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,eAAe,EAChC,WAAW,EAAE,iBAAiB,EAC9B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,OAAO,CAAC,qBAAqB,CAAC,EACtC,SAAS,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,cAAc,EAM1B;IAEqB,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CAI9D;IAED,OAAO,CAAC,oBAAoB;CAmB7B"}
|
|
@@ -2,51 +2,38 @@ import { AvmCircuitInputs, AvmCircuitPublicInputs, AvmExecutionHints, serializeW
|
|
|
2
2
|
import { strict as assert } from 'assert';
|
|
3
3
|
import { mkdirSync, writeFileSync } from 'fs';
|
|
4
4
|
import { join } from 'path';
|
|
5
|
-
import {
|
|
5
|
+
import { PublicTxSimulator } from './public_tx_simulator.js';
|
|
6
6
|
/**
|
|
7
|
-
* A
|
|
8
|
-
* Used during nightly CI runs to collect circuit inputs for
|
|
9
|
-
*/ export class
|
|
7
|
+
* A {@link PublicTxSimulator} that dumps AVM circuit inputs to disk after simulation.
|
|
8
|
+
* Used during nightly CI runs to collect circuit inputs for AVM proving benchmarks.
|
|
9
|
+
*/ export class DumpingPublicTxSimulator extends PublicTxSimulator {
|
|
10
10
|
outputDir;
|
|
11
|
-
constructor(
|
|
12
|
-
super(
|
|
11
|
+
constructor(avmSimulator, globalVariables, contractsDB, forkId, config, outputDir, bindings){
|
|
12
|
+
super(avmSimulator, globalVariables, contractsDB, forkId, config, bindings);
|
|
13
13
|
assert(config.collectHints === true, 'collectHints must be enabled to dump AVM circuit inputs');
|
|
14
14
|
assert(config.collectPublicInputs === true, 'collectPublicInputs must be enabled to dump AVM circuit inputs');
|
|
15
15
|
this.outputDir = outputDir;
|
|
16
16
|
}
|
|
17
17
|
async simulate(tx) {
|
|
18
18
|
const result = await super.simulate(tx);
|
|
19
|
-
|
|
20
|
-
const txHash = this.computeTxHash(tx);
|
|
21
|
-
this.dumpAvmCircuitInputs(result, txHash);
|
|
19
|
+
this.dumpAvmCircuitInputs(result, tx.getTxHash().toString());
|
|
22
20
|
return result;
|
|
23
21
|
}
|
|
24
|
-
|
|
25
|
-
* Dumps AVM circuit inputs to disk.
|
|
26
|
-
*
|
|
27
|
-
* @param result - The simulation result containing hints and public inputs
|
|
28
|
-
* @param txHash - The transaction hash to use in the filename
|
|
29
|
-
*/ dumpAvmCircuitInputs(result, txHash) {
|
|
22
|
+
dumpAvmCircuitInputs(result, txHash) {
|
|
30
23
|
try {
|
|
31
|
-
// Ensure the output directory exists
|
|
32
24
|
mkdirSync(this.outputDir, {
|
|
33
25
|
recursive: true
|
|
34
26
|
});
|
|
35
|
-
|
|
36
|
-
const filename = `avm-circuit-inputs-tx-${txHash.toString()}.bin`;
|
|
27
|
+
const filename = `avm-circuit-inputs-tx-${txHash}.bin`;
|
|
37
28
|
const filepath = join(this.outputDir, filename);
|
|
38
|
-
// Create circuit inputs from the result
|
|
39
29
|
const hints = result.hints ?? AvmExecutionHints.empty();
|
|
40
30
|
const publicInputs = result.publicInputs ?? AvmCircuitPublicInputs.empty();
|
|
41
31
|
const avmCircuitInputs = new AvmCircuitInputs(hints, publicInputs);
|
|
42
|
-
// Serialize the circuit inputs using MessagePack
|
|
43
32
|
const serialized = serializeWithMessagePack(avmCircuitInputs);
|
|
44
|
-
// Write to disk
|
|
45
33
|
writeFileSync(filepath, serialized);
|
|
46
34
|
this.log.debug(`Dumped AVM circuit inputs to ${filepath}`);
|
|
47
35
|
} catch (error) {
|
|
48
|
-
|
|
49
|
-
this.log.warn(`Failed to dump AVM circuit inputs for tx ${txHash.toString()}: ${error}`);
|
|
36
|
+
this.log.warn(`Failed to dump AVM circuit inputs for tx ${txHash}: ${error}`);
|
|
50
37
|
}
|
|
51
38
|
}
|
|
52
39
|
}
|