@aztec/simulator 0.0.1-commit.b655e406 → 0.0.1-commit.c0b82b2
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 -4
- package/dest/client.d.ts +1 -1
- package/dest/common/errors.d.ts +2 -2
- package/dest/common/errors.d.ts.map +1 -1
- package/dest/common/index.d.ts +1 -1
- package/dest/common/stats/index.d.ts +1 -1
- package/dest/common/stats/stats.d.ts +1 -1
- 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/acvm_types.d.ts +1 -1
- package/dest/private/acvm/deserialize.d.ts +2 -2
- package/dest/private/acvm/deserialize.d.ts.map +1 -1
- package/dest/private/acvm/deserialize.js +1 -1
- package/dest/private/acvm/index.d.ts +1 -1
- package/dest/private/acvm/serialize.d.ts +2 -2
- package/dest/private/acvm/serialize.d.ts.map +1 -1
- package/dest/private/acvm/serialize.js +1 -1
- 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 +4 -4
- package/dest/private/acvm_wasm_with_blobs.d.ts +1 -1
- package/dest/private/acvm_wasm_with_blobs.d.ts.map +1 -1
- package/dest/private/circuit_recording/circuit_recorder.d.ts +4 -3
- package/dest/private/circuit_recording/circuit_recorder.d.ts.map +1 -1
- package/dest/private/circuit_recording/circuit_recorder.js +21 -18
- package/dest/private/circuit_recording/file_circuit_recorder.d.ts +3 -2
- package/dest/private/circuit_recording/file_circuit_recorder.d.ts.map +1 -1
- package/dest/private/circuit_recording/file_circuit_recorder.js +2 -2
- 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_simulator.d.ts +1 -1
- 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/avm_context.d.ts +3 -3
- package/dest/public/avm/avm_context.d.ts.map +1 -1
- package/dest/public/avm/avm_contract_call_result.d.ts +6 -6
- package/dest/public/avm/avm_contract_call_result.d.ts.map +1 -1
- package/dest/public/avm/avm_contract_call_result.js +3 -3
- package/dest/public/avm/avm_execution_environment.d.ts +9 -8
- package/dest/public/avm/avm_execution_environment.d.ts.map +1 -1
- package/dest/public/avm/avm_execution_environment.js +5 -8
- package/dest/public/avm/avm_gas.d.ts +2 -2
- package/dest/public/avm/avm_gas.d.ts.map +1 -1
- package/dest/public/avm/avm_gas.js +3 -3
- package/dest/public/avm/avm_machine_state.d.ts +7 -6
- package/dest/public/avm/avm_machine_state.d.ts.map +1 -1
- package/dest/public/avm/avm_machine_state.js +3 -2
- package/dest/public/avm/avm_memory_types.d.ts +14 -14
- package/dest/public/avm/avm_memory_types.d.ts.map +1 -1
- package/dest/public/avm/avm_memory_types.js +4 -1
- package/dest/public/avm/avm_simulator.d.ts +5 -3
- package/dest/public/avm/avm_simulator.d.ts.map +1 -1
- package/dest/public/avm/avm_simulator.js +13 -11
- package/dest/public/avm/avm_simulator_interface.d.ts +1 -1
- package/dest/public/avm/calldata.d.ts +51 -0
- package/dest/public/avm/calldata.d.ts.map +1 -0
- package/dest/public/avm/calldata.js +63 -0
- package/dest/public/avm/errors.d.ts +8 -2
- package/dest/public/avm/errors.d.ts.map +1 -1
- package/dest/public/avm/errors.js +14 -2
- package/dest/public/avm/fixtures/account_proof_fetcher.d.ts +2 -0
- package/dest/public/avm/fixtures/account_proof_fetcher.d.ts.map +1 -0
- package/dest/public/avm/fixtures/account_proof_fetcher.js +152 -0
- package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +1 -1
- package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +1 -1
- package/dest/public/avm/fixtures/avm_simulation_tester.js +15 -5
- package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts +2 -2
- package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +1 -1
- package/dest/public/avm/fixtures/base_avm_simulation_tester.js +1 -1
- package/dest/public/avm/fixtures/initializers.d.ts +2 -3
- package/dest/public/avm/fixtures/initializers.d.ts.map +1 -1
- package/dest/public/avm/fixtures/initializers.js +8 -5
- package/dest/public/avm/fixtures/utils.d.ts +4 -3
- package/dest/public/avm/fixtures/utils.d.ts.map +1 -1
- package/dest/public/avm/fixtures/utils.js +3 -2
- package/dest/public/avm/index.d.ts +1 -1
- package/dest/public/avm/opcodes/accrued_substate.d.ts +17 -18
- package/dest/public/avm/opcodes/accrued_substate.d.ts.map +1 -1
- package/dest/public/avm/opcodes/accrued_substate.js +42 -43
- package/dest/public/avm/opcodes/addressing_mode.d.ts +1 -1
- package/dest/public/avm/opcodes/addressing_mode.d.ts.map +1 -1
- package/dest/public/avm/opcodes/addressing_mode.js +2 -2
- package/dest/public/avm/opcodes/arithmetic.d.ts +3 -1
- package/dest/public/avm/opcodes/arithmetic.d.ts.map +1 -1
- package/dest/public/avm/opcodes/arithmetic.js +12 -2
- package/dest/public/avm/opcodes/bitwise.d.ts +3 -3
- package/dest/public/avm/opcodes/bitwise.d.ts.map +1 -1
- package/dest/public/avm/opcodes/bitwise.js +5 -5
- package/dest/public/avm/opcodes/comparators.d.ts +1 -1
- package/dest/public/avm/opcodes/comparators.d.ts.map +1 -1
- package/dest/public/avm/opcodes/comparators.js +1 -1
- package/dest/public/avm/opcodes/contract.d.ts +3 -3
- package/dest/public/avm/opcodes/contract.d.ts.map +1 -1
- package/dest/public/avm/opcodes/contract.js +8 -8
- package/dest/public/avm/opcodes/control_flow.d.ts +3 -3
- package/dest/public/avm/opcodes/control_flow.d.ts.map +1 -1
- package/dest/public/avm/opcodes/control_flow.js +4 -4
- package/dest/public/avm/opcodes/conversion.d.ts +3 -3
- package/dest/public/avm/opcodes/conversion.d.ts.map +1 -1
- package/dest/public/avm/opcodes/conversion.js +4 -4
- package/dest/public/avm/opcodes/ec_add.d.ts +3 -3
- package/dest/public/avm/opcodes/ec_add.d.ts.map +1 -1
- package/dest/public/avm/opcodes/ec_add.js +17 -8
- package/dest/public/avm/opcodes/environment_getters.d.ts +5 -5
- package/dest/public/avm/opcodes/environment_getters.d.ts.map +1 -1
- package/dest/public/avm/opcodes/environment_getters.js +6 -6
- package/dest/public/avm/opcodes/external_calls.d.ts +9 -9
- package/dest/public/avm/opcodes/external_calls.d.ts.map +1 -1
- package/dest/public/avm/opcodes/external_calls.js +23 -22
- package/dest/public/avm/opcodes/hashing.d.ts +7 -7
- package/dest/public/avm/opcodes/hashing.d.ts.map +1 -1
- package/dest/public/avm/opcodes/hashing.js +21 -16
- package/dest/public/avm/opcodes/index.d.ts +1 -1
- package/dest/public/avm/opcodes/instruction.d.ts +2 -2
- package/dest/public/avm/opcodes/instruction.d.ts.map +1 -1
- package/dest/public/avm/opcodes/instruction_impl.d.ts +4 -4
- package/dest/public/avm/opcodes/instruction_impl.d.ts.map +1 -1
- package/dest/public/avm/opcodes/instruction_impl.js +4 -4
- package/dest/public/avm/opcodes/memory.d.ts +13 -13
- package/dest/public/avm/opcodes/memory.d.ts.map +1 -1
- package/dest/public/avm/opcodes/memory.js +26 -26
- package/dest/public/avm/opcodes/misc.d.ts +3 -3
- package/dest/public/avm/opcodes/misc.d.ts.map +1 -1
- package/dest/public/avm/opcodes/misc.js +8 -8
- package/dest/public/avm/opcodes/storage.d.ts +14 -13
- package/dest/public/avm/opcodes/storage.d.ts.map +1 -1
- package/dest/public/avm/opcodes/storage.js +34 -24
- package/dest/public/avm/revert_reason.d.ts +2 -2
- package/dest/public/avm/revert_reason.d.ts.map +1 -1
- package/dest/public/avm/revert_reason.js +3 -2
- package/dest/public/avm/serialization/buffer_cursor.d.ts +1 -1
- package/dest/public/avm/serialization/buffer_cursor.d.ts.map +1 -1
- package/dest/public/avm/serialization/bytecode_serialization.d.ts +1 -1
- package/dest/public/avm/serialization/bytecode_serialization.d.ts.map +1 -1
- package/dest/public/avm/serialization/bytecode_serialization.js +12 -9
- package/dest/public/avm/serialization/instruction_serialization.d.ts +2 -2
- package/dest/public/avm/serialization/instruction_serialization.d.ts.map +1 -1
- package/dest/public/avm/serialization/instruction_serialization.js +2 -2
- package/dest/public/avm/test_utils.d.ts +2 -2
- package/dest/public/avm/test_utils.d.ts.map +1 -1
- package/dest/public/avm/test_utils.js +1 -1
- package/dest/public/contracts_db_checkpoint.d.ts +16 -0
- package/dest/public/contracts_db_checkpoint.d.ts.map +1 -0
- package/dest/public/contracts_db_checkpoint.js +30 -0
- package/dest/public/db_interfaces.d.ts +14 -2
- package/dest/public/db_interfaces.d.ts.map +1 -1
- package/dest/public/debug_fn_name.d.ts +16 -3
- package/dest/public/debug_fn_name.d.ts.map +1 -1
- package/dest/public/debug_fn_name.js +31 -3
- package/dest/public/executor_metrics.d.ts +3 -2
- package/dest/public/executor_metrics.d.ts.map +1 -1
- package/dest/public/executor_metrics.js +13 -34
- package/dest/public/executor_metrics_interface.d.ts +3 -2
- package/dest/public/executor_metrics_interface.d.ts.map +1 -1
- package/dest/public/fixtures/amm_test.d.ts +1 -1
- package/dest/public/fixtures/amm_test.js +4 -4
- package/dest/public/fixtures/bulk_test.d.ts +3 -3
- package/dest/public/fixtures/bulk_test.d.ts.map +1 -1
- package/dest/public/fixtures/bulk_test.js +5 -69
- package/dest/public/fixtures/custom_bytecode_tester.d.ts +29 -7
- package/dest/public/fixtures/custom_bytecode_tester.d.ts.map +1 -1
- package/dest/public/fixtures/custom_bytecode_tester.js +36 -12
- package/dest/public/fixtures/custom_bytecode_tests.d.ts +11 -8
- package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +1 -1
- package/dest/public/fixtures/custom_bytecode_tests.js +83 -18
- package/dest/public/fixtures/index.d.ts +4 -2
- package/dest/public/fixtures/index.d.ts.map +1 -1
- package/dest/public/fixtures/index.js +3 -1
- package/dest/public/fixtures/minimal_public_tx.d.ts +2 -8
- package/dest/public/fixtures/minimal_public_tx.d.ts.map +1 -1
- package/dest/public/fixtures/minimal_public_tx.js +6 -16
- package/dest/public/fixtures/opcode_spammer.d.ts +122 -0
- package/dest/public/fixtures/opcode_spammer.d.ts.map +1 -0
- package/dest/public/fixtures/opcode_spammer.js +1653 -0
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts +24 -6
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
- package/dest/public/fixtures/public_tx_simulation_tester.js +89 -21
- package/dest/public/fixtures/simple_contract_data_source.d.ts +5 -4
- package/dest/public/fixtures/simple_contract_data_source.d.ts.map +1 -1
- package/dest/public/fixtures/simple_contract_data_source.js +4 -4
- package/dest/public/fixtures/token_test.d.ts +6 -2
- package/dest/public/fixtures/token_test.d.ts.map +1 -1
- package/dest/public/fixtures/token_test.js +13 -12
- 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 +8 -7
- package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts +60 -0
- package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts.map +1 -0
- package/dest/public/fuzzing/avm_fuzzer_simulator.js +171 -0
- package/dest/public/fuzzing/avm_simulator_bin.d.ts +2 -0
- package/dest/public/fuzzing/avm_simulator_bin.d.ts.map +1 -0
- package/dest/public/fuzzing/avm_simulator_bin.js +118 -0
- package/dest/public/hinting_db_sources.d.ts +14 -4
- package/dest/public/hinting_db_sources.d.ts.map +1 -1
- package/dest/public/hinting_db_sources.js +71 -13
- package/dest/public/index.d.ts +3 -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 +25 -65
- package/dest/public/public_db_sources.d.ts.map +1 -1
- package/dest/public/public_db_sources.js +78 -135
- package/dest/public/public_errors.d.ts +1 -1
- package/dest/public/public_errors.d.ts.map +1 -1
- package/dest/public/public_processor/guarded_merkle_tree.d.ts +6 -4
- package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -1
- package/dest/public/public_processor/guarded_merkle_tree.js +5 -0
- package/dest/public/public_processor/public_processor.d.ts +17 -20
- package/dest/public/public_processor/public_processor.d.ts.map +1 -1
- package/dest/public/public_processor/public_processor.js +477 -72
- 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 +28 -45
- package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts +19 -0
- package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/contract_provider_for_cpp.js +98 -0
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +35 -23
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +95 -53
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts +42 -0
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.js +86 -0
- package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts +30 -0
- package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.js +171 -0
- package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts +23 -0
- package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.js +52 -0
- package/dest/public/public_tx_simulator/factories.d.ts +14 -0
- package/dest/public/public_tx_simulator/factories.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/factories.js +28 -0
- package/dest/public/public_tx_simulator/index.d.ts +5 -1
- package/dest/public/public_tx_simulator/index.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/index.js +3 -0
- package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +14 -7
- package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/measured_public_tx_simulator.js +5 -5
- package/dest/public/public_tx_simulator/public_tx_context.d.ts +8 -4
- package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/public_tx_context.js +17 -9
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +15 -33
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/public_tx_simulator.js +118 -130
- package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts +25 -2
- package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts +4 -4
- package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.js +395 -19
- package/dest/public/side_effect_errors.d.ts +1 -1
- package/dest/public/side_effect_errors.d.ts.map +1 -1
- package/dest/public/side_effect_trace.d.ts +5 -5
- package/dest/public/side_effect_trace.d.ts.map +1 -1
- package/dest/public/side_effect_trace.js +4 -4
- package/dest/public/side_effect_trace_interface.d.ts +3 -4
- package/dest/public/side_effect_trace_interface.d.ts.map +1 -1
- package/dest/public/state_manager/index.d.ts +1 -1
- package/dest/public/state_manager/nullifiers.d.ts +2 -2
- package/dest/public/state_manager/nullifiers.d.ts.map +1 -1
- package/dest/public/state_manager/public_storage.d.ts +2 -2
- package/dest/public/state_manager/public_storage.d.ts.map +1 -1
- package/dest/public/state_manager/public_storage.js +1 -1
- package/dest/public/state_manager/state_manager.d.ts +16 -12
- package/dest/public/state_manager/state_manager.d.ts.map +1 -1
- package/dest/public/state_manager/state_manager.js +21 -10
- package/dest/public/test_executor_metrics.d.ts +11 -4
- package/dest/public/test_executor_metrics.d.ts.map +1 -1
- package/dest/public/test_executor_metrics.js +29 -6
- package/dest/public/unique_class_ids.d.ts +1 -1
- package/dest/public/unique_class_ids.d.ts.map +1 -1
- package/dest/public/utils.d.ts +1 -1
- package/dest/server.d.ts +1 -1
- package/dest/testing.d.ts +1 -1
- package/package.json +21 -20
- package/src/common/errors.ts +1 -1
- package/src/private/acvm/acvm.ts +4 -3
- package/src/private/acvm/deserialize.ts +1 -1
- package/src/private/acvm/serialize.ts +1 -1
- package/src/private/acvm_native.ts +11 -5
- package/src/private/acvm_wasm.ts +7 -3
- package/src/private/circuit_recording/circuit_recorder.ts +22 -19
- package/src/private/circuit_recording/file_circuit_recorder.ts +7 -2
- package/src/private/circuit_recording/memory_circuit_recorder.ts +6 -4
- package/src/private/factory.ts +7 -4
- package/src/public/avm/avm_context.ts +2 -2
- package/src/public/avm/avm_contract_call_result.ts +8 -6
- package/src/public/avm/avm_execution_environment.ts +13 -10
- package/src/public/avm/avm_gas.ts +5 -5
- package/src/public/avm/avm_machine_state.ts +7 -6
- package/src/public/avm/avm_memory_types.ts +5 -1
- package/src/public/avm/avm_simulator.ts +19 -14
- package/src/public/avm/calldata.ts +100 -0
- package/src/public/avm/errors.ts +17 -3
- package/src/public/avm/fixtures/account_proof.json +553 -0
- package/src/public/avm/fixtures/account_proof_fetcher.ts +166 -0
- package/src/public/avm/fixtures/avm_simulation_tester.ts +18 -4
- package/src/public/avm/fixtures/base_avm_simulation_tester.ts +1 -1
- package/src/public/avm/fixtures/initializers.ts +10 -11
- package/src/public/avm/fixtures/utils.ts +3 -2
- package/src/public/avm/opcodes/accrued_substate.ts +31 -34
- package/src/public/avm/opcodes/addressing_mode.ts +2 -2
- package/src/public/avm/opcodes/arithmetic.ts +14 -2
- package/src/public/avm/opcodes/bitwise.ts +3 -3
- package/src/public/avm/opcodes/comparators.ts +1 -1
- package/src/public/avm/opcodes/contract.ts +4 -7
- package/src/public/avm/opcodes/control_flow.ts +2 -2
- package/src/public/avm/opcodes/conversion.ts +3 -3
- package/src/public/avm/opcodes/ec_add.ts +15 -6
- package/src/public/avm/opcodes/environment_getters.ts +7 -7
- package/src/public/avm/opcodes/external_calls.ts +17 -15
- package/src/public/avm/opcodes/hashing.ts +16 -10
- package/src/public/avm/opcodes/instruction_impl.ts +2 -2
- package/src/public/avm/opcodes/memory.ts +20 -20
- package/src/public/avm/opcodes/misc.ts +6 -6
- package/src/public/avm/opcodes/storage.ts +30 -22
- package/src/public/avm/revert_reason.ts +6 -3
- package/src/public/avm/serialization/bytecode_serialization.ts +19 -8
- package/src/public/avm/serialization/instruction_serialization.ts +2 -2
- package/src/public/avm/test_utils.ts +1 -1
- package/src/public/contracts_db_checkpoint.ts +41 -0
- package/src/public/db_interfaces.ts +16 -1
- package/src/public/debug_fn_name.ts +39 -5
- package/src/public/executor_metrics.ts +11 -34
- package/src/public/executor_metrics_interface.ts +2 -1
- package/src/public/fixtures/amm_test.ts +4 -4
- package/src/public/fixtures/bulk_test.ts +9 -9
- package/src/public/fixtures/custom_bytecode_tester.ts +54 -20
- package/src/public/fixtures/custom_bytecode_tests.ts +111 -18
- package/src/public/fixtures/index.ts +7 -1
- package/src/public/fixtures/minimal_public_tx.ts +7 -17
- package/src/public/fixtures/opcode_spammer.ts +1717 -0
- package/src/public/fixtures/public_tx_simulation_tester.ts +116 -21
- package/src/public/fixtures/simple_contract_data_source.ts +8 -9
- package/src/public/fixtures/token_test.ts +18 -10
- package/src/public/fixtures/utils.ts +6 -7
- package/src/public/fuzzing/avm_fuzzer_simulator.ts +288 -0
- package/src/public/fuzzing/avm_simulator_bin.ts +175 -0
- package/src/public/hinting_db_sources.ts +112 -10
- package/src/public/index.ts +6 -4
- package/src/public/public_db_sources.ts +107 -176
- package/src/public/public_processor/guarded_merkle_tree.ts +8 -3
- package/src/public/public_processor/public_processor.ts +124 -75
- package/src/public/public_processor/public_processor_metrics.ts +16 -44
- package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +124 -0
- package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +141 -59
- package/src/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.ts +134 -0
- package/src/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.ts +239 -0
- package/src/public/public_tx_simulator/dumping_cpp_public_tx_simulator.ts +83 -0
- package/src/public/public_tx_simulator/factories.ts +44 -0
- package/src/public/public_tx_simulator/index.ts +4 -0
- package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +10 -14
- package/src/public/public_tx_simulator/public_tx_context.ts +22 -9
- package/src/public/public_tx_simulator/public_tx_simulator.ts +177 -198
- package/src/public/public_tx_simulator/public_tx_simulator_interface.ts +24 -2
- package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +3 -3
- package/src/public/side_effect_trace.ts +6 -3
- package/src/public/side_effect_trace_interface.ts +1 -1
- package/src/public/state_manager/nullifiers.ts +1 -1
- package/src/public/state_manager/public_storage.ts +1 -1
- package/src/public/state_manager/state_manager.ts +35 -26
- package/src/public/test_executor_metrics.ts +34 -8
- package/dest/public/tx_contract_cache.d.ts +0 -41
- package/dest/public/tx_contract_cache.d.ts.map +0 -1
- package/dest/public/tx_contract_cache.js +0 -49
- package/src/public/tx_contract_cache.ts +0 -69
|
@@ -4,8 +4,8 @@ import {
|
|
|
4
4
|
NULLIFIER_SUBTREE_HEIGHT,
|
|
5
5
|
PUBLIC_DATA_SUBTREE_HEIGHT,
|
|
6
6
|
} from '@aztec/constants';
|
|
7
|
-
import { Fr } from '@aztec/foundation/
|
|
8
|
-
import { createLogger } from '@aztec/foundation/log';
|
|
7
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
8
|
+
import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
|
|
9
9
|
import { Timer } from '@aztec/foundation/timer';
|
|
10
10
|
import { ContractClassPublishedEvent } from '@aztec/protocol-contracts/class-registry';
|
|
11
11
|
import { ContractInstancePublishedEvent } from '@aztec/protocol-contracts/instance-registry';
|
|
@@ -13,14 +13,15 @@ import type { FunctionSelector } from '@aztec/stdlib/abi';
|
|
|
13
13
|
import { PublicDataWrite } from '@aztec/stdlib/avm';
|
|
14
14
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
15
15
|
import {
|
|
16
|
+
AllContractDeploymentData,
|
|
16
17
|
type ContractClassPublic,
|
|
17
18
|
type ContractDataSource,
|
|
19
|
+
type ContractDeploymentData,
|
|
18
20
|
type ContractInstanceWithAddress,
|
|
19
21
|
computePublicBytecodeCommitment,
|
|
20
22
|
} from '@aztec/stdlib/contract';
|
|
21
23
|
import { computePublicDataTreeLeafSlot } from '@aztec/stdlib/hash';
|
|
22
24
|
import type { MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
|
|
23
|
-
import { ContractClassLog, PrivateLog } from '@aztec/stdlib/logs';
|
|
24
25
|
import type { PublicDBAccessStats } from '@aztec/stdlib/stats';
|
|
25
26
|
import {
|
|
26
27
|
MerkleTreeId,
|
|
@@ -34,182 +35,94 @@ import type { UInt64 } from '@aztec/stdlib/types';
|
|
|
34
35
|
|
|
35
36
|
import { strict as assert } from 'assert';
|
|
36
37
|
|
|
38
|
+
import { ContractsDbCheckpoint } from './contracts_db_checkpoint.js';
|
|
37
39
|
import type { PublicContractsDBInterface, PublicStateDBInterface } from './db_interfaces.js';
|
|
38
40
|
import { L1ToL2MessageIndexOutOfRangeError, NoteHashIndexOutOfRangeError } from './side_effect_errors.js';
|
|
39
|
-
import { TxContractCache } from './tx_contract_cache.js';
|
|
40
41
|
|
|
41
42
|
/**
|
|
42
43
|
* Implements the PublicContractsDBInterface using a ContractDataSource.
|
|
43
|
-
*
|
|
44
|
-
* Separates block-level contract information (from processed/included txs) from the
|
|
45
|
-
* current tx's contract information (which may be cleared on tx revert/death).
|
|
44
|
+
* Uses a stack-based checkpoint model for managing contract state.
|
|
46
45
|
*/
|
|
47
46
|
export class PublicContractsDB implements PublicContractsDBInterface {
|
|
48
|
-
|
|
49
|
-
// Tx-level cache:
|
|
50
|
-
// - The current tx's new contract information is cached
|
|
51
|
-
// in currentTxNonRevertibleCache and currentTxRevertibleCache.
|
|
52
|
-
// Block-level cache:
|
|
53
|
-
// - Contract information from earlier in the block, usable by later txs.
|
|
54
|
-
// When a tx succeeds, that tx's caches are merged into the block cache and cleared.
|
|
55
|
-
private currentTxNonRevertibleCache = new TxContractCache();
|
|
56
|
-
private currentTxRevertibleCache = new TxContractCache();
|
|
57
|
-
private blockCache = new TxContractCache();
|
|
58
|
-
// Separate flat cache for bytecode commitments.
|
|
59
|
-
private bytecodeCommitmentCache = new Map<string, Fr>();
|
|
60
|
-
|
|
61
|
-
private log = createLogger('simulator:contracts-data-source');
|
|
62
|
-
|
|
63
|
-
constructor(private dataSource: ContractDataSource) {}
|
|
47
|
+
private contractStateStack: ContractsDbCheckpoint[] = [new ContractsDbCheckpoint()];
|
|
64
48
|
|
|
65
|
-
|
|
66
|
-
* Add new contracts from a transaction
|
|
67
|
-
* @param tx - The transaction to add contracts from.
|
|
68
|
-
*/
|
|
69
|
-
public async addNewContracts(tx: Tx): Promise<void> {
|
|
70
|
-
await this.addNonRevertibleContractClasses(tx);
|
|
71
|
-
await this.addRevertibleContractClasses(tx);
|
|
72
|
-
this.addNonRevertibleContractInstances(tx);
|
|
73
|
-
this.addRevertibleContractInstances(tx);
|
|
74
|
-
}
|
|
49
|
+
private log: Logger;
|
|
75
50
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
await this.addNonRevertibleContractClasses(tx);
|
|
82
|
-
this.addNonRevertibleContractInstances(tx);
|
|
51
|
+
constructor(
|
|
52
|
+
private dataSource: ContractDataSource,
|
|
53
|
+
bindings?: LoggerBindings,
|
|
54
|
+
) {
|
|
55
|
+
this.log = createLogger('simulator:contracts-data-source', bindings);
|
|
83
56
|
}
|
|
84
57
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
* @param tx - The transaction to add revertible contracts from.
|
|
88
|
-
*/
|
|
89
|
-
public async addNewRevertibleContracts(tx: Tx) {
|
|
90
|
-
await this.addRevertibleContractClasses(tx);
|
|
91
|
-
this.addRevertibleContractInstances(tx);
|
|
92
|
-
}
|
|
58
|
+
public async addContracts(contractDeploymentData: ContractDeploymentData): Promise<void> {
|
|
59
|
+
const currentState = this.getCurrentState();
|
|
93
60
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
*/
|
|
99
|
-
private async addNonRevertibleContractClasses(tx: Tx) {
|
|
100
|
-
const siloedContractClassLogs = tx.data.forPublic
|
|
101
|
-
? tx.getSplitContractClassLogs(false /* revertible */)
|
|
102
|
-
: tx.getContractClassLogs();
|
|
103
|
-
await this.addContractClassesFromLogs(siloedContractClassLogs, this.currentTxNonRevertibleCache, 'non-revertible');
|
|
104
|
-
}
|
|
61
|
+
await this.addContractClassesFromEvents(
|
|
62
|
+
ContractClassPublishedEvent.extractContractClassEvents(contractDeploymentData.getContractClassLogs()),
|
|
63
|
+
currentState,
|
|
64
|
+
);
|
|
105
65
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
*/
|
|
111
|
-
private async addRevertibleContractClasses(tx: Tx) {
|
|
112
|
-
const siloedContractClassLogs = tx.data.forPublic ? tx.getSplitContractClassLogs(true /* revertible */) : [];
|
|
113
|
-
await this.addContractClassesFromLogs(siloedContractClassLogs, this.currentTxRevertibleCache, 'revertible');
|
|
66
|
+
this.addContractInstancesFromEvents(
|
|
67
|
+
ContractInstancePublishedEvent.extractContractInstanceEvents(contractDeploymentData.getPrivateLogs()),
|
|
68
|
+
currentState,
|
|
69
|
+
);
|
|
114
70
|
}
|
|
115
71
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
*/
|
|
121
|
-
private addNonRevertibleContractInstances(tx: Tx) {
|
|
122
|
-
const contractInstanceLogs = tx.data.forPublic
|
|
123
|
-
? tx.data.forPublic!.nonRevertibleAccumulatedData.privateLogs.filter(l => !l.isEmpty())
|
|
124
|
-
: tx.data.forRollup!.end.privateLogs.filter(l => !l.isEmpty());
|
|
125
|
-
|
|
126
|
-
this.addContractInstancesFromLogs(contractInstanceLogs, this.currentTxNonRevertibleCache, 'non-revertible');
|
|
72
|
+
public async addNewContracts(tx: Tx): Promise<void> {
|
|
73
|
+
const contractDeploymentData = AllContractDeploymentData.fromTx(tx);
|
|
74
|
+
await this.addContracts(contractDeploymentData.getNonRevertibleContractDeploymentData());
|
|
75
|
+
await this.addContracts(contractDeploymentData.getRevertibleContractDeploymentData());
|
|
127
76
|
}
|
|
128
77
|
|
|
129
78
|
/**
|
|
130
|
-
*
|
|
131
|
-
*
|
|
132
|
-
* @param tx - The transaction to add revertible contract instances from.
|
|
79
|
+
* Creates a new checkpoint, copying the current state for upcoming modifications,
|
|
80
|
+
* and enabling rollbacks to current state in case of a revert.
|
|
133
81
|
*/
|
|
134
|
-
|
|
135
|
-
const
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
this.addContractInstancesFromLogs(contractInstanceLogs, this.currentTxRevertibleCache, 'revertible');
|
|
82
|
+
public createCheckpoint(): void {
|
|
83
|
+
const currentState = this.getCurrentState();
|
|
84
|
+
const newState = currentState.deepCopy();
|
|
85
|
+
this.contractStateStack.push(newState);
|
|
140
86
|
}
|
|
141
87
|
|
|
142
88
|
/**
|
|
143
|
-
*
|
|
144
|
-
* @param siloedContractClassLogs - Contract class logs to process
|
|
145
|
-
* @param cache - The cache to store the contract classes in
|
|
146
|
-
* @param cacheType - Type of cache (for logging)
|
|
89
|
+
* Commits the current checkpoint, accepting its state latest.
|
|
147
90
|
*/
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
.filter((log: ContractClassLog) => ContractClassPublishedEvent.isContractClassPublishedEvent(log))
|
|
155
|
-
.map((log: ContractClassLog) => ContractClassPublishedEvent.fromLog(log));
|
|
156
|
-
|
|
157
|
-
// Cache contract classes
|
|
158
|
-
await Promise.all(
|
|
159
|
-
contractClassEvents.map(async (event: ContractClassPublishedEvent) => {
|
|
160
|
-
this.log.debug(`Adding class ${event.contractClassId.toString()} to contract's ${cacheType} tx cache`);
|
|
161
|
-
const contractClass = await event.toContractClassPublic();
|
|
162
|
-
|
|
163
|
-
cache.addClass(event.contractClassId, contractClass);
|
|
164
|
-
}),
|
|
165
|
-
);
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
/**
|
|
169
|
-
* Given a tx's contract instance logs, add the contract instances to the cache
|
|
170
|
-
* @param contractInstanceLogs - Contract instance logs to process
|
|
171
|
-
* @param cache - The cache to store the contract instances in
|
|
172
|
-
* @param cacheType - Type of cache (for logging)
|
|
173
|
-
*/
|
|
174
|
-
private addContractInstancesFromLogs(contractInstanceLogs: PrivateLog[], cache: TxContractCache, cacheType: string) {
|
|
175
|
-
const contractInstanceEvents = contractInstanceLogs
|
|
176
|
-
.filter(log => ContractInstancePublishedEvent.isContractInstancePublishedEvent(log))
|
|
177
|
-
.map(log => ContractInstancePublishedEvent.fromLog(log));
|
|
178
|
-
|
|
179
|
-
// Cache contract instances
|
|
180
|
-
contractInstanceEvents.forEach(e => {
|
|
181
|
-
this.log.debug(
|
|
182
|
-
`Adding instance ${e.address.toString()} with class ${e.contractClassId.toString()} to ${cacheType} tx contract cache`,
|
|
183
|
-
);
|
|
184
|
-
cache.addInstance(e.address, e.toContractInstance());
|
|
185
|
-
});
|
|
91
|
+
public commitCheckpoint(): void {
|
|
92
|
+
if (this.contractStateStack.length <= 1) {
|
|
93
|
+
throw new Error('No checkpoint to commit');
|
|
94
|
+
}
|
|
95
|
+
const topState = this.contractStateStack.pop()!;
|
|
96
|
+
this.contractStateStack[this.contractStateStack.length - 1] = topState;
|
|
186
97
|
}
|
|
187
98
|
|
|
188
99
|
/**
|
|
189
|
-
*
|
|
100
|
+
* Commits the current checkpoint, not erroring if there is no checkpoint
|
|
101
|
+
* to commit. This is useful to do a sanity commit at the end of tx execution,
|
|
102
|
+
* doing nothing if the checkpoint was already reverted, but truly committing
|
|
103
|
+
* otherwise.
|
|
190
104
|
*/
|
|
191
|
-
public
|
|
192
|
-
this.
|
|
193
|
-
|
|
194
|
-
|
|
105
|
+
public commitCheckpointOkIfNone(): void {
|
|
106
|
+
if (this.contractStateStack.length <= 1) {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
const topState = this.contractStateStack.pop()!;
|
|
110
|
+
this.contractStateStack[this.contractStateStack.length - 1] = topState;
|
|
195
111
|
}
|
|
196
112
|
|
|
197
113
|
/**
|
|
198
|
-
*
|
|
199
|
-
*
|
|
114
|
+
* Reverts the current checkpoint, discarding its state and rolling back
|
|
115
|
+
* to the state as of the latest checkpoint.
|
|
200
116
|
*/
|
|
201
|
-
public
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
if (!onlyNonRevertibles) {
|
|
206
|
-
// Merge revertible tx cache into block cache
|
|
207
|
-
this.blockCache.mergeFrom(this.currentTxRevertibleCache);
|
|
117
|
+
public revertCheckpoint(): void {
|
|
118
|
+
if (this.contractStateStack.length <= 1) {
|
|
119
|
+
throw new Error('No checkpoint to revert');
|
|
208
120
|
}
|
|
121
|
+
this.contractStateStack.pop();
|
|
122
|
+
}
|
|
209
123
|
|
|
210
|
-
|
|
211
|
-
this.
|
|
212
|
-
this.currentTxRevertibleCache.clear();
|
|
124
|
+
private getCurrentState(): ContractsDbCheckpoint {
|
|
125
|
+
return this.contractStateStack[this.contractStateStack.length - 1];
|
|
213
126
|
}
|
|
214
127
|
|
|
215
128
|
// TODO(fcarreiro/alvaro): This method currently needs a blockNumber. Since this class
|
|
@@ -225,53 +138,66 @@ export class PublicContractsDB implements PublicContractsDBInterface {
|
|
|
225
138
|
address: AztecAddress,
|
|
226
139
|
timestamp: UInt64,
|
|
227
140
|
): Promise<ContractInstanceWithAddress | undefined> {
|
|
228
|
-
|
|
229
|
-
return (
|
|
230
|
-
this.currentTxRevertibleCache.getInstance(address) ??
|
|
231
|
-
this.currentTxNonRevertibleCache.getInstance(address) ??
|
|
232
|
-
this.blockCache.getInstance(address) ??
|
|
233
|
-
(await this.dataSource.getContract(address, timestamp))
|
|
234
|
-
);
|
|
141
|
+
const currentState = this.getCurrentState();
|
|
142
|
+
return currentState.getInstance(address) ?? (await this.dataSource.getContract(address, timestamp));
|
|
235
143
|
}
|
|
236
144
|
|
|
237
145
|
public async getContractClass(contractClassId: Fr): Promise<ContractClassPublic | undefined> {
|
|
238
|
-
|
|
239
|
-
return (
|
|
240
|
-
this.currentTxRevertibleCache.getClass(contractClassId) ??
|
|
241
|
-
this.currentTxNonRevertibleCache.getClass(contractClassId) ??
|
|
242
|
-
this.blockCache.getClass(contractClassId) ??
|
|
243
|
-
(await this.dataSource.getContractClass(contractClassId))
|
|
244
|
-
);
|
|
146
|
+
const currentState = this.getCurrentState();
|
|
147
|
+
return currentState.getClass(contractClassId) ?? (await this.dataSource.getContractClass(contractClassId));
|
|
245
148
|
}
|
|
246
149
|
|
|
247
150
|
public async getBytecodeCommitment(contractClassId: Fr): Promise<Fr | undefined> {
|
|
248
|
-
|
|
249
|
-
const
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
151
|
+
const currentState = this.getCurrentState();
|
|
152
|
+
const commitment =
|
|
153
|
+
currentState.getBytecodeCommitment(contractClassId) ??
|
|
154
|
+
(await this.dataSource.getBytecodeCommitment(contractClassId));
|
|
155
|
+
if (commitment !== undefined) {
|
|
156
|
+
return commitment;
|
|
253
157
|
}
|
|
254
|
-
//
|
|
255
|
-
|
|
256
|
-
if (fromStore !== undefined) {
|
|
257
|
-
this.bytecodeCommitmentCache.set(key, fromStore);
|
|
258
|
-
return fromStore;
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
// Not in either the store or the cache, build it here and cache
|
|
158
|
+
// Not in the current state or the store, compute it here
|
|
159
|
+
// Get the contract class
|
|
262
160
|
const contractClass = await this.getContractClass(contractClassId);
|
|
161
|
+
|
|
263
162
|
if (contractClass === undefined) {
|
|
163
|
+
// cannot compute bytecode commitment if contract class is not found
|
|
264
164
|
return undefined;
|
|
265
165
|
}
|
|
266
166
|
|
|
267
167
|
const value = await computePublicBytecodeCommitment(contractClass.packedBytecode);
|
|
268
|
-
|
|
168
|
+
// Add to cache (current checkpoint state) so we don't compute again
|
|
169
|
+
currentState.addBytecodeCommitment(contractClassId, value);
|
|
269
170
|
return value;
|
|
270
171
|
}
|
|
271
172
|
|
|
272
173
|
public async getDebugFunctionName(address: AztecAddress, selector: FunctionSelector): Promise<string | undefined> {
|
|
273
174
|
return await this.dataSource.getDebugFunctionName(address, selector);
|
|
274
175
|
}
|
|
176
|
+
|
|
177
|
+
private async addContractClassesFromEvents(
|
|
178
|
+
contractClassEvents: ContractClassPublishedEvent[],
|
|
179
|
+
state: ContractsDbCheckpoint,
|
|
180
|
+
) {
|
|
181
|
+
await Promise.all(
|
|
182
|
+
contractClassEvents.map(async (event: ContractClassPublishedEvent) => {
|
|
183
|
+
this.log.debug(`Adding class ${event.contractClassId.toString()} to contract state`);
|
|
184
|
+
const contractClass = await event.toContractClassPublic();
|
|
185
|
+
state.addClass(event.contractClassId, contractClass);
|
|
186
|
+
}),
|
|
187
|
+
);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
private addContractInstancesFromEvents(
|
|
191
|
+
contractInstanceEvents: ContractInstancePublishedEvent[],
|
|
192
|
+
state: ContractsDbCheckpoint,
|
|
193
|
+
) {
|
|
194
|
+
contractInstanceEvents.forEach(e => {
|
|
195
|
+
this.log.debug(
|
|
196
|
+
`Adding instance ${e.address.toString()} with class ${e.contractClassId.toString()} to contract state`,
|
|
197
|
+
);
|
|
198
|
+
state.addInstance(e.address, e.toContractInstance());
|
|
199
|
+
});
|
|
200
|
+
}
|
|
275
201
|
}
|
|
276
202
|
|
|
277
203
|
/**
|
|
@@ -287,9 +213,14 @@ export class PublicContractsDB implements PublicContractsDBInterface {
|
|
|
287
213
|
* to decide whether to use hints or not (same with tracing, etc).
|
|
288
214
|
*/
|
|
289
215
|
export class PublicTreesDB implements PublicStateDBInterface {
|
|
290
|
-
private logger
|
|
216
|
+
private logger: Logger;
|
|
291
217
|
|
|
292
|
-
constructor(
|
|
218
|
+
constructor(
|
|
219
|
+
private readonly db: MerkleTreeWriteOperations,
|
|
220
|
+
bindings?: LoggerBindings,
|
|
221
|
+
) {
|
|
222
|
+
this.logger = createLogger('simulator:public-trees-db', bindings);
|
|
223
|
+
}
|
|
293
224
|
|
|
294
225
|
public async storageRead(contract: AztecAddress, slot: Fr): Promise<Fr> {
|
|
295
226
|
const timer = new Timer();
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { BlockNumber } from '@aztec/foundation/branded-types';
|
|
1
2
|
import { SerialQueue } from '@aztec/foundation/queue';
|
|
2
3
|
import type { IndexedTreeLeafPreimage, SiblingPath } from '@aztec/foundation/trees';
|
|
3
4
|
import type {
|
|
@@ -11,7 +12,7 @@ import type {
|
|
|
11
12
|
TreeInfo,
|
|
12
13
|
} from '@aztec/stdlib/trees';
|
|
13
14
|
import type { BlockHeader, StateReference } from '@aztec/stdlib/tx';
|
|
14
|
-
import type { WorldStateRevision } from '@aztec/stdlib/world-state';
|
|
15
|
+
import type { WorldStateRevision, WorldStateRevisionWithHandle } from '@aztec/stdlib/world-state';
|
|
15
16
|
|
|
16
17
|
/**
|
|
17
18
|
* Wraps an instance of `MerkleTreeWriteOperations` to allow the sequencer to gate access.
|
|
@@ -80,6 +81,10 @@ export class GuardedMerkleTreeOperations implements MerkleTreeWriteOperations {
|
|
|
80
81
|
close(): Promise<void> {
|
|
81
82
|
return this.guardAndPush(() => this.target.close());
|
|
82
83
|
}
|
|
84
|
+
|
|
85
|
+
async [Symbol.asyncDispose](): Promise<void> {
|
|
86
|
+
await this.close();
|
|
87
|
+
}
|
|
83
88
|
getTreeInfo(treeId: MerkleTreeId): Promise<TreeInfo> {
|
|
84
89
|
return this.guardAndPush(() => this.target.getTreeInfo(treeId));
|
|
85
90
|
}
|
|
@@ -89,7 +94,7 @@ export class GuardedMerkleTreeOperations implements MerkleTreeWriteOperations {
|
|
|
89
94
|
getInitialHeader(): BlockHeader {
|
|
90
95
|
return this.target.getInitialHeader();
|
|
91
96
|
}
|
|
92
|
-
public getRevision(): WorldStateRevision {
|
|
97
|
+
public getRevision(): WorldStateRevision | WorldStateRevisionWithHandle {
|
|
93
98
|
return this.target.getRevision();
|
|
94
99
|
}
|
|
95
100
|
getSiblingPath<ID extends MerkleTreeId>(treeId: ID, index: bigint): Promise<SiblingPath<TreeHeights[ID]>> {
|
|
@@ -126,7 +131,7 @@ export class GuardedMerkleTreeOperations implements MerkleTreeWriteOperations {
|
|
|
126
131
|
getBlockNumbersForLeafIndices<ID extends MerkleTreeId>(
|
|
127
132
|
treeId: ID,
|
|
128
133
|
leafIndices: bigint[],
|
|
129
|
-
): Promise<(
|
|
134
|
+
): Promise<(BlockNumber | undefined)[]> {
|
|
130
135
|
return this.guardAndPush(() => this.target.getBlockNumbersForLeafIndices(treeId, leafIndices));
|
|
131
136
|
}
|
|
132
137
|
createCheckpoint(): Promise<void> {
|