@aztec/simulator 0.0.0-test.1 → 0.0.1-commit.24de95ac
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -0
- package/dest/client.d.ts +5 -3
- package/dest/client.d.ts.map +1 -1
- package/dest/client.js +4 -2
- package/dest/common/errors.d.ts +4 -7
- package/dest/common/errors.d.ts.map +1 -1
- package/dest/common/errors.js +51 -32
- package/dest/common/index.d.ts +0 -1
- package/dest/common/index.d.ts.map +1 -1
- package/dest/common/index.js +0 -1
- package/dest/private/acvm/acvm.d.ts +11 -5
- package/dest/private/acvm/acvm.d.ts.map +1 -1
- package/dest/private/acvm/acvm.js +10 -16
- package/dest/private/acvm/acvm_types.d.ts +1 -1
- package/dest/private/acvm/acvm_types.d.ts.map +1 -1
- package/dest/private/acvm/deserialize.d.ts +17 -18
- package/dest/private/acvm/deserialize.d.ts.map +1 -1
- package/dest/private/acvm/deserialize.js +31 -23
- package/dest/private/acvm/index.d.ts +0 -1
- package/dest/private/acvm/index.d.ts.map +1 -1
- package/dest/private/acvm/index.js +0 -1
- package/dest/private/acvm/serialize.d.ts +19 -2
- package/dest/private/acvm/serialize.d.ts.map +1 -1
- package/dest/private/acvm/serialize.js +53 -0
- package/dest/private/{providers/acvm_native.d.ts → acvm_native.d.ts} +9 -10
- package/dest/private/acvm_native.d.ts.map +1 -0
- package/dest/private/{providers/acvm_native.js → acvm_native.js} +26 -20
- package/dest/private/acvm_wasm.d.ts +15 -0
- package/dest/private/acvm_wasm.d.ts.map +1 -0
- package/dest/private/{providers/acvm_wasm.js → acvm_wasm.js} +22 -19
- package/dest/private/acvm_wasm_with_blobs.d.ts +20 -0
- package/dest/private/acvm_wasm_with_blobs.d.ts.map +1 -0
- package/dest/private/acvm_wasm_with_blobs.js +35 -0
- package/dest/private/circuit_recording/circuit_recorder.d.ts +108 -0
- package/dest/private/circuit_recording/circuit_recorder.d.ts.map +1 -0
- package/dest/private/circuit_recording/circuit_recorder.js +209 -0
- package/dest/private/circuit_recording/file_circuit_recorder.d.ts +31 -0
- package/dest/private/circuit_recording/file_circuit_recorder.d.ts.map +1 -0
- package/dest/private/circuit_recording/file_circuit_recorder.js +135 -0
- package/dest/private/circuit_recording/memory_circuit_recorder.d.ts +5 -0
- package/dest/private/circuit_recording/memory_circuit_recorder.d.ts.map +1 -0
- package/dest/private/circuit_recording/memory_circuit_recorder.js +9 -0
- package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts +21 -0
- package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts.map +1 -0
- package/dest/private/circuit_recording/simulator_recorder_wrapper.js +44 -0
- package/dest/private/circuit_simulator.d.ts +35 -0
- package/dest/private/circuit_simulator.d.ts.map +1 -0
- package/dest/private/circuit_simulator.js +43 -0
- package/dest/private/factory.d.ts +12 -0
- package/dest/private/factory.d.ts.map +1 -0
- package/dest/private/{providers/factory.js → factory.js} +2 -2
- package/dest/public/avm/avm_context.d.ts +5 -5
- package/dest/public/avm/avm_context.d.ts.map +1 -1
- package/dest/public/avm/avm_contract_call_result.d.ts +4 -2
- package/dest/public/avm/avm_contract_call_result.d.ts.map +1 -1
- package/dest/public/avm/avm_contract_call_result.js +11 -7
- package/dest/public/avm/avm_execution_environment.d.ts +3 -1
- package/dest/public/avm/avm_execution_environment.d.ts.map +1 -1
- package/dest/public/avm/avm_execution_environment.js +7 -2
- package/dest/public/avm/avm_gas.d.ts +4 -20
- package/dest/public/avm/avm_gas.d.ts.map +1 -1
- package/dest/public/avm/avm_gas.js +27 -35
- package/dest/public/avm/avm_machine_state.d.ts +2 -0
- package/dest/public/avm/avm_machine_state.d.ts.map +1 -1
- package/dest/public/avm/avm_machine_state.js +2 -0
- package/dest/public/avm/avm_memory_types.d.ts +98 -87
- package/dest/public/avm/avm_memory_types.d.ts.map +1 -1
- package/dest/public/avm/avm_memory_types.js +17 -6
- package/dest/public/avm/avm_simulator.d.ts +4 -5
- package/dest/public/avm/avm_simulator.d.ts.map +1 -1
- package/dest/public/avm/avm_simulator.js +23 -35
- package/dest/public/avm/avm_simulator_interface.d.ts +9 -0
- package/dest/public/avm/avm_simulator_interface.d.ts.map +1 -0
- package/dest/public/avm/avm_simulator_interface.js +3 -0
- package/dest/public/avm/errors.d.ts +6 -30
- package/dest/public/avm/errors.d.ts.map +1 -1
- package/dest/public/avm/errors.js +7 -57
- package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +5 -4
- package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +1 -1
- package/dest/public/avm/fixtures/avm_simulation_tester.js +12 -14
- package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts +6 -4
- package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +1 -1
- package/dest/public/avm/fixtures/base_avm_simulation_tester.js +37 -14
- package/dest/public/avm/fixtures/initializers.d.ts +43 -0
- package/dest/public/avm/fixtures/initializers.d.ts.map +1 -0
- package/dest/public/avm/fixtures/initializers.js +42 -0
- package/dest/public/avm/fixtures/utils.d.ts +38 -0
- package/dest/public/avm/fixtures/utils.d.ts.map +1 -0
- package/dest/public/avm/fixtures/utils.js +95 -0
- package/dest/public/avm/index.d.ts +0 -2
- package/dest/public/avm/index.d.ts.map +1 -1
- package/dest/public/avm/index.js +0 -2
- package/dest/public/avm/opcodes/accrued_substate.d.ts +2 -2
- package/dest/public/avm/opcodes/accrued_substate.d.ts.map +1 -1
- package/dest/public/avm/opcodes/accrued_substate.js +28 -25
- package/dest/public/avm/opcodes/addressing_mode.d.ts +11 -7
- package/dest/public/avm/opcodes/addressing_mode.d.ts.map +1 -1
- package/dest/public/avm/opcodes/addressing_mode.js +46 -26
- package/dest/public/avm/opcodes/arithmetic.d.ts +11 -1
- package/dest/public/avm/opcodes/arithmetic.d.ts.map +1 -1
- package/dest/public/avm/opcodes/arithmetic.js +16 -2
- package/dest/public/avm/opcodes/bitwise.d.ts +5 -13
- package/dest/public/avm/opcodes/bitwise.d.ts.map +1 -1
- package/dest/public/avm/opcodes/bitwise.js +19 -26
- package/dest/public/avm/opcodes/comparators.d.ts.map +1 -1
- package/dest/public/avm/opcodes/comparators.js +3 -3
- package/dest/public/avm/opcodes/contract.d.ts +1 -2
- package/dest/public/avm/opcodes/contract.d.ts.map +1 -1
- package/dest/public/avm/opcodes/contract.js +9 -10
- package/dest/public/avm/opcodes/control_flow.d.ts.map +1 -1
- package/dest/public/avm/opcodes/control_flow.js +10 -8
- package/dest/public/avm/opcodes/conversion.d.ts +1 -0
- package/dest/public/avm/opcodes/conversion.d.ts.map +1 -1
- package/dest/public/avm/opcodes/conversion.js +267 -3
- package/dest/public/avm/opcodes/ec_add.d.ts.map +1 -1
- package/dest/public/avm/opcodes/ec_add.js +6 -6
- package/dest/public/avm/opcodes/environment_getters.d.ts +2 -2
- package/dest/public/avm/opcodes/environment_getters.d.ts.map +1 -1
- package/dest/public/avm/opcodes/environment_getters.js +17 -19
- package/dest/public/avm/opcodes/external_calls.d.ts +8 -7
- package/dest/public/avm/opcodes/external_calls.d.ts.map +1 -1
- package/dest/public/avm/opcodes/external_calls.js +39 -34
- package/dest/public/avm/opcodes/hashing.d.ts.map +1 -1
- package/dest/public/avm/opcodes/hashing.js +6 -6
- package/dest/public/avm/opcodes/instruction.d.ts +14 -10
- package/dest/public/avm/opcodes/instruction.d.ts.map +1 -1
- package/dest/public/avm/opcodes/instruction.js +23 -19
- package/dest/public/avm/opcodes/memory.d.ts +4 -4
- package/dest/public/avm/opcodes/memory.d.ts.map +1 -1
- package/dest/public/avm/opcodes/memory.js +37 -33
- package/dest/public/avm/opcodes/misc.d.ts +2 -1
- package/dest/public/avm/opcodes/misc.d.ts.map +1 -1
- package/dest/public/avm/opcodes/misc.js +41 -16
- package/dest/public/avm/opcodes/storage.d.ts.map +1 -1
- package/dest/public/avm/opcodes/storage.js +7 -5
- package/dest/public/avm/revert_reason.d.ts +18 -0
- package/dest/public/avm/revert_reason.d.ts.map +1 -0
- package/dest/public/avm/revert_reason.js +38 -0
- package/dest/public/avm/serialization/buffer_cursor.d.ts +0 -2
- package/dest/public/avm/serialization/buffer_cursor.d.ts.map +1 -1
- package/dest/public/avm/serialization/bytecode_serialization.d.ts +2 -6
- package/dest/public/avm/serialization/bytecode_serialization.d.ts.map +1 -1
- package/dest/public/avm/serialization/bytecode_serialization.js +70 -69
- package/dest/public/avm/serialization/instruction_serialization.d.ts +13 -4
- package/dest/public/avm/serialization/instruction_serialization.d.ts.map +1 -1
- package/dest/public/avm/serialization/instruction_serialization.js +70 -35
- package/dest/public/avm/test_utils.d.ts +10 -13
- package/dest/public/avm/test_utils.d.ts.map +1 -1
- package/dest/public/avm/test_utils.js +16 -24
- package/dest/public/db_interfaces.d.ts +56 -0
- package/dest/public/db_interfaces.d.ts.map +1 -0
- package/dest/public/db_interfaces.js +3 -0
- package/dest/public/debug_fn_name.d.ts +5 -0
- package/dest/public/debug_fn_name.d.ts.map +1 -0
- package/dest/public/debug_fn_name.js +9 -0
- package/dest/public/executor_metrics.d.ts +10 -3
- package/dest/public/executor_metrics.d.ts.map +1 -1
- package/dest/public/executor_metrics.js +37 -6
- package/dest/public/executor_metrics_interface.d.ts +9 -0
- package/dest/public/executor_metrics_interface.d.ts.map +1 -0
- package/dest/public/executor_metrics_interface.js +1 -0
- package/dest/public/fixtures/amm_test.d.ts +10 -0
- package/dest/public/fixtures/amm_test.d.ts.map +1 -0
- package/dest/public/fixtures/amm_test.js +213 -0
- package/dest/public/fixtures/bulk_test.d.ts +6 -0
- package/dest/public/fixtures/bulk_test.d.ts.map +1 -0
- package/dest/public/fixtures/bulk_test.js +326 -0
- package/dest/public/fixtures/custom_bytecode_tester.d.ts +12 -0
- package/dest/public/fixtures/custom_bytecode_tester.d.ts.map +1 -0
- package/dest/public/fixtures/custom_bytecode_tester.js +29 -0
- package/dest/public/fixtures/custom_bytecode_tests.d.ts +9 -0
- package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +1 -0
- package/dest/public/fixtures/custom_bytecode_tests.js +109 -0
- package/dest/public/fixtures/index.d.ts +7 -0
- package/dest/public/fixtures/index.d.ts.map +1 -1
- package/dest/public/fixtures/index.js +7 -0
- package/dest/public/fixtures/minimal_public_tx.d.ts +10 -0
- package/dest/public/fixtures/minimal_public_tx.d.ts.map +1 -0
- package/dest/public/fixtures/minimal_public_tx.js +29 -0
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts +35 -13
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
- package/dest/public/fixtures/public_tx_simulation_tester.js +96 -71
- package/dest/public/{avm/fixtures → fixtures}/simple_contract_data_source.d.ts +6 -6
- package/dest/public/fixtures/simple_contract_data_source.d.ts.map +1 -0
- package/dest/public/{avm/fixtures → fixtures}/simple_contract_data_source.js +31 -10
- package/dest/public/fixtures/token_test.d.ts +8 -0
- package/dest/public/fixtures/token_test.d.ts.map +1 -0
- package/dest/public/fixtures/token_test.js +95 -0
- package/dest/public/fixtures/utils.d.ts +16 -3
- package/dest/public/fixtures/utils.d.ts.map +1 -1
- package/dest/public/fixtures/utils.js +100 -58
- package/dest/public/hinting_db_sources.d.ts +70 -0
- package/dest/public/hinting_db_sources.d.ts.map +1 -0
- package/dest/public/hinting_db_sources.js +297 -0
- package/dest/public/index.d.ts +4 -8
- package/dest/public/index.d.ts.map +1 -1
- package/dest/public/index.js +4 -7
- package/dest/public/public_db_sources.d.ts +30 -39
- package/dest/public/public_db_sources.d.ts.map +1 -1
- package/dest/public/public_db_sources.js +151 -67
- package/dest/public/public_errors.d.ts +12 -0
- package/dest/public/public_errors.d.ts.map +1 -0
- package/dest/public/public_errors.js +13 -0
- package/dest/public/public_processor/guarded_merkle_tree.d.ts +49 -0
- package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -0
- package/dest/public/public_processor/guarded_merkle_tree.js +108 -0
- package/dest/public/public_processor/public_processor.d.ts +25 -30
- package/dest/public/public_processor/public_processor.d.ts.map +1 -1
- package/dest/public/public_processor/public_processor.js +141 -96
- package/dest/public/public_processor/public_processor_metrics.d.ts +2 -2
- package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
- package/dest/public/public_processor/public_processor_metrics.js +1 -1
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +41 -0
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +89 -0
- package/dest/public/public_tx_simulator/index.d.ts +4 -0
- package/dest/public/public_tx_simulator/index.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/index.js +2 -0
- package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +24 -0
- package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/measured_public_tx_simulator.js +51 -0
- package/dest/public/public_tx_simulator/public_tx_context.d.ts +19 -29
- package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/public_tx_context.js +63 -91
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +45 -47
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/public_tx_simulator.js +209 -184
- package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts +9 -0
- package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/public_tx_simulator_interface.js +1 -0
- package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts +21 -0
- package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.js +39 -0
- package/dest/public/side_effect_errors.d.ts +41 -1
- package/dest/public/side_effect_errors.d.ts.map +1 -1
- package/dest/public/side_effect_errors.js +70 -1
- package/dest/public/side_effect_trace.d.ts +20 -65
- package/dest/public/side_effect_trace.d.ts.map +1 -1
- package/dest/public/side_effect_trace.js +71 -121
- package/dest/public/side_effect_trace_interface.d.ts +11 -22
- package/dest/public/side_effect_trace_interface.d.ts.map +1 -1
- package/dest/public/state_manager/index.d.ts +2 -0
- package/dest/public/state_manager/index.d.ts.map +1 -0
- package/dest/public/state_manager/index.js +1 -0
- package/dest/public/{avm/journal → state_manager}/nullifiers.d.ts +2 -5
- package/dest/public/state_manager/nullifiers.d.ts.map +1 -0
- package/dest/public/{avm/journal → state_manager}/nullifiers.js +3 -8
- package/dest/public/{avm/journal → state_manager}/public_storage.d.ts +2 -2
- package/dest/public/state_manager/public_storage.d.ts.map +1 -0
- package/dest/public/{avm/journal/journal.d.ts → state_manager/state_manager.d.ts} +42 -85
- package/dest/public/state_manager/state_manager.d.ts.map +1 -0
- package/dest/public/state_manager/state_manager.js +391 -0
- package/dest/public/test_executor_metrics.d.ts +54 -0
- package/dest/public/test_executor_metrics.d.ts.map +1 -0
- package/dest/public/test_executor_metrics.js +306 -0
- package/dest/public/unique_class_ids.d.ts.map +1 -1
- package/dest/public/utils.d.ts +2 -4
- package/dest/public/utils.d.ts.map +1 -1
- package/dest/public/utils.js +4 -21
- package/dest/server.d.ts +6 -3
- package/dest/server.d.ts.map +1 -1
- package/dest/server.js +5 -2
- package/dest/testing.d.ts +2 -0
- package/dest/testing.d.ts.map +1 -0
- package/dest/testing.js +1 -0
- package/package.json +36 -31
- package/src/client.ts +5 -3
- package/src/common/errors.ts +79 -44
- package/src/common/index.ts +0 -1
- package/src/private/acvm/acvm.ts +17 -32
- package/src/private/acvm/acvm_types.ts +1 -1
- package/src/private/acvm/deserialize.ts +35 -29
- package/src/private/acvm/index.ts +0 -1
- package/src/private/acvm/serialize.ts +63 -0
- package/src/private/{providers/acvm_native.ts → acvm_native.ts} +47 -24
- package/src/private/acvm_wasm.ts +72 -0
- package/src/private/acvm_wasm_with_blobs.ts +54 -0
- package/src/private/circuit_recording/circuit_recorder.ts +260 -0
- package/src/private/circuit_recording/file_circuit_recorder.ts +158 -0
- package/src/private/circuit_recording/memory_circuit_recorder.ts +11 -0
- package/src/private/circuit_recording/simulator_recorder_wrapper.ts +91 -0
- package/src/private/circuit_simulator.ts +90 -0
- package/src/private/{providers/factory.ts → factory.ts} +6 -6
- package/src/public/avm/avm_context.ts +4 -4
- package/src/public/avm/avm_contract_call_result.ts +17 -5
- package/src/public/avm/avm_execution_environment.ts +10 -1
- package/src/public/avm/avm_gas.ts +23 -35
- package/src/public/avm/avm_machine_state.ts +5 -0
- package/src/public/avm/avm_memory_types.ts +19 -6
- package/src/public/avm/avm_simulator.ts +44 -54
- package/src/public/avm/avm_simulator_interface.ts +8 -0
- package/src/public/avm/errors.ts +8 -77
- package/src/public/avm/fixtures/avm_simulation_tester.ts +23 -20
- package/src/public/avm/fixtures/base_avm_simulation_tester.ts +45 -12
- package/src/public/avm/fixtures/initializers.ts +104 -0
- package/src/public/avm/fixtures/utils.ts +150 -0
- package/src/public/avm/index.ts +0 -2
- package/src/public/avm/opcodes/accrued_substate.ts +64 -29
- package/src/public/avm/opcodes/addressing_mode.ts +56 -32
- package/src/public/avm/opcodes/arithmetic.ts +24 -2
- package/src/public/avm/opcodes/bitwise.ts +33 -29
- package/src/public/avm/opcodes/comparators.ts +6 -3
- package/src/public/avm/opcodes/contract.ts +10 -7
- package/src/public/avm/opcodes/control_flow.ts +19 -10
- package/src/public/avm/opcodes/conversion.ts +27 -3
- package/src/public/avm/opcodes/ec_add.ts +9 -6
- package/src/public/avm/opcodes/environment_getters.ts +27 -22
- package/src/public/avm/opcodes/external_calls.ts +61 -29
- package/src/public/avm/opcodes/hashing.ts +28 -8
- package/src/public/avm/opcodes/instruction.ts +31 -21
- package/src/public/avm/opcodes/memory.ts +71 -32
- package/src/public/avm/opcodes/misc.ts +60 -18
- package/src/public/avm/opcodes/storage.ts +22 -6
- package/src/public/avm/revert_reason.ts +55 -0
- package/src/public/avm/serialization/buffer_cursor.ts +4 -1
- package/src/public/avm/serialization/bytecode_serialization.ts +72 -74
- package/src/public/avm/serialization/instruction_serialization.ts +75 -34
- package/src/public/avm/test_utils.ts +24 -41
- package/src/public/db_interfaces.ts +61 -0
- package/src/{common → public}/debug_fn_name.ts +7 -7
- package/src/public/executor_metrics.ts +55 -6
- package/src/public/executor_metrics_interface.ts +14 -0
- package/src/public/fixtures/amm_test.ts +331 -0
- package/src/public/fixtures/bulk_test.ts +169 -0
- package/src/public/fixtures/custom_bytecode_tester.ts +49 -0
- package/src/public/fixtures/custom_bytecode_tests.ts +135 -0
- package/src/public/fixtures/index.ts +7 -0
- package/src/public/fixtures/minimal_public_tx.ts +36 -0
- package/src/public/fixtures/public_tx_simulation_tester.ts +158 -113
- package/src/public/{avm/fixtures → fixtures}/simple_contract_data_source.ts +36 -18
- package/src/public/fixtures/token_test.ts +140 -0
- package/src/public/fixtures/utils.ts +141 -68
- package/src/public/hinting_db_sources.ts +505 -0
- package/src/public/index.ts +9 -8
- package/src/public/public_db_sources.ts +196 -97
- package/src/public/public_errors.ts +14 -0
- package/src/public/public_processor/guarded_merkle_tree.ts +153 -0
- package/src/public/public_processor/public_processor.ts +191 -153
- package/src/public/public_processor/public_processor_metrics.ts +2 -2
- package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +128 -0
- package/src/public/public_tx_simulator/index.ts +3 -0
- package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +109 -0
- package/src/public/public_tx_simulator/public_tx_context.ts +160 -193
- package/src/public/public_tx_simulator/public_tx_simulator.ts +294 -220
- package/src/public/public_tx_simulator/public_tx_simulator_interface.ts +11 -0
- package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +63 -0
- package/src/public/side_effect_errors.ts +91 -1
- package/src/public/side_effect_trace.ts +94 -320
- package/src/public/side_effect_trace_interface.ts +10 -58
- package/src/public/state_manager/index.ts +1 -0
- package/src/public/{avm/journal → state_manager}/nullifiers.ts +5 -11
- package/src/public/{avm/journal → state_manager}/public_storage.ts +2 -2
- package/src/public/state_manager/state_manager.ts +560 -0
- package/src/public/test_executor_metrics.ts +395 -0
- package/src/public/utils.ts +5 -21
- package/src/server.ts +6 -3
- package/src/testing.ts +1 -0
- package/dest/common/db_interfaces.d.ts +0 -80
- package/dest/common/db_interfaces.d.ts.map +0 -1
- package/dest/common/db_interfaces.js +0 -1
- package/dest/common/debug_fn_name.d.ts +0 -5
- package/dest/common/debug_fn_name.d.ts.map +0 -1
- package/dest/common/debug_fn_name.js +0 -6
- package/dest/common/message_load_oracle_inputs.d.ts +0 -15
- package/dest/common/message_load_oracle_inputs.d.ts.map +0 -1
- package/dest/common/message_load_oracle_inputs.js +0 -15
- package/dest/private/acvm/oracle/index.d.ts +0 -14
- package/dest/private/acvm/oracle/index.d.ts.map +0 -1
- package/dest/private/acvm/oracle/index.js +0 -2
- package/dest/private/acvm/oracle/oracle.d.ts +0 -49
- package/dest/private/acvm/oracle/oracle.d.ts.map +0 -1
- package/dest/private/acvm/oracle/oracle.js +0 -263
- package/dest/private/acvm/oracle/typed_oracle.d.ts +0 -83
- package/dest/private/acvm/oracle/typed_oracle.d.ts.map +0 -1
- package/dest/private/acvm/oracle/typed_oracle.js +0 -132
- package/dest/private/execution_data_provider.d.ts +0 -261
- package/dest/private/execution_data_provider.d.ts.map +0 -1
- package/dest/private/execution_data_provider.js +0 -14
- package/dest/private/execution_note_cache.d.ts +0 -93
- package/dest/private/execution_note_cache.d.ts.map +0 -1
- package/dest/private/execution_note_cache.js +0 -180
- package/dest/private/hashed_values_cache.d.ts +0 -28
- package/dest/private/hashed_values_cache.d.ts.map +0 -1
- package/dest/private/hashed_values_cache.js +0 -46
- package/dest/private/index.d.ts +0 -13
- package/dest/private/index.d.ts.map +0 -1
- package/dest/private/index.js +0 -12
- package/dest/private/pick_notes.d.ts +0 -85
- package/dest/private/pick_notes.d.ts.map +0 -1
- package/dest/private/pick_notes.js +0 -51
- package/dest/private/private_execution.d.ts +0 -25
- package/dest/private/private_execution.d.ts.map +0 -1
- package/dest/private/private_execution.js +0 -92
- package/dest/private/private_execution_oracle.d.ts +0 -215
- package/dest/private/private_execution_oracle.d.ts.map +0 -1
- package/dest/private/private_execution_oracle.js +0 -382
- package/dest/private/providers/acvm_native.d.ts.map +0 -1
- package/dest/private/providers/acvm_wasm.d.ts +0 -15
- package/dest/private/providers/acvm_wasm.d.ts.map +0 -1
- package/dest/private/providers/acvm_wasm_with_blobs.d.ts +0 -19
- package/dest/private/providers/acvm_wasm_with_blobs.d.ts.map +0 -1
- package/dest/private/providers/acvm_wasm_with_blobs.js +0 -32
- package/dest/private/providers/factory.d.ts +0 -12
- package/dest/private/providers/factory.d.ts.map +0 -1
- package/dest/private/providers/simulation_provider.d.ts +0 -19
- package/dest/private/providers/simulation_provider.d.ts.map +0 -1
- package/dest/private/providers/simulation_provider.js +0 -24
- package/dest/private/simulator.d.ts +0 -34
- package/dest/private/simulator.d.ts.map +0 -1
- package/dest/private/simulator.js +0 -76
- package/dest/private/unconstrained_execution.d.ts +0 -10
- package/dest/private/unconstrained_execution.d.ts.map +0 -1
- package/dest/private/unconstrained_execution.js +0 -27
- package/dest/private/unconstrained_execution_oracle.d.ts +0 -161
- package/dest/private/unconstrained_execution_oracle.d.ts.map +0 -1
- package/dest/private/unconstrained_execution_oracle.js +0 -258
- package/dest/public/avm/bytecode_utils.d.ts +0 -5
- package/dest/public/avm/bytecode_utils.d.ts.map +0 -1
- package/dest/public/avm/bytecode_utils.js +0 -17
- package/dest/public/avm/fixtures/index.d.ts +0 -84
- package/dest/public/avm/fixtures/index.d.ts.map +0 -1
- package/dest/public/avm/fixtures/index.js +0 -175
- package/dest/public/avm/fixtures/simple_contract_data_source.d.ts.map +0 -1
- package/dest/public/avm/journal/index.d.ts +0 -2
- package/dest/public/avm/journal/index.d.ts.map +0 -1
- package/dest/public/avm/journal/index.js +0 -1
- package/dest/public/avm/journal/journal.d.ts.map +0 -1
- package/dest/public/avm/journal/journal.js +0 -486
- package/dest/public/avm/journal/nullifiers.d.ts.map +0 -1
- package/dest/public/avm/journal/public_storage.d.ts.map +0 -1
- package/dest/public/bytecode_errors.d.ts +0 -4
- package/dest/public/bytecode_errors.d.ts.map +0 -1
- package/dest/public/bytecode_errors.js +0 -6
- package/dest/public/execution.d.ts +0 -108
- package/dest/public/execution.d.ts.map +0 -1
- package/dest/public/execution.js +0 -9
- package/dest/test/utils.d.ts +0 -13
- package/dest/test/utils.d.ts.map +0 -1
- package/dest/test/utils.js +0 -22
- package/src/common/db_interfaces.ts +0 -94
- package/src/common/message_load_oracle_inputs.ts +0 -15
- package/src/private/acvm/oracle/index.ts +0 -16
- package/src/private/acvm/oracle/oracle.ts +0 -455
- package/src/private/acvm/oracle/typed_oracle.ts +0 -259
- package/src/private/execution_data_provider.ts +0 -323
- package/src/private/execution_note_cache.ts +0 -217
- package/src/private/hashed_values_cache.ts +0 -55
- package/src/private/index.ts +0 -16
- package/src/private/pick_notes.ts +0 -141
- package/src/private/private_execution.ts +0 -151
- package/src/private/private_execution_oracle.ts +0 -614
- package/src/private/providers/acvm_wasm.ts +0 -63
- package/src/private/providers/acvm_wasm_with_blobs.ts +0 -50
- package/src/private/providers/simulation_provider.ts +0 -45
- package/src/private/simulator.ts +0 -147
- package/src/private/unconstrained_execution.ts +0 -50
- package/src/private/unconstrained_execution_oracle.ts +0 -373
- package/src/public/avm/bytecode_utils.ts +0 -17
- package/src/public/avm/fixtures/index.ts +0 -296
- package/src/public/avm/journal/index.ts +0 -1
- package/src/public/avm/journal/journal.ts +0 -742
- package/src/public/avm/opcodes/.eslintrc.cjs +0 -8
- package/src/public/bytecode_errors.ts +0 -6
- package/src/public/execution.ts +0 -140
- package/src/test/utils.ts +0 -36
- /package/dest/public/{avm/journal → state_manager}/public_storage.js +0 -0
|
@@ -1,63 +1,58 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import { type DateProvider } from '@aztec/foundation/timer';
|
|
1
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
2
|
+
import { DateProvider } from '@aztec/foundation/timer';
|
|
4
3
|
import type { ContractDataSource } from '@aztec/stdlib/contract';
|
|
5
|
-
import {
|
|
6
|
-
import type
|
|
7
|
-
import { type FailedTx, GlobalVariables, NestedProcessReturnValues, type ProcessedTx, Tx, type TxValidator } from '@aztec/stdlib/tx';
|
|
4
|
+
import type { MerkleTreeWriteOperations, PublicProcessorLimits, PublicProcessorValidator, SequencerConfig } from '@aztec/stdlib/interfaces/server';
|
|
5
|
+
import { type FailedTx, GlobalVariables, NestedProcessReturnValues, type ProcessedTx, Tx } from '@aztec/stdlib/tx';
|
|
8
6
|
import { type TelemetryClient, type Traceable, type Tracer } from '@aztec/telemetry-client';
|
|
9
|
-
import {
|
|
10
|
-
import { PublicTxSimulator } from '../public_tx_simulator/
|
|
7
|
+
import { PublicContractsDB } from '../public_db_sources.js';
|
|
8
|
+
import { type PublicTxSimulator, type PublicTxSimulatorConfig } from '../public_tx_simulator/index.js';
|
|
9
|
+
import { GuardedMerkleTreeOperations } from './guarded_merkle_tree.js';
|
|
11
10
|
/**
|
|
12
11
|
* Creates new instances of PublicProcessor given the provided merkle tree db and contract data source.
|
|
13
12
|
*/
|
|
14
13
|
export declare class PublicProcessorFactory {
|
|
15
14
|
private contractDataSource;
|
|
16
15
|
private dateProvider;
|
|
17
|
-
|
|
18
|
-
constructor(contractDataSource: ContractDataSource, dateProvider
|
|
16
|
+
protected telemetryClient: TelemetryClient;
|
|
17
|
+
constructor(contractDataSource: ContractDataSource, dateProvider?: DateProvider, telemetryClient?: TelemetryClient);
|
|
19
18
|
/**
|
|
20
19
|
* Creates a new instance of a PublicProcessor.
|
|
21
|
-
* @param historicalHeader - The header of a block previous to the one in which the tx is included.
|
|
22
20
|
* @param globalVariables - The global variables for the block being processed.
|
|
23
21
|
* @param skipFeeEnforcement - Allows disabling balance checks for fee estimations.
|
|
24
22
|
* @returns A new instance of a PublicProcessor.
|
|
25
23
|
*/
|
|
26
|
-
create(merkleTree: MerkleTreeWriteOperations, globalVariables: GlobalVariables,
|
|
27
|
-
|
|
24
|
+
create(merkleTree: MerkleTreeWriteOperations, globalVariables: GlobalVariables, config: {
|
|
25
|
+
skipFeeEnforcement: boolean;
|
|
26
|
+
clientInitiatedSimulation: boolean;
|
|
27
|
+
proverId?: Fr;
|
|
28
|
+
maxDebugLogMemoryReads?: number;
|
|
29
|
+
}): PublicProcessor;
|
|
30
|
+
protected createPublicTxSimulator(merkleTree: MerkleTreeWriteOperations, contractsDB: PublicContractsDB, globalVariables: GlobalVariables, config?: Partial<PublicTxSimulatorConfig>): PublicTxSimulator;
|
|
28
31
|
}
|
|
29
32
|
/**
|
|
30
33
|
* Converts Txs lifted from the P2P module into ProcessedTx objects by executing
|
|
31
34
|
* any public function calls in them. Txs with private calls only are unaffected.
|
|
32
35
|
*/
|
|
33
36
|
export declare class PublicProcessor implements Traceable {
|
|
34
|
-
protected db: MerkleTreeWriteOperations;
|
|
35
37
|
protected globalVariables: GlobalVariables;
|
|
36
|
-
|
|
38
|
+
private guardedMerkleTree;
|
|
39
|
+
protected contractsDB: PublicContractsDB;
|
|
37
40
|
protected publicTxSimulator: PublicTxSimulator;
|
|
38
41
|
private dateProvider;
|
|
39
42
|
private log;
|
|
43
|
+
private opts;
|
|
40
44
|
private metrics;
|
|
41
|
-
constructor(
|
|
45
|
+
constructor(globalVariables: GlobalVariables, guardedMerkleTree: GuardedMerkleTreeOperations, contractsDB: PublicContractsDB, publicTxSimulator: PublicTxSimulator, dateProvider: DateProvider, telemetryClient?: TelemetryClient, log?: import("@aztec/foundation/log").Logger, opts?: Pick<SequencerConfig, 'fakeProcessingDelayPerTxMs'>);
|
|
42
46
|
get tracer(): Tracer;
|
|
43
47
|
/**
|
|
44
48
|
* Run each tx through the public circuit and the public kernel circuit if needed.
|
|
45
49
|
* @param txs - Txs to process.
|
|
46
|
-
* @param
|
|
50
|
+
* @param limits - Limits for processing the txs.
|
|
51
|
+
* @param validator - Pre-process validator and nullifier cache to use for processing the txs.
|
|
47
52
|
* @returns The list of processed txs with their circuit simulation outputs.
|
|
48
53
|
*/
|
|
49
|
-
process(txs: Iterable<Tx> | AsyncIterable<Tx>, limits?:
|
|
50
|
-
|
|
51
|
-
maxBlockSize?: number;
|
|
52
|
-
maxBlockGas?: Gas;
|
|
53
|
-
deadline?: Date;
|
|
54
|
-
}, validators?: {
|
|
55
|
-
preprocessValidator?: TxValidator<Tx>;
|
|
56
|
-
postprocessValidator?: TxValidator<ProcessedTx>;
|
|
57
|
-
nullifierCache?: {
|
|
58
|
-
addNullifiers: (nullifiers: Buffer[]) => void;
|
|
59
|
-
};
|
|
60
|
-
}): Promise<[ProcessedTx[], FailedTx[], NestedProcessReturnValues[]]>;
|
|
54
|
+
process(txs: Iterable<Tx> | AsyncIterable<Tx>, limits?: PublicProcessorLimits, validator?: PublicProcessorValidator): Promise<[ProcessedTx[], FailedTx[], Tx[], NestedProcessReturnValues[]]>;
|
|
55
|
+
private checkWorldStateUnchanged;
|
|
61
56
|
private processTx;
|
|
62
57
|
private doTreeInsertionsForPrivateOnlyTx;
|
|
63
58
|
/** Processes the given tx within deadline. Returns timeout if deadline is hit. */
|
|
@@ -67,7 +62,7 @@ export declare class PublicProcessor implements Traceable {
|
|
|
67
62
|
* This is used in private only txs, since for txs with public calls
|
|
68
63
|
* the avm handles the fee payment itself.
|
|
69
64
|
*/
|
|
70
|
-
private
|
|
65
|
+
private performFeePaymentPublicDataWrite;
|
|
71
66
|
private processPrivateOnlyTx;
|
|
72
67
|
private processTxWithPublicCalls;
|
|
73
68
|
}
|
|
@@ -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":"AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAG9C,OAAO,EAAE,YAAY,EAAkC,MAAM,yBAAyB,CAAC;AAMvF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAGjE,OAAO,KAAK,EACV,yBAAyB,EACzB,qBAAqB,EACrB,wBAAwB,EACxB,eAAe,EAChB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,KAAK,QAAQ,EACb,eAAe,EACf,yBAAyB,EACzB,KAAK,WAAW,EAEhB,EAAE,EAIH,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,iBAAiB,EACtB,KAAK,uBAAuB,EAE7B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAGvE;;GAEG;AACH,qBAAa,sBAAsB;IAE/B,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,YAAY;IACpB,SAAS,CAAC,eAAe,EAAE,eAAe;gBAFlC,kBAAkB,EAAE,kBAAkB,EACtC,YAAY,GAAE,YAAiC,EAC7C,eAAe,GAAE,eAAsC;IAGnE;;;;;OAKG;IACI,MAAM,CACX,UAAU,EAAE,yBAAyB,EACrC,eAAe,EAAE,eAAe,EAChC,MAAM,EAAE;QACN,kBAAkB,EAAE,OAAO,CAAC;QAC5B,yBAAyB,EAAE,OAAO,CAAC;QACnC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACd,sBAAsB,CAAC,EAAE,MAAM,CAAC;KACjC,GACA,eAAe;IAsBlB,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,iBAAiB;CAGrB;AASD;;;GAGG;AACH,qBAAa,eAAgB,YAAW,SAAS;IAI7C,SAAS,CAAC,eAAe,EAAE,eAAe;IAC1C,OAAO,CAAC,iBAAiB;IACzB,SAAS,CAAC,WAAW,EAAE,iBAAiB;IACxC,SAAS,CAAC,iBAAiB,EAAE,iBAAiB;IAC9C,OAAO,CAAC,YAAY;IAEpB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,IAAI;IAVd,OAAO,CAAC,OAAO,CAAyB;gBAG5B,eAAe,EAAE,eAAe,EAClC,iBAAiB,EAAE,2BAA2B,EAC5C,WAAW,EAAE,iBAAiB,EAC9B,iBAAiB,EAAE,iBAAiB,EACtC,YAAY,EAAE,YAAY,EAClC,eAAe,GAAE,eAAsC,EAC/C,GAAG,yCAA6C,EAChD,IAAI,GAAE,IAAI,CAAC,eAAe,EAAE,4BAA4B,CAAM;IAKxE,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,CAAC,CAAC;YA4L5D,wBAAwB;YAiBxB,SAAS;YA2BT,gCAAgC;IA2B9C,kFAAkF;YACpE,uBAAuB;IA2CrC;;;;OAIG;YACW,gCAAgC;YA0BhC,oBAAoB;YAkCpB,wBAAwB;CAsCvC"}
|
|
@@ -8,18 +8,22 @@ import { MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, NULLIFIER_SUBTREE_HEIGHT
|
|
|
8
8
|
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
9
9
|
import { Fr } from '@aztec/foundation/fields';
|
|
10
10
|
import { createLogger } from '@aztec/foundation/log';
|
|
11
|
-
import {
|
|
11
|
+
import { sleep } from '@aztec/foundation/sleep';
|
|
12
|
+
import { DateProvider, Timer, elapsed, executeTimeout } from '@aztec/foundation/timer';
|
|
12
13
|
import { ProtocolContractAddress } from '@aztec/protocol-contracts';
|
|
13
|
-
import {
|
|
14
|
+
import { ContractClassPublishedEvent } from '@aztec/protocol-contracts/class-registry';
|
|
14
15
|
import { computeFeePayerBalanceLeafSlot, computeFeePayerBalanceStorageSlot } from '@aztec/protocol-contracts/fee-juice';
|
|
15
16
|
import { PublicDataWrite } from '@aztec/stdlib/avm';
|
|
17
|
+
import { computeTransactionFee } from '@aztec/stdlib/fees';
|
|
16
18
|
import { Gas } from '@aztec/stdlib/gas';
|
|
17
19
|
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
18
20
|
import { NestedProcessReturnValues, Tx, TxExecutionPhase, makeProcessedTxFromPrivateOnlyTx, makeProcessedTxFromTxWithPublicCalls } from '@aztec/stdlib/tx';
|
|
19
21
|
import { Attributes, getTelemetryClient, trackSpan } from '@aztec/telemetry-client';
|
|
20
22
|
import { ForkCheckpoint } from '@aztec/world-state/native';
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
23
|
+
import { AssertionError } from 'assert';
|
|
24
|
+
import { PublicContractsDB, PublicTreesDB } from '../public_db_sources.js';
|
|
25
|
+
import { TelemetryPublicTxSimulator } from '../public_tx_simulator/index.js';
|
|
26
|
+
import { GuardedMerkleTreeOperations } from './guarded_merkle_tree.js';
|
|
23
27
|
import { PublicProcessorMetrics } from './public_processor_metrics.js';
|
|
24
28
|
/**
|
|
25
29
|
* Creates new instances of PublicProcessor given the provided merkle tree db and contract data source.
|
|
@@ -27,24 +31,30 @@ import { PublicProcessorMetrics } from './public_processor_metrics.js';
|
|
|
27
31
|
contractDataSource;
|
|
28
32
|
dateProvider;
|
|
29
33
|
telemetryClient;
|
|
30
|
-
constructor(contractDataSource, dateProvider, telemetryClient = getTelemetryClient()){
|
|
34
|
+
constructor(contractDataSource, dateProvider = new DateProvider(), telemetryClient = getTelemetryClient()){
|
|
31
35
|
this.contractDataSource = contractDataSource;
|
|
32
36
|
this.dateProvider = dateProvider;
|
|
33
37
|
this.telemetryClient = telemetryClient;
|
|
34
38
|
}
|
|
35
39
|
/**
|
|
36
40
|
* Creates a new instance of a PublicProcessor.
|
|
37
|
-
* @param historicalHeader - The header of a block previous to the one in which the tx is included.
|
|
38
41
|
* @param globalVariables - The global variables for the block being processed.
|
|
39
42
|
* @param skipFeeEnforcement - Allows disabling balance checks for fee estimations.
|
|
40
43
|
* @returns A new instance of a PublicProcessor.
|
|
41
|
-
*/ create(merkleTree, globalVariables,
|
|
42
|
-
const
|
|
43
|
-
const
|
|
44
|
-
|
|
44
|
+
*/ create(merkleTree, globalVariables, config) {
|
|
45
|
+
const contractsDB = new PublicContractsDB(this.contractDataSource);
|
|
46
|
+
const guardedFork = new GuardedMerkleTreeOperations(merkleTree);
|
|
47
|
+
const publicTxSimulator = this.createPublicTxSimulator(guardedFork, contractsDB, globalVariables, {
|
|
48
|
+
proverId: config.proverId,
|
|
49
|
+
doMerkleOperations: true,
|
|
50
|
+
skipFeeEnforcement: config.skipFeeEnforcement,
|
|
51
|
+
clientInitiatedSimulation: config.clientInitiatedSimulation,
|
|
52
|
+
maxDebugLogMemoryReads: config.maxDebugLogMemoryReads
|
|
53
|
+
});
|
|
54
|
+
return new PublicProcessor(globalVariables, guardedFork, contractsDB, publicTxSimulator, this.dateProvider, this.telemetryClient);
|
|
45
55
|
}
|
|
46
|
-
createPublicTxSimulator(
|
|
47
|
-
return new
|
|
56
|
+
createPublicTxSimulator(merkleTree, contractsDB, globalVariables, config) {
|
|
57
|
+
return new TelemetryPublicTxSimulator(merkleTree, contractsDB, globalVariables, this.telemetryClient, config);
|
|
48
58
|
}
|
|
49
59
|
}
|
|
50
60
|
class PublicProcessorTimeoutError extends Error {
|
|
@@ -57,20 +67,22 @@ class PublicProcessorTimeoutError extends Error {
|
|
|
57
67
|
* Converts Txs lifted from the P2P module into ProcessedTx objects by executing
|
|
58
68
|
* any public function calls in them. Txs with private calls only are unaffected.
|
|
59
69
|
*/ export class PublicProcessor {
|
|
60
|
-
db;
|
|
61
70
|
globalVariables;
|
|
62
|
-
|
|
71
|
+
guardedMerkleTree;
|
|
72
|
+
contractsDB;
|
|
63
73
|
publicTxSimulator;
|
|
64
74
|
dateProvider;
|
|
65
75
|
log;
|
|
76
|
+
opts;
|
|
66
77
|
metrics;
|
|
67
|
-
constructor(
|
|
68
|
-
this.db = db;
|
|
78
|
+
constructor(globalVariables, guardedMerkleTree, contractsDB, publicTxSimulator, dateProvider, telemetryClient = getTelemetryClient(), log = createLogger('simulator:public-processor'), opts = {}){
|
|
69
79
|
this.globalVariables = globalVariables;
|
|
70
|
-
this.
|
|
80
|
+
this.guardedMerkleTree = guardedMerkleTree;
|
|
81
|
+
this.contractsDB = contractsDB;
|
|
71
82
|
this.publicTxSimulator = publicTxSimulator;
|
|
72
83
|
this.dateProvider = dateProvider;
|
|
73
84
|
this.log = log;
|
|
85
|
+
this.opts = opts;
|
|
74
86
|
this.metrics = new PublicProcessorMetrics(telemetryClient, 'PublicProcessor');
|
|
75
87
|
}
|
|
76
88
|
get tracer() {
|
|
@@ -79,18 +91,21 @@ class PublicProcessorTimeoutError extends Error {
|
|
|
79
91
|
/**
|
|
80
92
|
* Run each tx through the public circuit and the public kernel circuit if needed.
|
|
81
93
|
* @param txs - Txs to process.
|
|
82
|
-
* @param
|
|
94
|
+
* @param limits - Limits for processing the txs.
|
|
95
|
+
* @param validator - Pre-process validator and nullifier cache to use for processing the txs.
|
|
83
96
|
* @returns The list of processed txs with their circuit simulation outputs.
|
|
84
|
-
*/ async process(txs, limits = {},
|
|
85
|
-
const { maxTransactions, maxBlockSize, deadline, maxBlockGas } = limits;
|
|
86
|
-
const { preprocessValidator,
|
|
97
|
+
*/ async process(txs, limits = {}, validator = {}) {
|
|
98
|
+
const { maxTransactions, maxBlockSize, deadline, maxBlockGas, maxBlobFields } = limits;
|
|
99
|
+
const { preprocessValidator, nullifierCache } = validator;
|
|
87
100
|
const result = [];
|
|
101
|
+
const usedTxs = [];
|
|
88
102
|
const failed = [];
|
|
89
103
|
const timer = new Timer();
|
|
90
104
|
let totalSizeInBytes = 0;
|
|
91
105
|
let returns = [];
|
|
92
106
|
let totalPublicGas = new Gas(0, 0);
|
|
93
107
|
let totalBlockGas = new Gas(0, 0);
|
|
108
|
+
let totalBlobFields = 0;
|
|
94
109
|
for await (const origTx of txs){
|
|
95
110
|
// Only process up to the max tx limit
|
|
96
111
|
if (maxTransactions !== undefined && result.length >= maxTransactions) {
|
|
@@ -103,7 +118,7 @@ class PublicProcessorTimeoutError extends Error {
|
|
|
103
118
|
break;
|
|
104
119
|
}
|
|
105
120
|
// Skip this tx if it'd exceed max block size
|
|
106
|
-
const txHash =
|
|
121
|
+
const txHash = origTx.getTxHash().toString();
|
|
107
122
|
const preTxSizeInBytes = origTx.getEstimatedPrivateTxEffectsSize();
|
|
108
123
|
if (maxBlockSize !== undefined && totalSizeInBytes + preTxSizeInBytes > maxBlockSize) {
|
|
109
124
|
this.log.warn(`Skipping processing of tx ${txHash} sized ${preTxSizeInBytes} bytes due to block size limit`, {
|
|
@@ -130,10 +145,10 @@ class PublicProcessorTimeoutError extends Error {
|
|
|
130
145
|
// We validate the tx before processing it, to avoid unnecessary work.
|
|
131
146
|
if (preprocessValidator) {
|
|
132
147
|
const result = await preprocessValidator.validateTx(tx);
|
|
133
|
-
const txHash =
|
|
148
|
+
const txHash = tx.getTxHash();
|
|
134
149
|
if (result.result === 'invalid') {
|
|
135
150
|
const reason = result.reason.join(', ');
|
|
136
|
-
this.log.
|
|
151
|
+
this.log.debug(`Rejecting tx ${txHash.toString()} due to pre-process validation fail: ${reason}`);
|
|
137
152
|
failed.push({
|
|
138
153
|
tx,
|
|
139
154
|
error: new Error(`Tx failed preprocess validation: ${reason}`)
|
|
@@ -142,7 +157,7 @@ class PublicProcessorTimeoutError extends Error {
|
|
|
142
157
|
continue;
|
|
143
158
|
} else if (result.result === 'skipped') {
|
|
144
159
|
const reason = result.reason.join(', ');
|
|
145
|
-
this.log.
|
|
160
|
+
this.log.debug(`Skipping tx ${txHash.toString()} due to pre-process validation: ${reason}`);
|
|
146
161
|
returns.push(new NestedProcessReturnValues([]));
|
|
147
162
|
continue;
|
|
148
163
|
} else {
|
|
@@ -152,13 +167,16 @@ class PublicProcessorTimeoutError extends Error {
|
|
|
152
167
|
// We checkpoint the transaction here, then within the try/catch we
|
|
153
168
|
// 1. Revert the checkpoint if the tx fails or needs to be discarded for any reason
|
|
154
169
|
// 2. Commit the transaction in the finally block. Note that by using the ForkCheckpoint lifecycle only the first commit/revert takes effect
|
|
155
|
-
|
|
170
|
+
// By doing this, every transaction starts on a fresh checkpoint and it's state updates only make it to the fork if this checkpoint is committed.
|
|
171
|
+
// Note: We use the underlying fork here not the guarded one, this ensures that it's not impacted by stopping the guarded version
|
|
172
|
+
const checkpoint = await ForkCheckpoint.new(this.guardedMerkleTree.getUnderlyingFork());
|
|
173
|
+
const startStateReference = await this.guardedMerkleTree.getUnderlyingFork().getStateReference();
|
|
156
174
|
try {
|
|
157
175
|
const [processedTx, returnValues] = await this.processTx(tx, deadline);
|
|
158
176
|
// If the actual size of this tx would exceed block size, skip it
|
|
159
177
|
const txSize = processedTx.txEffect.getDASize();
|
|
160
178
|
if (maxBlockSize !== undefined && totalSizeInBytes + txSize > maxBlockSize) {
|
|
161
|
-
this.log.
|
|
179
|
+
this.log.debug(`Skipping processed tx ${txHash} sized ${txSize} due to max block size.`, {
|
|
162
180
|
txHash,
|
|
163
181
|
sizeInBytes: txSize,
|
|
164
182
|
totalSizeInBytes,
|
|
@@ -168,62 +186,66 @@ class PublicProcessorTimeoutError extends Error {
|
|
|
168
186
|
await checkpoint.revert();
|
|
169
187
|
continue;
|
|
170
188
|
}
|
|
171
|
-
//
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
tx,
|
|
184
|
-
error: new Error(`Tx failed post-process validation: ${reason}`)
|
|
185
|
-
});
|
|
186
|
-
// Need to revert the checkpoint here and don't go any further
|
|
187
|
-
await checkpoint.revert();
|
|
188
|
-
continue;
|
|
189
|
-
} else {
|
|
190
|
-
this.log.trace(`Tx ${txHash.toString()} is valid post processing.`);
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
if (!tx.hasPublicCalls()) {
|
|
194
|
-
// If there are no public calls, perform all tree insertions for side effects from private
|
|
195
|
-
// When there are public calls, the PublicTxSimulator & AVM handle tree insertions.
|
|
196
|
-
await this.doTreeInsertionsForPrivateOnlyTx(processedTx);
|
|
197
|
-
// Add any contracts registered/deployed in this private-only tx to the block-level cache
|
|
198
|
-
// (add to tx-level cache and then commit to block-level cache)
|
|
199
|
-
await this.worldStateDB.addNewContracts(tx);
|
|
200
|
-
this.worldStateDB.commitContractsForTx();
|
|
189
|
+
// If the actual blob fields of this tx would exceed the limit, skip it
|
|
190
|
+
const txBlobFields = processedTx.txEffect.toBlobFields().length;
|
|
191
|
+
if (maxBlobFields !== undefined && totalBlobFields + txBlobFields > maxBlobFields) {
|
|
192
|
+
this.log.debug(`Skipping processed tx ${txHash} with ${txBlobFields} blob fields due to max blob fields limit.`, {
|
|
193
|
+
txHash,
|
|
194
|
+
txBlobFields,
|
|
195
|
+
totalBlobFields,
|
|
196
|
+
maxBlobFields
|
|
197
|
+
});
|
|
198
|
+
// Need to revert the checkpoint here and don't go any further
|
|
199
|
+
await checkpoint.revert();
|
|
200
|
+
continue;
|
|
201
201
|
}
|
|
202
|
+
// FIXME(fcarreiro): it's ugly to have to notify the validator of nullifiers.
|
|
203
|
+
// I'd rather pass the validators the processedTx as well and let them deal with it.
|
|
202
204
|
nullifierCache?.addNullifiers(processedTx.txEffect.nullifiers.map((n)=>n.toBuffer()));
|
|
203
205
|
result.push(processedTx);
|
|
206
|
+
usedTxs.push(tx);
|
|
204
207
|
returns = returns.concat(returnValues);
|
|
205
208
|
totalPublicGas = totalPublicGas.add(processedTx.gasUsed.publicGas);
|
|
206
209
|
totalBlockGas = totalBlockGas.add(processedTx.gasUsed.totalGas);
|
|
207
210
|
totalSizeInBytes += txSize;
|
|
211
|
+
totalBlobFields += txBlobFields;
|
|
208
212
|
} catch (err) {
|
|
209
|
-
// Roll back state to start of TX before proceeding to next TX
|
|
210
|
-
await checkpoint.revert();
|
|
211
213
|
if (err?.name === 'PublicProcessorTimeoutError') {
|
|
212
214
|
this.log.warn(`Stopping tx processing due to timeout.`);
|
|
215
|
+
// We hit the transaction execution deadline.
|
|
216
|
+
// There may still be a transaction executing. We stop the guarded fork to prevent any further access to the world state.
|
|
217
|
+
await this.guardedMerkleTree.stop();
|
|
218
|
+
// We now know there can't be any further access to world state. The fork is in a state where there is:
|
|
219
|
+
// 1. At least one outstanding checkpoint that has not been committed (the one created before we processed the tx).
|
|
220
|
+
// 2. Possible state updates on that checkpoint or any others created during execution.
|
|
221
|
+
// First we revert a checkpoint as managed by the ForkCheckpoint. This will revert whatever is the current checkpoint
|
|
222
|
+
// which may not be the one originally created by this object. But that is ok, we do this to fulfil the ForkCheckpoint
|
|
223
|
+
// lifecycle expectations and ensure it doesn't attempt to commit later on.
|
|
224
|
+
await checkpoint.revert();
|
|
225
|
+
// Now we want to revert any/all remaining checkpoints, destroying any outstanding state updates.
|
|
226
|
+
// This needs to be done directly on the underlying fork as the guarded fork has been stopped.
|
|
227
|
+
await this.guardedMerkleTree.getUnderlyingFork().revertAllCheckpoints();
|
|
228
|
+
// Ensure we're at the same state as when we started processing this tx.
|
|
229
|
+
await this.checkWorldStateUnchanged(startStateReference, txHash, err);
|
|
213
230
|
break;
|
|
214
231
|
}
|
|
215
|
-
|
|
232
|
+
// Roll back state to start of TX before proceeding to next TX
|
|
233
|
+
await checkpoint.revert();
|
|
234
|
+
await this.guardedMerkleTree.getUnderlyingFork().revertAllCheckpoints();
|
|
235
|
+
const errorMessage = err instanceof Error || err instanceof AssertionError ? err.message : 'Unknown error';
|
|
216
236
|
this.log.warn(`Failed to process tx ${txHash.toString()}: ${errorMessage} ${err?.stack}`);
|
|
217
237
|
failed.push({
|
|
218
238
|
tx,
|
|
219
239
|
error: err instanceof Error ? err : new Error(errorMessage)
|
|
220
240
|
});
|
|
221
241
|
returns.push(new NestedProcessReturnValues([]));
|
|
242
|
+
// Ensure we're at the same state as when we started processing this tx.
|
|
243
|
+
await this.checkWorldStateUnchanged(startStateReference, txHash, err);
|
|
222
244
|
} finally{
|
|
223
|
-
// Base case is we always commit the checkpoint. Using the ForkCheckpoint means this has no effect if the tx was reverted
|
|
245
|
+
// Base case is we always commit the checkpoint. Using the ForkCheckpoint means this has no effect if the tx was previously reverted
|
|
224
246
|
await checkpoint.commit();
|
|
225
247
|
// The tx-level contracts cache should not live on to the next tx
|
|
226
|
-
this.
|
|
248
|
+
this.contractsDB.clearContractsForTx();
|
|
227
249
|
}
|
|
228
250
|
}
|
|
229
251
|
const duration = timer.s();
|
|
@@ -239,12 +261,26 @@ class PublicProcessorTimeoutError extends Error {
|
|
|
239
261
|
return [
|
|
240
262
|
result,
|
|
241
263
|
failed,
|
|
264
|
+
usedTxs,
|
|
242
265
|
returns
|
|
243
266
|
];
|
|
244
267
|
}
|
|
268
|
+
async checkWorldStateUnchanged(startStateReference, txHash, cause) {
|
|
269
|
+
const endStateReference = await this.guardedMerkleTree.getUnderlyingFork().getStateReference();
|
|
270
|
+
if (!startStateReference.equals(endStateReference)) {
|
|
271
|
+
this.log.warn(`Fork state reference changed by tx ${txHash} after error in public processor`, {
|
|
272
|
+
expected: startStateReference.toInspect(),
|
|
273
|
+
actual: endStateReference.toInspect(),
|
|
274
|
+
cause
|
|
275
|
+
});
|
|
276
|
+
throw new Error(`Fork state reference changed by tx ${txHash} after error in public processor`, {
|
|
277
|
+
cause
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
}
|
|
245
281
|
async processTx(tx, deadline) {
|
|
246
282
|
const [time, [processedTx, returnValues]] = await elapsed(()=>this.processTxWithinDeadline(tx, deadline));
|
|
247
|
-
this.log.verbose(!tx.hasPublicCalls() ? `Processed tx ${processedTx.hash} with no public calls in ${time}ms` : `Processed tx ${processedTx.hash} with ${tx.
|
|
283
|
+
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`, {
|
|
248
284
|
txHash: processedTx.hash,
|
|
249
285
|
txFee: processedTx.txEffect.transactionFee.toBigInt(),
|
|
250
286
|
revertCode: processedTx.txEffect.revertCode.getCode(),
|
|
@@ -264,7 +300,7 @@ class PublicProcessorTimeoutError extends Error {
|
|
|
264
300
|
returnValues ?? []
|
|
265
301
|
];
|
|
266
302
|
}
|
|
267
|
-
async doTreeInsertionsForPrivateOnlyTx(processedTx
|
|
303
|
+
async doTreeInsertionsForPrivateOnlyTx(processedTx) {
|
|
268
304
|
const treeInsertionStart = process.hrtime.bigint();
|
|
269
305
|
// Update the state so that the next tx in the loop has the correct .startState
|
|
270
306
|
// NB: before this change, all .startStates were actually incorrect, but the issue was never caught because we either:
|
|
@@ -272,29 +308,31 @@ class PublicProcessorTimeoutError extends Error {
|
|
|
272
308
|
// b) always had a txHandler with the same db passed to it as this.db, which updated the db in buildBaseRollupHints in this loop
|
|
273
309
|
// To see how this ^ happens, move back to one shared db in test_context and run orchestrator_multi_public_functions.test.ts
|
|
274
310
|
// The below is taken from buildBaseRollupHints:
|
|
275
|
-
await this.
|
|
311
|
+
await this.guardedMerkleTree.appendLeaves(MerkleTreeId.NOTE_HASH_TREE, padArrayEnd(processedTx.txEffect.noteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX));
|
|
276
312
|
try {
|
|
277
|
-
await this.
|
|
278
|
-
} catch (
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
} else {
|
|
283
|
-
// We have no validator and assume this call should blindly process txs with duplicates being caught later
|
|
284
|
-
this.log.warn(`Detected duplicate nullifier after public processing for: ${processedTx.hash}.`);
|
|
285
|
-
}
|
|
313
|
+
await this.guardedMerkleTree.batchInsert(MerkleTreeId.NULLIFIER_TREE, padArrayEnd(processedTx.txEffect.nullifiers, Fr.ZERO, MAX_NULLIFIERS_PER_TX).map((n)=>n.toBuffer()), NULLIFIER_SUBTREE_HEIGHT);
|
|
314
|
+
} catch (cause) {
|
|
315
|
+
throw new Error(`Transaction ${processedTx.hash} failed with duplicate nullifiers`, {
|
|
316
|
+
cause
|
|
317
|
+
});
|
|
286
318
|
}
|
|
287
|
-
// The only public data write should be for fee payment
|
|
288
|
-
await this.db.sequentialInsert(MerkleTreeId.PUBLIC_DATA_TREE, processedTx.txEffect.publicDataWrites.map((x)=>x.toBuffer()));
|
|
289
319
|
const treeInsertionEnd = process.hrtime.bigint();
|
|
290
320
|
this.metrics.recordTreeInsertions(Number(treeInsertionEnd - treeInsertionStart) / 1_000);
|
|
291
321
|
}
|
|
292
322
|
/** Processes the given tx within deadline. Returns timeout if deadline is hit. */ async processTxWithinDeadline(tx, deadline) {
|
|
293
|
-
const
|
|
323
|
+
const innerProcessFn = tx.hasPublicCalls() ? ()=>this.processTxWithPublicCalls(tx) : ()=>this.processPrivateOnlyTx(tx);
|
|
324
|
+
// Fake a delay per tx if instructed (used for tests)
|
|
325
|
+
const fakeDelayPerTxMs = this.opts.fakeProcessingDelayPerTxMs;
|
|
326
|
+
const processFn = fakeDelayPerTxMs && fakeDelayPerTxMs > 0 ? async ()=>{
|
|
327
|
+
const result = await innerProcessFn();
|
|
328
|
+
this.log.warn(`Sleeping ${fakeDelayPerTxMs}ms after processing tx ${tx.getTxHash().toString()}`);
|
|
329
|
+
await sleep(fakeDelayPerTxMs);
|
|
330
|
+
return result;
|
|
331
|
+
} : innerProcessFn;
|
|
294
332
|
if (!deadline) {
|
|
295
333
|
return await processFn();
|
|
296
334
|
}
|
|
297
|
-
const txHash =
|
|
335
|
+
const txHash = tx.getTxHash();
|
|
298
336
|
const timeout = +deadline - this.dateProvider.now();
|
|
299
337
|
if (timeout <= 0) {
|
|
300
338
|
throw new PublicProcessorTimeoutError();
|
|
@@ -310,26 +348,33 @@ class PublicProcessorTimeoutError extends Error {
|
|
|
310
348
|
* Creates the public data write for paying the tx fee.
|
|
311
349
|
* This is used in private only txs, since for txs with public calls
|
|
312
350
|
* the avm handles the fee payment itself.
|
|
313
|
-
*/ async
|
|
351
|
+
*/ async performFeePaymentPublicDataWrite(txFee, feePayer) {
|
|
314
352
|
const feeJuiceAddress = ProtocolContractAddress.FeeJuice;
|
|
315
353
|
const balanceSlot = await computeFeePayerBalanceStorageSlot(feePayer);
|
|
316
354
|
const leafSlot = await computeFeePayerBalanceLeafSlot(feePayer);
|
|
355
|
+
// This high-level db is used as a convenient helper. It could be done with the merkleTree directly.
|
|
356
|
+
const treesDB = new PublicTreesDB(this.guardedMerkleTree);
|
|
317
357
|
this.log.debug(`Deducting ${txFee.toBigInt()} balance in Fee Juice for ${feePayer}`);
|
|
318
|
-
const balance = await
|
|
358
|
+
const balance = await treesDB.storageRead(feeJuiceAddress, balanceSlot);
|
|
319
359
|
if (balance.lt(txFee)) {
|
|
320
360
|
throw new Error(`Not enough balance for fee payer to pay for transaction (got ${balance.toBigInt()} needs ${txFee.toBigInt()})`);
|
|
321
361
|
}
|
|
322
362
|
const updatedBalance = balance.sub(txFee);
|
|
323
|
-
await
|
|
363
|
+
await treesDB.storageWrite(feeJuiceAddress, balanceSlot, updatedBalance);
|
|
324
364
|
return new PublicDataWrite(leafSlot, updatedBalance);
|
|
325
365
|
}
|
|
326
366
|
async processPrivateOnlyTx(tx) {
|
|
327
367
|
const gasFees = this.globalVariables.gasFees;
|
|
328
|
-
const transactionFee = tx.data.gasUsed
|
|
329
|
-
const feePaymentPublicDataWrite = await this.
|
|
330
|
-
const processedTx =
|
|
331
|
-
|
|
332
|
-
|
|
368
|
+
const transactionFee = computeTransactionFee(gasFees, tx.data.constants.txContext.gasSettings, tx.data.gasUsed);
|
|
369
|
+
const feePaymentPublicDataWrite = await this.performFeePaymentPublicDataWrite(transactionFee, tx.data.feePayer);
|
|
370
|
+
const processedTx = makeProcessedTxFromPrivateOnlyTx(tx, transactionFee, feePaymentPublicDataWrite, this.globalVariables);
|
|
371
|
+
this.metrics.recordClassPublication(...tx.getContractClassLogs().filter((log)=>ContractClassPublishedEvent.isContractClassPublishedEvent(log)).map((log)=>ContractClassPublishedEvent.fromLog(log)));
|
|
372
|
+
// Fee payment insertion has already been done. Do the rest.
|
|
373
|
+
await this.doTreeInsertionsForPrivateOnlyTx(processedTx);
|
|
374
|
+
// Add any contracts registered/deployed in this private-only tx to the block-level cache
|
|
375
|
+
// (add to tx-level cache and then commit to block-level cache)
|
|
376
|
+
await this.contractsDB.addNewContracts(tx);
|
|
377
|
+
this.contractsDB.commitContractsForTx();
|
|
333
378
|
return [
|
|
334
379
|
processedTx,
|
|
335
380
|
undefined
|
|
@@ -346,15 +391,15 @@ class PublicProcessorTimeoutError extends Error {
|
|
|
346
391
|
if (phase.reverted) {
|
|
347
392
|
this.metrics.recordRevertedPhase(phase.phase);
|
|
348
393
|
} else {
|
|
349
|
-
this.metrics.recordPhaseDuration(phase.phase, phase.durationMs);
|
|
394
|
+
this.metrics.recordPhaseDuration(phase.phase, phase.durationMs ?? 0);
|
|
350
395
|
}
|
|
351
396
|
});
|
|
352
|
-
const
|
|
353
|
-
this.metrics.
|
|
397
|
+
const contractClassLogs = revertCode.isOK() ? tx.getContractClassLogs() : tx.getSplitContractClassLogs(false);
|
|
398
|
+
this.metrics.recordClassPublication(...contractClassLogs.filter((log)=>ContractClassPublishedEvent.isContractClassPublishedEvent(log)).map((log)=>ContractClassPublishedEvent.fromLog(log)));
|
|
354
399
|
const phaseCount = processedPhases.length;
|
|
355
400
|
const durationMs = timer.ms();
|
|
356
401
|
this.metrics.recordTx(phaseCount, durationMs, gasUsed.publicGas);
|
|
357
|
-
const processedTx =
|
|
402
|
+
const processedTx = makeProcessedTxFromTxWithPublicCalls(tx, avmProvingRequest, gasUsed, revertCode, revertReason);
|
|
358
403
|
const returnValues = processedPhases.find(({ phase })=>phase === TxExecutionPhase.APP_LOGIC)?.returnValues ?? [];
|
|
359
404
|
return [
|
|
360
405
|
processedTx,
|
|
@@ -363,17 +408,17 @@ class PublicProcessorTimeoutError extends Error {
|
|
|
363
408
|
}
|
|
364
409
|
}
|
|
365
410
|
_ts_decorate([
|
|
366
|
-
trackSpan('PublicProcessor.processTx',
|
|
367
|
-
[Attributes.TX_HASH]:
|
|
411
|
+
trackSpan('PublicProcessor.processTx', (tx)=>({
|
|
412
|
+
[Attributes.TX_HASH]: tx.getTxHash().toString()
|
|
368
413
|
}))
|
|
369
414
|
], PublicProcessor.prototype, "processTx", null);
|
|
370
415
|
_ts_decorate([
|
|
371
|
-
trackSpan('PublicProcessor.processPrivateOnlyTx',
|
|
372
|
-
[Attributes.TX_HASH]:
|
|
416
|
+
trackSpan('PublicProcessor.processPrivateOnlyTx', (tx)=>({
|
|
417
|
+
[Attributes.TX_HASH]: tx.getTxHash().toString()
|
|
373
418
|
}))
|
|
374
419
|
], PublicProcessor.prototype, "processPrivateOnlyTx", null);
|
|
375
420
|
_ts_decorate([
|
|
376
|
-
trackSpan('PublicProcessor.processTxWithPublicCalls',
|
|
377
|
-
[Attributes.TX_HASH]:
|
|
421
|
+
trackSpan('PublicProcessor.processTxWithPublicCalls', (tx)=>({
|
|
422
|
+
[Attributes.TX_HASH]: tx.getTxHash().toString()
|
|
378
423
|
}))
|
|
379
424
|
], PublicProcessor.prototype, "processTxWithPublicCalls", null);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ContractClassPublishedEvent } from '@aztec/protocol-contracts/class-registry';
|
|
2
2
|
import type { Gas } from '@aztec/stdlib/gas';
|
|
3
3
|
import type { TxExecutionPhase } from '@aztec/stdlib/tx';
|
|
4
4
|
import { type TelemetryClient, type Tracer } from '@aztec/telemetry-client';
|
|
@@ -21,7 +21,7 @@ export declare class PublicProcessorMetrics {
|
|
|
21
21
|
recordAllTxs(totalGas: Gas, gasRate: number): void;
|
|
22
22
|
recordFailedTx(): void;
|
|
23
23
|
recordRevertedPhase(phaseName: TxExecutionPhase): void;
|
|
24
|
-
|
|
24
|
+
recordClassPublication(...events: ContractClassPublishedEvent[]): void;
|
|
25
25
|
recordTreeInsertions(durationUs: number): void;
|
|
26
26
|
}
|
|
27
27
|
//# sourceMappingURL=public_processor_metrics.d.ts.map
|
|
@@ -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,
|
|
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,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,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;gBAE7B,MAAM,EAAE,eAAe,EAAE,IAAI,SAAoB;IA4D7D,mBAAmB,CAAC,SAAS,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM;IAKnE,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG;IAc7D,YAAY,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM;IAkB3C,cAAc;IAMd,mBAAmB,CAAC,SAAS,EAAE,gBAAgB;IAI/C,sBAAsB,CAAC,GAAG,MAAM,EAAE,2BAA2B,EAAE;IAW/D,oBAAoB,CAAC,UAAU,EAAE,MAAM;CAGxC"}
|
|
@@ -110,7 +110,7 @@ export class PublicProcessorMetrics {
|
|
|
110
110
|
[Attributes.OK]: false
|
|
111
111
|
});
|
|
112
112
|
}
|
|
113
|
-
|
|
113
|
+
recordClassPublication(...events) {
|
|
114
114
|
let totalBytecode = 0;
|
|
115
115
|
for (const event of events){
|
|
116
116
|
totalBytecode += event.packedPublicBytecode.length;
|