@aztec/simulator 0.0.1-commit.3469e52 → 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/README.md +4 -4
- 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/acvm.d.ts +4 -2
- package/dest/private/acvm/acvm.d.ts.map +1 -1
- package/dest/private/acvm/acvm.js +4 -3
- package/dest/private/acvm_native.d.ts +5 -3
- package/dest/private/acvm_native.d.ts.map +1 -1
- package/dest/private/acvm_native.js +8 -6
- package/dest/private/acvm_wasm.d.ts +4 -3
- package/dest/private/acvm_wasm.d.ts.map +1 -1
- package/dest/private/acvm_wasm.js +7 -5
- package/dest/private/circuit_recording/circuit_recorder.d.ts +39 -25
- package/dest/private/circuit_recording/circuit_recorder.d.ts.map +1 -1
- package/dest/private/circuit_recording/circuit_recorder.js +70 -72
- package/dest/private/circuit_recording/file_circuit_recorder.d.ts +9 -20
- package/dest/private/circuit_recording/file_circuit_recorder.d.ts.map +1 -1
- package/dest/private/circuit_recording/file_circuit_recorder.js +39 -43
- package/dest/private/circuit_recording/memory_circuit_recorder.d.ts +7 -2
- package/dest/private/circuit_recording/memory_circuit_recorder.d.ts.map +1 -1
- package/dest/private/circuit_recording/memory_circuit_recorder.js +4 -4
- package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts +1 -1
- package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts.map +1 -1
- package/dest/private/circuit_recording/simulator_recorder_wrapper.js +11 -14
- package/dest/private/factory.d.ts +3 -3
- package/dest/private/factory.d.ts.map +1 -1
- package/dest/private/factory.js +7 -4
- package/dest/public/avm/testing/account_proof_fetcher.d.ts +2 -0
- package/dest/public/avm/testing/account_proof_fetcher.d.ts.map +1 -0
- package/dest/public/avm/testing/account_proof_fetcher.js +152 -0
- package/dest/public/avm/{fixtures → testing}/base_avm_simulation_tester.d.ts +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/executor_metrics.d.ts +1 -1
- package/dest/public/executor_metrics.d.ts.map +1 -1
- package/dest/public/executor_metrics.js +7 -2
- package/dest/public/fixtures/amm_test.js +4 -4
- 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 +8 -7
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
- package/dest/public/fixtures/public_tx_simulation_tester.js +17 -16
- 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 +21 -20
- 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 +11 -8
- 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 +9 -5
- package/dest/public/public_db_sources.d.ts.map +1 -1
- package/dest/public/public_db_sources.js +20 -14
- package/dest/public/public_processor/guarded_merkle_tree.d.ts +8 -7
- package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -1
- package/dest/public/public_processor/guarded_merkle_tree.js +8 -5
- package/dest/public/public_processor/public_processor.d.ts +11 -6
- package/dest/public/public_processor/public_processor.d.ts.map +1 -1
- package/dest/public/public_processor/public_processor.js +112 -74
- package/dest/public/public_processor/public_processor_metrics.d.ts +5 -2
- package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
- package/dest/public/public_processor/public_processor_metrics.js +28 -4
- package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts +3 -2
- 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 +7 -6
- 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} +4 -4
- package/dest/public/public_tx_simulator/factories.d.ts +7 -6
- 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 +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 +42 -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 +99 -317
- 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 +3 -2
- package/dest/public/test_executor_metrics.d.ts.map +1 -1
- package/dest/public/test_executor_metrics.js +2 -2
- package/package.json +17 -18
- package/src/client.ts +0 -2
- package/src/private/acvm/acvm.ts +4 -3
- package/src/private/acvm_native.ts +11 -5
- package/src/private/acvm_wasm.ts +11 -4
- package/src/private/circuit_recording/circuit_recorder.ts +89 -81
- package/src/private/circuit_recording/file_circuit_recorder.ts +45 -50
- package/src/private/circuit_recording/memory_circuit_recorder.ts +6 -4
- package/src/private/circuit_recording/simulator_recorder_wrapper.ts +9 -15
- package/src/private/factory.ts +7 -4
- package/src/public/avm/testing/account_proof.json +553 -0
- package/src/public/avm/testing/account_proof_fetcher.ts +166 -0
- package/src/public/avm/{fixtures → testing}/base_avm_simulation_tester.ts +23 -3
- package/src/public/avm/{fixtures → testing}/utils.ts +4 -40
- package/src/public/contracts_db_checkpoint.ts +1 -1
- package/src/public/executor_metrics.ts +4 -1
- package/src/public/fixtures/amm_test.ts +4 -4
- 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 +28 -14
- 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 +23 -24
- package/src/public/fuzzing/avm_fuzzer_simulator.ts +16 -19
- package/src/public/fuzzing/avm_simulator_bin.ts +14 -6
- package/src/public/index.ts +3 -3
- package/src/public/public_db_sources.ts +36 -19
- package/src/public/public_processor/guarded_merkle_tree.ts +11 -8
- package/src/public/public_processor/public_processor.ts +156 -94
- package/src/public/public_processor/public_processor_metrics.ts +22 -4
- package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +11 -7
- package/src/public/public_tx_simulator/{dumping_cpp_public_tx_simulator.ts → dumping_public_tx_simulator.ts} +5 -3
- package/src/public/public_tx_simulator/factories.ts +10 -7
- package/src/public/public_tx_simulator/index.ts +2 -4
- package/src/public/public_tx_simulator/public_tx_simulator.ts +153 -470
- package/src/public/public_tx_simulator/public_tx_simulator_base.ts +35 -0
- package/src/public/test_executor_metrics.ts +3 -3
- package/dest/public/avm/avm_context.d.ts +0 -41
- package/dest/public/avm/avm_context.d.ts.map +0 -1
- package/dest/public/avm/avm_context.js +0 -44
- package/dest/public/avm/avm_contract_call_result.d.ts +0 -32
- package/dest/public/avm/avm_contract_call_result.d.ts.map +0 -1
- package/dest/public/avm/avm_contract_call_result.js +0 -54
- package/dest/public/avm/avm_execution_environment.d.ts +0 -23
- package/dest/public/avm/avm_execution_environment.d.ts.map +0 -1
- package/dest/public/avm/avm_execution_environment.js +0 -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 -97
- package/dest/public/avm/avm_machine_state.d.ts.map +0 -1
- package/dest/public/avm/avm_machine_state.js +0 -109
- package/dest/public/avm/avm_memory_types.d.ts +0 -275
- package/dest/public/avm/avm_memory_types.d.ts.map +0 -1
- package/dest/public/avm/avm_memory_types.js +0 -351
- package/dest/public/avm/avm_simulator.d.ts +0 -40
- package/dest/public/avm/avm_simulator.d.ts.map +0 -1
- package/dest/public/avm/avm_simulator.js +0 -191
- package/dest/public/avm/avm_simulator_interface.d.ts +0 -9
- package/dest/public/avm/avm_simulator_interface.d.ts.map +0 -1
- package/dest/public/avm/avm_simulator_interface.js +0 -3
- package/dest/public/avm/errors.d.ts +0 -104
- package/dest/public/avm/errors.d.ts.map +0 -1
- package/dest/public/avm/errors.js +0 -141
- 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 -83
- 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 -44
- 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 -75
- package/dest/public/avm/opcodes/accrued_substate.d.ts.map +0 -1
- package/dest/public/avm/opcodes/accrued_substate.js +0 -255
- package/dest/public/avm/opcodes/addressing_mode.d.ts +0 -31
- package/dest/public/avm/opcodes/addressing_mode.d.ts.map +0 -1
- package/dest/public/avm/opcodes/addressing_mode.js +0 -94
- package/dest/public/avm/opcodes/arithmetic.d.ts +0 -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 -24
- package/dest/public/avm/opcodes/storage.d.ts.map +0 -1
- package/dest/public/avm/opcodes/storage.js +0 -68
- package/dest/public/avm/revert_reason.d.ts +0 -18
- package/dest/public/avm/revert_reason.d.ts.map +0 -1
- package/dest/public/avm/revert_reason.js +0 -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 -35
- 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 -123
- package/dest/public/fixtures/opcode_spammer.d.ts.map +0 -1
- package/dest/public/fixtures/opcode_spammer.js +0 -1681
- 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 -132
- 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 -22
- 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 -130
- 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 -164
- package/dest/public/state_manager/state_manager.d.ts.map +0 -1
- package/dest/public/state_manager/state_manager.js +0 -395
- package/src/public/avm/avm_context.ts +0 -61
- package/src/public/avm/avm_contract_call_result.ts +0 -67
- package/src/public/avm/avm_execution_environment.ts +0 -46
- package/src/public/avm/avm_gas.ts +0 -183
- package/src/public/avm/avm_machine_state.ts +0 -169
- package/src/public/avm/avm_memory_types.ts +0 -436
- package/src/public/avm/avm_simulator.ts +0 -276
- package/src/public/avm/avm_simulator_interface.ts +0 -8
- package/src/public/avm/errors.ts +0 -177
- package/src/public/avm/fixtures/avm_simulation_tester.ts +0 -116
- package/src/public/avm/fixtures/initializers.ts +0 -102
- package/src/public/avm/index.ts +0 -1
- package/src/public/avm/opcodes/accrued_substate.ts +0 -288
- package/src/public/avm/opcodes/addressing_mode.ts +0 -111
- package/src/public/avm/opcodes/arithmetic.ts +0 -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 -75
- package/src/public/avm/opcodes/control_flow.ts +0 -123
- package/src/public/avm/opcodes/conversion.ts +0 -104
- package/src/public/avm/opcodes/ec_add.ts +0 -105
- package/src/public/avm/opcodes/environment_getters.ts +0 -87
- package/src/public/avm/opcodes/external_calls.ts +0 -261
- 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 -87
- 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 -50
- 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 -1725
- package/src/public/hinting_db_sources.ts +0 -607
- package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +0 -208
- package/src/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.ts +0 -132
- package/src/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.ts +0 -237
- package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +0 -105
- package/src/public/public_tx_simulator/public_tx_context.ts +0 -477
- package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +0 -63
- package/src/public/side_effect_trace.ts +0 -290
- package/src/public/side_effect_trace_interface.ts +0 -28
- package/src/public/state_manager/index.ts +0 -1
- package/src/public/state_manager/nullifiers.ts +0 -103
- package/src/public/state_manager/public_storage.ts +0 -174
- package/src/public/state_manager/state_manager.ts +0 -546
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { type Logger, type LoggerBindings } from '@aztec/foundation/log';
|
|
1
2
|
import { DateProvider } from '@aztec/foundation/timer';
|
|
2
3
|
import { PublicSimulatorConfig } from '@aztec/stdlib/avm';
|
|
3
4
|
import type { ContractDataSource } from '@aztec/stdlib/contract';
|
|
4
5
|
import type { MerkleTreeWriteOperations, PublicProcessorLimits, PublicProcessorValidator, SequencerConfig } from '@aztec/stdlib/interfaces/server';
|
|
6
|
+
import { type DebugLog, type DebugLogStore } from '@aztec/stdlib/logs';
|
|
5
7
|
import { type FailedTx, GlobalVariables, NestedProcessReturnValues, type ProcessedTx, Tx } from '@aztec/stdlib/tx';
|
|
6
8
|
import { type TelemetryClient, type Traceable, type Tracer } from '@aztec/telemetry-client';
|
|
7
9
|
import { PublicContractsDB } from '../public_db_sources.js';
|
|
@@ -14,14 +16,15 @@ export declare class PublicProcessorFactory {
|
|
|
14
16
|
private contractDataSource;
|
|
15
17
|
private dateProvider;
|
|
16
18
|
protected telemetryClient: TelemetryClient;
|
|
17
|
-
|
|
19
|
+
private log;
|
|
20
|
+
constructor(contractDataSource: ContractDataSource, dateProvider?: DateProvider, telemetryClient?: TelemetryClient, bindings?: LoggerBindings);
|
|
18
21
|
/**
|
|
19
22
|
* Creates a new instance of a PublicProcessor.
|
|
20
23
|
* @param globalVariables - The global variables for the block being processed.
|
|
21
|
-
* @param
|
|
24
|
+
* @param contractsDB - Optional pre-populated contracts DB; a fresh one is constructed if omitted.
|
|
22
25
|
* @returns A new instance of a PublicProcessor.
|
|
23
26
|
*/
|
|
24
|
-
create(merkleTree: MerkleTreeWriteOperations, globalVariables: GlobalVariables, config: PublicSimulatorConfig): PublicProcessor;
|
|
27
|
+
create(merkleTree: MerkleTreeWriteOperations, globalVariables: GlobalVariables, config: PublicSimulatorConfig, contractsDB?: PublicContractsDB): PublicProcessor;
|
|
25
28
|
protected createPublicTxSimulator(merkleTree: MerkleTreeWriteOperations, contractsDB: PublicContractsDB, globalVariables: GlobalVariables, config?: Partial<PublicTxSimulatorConfig>): PublicTxSimulatorInterface;
|
|
26
29
|
}
|
|
27
30
|
/**
|
|
@@ -36,8 +39,9 @@ export declare class PublicProcessor implements Traceable {
|
|
|
36
39
|
private dateProvider;
|
|
37
40
|
private log;
|
|
38
41
|
private opts;
|
|
42
|
+
private debugLogStore;
|
|
39
43
|
private metrics;
|
|
40
|
-
constructor(globalVariables: GlobalVariables, guardedMerkleTree: GuardedMerkleTreeOperations, contractsDB: PublicContractsDB, publicTxSimulator: PublicTxSimulatorInterface, dateProvider: DateProvider, telemetryClient
|
|
44
|
+
constructor(globalVariables: GlobalVariables, guardedMerkleTree: GuardedMerkleTreeOperations, contractsDB: PublicContractsDB, publicTxSimulator: PublicTxSimulatorInterface, dateProvider: DateProvider, telemetryClient: TelemetryClient | undefined, log: Logger, opts?: Pick<SequencerConfig, 'fakeProcessingDelayPerTxMs' | 'fakeThrowAfterProcessingTxCount'>, debugLogStore?: DebugLogStore);
|
|
41
45
|
get tracer(): Tracer;
|
|
42
46
|
/**
|
|
43
47
|
* Run each tx through the public circuit and the public kernel circuit if needed.
|
|
@@ -46,11 +50,12 @@ export declare class PublicProcessor implements Traceable {
|
|
|
46
50
|
* @param validator - Pre-process validator and nullifier cache to use for processing the txs.
|
|
47
51
|
* @returns The list of processed txs with their circuit simulation outputs.
|
|
48
52
|
*/
|
|
49
|
-
process(txs: Iterable<Tx> | AsyncIterable<Tx>, limits?: PublicProcessorLimits, validator?: PublicProcessorValidator): Promise<[ProcessedTx[], FailedTx[], Tx[], NestedProcessReturnValues[],
|
|
53
|
+
process(txs: Iterable<Tx> | AsyncIterable<Tx>, limits?: PublicProcessorLimits, validator?: PublicProcessorValidator): Promise<[ProcessedTx[], FailedTx[], Tx[], NestedProcessReturnValues[], DebugLog[]]>;
|
|
50
54
|
private checkWorldStateUnchanged;
|
|
51
55
|
private processTx;
|
|
52
56
|
private doTreeInsertionsForPrivateOnlyTx;
|
|
53
57
|
private processTxWithinDeadline;
|
|
58
|
+
private getProcessingSignal;
|
|
54
59
|
private performFeePaymentPublicDataWrite;
|
|
55
60
|
private processPrivateOnlyTx;
|
|
56
61
|
private processTxWithPublicCalls;
|
|
@@ -59,4 +64,4 @@ export declare class PublicProcessor implements Traceable {
|
|
|
59
64
|
*/
|
|
60
65
|
private static generateProvingRequest;
|
|
61
66
|
}
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX3Byb2Nlc3Nvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3B1YmxpYy9wdWJsaWNfcHJvY2Vzc29yL3B1YmxpY19wcm9jZXNzb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFFLEtBQUssY0FBYyxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBRXZGLE9BQU8sRUFBRSxZQUFZLEVBQWtDLE1BQU0seUJBQXlCLENBQUM7QUFJdkYsT0FBTyxFQU1MLHFCQUFxQixFQUN0QixNQUFNLG1CQUFtQixDQUFDO0FBRTNCLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHakUsT0FBTyxLQUFLLEVBQ1YseUJBQXlCLEVBQ3pCLHFCQUFxQixFQUNyQix3QkFBd0IsRUFDeEIsZUFBZSxFQUNoQixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBRSxLQUFLLGFBQWEsRUFBcUIsTUFBTSxvQkFBb0IsQ0FBQztBQUcxRixPQUFPLEVBQ0wsS0FBSyxRQUFRLEVBQ2IsZUFBZSxFQUNmLHlCQUF5QixFQUN6QixLQUFLLFdBQVcsRUFFaEIsRUFBRSxFQUdILE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUVMLEtBQUssZUFBZSxFQUNwQixLQUFLLFNBQVMsRUFDZCxLQUFLLE1BQU0sRUFHWixNQUFNLHlCQUF5QixDQUFDO0FBS2pDLE9BQU8sRUFBRSxpQkFBaUIsRUFBaUIsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRSxPQUFPLEVBQ0wsS0FBSyx1QkFBdUIsRUFDNUIsS0FBSywwQkFBMEIsRUFFaEMsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUd2RTs7R0FFRztBQUNILHFCQUFhLHNCQUFzQjtJQUcvQixPQUFPLENBQUMsa0JBQWtCO0lBQzFCLE9BQU8sQ0FBQyxZQUFZO0lBQ3BCLFNBQVMsQ0FBQyxlQUFlLEVBQUUsZUFBZTtJQUo1QyxPQUFPLENBQUMsR0FBRyxDQUFTO0lBQ3BCLFlBQ1Usa0JBQWtCLEVBQUUsa0JBQWtCLEVBQ3RDLFlBQVksR0FBRSxZQUFpQyxFQUM3QyxlQUFlLEdBQUUsZUFBc0MsRUFDakUsUUFBUSxDQUFDLEVBQUUsY0FBYyxFQUcxQjtJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUNYLFVBQVUsRUFBRSx5QkFBeUIsRUFDckMsZUFBZSxFQUFFLGVBQWUsRUFDaEMsTUFBTSxFQUFFLHFCQUFxQixFQUM3QixXQUFXLEdBQUUsaUJBQTBGLEdBQ3RHLGVBQWUsQ0FhakI7SUFFRCxTQUFTLENBQUMsdUJBQXVCLENBQy9CLFVBQVUsRUFBRSx5QkFBeUIsRUFDckMsV0FBVyxFQUFFLGlCQUFpQixFQUM5QixlQUFlLEVBQUUsZUFBZSxFQUNoQyxNQUFNLENBQUMsRUFBRSxPQUFPLENBQUMsdUJBQXVCLENBQUMsR0FDeEMsMEJBQTBCLENBUzVCO0NBQ0Y7QUFvQkQ7OztHQUdHO0FBQ0gscUJBQWEsZUFBZ0IsWUFBVyxTQUFTO0lBRzdDLFNBQVMsQ0FBQyxlQUFlLEVBQUUsZUFBZTtJQUMxQyxPQUFPLENBQUMsaUJBQWlCO0lBQ3pCLFNBQVMsQ0FBQyxXQUFXLEVBQUUsaUJBQWlCO0lBQ3hDLFNBQVMsQ0FBQyxpQkFBaUIsRUFBRSwwQkFBMEI7SUFDdkQsT0FBTyxDQUFDLFlBQVk7SUFFcEIsT0FBTyxDQUFDLEdBQUc7SUFDWCxPQUFPLENBQUMsSUFBSTtJQUNaLE9BQU8sQ0FBQyxhQUFhO0lBVnZCLE9BQU8sQ0FBQyxPQUFPLENBQXlCO0lBQ3hDLFlBQ1ksZUFBZSxFQUFFLGVBQWUsRUFDbEMsaUJBQWlCLEVBQUUsMkJBQTJCLEVBQzVDLFdBQVcsRUFBRSxpQkFBaUIsRUFDOUIsaUJBQWlCLEVBQUUsMEJBQTBCLEVBQy9DLFlBQVksRUFBRSxZQUFZLEVBQ2xDLGVBQWUsNkJBQXdDLEVBQy9DLEdBQUcsRUFBRSxNQUFNLEVBQ1gsSUFBSSxHQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsNEJBQTRCLEdBQUcsaUNBQWlDLENBQU0sRUFDbEcsYUFBYSxHQUFFLGFBQXVDLEVBRy9EO0lBRUQsSUFBSSxNQUFNLElBQUksTUFBTSxDQUVuQjtJQUVEOzs7Ozs7T0FNRztJQUNVLE9BQU8sQ0FDbEIsR0FBRyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsR0FBRyxhQUFhLENBQUMsRUFBRSxDQUFDLEVBQ3JDLE1BQU0sR0FBRSxxQkFBMEIsRUFDbEMsU0FBUyxHQUFFLHdCQUE2QixHQUN2QyxPQUFPLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSx5QkFBeUIsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FtT3JGO1lBRWEsd0JBQXdCO1lBaUJ4QixTQUFTO1lBaUNULGdDQUFnQztZQTRCaEMsdUJBQXVCO0lBaUNyQyxPQUFPLENBQUMsbUJBQW1CO1lBMEJiLGdDQUFnQztZQTBCaEMsb0JBQW9CO1lBK0JwQix3QkFBd0I7SUF5Q3RDOztPQUVHO0lBQ0gsT0FBTyxDQUFDLE1BQU0sQ0FBQyxzQkFBc0I7Q0FTdEMifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public_processor.d.ts","sourceRoot":"","sources":["../../../src/public/public_processor/public_processor.ts"],"names":[],"mappings":"
|
|
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;IAJ5C,OAAO,CAAC,GAAG,CAAS;IACpB,YACU,kBAAkB,EAAE,kBAAkB,EACtC,YAAY,GAAE,YAAiC,EAC7C,eAAe,GAAE,eAAsC,EACjE,QAAQ,CAAC,EAAE,cAAc,EAG1B;IAED;;;;;OAKG;IACI,MAAM,CACX,UAAU,EAAE,yBAAyB,EACrC,eAAe,EAAE,eAAe,EAChC,MAAM,EAAE,qBAAqB,EAC7B,WAAW,GAAE,iBAA0F,GACtG,eAAe,CAajB;IAED,SAAS,CAAC,uBAAuB,CAC/B,UAAU,EAAE,yBAAyB,EACrC,WAAW,EAAE,iBAAiB,EAC9B,eAAe,EAAE,eAAe,EAChC,MAAM,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,GACxC,0BAA0B,CAS5B;CACF;AAoBD;;;GAGG;AACH,qBAAa,eAAgB,YAAW,SAAS;IAG7C,SAAS,CAAC,eAAe,EAAE,eAAe;IAC1C,OAAO,CAAC,iBAAiB;IACzB,SAAS,CAAC,WAAW,EAAE,iBAAiB;IACxC,SAAS,CAAC,iBAAiB,EAAE,0BAA0B;IACvD,OAAO,CAAC,YAAY;IAEpB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,aAAa;IAVvB,OAAO,CAAC,OAAO,CAAyB;IACxC,YACY,eAAe,EAAE,eAAe,EAClC,iBAAiB,EAAE,2BAA2B,EAC5C,WAAW,EAAE,iBAAiB,EAC9B,iBAAiB,EAAE,0BAA0B,EAC/C,YAAY,EAAE,YAAY,EAClC,eAAe,6BAAwC,EAC/C,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,IAAI,CAAC,eAAe,EAAE,4BAA4B,GAAG,iCAAiC,CAAM,EAClG,aAAa,GAAE,aAAuC,EAG/D;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED;;;;;;OAMG;IACU,OAAO,CAClB,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC,EACrC,MAAM,GAAE,qBAA0B,EAClC,SAAS,GAAE,wBAA6B,GACvC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,yBAAyB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAmOrF;YAEa,wBAAwB;YAiBxB,SAAS;YAiCT,gCAAgC;YA4BhC,uBAAuB;IAiCrC,OAAO,CAAC,mBAAmB;YA0Bb,gCAAgC;YA0BhC,oBAAoB;YA+BpB,wBAAwB;IAyCtC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;CAStC"}
|
|
@@ -376,13 +376,14 @@ 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';
|
|
383
383
|
import { AvmCircuitInputs, AvmExecutionHints, PublicDataWrite } from '@aztec/stdlib/avm';
|
|
384
384
|
import { computeTransactionFee } from '@aztec/stdlib/fees';
|
|
385
385
|
import { Gas } from '@aztec/stdlib/gas';
|
|
386
|
+
import { NullDebugLogStore } from '@aztec/stdlib/logs';
|
|
386
387
|
import { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
387
388
|
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
388
389
|
import { NestedProcessReturnValues, makeProcessedTxFromPrivateOnlyTx, makeProcessedTxFromTxWithPublicCalls } from '@aztec/stdlib/tx';
|
|
@@ -390,7 +391,7 @@ import { Attributes, getTelemetryClient, trackSpan } from '@aztec/telemetry-clie
|
|
|
390
391
|
import { ForkCheckpoint } from '@aztec/world-state/native';
|
|
391
392
|
import { AssertionError } from 'assert';
|
|
392
393
|
import { PublicContractsDB, PublicTreesDB } from '../public_db_sources.js';
|
|
393
|
-
import {
|
|
394
|
+
import { TelemetryPublicTxSimulator } from '../public_tx_simulator/index.js';
|
|
394
395
|
import { GuardedMerkleTreeOperations } from './guarded_merkle_tree.js';
|
|
395
396
|
import { PublicProcessorMetrics } from './public_processor_metrics.js';
|
|
396
397
|
/**
|
|
@@ -399,24 +400,25 @@ import { PublicProcessorMetrics } from './public_processor_metrics.js';
|
|
|
399
400
|
contractDataSource;
|
|
400
401
|
dateProvider;
|
|
401
402
|
telemetryClient;
|
|
402
|
-
|
|
403
|
+
log;
|
|
404
|
+
constructor(contractDataSource, dateProvider = new DateProvider(), telemetryClient = getTelemetryClient(), bindings){
|
|
403
405
|
this.contractDataSource = contractDataSource;
|
|
404
406
|
this.dateProvider = dateProvider;
|
|
405
407
|
this.telemetryClient = telemetryClient;
|
|
408
|
+
this.log = createLogger('simulator:public-processor-factory', bindings);
|
|
406
409
|
}
|
|
407
410
|
/**
|
|
408
411
|
* Creates a new instance of a PublicProcessor.
|
|
409
412
|
* @param globalVariables - The global variables for the block being processed.
|
|
410
|
-
* @param
|
|
413
|
+
* @param contractsDB - Optional pre-populated contracts DB; a fresh one is constructed if omitted.
|
|
411
414
|
* @returns A new instance of a PublicProcessor.
|
|
412
|
-
*/ create(merkleTree, globalVariables, config) {
|
|
413
|
-
const contractsDB = new PublicContractsDB(this.contractDataSource);
|
|
415
|
+
*/ create(merkleTree, globalVariables, config, contractsDB = new PublicContractsDB(this.contractDataSource, this.log.getBindings())) {
|
|
414
416
|
const guardedFork = new GuardedMerkleTreeOperations(merkleTree);
|
|
415
417
|
const publicTxSimulator = this.createPublicTxSimulator(guardedFork, contractsDB, globalVariables, config);
|
|
416
|
-
return new PublicProcessor(globalVariables, guardedFork, contractsDB, publicTxSimulator, this.dateProvider, this.telemetryClient);
|
|
418
|
+
return new PublicProcessor(globalVariables, guardedFork, contractsDB, publicTxSimulator, this.dateProvider, this.telemetryClient, createLogger('simulator:public-processor', this.log.getBindings()));
|
|
417
419
|
}
|
|
418
420
|
createPublicTxSimulator(merkleTree, contractsDB, globalVariables, config) {
|
|
419
|
-
return new
|
|
421
|
+
return new TelemetryPublicTxSimulator(merkleTree, contractsDB, globalVariables, this.telemetryClient, config, this.log.getBindings());
|
|
420
422
|
}
|
|
421
423
|
}
|
|
422
424
|
class PublicProcessorTimeoutError extends Error {
|
|
@@ -425,6 +427,15 @@ class PublicProcessorTimeoutError extends Error {
|
|
|
425
427
|
this.name = 'PublicProcessorTimeoutError';
|
|
426
428
|
}
|
|
427
429
|
}
|
|
430
|
+
class PublicProcessorAbortError extends Error {
|
|
431
|
+
constructor(message = 'Aborted while processing tx'){
|
|
432
|
+
super(message);
|
|
433
|
+
this.name = 'PublicProcessorAbortError';
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
function isPublicProcessorInterruptError(err) {
|
|
437
|
+
return err?.name === 'PublicProcessorTimeoutError' || err?.name === 'PublicProcessorAbortError';
|
|
438
|
+
}
|
|
428
439
|
_dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
429
440
|
[Attributes.TX_HASH]: tx.getTxHash().toString()
|
|
430
441
|
})), _dec1 = trackSpan('PublicProcessor.processPrivateOnlyTx', (tx)=>({
|
|
@@ -443,6 +454,7 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
443
454
|
dateProvider;
|
|
444
455
|
log;
|
|
445
456
|
opts;
|
|
457
|
+
debugLogStore;
|
|
446
458
|
static{
|
|
447
459
|
({ e: [_initProto] } = _apply_decs_2203_r(this, [
|
|
448
460
|
[
|
|
@@ -463,7 +475,7 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
463
475
|
], []));
|
|
464
476
|
}
|
|
465
477
|
metrics;
|
|
466
|
-
constructor(globalVariables, guardedMerkleTree, contractsDB, publicTxSimulator, dateProvider, telemetryClient = getTelemetryClient(), log =
|
|
478
|
+
constructor(globalVariables, guardedMerkleTree, contractsDB, publicTxSimulator, dateProvider, telemetryClient = getTelemetryClient(), log, opts = {}, debugLogStore = new NullDebugLogStore()){
|
|
467
479
|
this.globalVariables = globalVariables;
|
|
468
480
|
this.guardedMerkleTree = guardedMerkleTree;
|
|
469
481
|
this.contractsDB = contractsDB;
|
|
@@ -471,6 +483,7 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
471
483
|
this.dateProvider = dateProvider;
|
|
472
484
|
this.log = log;
|
|
473
485
|
this.opts = opts;
|
|
486
|
+
this.debugLogStore = debugLogStore;
|
|
474
487
|
_initProto(this);
|
|
475
488
|
this.metrics = new PublicProcessorMetrics(telemetryClient, 'PublicProcessor');
|
|
476
489
|
}
|
|
@@ -484,43 +497,52 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
484
497
|
* @param validator - Pre-process validator and nullifier cache to use for processing the txs.
|
|
485
498
|
* @returns The list of processed txs with their circuit simulation outputs.
|
|
486
499
|
*/ async process(txs, limits = {}, validator = {}) {
|
|
487
|
-
const { maxTransactions,
|
|
500
|
+
const { maxTransactions, deadline, maxBlockGas, maxBlobFields, isBuildingProposal, signal } = limits;
|
|
488
501
|
const { preprocessValidator, nullifierCache } = validator;
|
|
489
502
|
const result = [];
|
|
490
503
|
const usedTxs = [];
|
|
491
504
|
const failed = [];
|
|
505
|
+
const debugLogs = [];
|
|
492
506
|
const timer = new Timer();
|
|
493
507
|
let totalSizeInBytes = 0;
|
|
494
508
|
let returns = [];
|
|
495
509
|
let totalPublicGas = new Gas(0, 0);
|
|
496
510
|
let totalBlockGas = new Gas(0, 0);
|
|
497
511
|
let totalBlobFields = 0;
|
|
512
|
+
let silentlySkippedCount = 0;
|
|
513
|
+
let totalSilentlySkippedDurationMs = 0;
|
|
498
514
|
for await (const tx of txs){
|
|
499
515
|
// Only process up to the max tx limit
|
|
500
516
|
if (maxTransactions !== undefined && result.length >= maxTransactions) {
|
|
501
517
|
this.log.debug(`Stopping tx processing due to reaching the max tx limit.`);
|
|
502
518
|
break;
|
|
503
519
|
}
|
|
504
|
-
// Bail if we've hit the deadline
|
|
520
|
+
// Bail if we've hit the deadline or have been interrupted.
|
|
505
521
|
if (deadline && this.dateProvider.now() > +deadline) {
|
|
506
522
|
this.log.warn(`Stopping tx processing due to timeout.`);
|
|
507
523
|
break;
|
|
508
524
|
}
|
|
509
|
-
|
|
525
|
+
if (signal?.aborted) {
|
|
526
|
+
this.log.warn(`Stopping tx processing due to abort signal.`);
|
|
527
|
+
break;
|
|
528
|
+
}
|
|
510
529
|
const txHash = tx.getTxHash().toString();
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
530
|
+
// Skip this tx if its estimated blob fields would exceed the limit.
|
|
531
|
+
// Only done during proposal building: during re-execution we must process the exact txs from the proposal.
|
|
532
|
+
const txBlobFields = tx.getPrivateTxEffectsSizeInFields();
|
|
533
|
+
if (isBuildingProposal && maxBlobFields !== undefined && totalBlobFields + txBlobFields > maxBlobFields) {
|
|
534
|
+
this.log.warn(`Skipping tx ${txHash} with ${txBlobFields} fields from private side effects due to blob fields limit`, {
|
|
514
535
|
txHash,
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
536
|
+
txBlobFields,
|
|
537
|
+
totalBlobFields,
|
|
538
|
+
maxBlobFields
|
|
518
539
|
});
|
|
519
540
|
continue;
|
|
520
541
|
}
|
|
521
|
-
// Skip this tx if its gas limit would exceed the block gas limit
|
|
542
|
+
// Skip this tx if its gas limit would exceed the block gas limit (either da or l2).
|
|
543
|
+
// Only done during proposal building: during re-execution we must process the exact txs from the proposal.
|
|
522
544
|
const txGasLimit = tx.data.constants.txContext.gasSettings.gasLimits;
|
|
523
|
-
if (maxBlockGas !== undefined && totalBlockGas.add(txGasLimit).gtAny(maxBlockGas)) {
|
|
545
|
+
if (isBuildingProposal && maxBlockGas !== undefined && totalBlockGas.add(txGasLimit).gtAny(maxBlockGas)) {
|
|
524
546
|
this.log.warn(`Skipping processing of tx ${txHash} due to block gas limit`, {
|
|
525
547
|
txHash,
|
|
526
548
|
txGasLimit,
|
|
@@ -542,11 +564,6 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
542
564
|
});
|
|
543
565
|
returns.push(new NestedProcessReturnValues([]));
|
|
544
566
|
continue;
|
|
545
|
-
} else if (result.result === 'skipped') {
|
|
546
|
-
const reason = result.reason.join(', ');
|
|
547
|
-
this.log.debug(`Skipping tx ${txHash.toString()} due to pre-process validation: ${reason}`);
|
|
548
|
-
returns.push(new NestedProcessReturnValues([]));
|
|
549
|
-
continue;
|
|
550
567
|
} else {
|
|
551
568
|
this.log.trace(`Tx ${txHash.toString()} is valid before processing.`);
|
|
552
569
|
}
|
|
@@ -560,83 +577,85 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
560
577
|
const startStateReference = await this.guardedMerkleTree.getUnderlyingFork().getStateReference();
|
|
561
578
|
this.contractsDB.createCheckpoint();
|
|
562
579
|
try {
|
|
563
|
-
const [processedTx, returnValues] = await this.processTx(tx, deadline);
|
|
580
|
+
const [txProcessingTimeMs, [processedTx, returnValues, txDebugLogs]] = await elapsed(()=>this.processTx(tx, deadline, signal));
|
|
564
581
|
// Inject a fake processing failure after N txs if requested
|
|
565
582
|
const fakeThrowAfter = this.opts.fakeThrowAfterProcessingTxCount;
|
|
566
583
|
if (fakeThrowAfter !== undefined && result.length + failed.length + 1 >= fakeThrowAfter) {
|
|
567
584
|
throw new Error(`Fake error after processing ${fakeThrowAfter} txs`);
|
|
568
585
|
}
|
|
569
586
|
const txBlobFields = processedTx.txEffect.getNumBlobFields();
|
|
570
|
-
// If the actual size of this tx would exceed block size, skip it
|
|
571
587
|
const txSize = txBlobFields * Fr.SIZE_IN_BYTES;
|
|
572
|
-
|
|
573
|
-
this.log.debug(`Skipping processed tx ${txHash} sized ${txSize} due to max block size.`, {
|
|
574
|
-
txHash,
|
|
575
|
-
sizeInBytes: txSize,
|
|
576
|
-
totalSizeInBytes,
|
|
577
|
-
maxBlockSize
|
|
578
|
-
});
|
|
579
|
-
// Need to revert the checkpoint here and don't go any further
|
|
580
|
-
await checkpoint.revert();
|
|
581
|
-
this.contractsDB.revertCheckpoint();
|
|
582
|
-
continue;
|
|
583
|
-
}
|
|
584
|
-
// If the actual blob fields of this tx would exceed the limit, skip it
|
|
588
|
+
// If the actual blob fields of this tx would exceed the limit, skip it.
|
|
585
589
|
// Note: maxBlobFields already accounts for block end blob fields and previous blocks in checkpoint.
|
|
586
590
|
if (maxBlobFields !== undefined && totalBlobFields + txBlobFields > maxBlobFields) {
|
|
587
591
|
this.log.debug(`Skipping processed tx ${txHash} with ${txBlobFields} blob fields due to max blob fields limit.`, {
|
|
588
592
|
txHash,
|
|
589
593
|
txBlobFields,
|
|
590
594
|
totalBlobFields,
|
|
591
|
-
maxBlobFields
|
|
595
|
+
maxBlobFields,
|
|
596
|
+
txProcessingTimeMs
|
|
592
597
|
});
|
|
598
|
+
silentlySkippedCount += 1;
|
|
599
|
+
totalSilentlySkippedDurationMs += txProcessingTimeMs;
|
|
600
|
+
this.metrics.recordSilentlySkipped(txProcessingTimeMs);
|
|
593
601
|
// Need to revert the checkpoint here and don't go any further
|
|
594
602
|
await checkpoint.revert();
|
|
595
603
|
this.contractsDB.revertCheckpoint();
|
|
596
604
|
continue;
|
|
597
605
|
}
|
|
606
|
+
// During re-execution, check if the actual gas used by this tx would push the block over the gas limit.
|
|
607
|
+
// Unlike the proposal-building check (which uses declared gas limits pessimistically before processing),
|
|
608
|
+
// this uses actual gas and stops processing when the limit is exceeded.
|
|
609
|
+
if (!isBuildingProposal && maxBlockGas !== undefined && totalBlockGas.add(processedTx.gasUsed.totalGas).gtAny(maxBlockGas)) {
|
|
610
|
+
this.log.warn(`Stopping re-execution since tx ${txHash} would push block gas over limit`, {
|
|
611
|
+
txHash,
|
|
612
|
+
txGas: processedTx.gasUsed.totalGas,
|
|
613
|
+
totalBlockGas,
|
|
614
|
+
maxBlockGas
|
|
615
|
+
});
|
|
616
|
+
await checkpoint.revert();
|
|
617
|
+
this.contractsDB.revertCheckpoint();
|
|
618
|
+
break;
|
|
619
|
+
}
|
|
598
620
|
// FIXME(fcarreiro): it's ugly to have to notify the validator of nullifiers.
|
|
599
621
|
// I'd rather pass the validators the processedTx as well and let them deal with it.
|
|
600
622
|
nullifierCache?.addNullifiers(processedTx.txEffect.nullifiers.map((n)=>n.toBuffer()));
|
|
601
623
|
result.push(processedTx);
|
|
602
624
|
usedTxs.push(tx);
|
|
603
625
|
returns = returns.concat(returnValues);
|
|
626
|
+
debugLogs.push(...txDebugLogs);
|
|
627
|
+
this.debugLogStore.storeLogs(processedTx.hash.toString(), txDebugLogs);
|
|
604
628
|
totalPublicGas = totalPublicGas.add(processedTx.gasUsed.publicGas);
|
|
605
629
|
totalBlockGas = totalBlockGas.add(processedTx.gasUsed.totalGas);
|
|
606
630
|
totalSizeInBytes += txSize;
|
|
607
631
|
totalBlobFields += txBlobFields;
|
|
632
|
+
// Commit the tx-level contracts checkpoint on success
|
|
633
|
+
this.contractsDB.commitCheckpoint();
|
|
608
634
|
} catch (err) {
|
|
609
|
-
if (err
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
//
|
|
613
|
-
// Signal cancellation AND WAIT for the simulation to actually stop.
|
|
614
|
-
// This is critical because C++ might be in the middle of a slow operation (e.g., pad_trees)
|
|
615
|
-
// and won't check the cancellation flag until that operation completes.
|
|
616
|
-
// Without waiting, we'd proceed to revert checkpoints while C++ is still writing to state.
|
|
617
|
-
// Wait for C++ to stop gracefully.
|
|
635
|
+
if (isPublicProcessorInterruptError(err)) {
|
|
636
|
+
const interruptReason = err.name === 'PublicProcessorTimeoutError' ? 'timeout' : 'abort signal';
|
|
637
|
+
this.log.warn(`Stopping tx processing due to ${interruptReason}.`);
|
|
638
|
+
// The tx may still be executing on a worker thread (C++ via NAPI).
|
|
639
|
+
// Signal cancellation AND WAIT for the simulation to actually stop before touching fork checkpoints.
|
|
618
640
|
await this.publicTxSimulator.cancel?.();
|
|
619
641
|
// Now stop the guarded fork to prevent any further TS-side access to the world state.
|
|
620
642
|
await this.guardedMerkleTree.stop();
|
|
621
643
|
// We now know there can't be any further access to world state. The fork is in a state where there is:
|
|
622
644
|
// 1. At least one outstanding checkpoint that has not been committed (the one created before we processed the tx).
|
|
623
645
|
// 2. Possible state updates on that checkpoint or any others created during execution.
|
|
624
|
-
//
|
|
625
|
-
//
|
|
626
|
-
//
|
|
627
|
-
await checkpoint.
|
|
628
|
-
// Now we want to revert any/all remaining checkpoints, destroying any outstanding state updates.
|
|
629
|
-
// This needs to be done directly on the underlying fork as the guarded fork has been stopped.
|
|
630
|
-
await this.guardedMerkleTree.getUnderlyingFork().revertAllCheckpoints();
|
|
646
|
+
// Revert all checkpoints at or above this checkpoint's depth (inclusive), destroying any outstanding state
|
|
647
|
+
// updates from this tx and any nested checkpoints created during execution. This preserves any checkpoints
|
|
648
|
+
// created by callers below our depth.
|
|
649
|
+
await checkpoint.revertToCheckpoint();
|
|
631
650
|
// Revert any contracts added to the DB for the tx.
|
|
632
651
|
this.contractsDB.revertCheckpoint();
|
|
633
652
|
// Ensure we're at the same state as when we started processing this tx.
|
|
634
653
|
await this.checkWorldStateUnchanged(startStateReference, txHash, err);
|
|
635
654
|
break;
|
|
636
655
|
}
|
|
637
|
-
// Roll back state to start of TX before proceeding to next TX
|
|
638
|
-
|
|
639
|
-
await
|
|
656
|
+
// Roll back state to start of TX before proceeding to next TX.
|
|
657
|
+
// Reverts all checkpoints at or above this checkpoint's depth, preserving any caller checkpoints below.
|
|
658
|
+
await checkpoint.revertToCheckpoint();
|
|
640
659
|
this.contractsDB.revertCheckpoint();
|
|
641
660
|
const errorMessage = err instanceof Error || err instanceof AssertionError ? err.message : 'Unknown error';
|
|
642
661
|
this.log.warn(`Failed to process tx ${txHash.toString()}: ${errorMessage} ${err?.stack}`);
|
|
@@ -650,25 +669,30 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
650
669
|
} finally{
|
|
651
670
|
// Base case is we always commit the checkpoint. Using the ForkCheckpoint means this has no effect if the tx was previously reverted
|
|
652
671
|
await checkpoint.commit();
|
|
653
|
-
this.contractsDB.commitCheckpointOkIfNone();
|
|
654
672
|
}
|
|
655
673
|
}
|
|
656
674
|
const duration = timer.s();
|
|
657
675
|
const rate = duration > 0 ? totalPublicGas.l2Gas / duration : 0;
|
|
658
676
|
this.metrics.recordAllTxs(totalPublicGas, rate);
|
|
659
|
-
|
|
677
|
+
const silentlySkippedDurationMs = Math.round(totalSilentlySkippedDurationMs);
|
|
678
|
+
this.log.info(`Processed ${result.length} successful txs and ${failed.length} failed txs ` + `(${silentlySkippedCount} silently skipped, ${silentlySkippedDurationMs}ms wasted) ` + `in ${duration}s`, {
|
|
679
|
+
blockNumber: this.globalVariables.blockNumber,
|
|
680
|
+
successfulCount: result.length,
|
|
681
|
+
failedCount: failed.length,
|
|
660
682
|
duration,
|
|
661
683
|
rate,
|
|
662
684
|
totalPublicGas,
|
|
663
685
|
totalBlockGas,
|
|
664
|
-
totalSizeInBytes
|
|
686
|
+
totalSizeInBytes,
|
|
687
|
+
silentlySkippedCount,
|
|
688
|
+
silentlySkippedDurationMs
|
|
665
689
|
});
|
|
666
690
|
return [
|
|
667
691
|
result,
|
|
668
692
|
failed,
|
|
669
693
|
usedTxs,
|
|
670
694
|
returns,
|
|
671
|
-
|
|
695
|
+
debugLogs
|
|
672
696
|
];
|
|
673
697
|
}
|
|
674
698
|
async checkWorldStateUnchanged(startStateReference, txHash, cause) {
|
|
@@ -684,8 +708,8 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
684
708
|
});
|
|
685
709
|
}
|
|
686
710
|
}
|
|
687
|
-
async processTx(tx, deadline) {
|
|
688
|
-
const [time, [processedTx, returnValues]] = await elapsed(()=>this.processTxWithinDeadline(tx, deadline));
|
|
711
|
+
async processTx(tx, deadline, signal) {
|
|
712
|
+
const [time, [processedTx, returnValues, debugLogs]] = await elapsed(()=>this.processTxWithinDeadline(tx, deadline, signal));
|
|
689
713
|
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`, {
|
|
690
714
|
txHash: processedTx.hash,
|
|
691
715
|
txFee: processedTx.txEffect.transactionFee.toBigInt(),
|
|
@@ -703,7 +727,8 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
703
727
|
});
|
|
704
728
|
return [
|
|
705
729
|
processedTx,
|
|
706
|
-
returnValues ?? []
|
|
730
|
+
returnValues ?? [],
|
|
731
|
+
debugLogs
|
|
707
732
|
];
|
|
708
733
|
}
|
|
709
734
|
async doTreeInsertionsForPrivateOnlyTx(processedTx) {
|
|
@@ -725,7 +750,7 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
725
750
|
const treeInsertionEnd = process.hrtime.bigint();
|
|
726
751
|
this.metrics.recordTreeInsertions(Number(treeInsertionEnd - treeInsertionStart) / 1_000);
|
|
727
752
|
}
|
|
728
|
-
/** Processes the given tx within deadline
|
|
753
|
+
/** Processes the given tx within deadline or until the signal is aborted. */ async processTxWithinDeadline(tx, deadline, signal) {
|
|
729
754
|
const innerProcessFn = tx.hasPublicCalls() ? ()=>this.processTxWithPublicCalls(tx) : ()=>this.processPrivateOnlyTx(tx);
|
|
730
755
|
// Fake a delay per tx if instructed (used for tests)
|
|
731
756
|
const fakeDelayPerTxMs = this.opts.fakeProcessingDelayPerTxMs;
|
|
@@ -735,20 +760,31 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
735
760
|
await sleep(fakeDelayPerTxMs);
|
|
736
761
|
return result;
|
|
737
762
|
} : innerProcessFn;
|
|
738
|
-
|
|
763
|
+
const processingSignal = this.getProcessingSignal(tx, deadline, signal);
|
|
764
|
+
if (!processingSignal) {
|
|
739
765
|
return await processFn();
|
|
740
766
|
}
|
|
741
|
-
|
|
767
|
+
return await execWithSignal(()=>processFn(), processingSignal, (signal)=>signal.reason?.name === 'TimeoutError' ? new PublicProcessorTimeoutError() : new PublicProcessorAbortError());
|
|
768
|
+
}
|
|
769
|
+
getProcessingSignal(tx, deadline, signal) {
|
|
770
|
+
if (!deadline) {
|
|
771
|
+
return signal;
|
|
772
|
+
}
|
|
742
773
|
const timeout = +deadline - this.dateProvider.now();
|
|
743
774
|
if (timeout <= 0) {
|
|
744
775
|
throw new PublicProcessorTimeoutError();
|
|
745
776
|
}
|
|
777
|
+
const txHash = tx.getTxHash();
|
|
746
778
|
this.log.debug(`Processing tx ${txHash.toString()} within ${timeout}ms`, {
|
|
747
779
|
deadline: deadline.toISOString(),
|
|
748
780
|
now: new Date(this.dateProvider.now()).toISOString(),
|
|
749
781
|
txHash
|
|
750
782
|
});
|
|
751
|
-
|
|
783
|
+
const timeoutSignal = AbortSignal.timeout(timeout);
|
|
784
|
+
return signal ? AbortSignal.any([
|
|
785
|
+
signal,
|
|
786
|
+
timeoutSignal
|
|
787
|
+
]) : timeoutSignal;
|
|
752
788
|
}
|
|
753
789
|
/**
|
|
754
790
|
* Creates the public data write for paying the tx fee.
|
|
@@ -777,10 +813,11 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
777
813
|
this.metrics.recordClassPublication(...tx.getContractClassLogs().filter((log)=>ContractClassPublishedEvent.isContractClassPublishedEvent(log)).map((log)=>ContractClassPublishedEvent.fromLog(log)));
|
|
778
814
|
// Fee payment insertion has already been done. Do the rest.
|
|
779
815
|
await this.doTreeInsertionsForPrivateOnlyTx(processedTx);
|
|
780
|
-
|
|
816
|
+
this.contractsDB.addNewContracts(tx);
|
|
781
817
|
return [
|
|
782
818
|
processedTx,
|
|
783
|
-
undefined
|
|
819
|
+
undefined,
|
|
820
|
+
[]
|
|
784
821
|
];
|
|
785
822
|
}
|
|
786
823
|
async processTxWithPublicCalls(tx) {
|
|
@@ -802,7 +839,8 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
|
802
839
|
const processedTx = makeProcessedTxFromTxWithPublicCalls(tx, this.globalVariables, avmProvingRequest, publicTxEffect, gasUsed, revertCode, revertReason);
|
|
803
840
|
return [
|
|
804
841
|
processedTx,
|
|
805
|
-
appLogicReturnValues
|
|
842
|
+
appLogicReturnValues,
|
|
843
|
+
result.logs ?? []
|
|
806
844
|
];
|
|
807
845
|
}
|
|
808
846
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ContractClassPublishedEvent } from '@aztec/protocol-contracts/class-registry';
|
|
2
2
|
import type { Gas } from '@aztec/stdlib/gas';
|
|
3
|
-
import
|
|
3
|
+
import { TxExecutionPhase } from '@aztec/stdlib/tx';
|
|
4
4
|
import { type TelemetryClient, type Tracer } from '@aztec/telemetry-client';
|
|
5
5
|
export declare class PublicProcessorMetrics {
|
|
6
6
|
readonly tracer: Tracer;
|
|
@@ -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,
|
|
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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TxExecutionPhase } from '@aztec/stdlib/tx';
|
|
2
|
+
import { Attributes, Metrics, createUpDownCounterWithDefault } from '@aztec/telemetry-client';
|
|
2
3
|
export class PublicProcessorMetrics {
|
|
3
4
|
tracer;
|
|
4
5
|
txDuration;
|
|
@@ -12,20 +13,39 @@ export class PublicProcessorMetrics {
|
|
|
12
13
|
gasRate;
|
|
13
14
|
txGas;
|
|
14
15
|
treeInsertionDuration;
|
|
16
|
+
silentlySkippedCount;
|
|
17
|
+
silentlySkippedDuration;
|
|
15
18
|
constructor(client, name = 'PublicProcessor'){
|
|
16
19
|
this.tracer = client.getTracer(name);
|
|
17
20
|
const meter = client.getMeter(name);
|
|
18
21
|
this.txDuration = meter.createHistogram(Metrics.PUBLIC_PROCESSOR_TX_DURATION);
|
|
19
|
-
this.txCount = meter
|
|
20
|
-
|
|
22
|
+
this.txCount = createUpDownCounterWithDefault(meter, Metrics.PUBLIC_PROCESSOR_TX_COUNT, {
|
|
23
|
+
[Attributes.OK]: [
|
|
24
|
+
true,
|
|
25
|
+
false
|
|
26
|
+
]
|
|
27
|
+
});
|
|
28
|
+
this.txPhaseCount = createUpDownCounterWithDefault(meter, Metrics.PUBLIC_PROCESSOR_TX_PHASE_COUNT);
|
|
21
29
|
this.phaseDuration = meter.createHistogram(Metrics.PUBLIC_PROCESSOR_PHASE_DURATION);
|
|
22
|
-
this.phaseCount = meter
|
|
30
|
+
this.phaseCount = createUpDownCounterWithDefault(meter, Metrics.PUBLIC_PROCESSOR_PHASE_COUNT, {
|
|
31
|
+
[Attributes.TX_PHASE_NAME]: [
|
|
32
|
+
TxExecutionPhase.SETUP,
|
|
33
|
+
TxExecutionPhase.APP_LOGIC,
|
|
34
|
+
TxExecutionPhase.TEARDOWN
|
|
35
|
+
],
|
|
36
|
+
[Attributes.OK]: [
|
|
37
|
+
true,
|
|
38
|
+
false
|
|
39
|
+
]
|
|
40
|
+
});
|
|
23
41
|
this.bytecodeDeployed = meter.createHistogram(Metrics.PUBLIC_PROCESSOR_DEPLOY_BYTECODE_SIZE);
|
|
24
42
|
this.totalGas = meter.createGauge(Metrics.PUBLIC_PROCESSOR_TOTAL_GAS);
|
|
25
43
|
this.totalGasHistogram = meter.createHistogram(Metrics.PUBLIC_PROCESSOR_TOTAL_GAS_HISTOGRAM);
|
|
26
44
|
this.txGas = meter.createHistogram(Metrics.PUBLIC_PROCESSOR_TX_GAS);
|
|
27
45
|
this.gasRate = meter.createHistogram(Metrics.PUBLIC_PROCESSOR_GAS_RATE);
|
|
28
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);
|
|
29
49
|
}
|
|
30
50
|
recordPhaseDuration(phaseName, durationMs) {
|
|
31
51
|
this.phaseCount.add(1, {
|
|
@@ -89,4 +109,8 @@ export class PublicProcessorMetrics {
|
|
|
89
109
|
recordTreeInsertions(durationUs) {
|
|
90
110
|
this.treeInsertionDuration.record(Math.ceil(durationUs));
|
|
91
111
|
}
|
|
112
|
+
recordSilentlySkipped(durationMs) {
|
|
113
|
+
this.silentlySkippedCount.add(1);
|
|
114
|
+
this.silentlySkippedDuration.record(Math.ceil(durationMs));
|
|
115
|
+
}
|
|
92
116
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type LoggerBindings } from '@aztec/foundation/log';
|
|
1
2
|
import type { ContractProvider } from '@aztec/native';
|
|
2
3
|
import type { GlobalVariables } from '@aztec/stdlib/tx';
|
|
3
4
|
import type { PublicContractsDB } from '../public_db_sources.js';
|
|
@@ -5,7 +6,7 @@ export declare class ContractProviderForCpp implements ContractProvider {
|
|
|
5
6
|
private contractsDB;
|
|
6
7
|
private globalVariables;
|
|
7
8
|
private log;
|
|
8
|
-
constructor(contractsDB: PublicContractsDB, globalVariables: GlobalVariables);
|
|
9
|
+
constructor(contractsDB: PublicContractsDB, globalVariables: GlobalVariables, bindings?: LoggerBindings);
|
|
9
10
|
getContractInstance: (address: string) => Promise<Buffer<ArrayBufferLike> | undefined>;
|
|
10
11
|
getContractClass: (classId: string) => Promise<Buffer<ArrayBufferLike> | undefined>;
|
|
11
12
|
addContracts: (contractDeploymentDataBuffer: Buffer<ArrayBufferLike>) => Promise<void>;
|
|
@@ -15,4 +16,4 @@ export declare class ContractProviderForCpp implements ContractProvider {
|
|
|
15
16
|
commitCheckpoint: () => Promise<void>;
|
|
16
17
|
revertCheckpoint: () => Promise<void>;
|
|
17
18
|
}
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RfcHJvdmlkZXJfZm9yX2NwcC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3B1YmxpYy9wdWJsaWNfdHhfc2ltdWxhdG9yL2NvbnRyYWN0X3Byb3ZpZGVyX2Zvcl9jcHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFlLEtBQUssY0FBYyxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBQ3ZGLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBS3RELE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXhELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFakUscUJBQWEsc0JBQXVCLFlBQVcsZ0JBQWdCO0lBSTNELE9BQU8sQ0FBQyxXQUFXO0lBQ25CLE9BQU8sQ0FBQyxlQUFlO0lBSnpCLE9BQU8sQ0FBQyxHQUFHLENBQVM7SUFFcEIsWUFDVSxXQUFXLEVBQUUsaUJBQWlCLEVBQzlCLGVBQWUsRUFBRSxlQUFlLEVBQ3hDLFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFHMUI7SUFFTSxtQkFBbUIsb0VBYXhCO0lBRUssZ0JBQWdCLG9FQWVyQjtJQUdLLFlBQVksMkVBV2pCO0lBRUsscUJBQXFCLG9FQWdCMUI7SUFFSyxvQkFBb0IscUVBc0J6QjtJQUVLLGdCQUFnQixzQkFHckI7SUFFSyxnQkFBZ0Isc0JBR3JCO0lBRUssZ0JBQWdCLHNCQUdyQjtDQUNIIn0=
|