@aztec/simulator 0.0.0-test.1 → 0.0.1-commit.017a351
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 +12 -4
- package/dest/client.d.ts +6 -4
- package/dest/client.d.ts.map +1 -1
- package/dest/client.js +4 -2
- package/dest/common/errors.d.ts +6 -9
- package/dest/common/errors.d.ts.map +1 -1
- package/dest/common/errors.js +51 -32
- package/dest/common/index.d.ts +1 -2
- package/dest/common/index.d.ts.map +1 -1
- package/dest/common/index.js +0 -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 +15 -7
- package/dest/private/acvm/acvm.d.ts.map +1 -1
- package/dest/private/acvm/acvm.js +14 -19
- package/dest/private/acvm/acvm_types.d.ts +2 -2
- package/dest/private/acvm/acvm_types.d.ts.map +1 -1
- package/dest/private/acvm/deserialize.d.ts +19 -20
- package/dest/private/acvm/deserialize.d.ts.map +1 -1
- package/dest/private/acvm/deserialize.js +32 -24
- package/dest/private/acvm/index.d.ts +1 -2
- 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 +21 -4
- package/dest/private/acvm/serialize.d.ts.map +1 -1
- package/dest/private/acvm/serialize.js +54 -1
- package/dest/private/acvm_native.d.ts +41 -0
- package/dest/private/acvm_native.d.ts.map +1 -0
- package/dest/private/{providers/acvm_native.js → acvm_native.js} +34 -26
- package/dest/private/acvm_wasm.d.ts +16 -0
- package/dest/private/acvm_wasm.d.ts.map +1 -0
- package/dest/private/acvm_wasm.js +67 -0
- 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 +109 -0
- package/dest/private/circuit_recording/circuit_recorder.d.ts.map +1 -0
- package/dest/private/circuit_recording/circuit_recorder.js +212 -0
- package/dest/private/circuit_recording/file_circuit_recorder.d.ts +32 -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 +10 -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} +8 -5
- package/dest/public/avm/avm_context.d.ts +8 -8
- package/dest/public/avm/avm_context.d.ts.map +1 -1
- package/dest/public/avm/avm_contract_call_result.d.ts +8 -6
- package/dest/public/avm/avm_contract_call_result.d.ts.map +1 -1
- package/dest/public/avm/avm_contract_call_result.js +12 -8
- package/dest/public/avm/avm_execution_environment.d.ts +9 -6
- package/dest/public/avm/avm_execution_environment.d.ts.map +1 -1
- package/dest/public/avm/avm_execution_environment.js +5 -3
- package/dest/public/avm/avm_gas.d.ts +5 -21
- package/dest/public/avm/avm_gas.d.ts.map +1 -1
- package/dest/public/avm/avm_gas.js +29 -37
- package/dest/public/avm/avm_machine_state.d.ts +9 -6
- package/dest/public/avm/avm_machine_state.d.ts.map +1 -1
- package/dest/public/avm/avm_machine_state.js +5 -2
- package/dest/public/avm/avm_memory_types.d.ts +100 -89
- package/dest/public/avm/avm_memory_types.d.ts.map +1 -1
- package/dest/public/avm/avm_memory_types.js +21 -7
- package/dest/public/avm/avm_simulator.d.ts +8 -7
- package/dest/public/avm/avm_simulator.d.ts.map +1 -1
- package/dest/public/avm/avm_simulator.js +33 -43
- 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/calldata.d.ts +51 -0
- package/dest/public/avm/calldata.d.ts.map +1 -0
- package/dest/public/avm/calldata.js +64 -0
- package/dest/public/avm/errors.d.ts +11 -29
- package/dest/public/avm/errors.d.ts.map +1 -1
- package/dest/public/avm/errors.js +19 -57
- 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 +6 -5
- package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +1 -1
- package/dest/public/avm/fixtures/avm_simulation_tester.js +26 -18
- package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts +9 -6
- package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +1 -1
- package/dest/public/avm/fixtures/base_avm_simulation_tester.js +53 -15
- package/dest/public/avm/fixtures/initializers.d.ts +42 -0
- package/dest/public/avm/fixtures/initializers.d.ts.map +1 -0
- package/dest/public/avm/fixtures/initializers.js +45 -0
- package/dest/public/avm/fixtures/utils.d.ts +39 -0
- package/dest/public/avm/fixtures/utils.d.ts.map +1 -0
- package/dest/public/avm/fixtures/utils.js +99 -0
- package/dest/public/avm/index.d.ts +1 -3
- 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 +18 -19
- package/dest/public/avm/opcodes/accrued_substate.d.ts.map +1 -1
- package/dest/public/avm/opcodes/accrued_substate.js +61 -59
- package/dest/public/avm/opcodes/addressing_mode.d.ts +12 -8
- 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 +14 -2
- package/dest/public/avm/opcodes/arithmetic.d.ts.map +1 -1
- package/dest/public/avm/opcodes/arithmetic.js +27 -3
- package/dest/public/avm/opcodes/bitwise.d.ts +8 -16
- package/dest/public/avm/opcodes/bitwise.d.ts.map +1 -1
- package/dest/public/avm/opcodes/bitwise.js +22 -29
- 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 +3 -3
- package/dest/public/avm/opcodes/contract.d.ts +5 -5
- package/dest/public/avm/opcodes/contract.d.ts.map +1 -1
- package/dest/public/avm/opcodes/contract.js +16 -13
- 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 +13 -11
- package/dest/public/avm/opcodes/conversion.d.ts +4 -3
- package/dest/public/avm/opcodes/conversion.d.ts.map +1 -1
- package/dest/public/avm/opcodes/conversion.js +270 -6
- package/dest/public/avm/opcodes/ec_add.d.ts +3 -5
- package/dest/public/avm/opcodes/ec_add.d.ts.map +1 -1
- package/dest/public/avm/opcodes/ec_add.js +28 -33
- 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 +20 -22
- package/dest/public/avm/opcodes/external_calls.d.ts +14 -13
- package/dest/public/avm/opcodes/external_calls.d.ts.map +1 -1
- package/dest/public/avm/opcodes/external_calls.js +52 -46
- 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 +24 -19
- package/dest/public/avm/opcodes/index.d.ts +1 -1
- package/dest/public/avm/opcodes/instruction.d.ts +15 -11
- 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/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 +15 -15
- package/dest/public/avm/opcodes/memory.d.ts.map +1 -1
- package/dest/public/avm/opcodes/memory.js +52 -48
- package/dest/public/avm/opcodes/misc.d.ts +4 -3
- package/dest/public/avm/opcodes/misc.d.ts.map +1 -1
- package/dest/public/avm/opcodes/misc.js +42 -17
- 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 +39 -27
- 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 +39 -0
- package/dest/public/avm/serialization/buffer_cursor.d.ts +1 -3
- package/dest/public/avm/serialization/buffer_cursor.d.ts.map +1 -1
- package/dest/public/avm/serialization/bytecode_serialization.d.ts +3 -7
- package/dest/public/avm/serialization/bytecode_serialization.d.ts.map +1 -1
- package/dest/public/avm/serialization/bytecode_serialization.js +81 -77
- package/dest/public/avm/serialization/instruction_serialization.d.ts +15 -6
- package/dest/public/avm/serialization/instruction_serialization.d.ts.map +1 -1
- package/dest/public/avm/serialization/instruction_serialization.js +71 -36
- package/dest/public/avm/test_utils.d.ts +12 -15
- package/dest/public/avm/test_utils.d.ts.map +1 -1
- package/dest/public/avm/test_utils.js +17 -25
- 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 +68 -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 +18 -0
- package/dest/public/debug_fn_name.d.ts.map +1 -0
- package/dest/public/debug_fn_name.js +37 -0
- package/dest/public/executor_metrics.d.ts +12 -4
- package/dest/public/executor_metrics.d.ts.map +1 -1
- package/dest/public/executor_metrics.js +33 -23
- package/dest/public/executor_metrics_interface.d.ts +10 -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 +289 -0
- package/dest/public/fixtures/custom_bytecode_tester.d.ts +34 -0
- package/dest/public/fixtures/custom_bytecode_tester.d.ts.map +1 -0
- package/dest/public/fixtures/custom_bytecode_tester.js +53 -0
- package/dest/public/fixtures/custom_bytecode_tests.d.ts +14 -0
- package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +1 -0
- package/dest/public/fixtures/custom_bytecode_tests.js +234 -0
- package/dest/public/fixtures/index.d.ts +10 -1
- package/dest/public/fixtures/index.d.ts.map +1 -1
- package/dest/public/fixtures/index.js +9 -0
- package/dest/public/fixtures/minimal_public_tx.d.ts +4 -0
- package/dest/public/fixtures/minimal_public_tx.d.ts.map +1 -0
- package/dest/public/fixtures/minimal_public_tx.js +19 -0
- 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 +1645 -0
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts +56 -15
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
- package/dest/public/fixtures/public_tx_simulation_tester.js +164 -71
- package/dest/public/fixtures/simple_contract_data_source.d.ts +36 -0
- 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 +12 -0
- package/dest/public/fixtures/token_test.d.ts.map +1 -0
- package/dest/public/fixtures/token_test.js +96 -0
- package/dest/public/fixtures/utils.d.ts +18 -5
- package/dest/public/fixtures/utils.d.ts.map +1 -1
- package/dest/public/fixtures/utils.js +112 -70
- 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 +81 -0
- package/dest/public/hinting_db_sources.d.ts.map +1 -0
- package/dest/public/hinting_db_sources.js +359 -0
- package/dest/public/index.d.ts +6 -9
- package/dest/public/index.d.ts.map +1 -1
- package/dest/public/index.js +4 -7
- package/dest/public/public_db_sources.d.ts +58 -104
- package/dest/public/public_db_sources.d.ts.map +1 -1
- package/dest/public/public_db_sources.js +227 -194
- 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 +52 -0
- package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -0
- package/dest/public/public_processor/guarded_merkle_tree.js +116 -0
- package/dest/public/public_processor/public_processor.d.ts +32 -39
- package/dest/public/public_processor/public_processor.d.ts.map +1 -1
- package/dest/public/public_processor/public_processor.js +642 -167
- package/dest/public/public_processor/public_processor_metrics.d.ts +7 -4
- package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
- package/dest/public/public_processor/public_processor_metrics.js +37 -46
- 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 +99 -0
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +53 -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 +126 -0
- 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 +167 -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 +8 -0
- package/dest/public/public_tx_simulator/index.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/index.js +5 -0
- package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +31 -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 +31 -33
- package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/public_tx_context.js +83 -105
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +42 -58
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/public_tx_simulator.js +225 -207
- package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts +32 -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 +415 -0
- package/dest/public/side_effect_errors.d.ts +42 -2
- 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 +24 -69
- package/dest/public/side_effect_trace.d.ts.map +1 -1
- package/dest/public/side_effect_trace.js +74 -124
- package/dest/public/side_effect_trace_interface.d.ts +13 -25
- 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 +4 -7
- 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 +4 -4
- package/dest/public/state_manager/public_storage.d.ts.map +1 -0
- package/dest/public/{avm/journal → state_manager}/public_storage.js +1 -1
- package/dest/public/state_manager/state_manager.d.ts +170 -0
- package/dest/public/state_manager/state_manager.d.ts.map +1 -0
- package/dest/public/state_manager/state_manager.js +402 -0
- package/dest/public/test_executor_metrics.d.ts +61 -0
- package/dest/public/test_executor_metrics.d.ts.map +1 -0
- package/dest/public/test_executor_metrics.js +329 -0
- 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 +3 -5
- package/dest/public/utils.d.ts.map +1 -1
- package/dest/public/utils.js +4 -21
- package/dest/server.d.ts +7 -4
- 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 +39 -33
- package/src/client.ts +5 -3
- package/src/common/errors.ts +80 -45
- package/src/common/index.ts +0 -1
- package/src/private/acvm/acvm.ts +21 -35
- package/src/private/acvm/acvm_types.ts +1 -1
- package/src/private/acvm/deserialize.ts +36 -30
- package/src/private/acvm/index.ts +0 -1
- package/src/private/acvm/serialize.ts +64 -1
- package/src/private/{providers/acvm_native.ts → acvm_native.ts} +57 -28
- package/src/private/acvm_wasm.ts +79 -0
- package/src/private/acvm_wasm_with_blobs.ts +54 -0
- package/src/private/circuit_recording/circuit_recorder.ts +263 -0
- package/src/private/circuit_recording/file_circuit_recorder.ts +163 -0
- package/src/private/circuit_recording/memory_circuit_recorder.ts +13 -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} +13 -10
- package/src/public/avm/avm_context.ts +6 -6
- package/src/public/avm/avm_contract_call_result.ts +23 -9
- package/src/public/avm/avm_execution_environment.ts +17 -5
- package/src/public/avm/avm_gas.ts +27 -39
- package/src/public/avm/avm_machine_state.ts +12 -6
- package/src/public/avm/avm_memory_types.ts +24 -7
- package/src/public/avm/avm_simulator.ts +58 -63
- package/src/public/avm/avm_simulator_interface.ts +8 -0
- package/src/public/avm/calldata.ts +101 -0
- package/src/public/avm/errors.ts +20 -75
- 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 +41 -24
- package/src/public/avm/fixtures/base_avm_simulation_tester.ts +66 -13
- package/src/public/avm/fixtures/initializers.ts +103 -0
- package/src/public/avm/fixtures/utils.ts +154 -0
- package/src/public/avm/index.ts +0 -2
- package/src/public/avm/opcodes/accrued_substate.ts +84 -52
- package/src/public/avm/opcodes/addressing_mode.ts +56 -32
- package/src/public/avm/opcodes/arithmetic.ts +37 -3
- 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 +15 -11
- package/src/public/avm/opcodes/control_flow.ts +19 -10
- package/src/public/avm/opcodes/conversion.ts +29 -5
- package/src/public/avm/opcodes/ec_add.ts +30 -37
- package/src/public/avm/opcodes/environment_getters.ts +28 -23
- package/src/public/avm/opcodes/external_calls.ts +70 -36
- package/src/public/avm/opcodes/hashing.ts +39 -13
- package/src/public/avm/opcodes/instruction.ts +31 -21
- package/src/public/avm/opcodes/instruction_impl.ts +2 -2
- package/src/public/avm/opcodes/memory.ts +81 -42
- package/src/public/avm/opcodes/misc.ts +61 -19
- package/src/public/avm/opcodes/storage.ts +47 -23
- package/src/public/avm/revert_reason.ts +58 -0
- package/src/public/avm/serialization/buffer_cursor.ts +4 -1
- package/src/public/avm/serialization/bytecode_serialization.ts +90 -81
- package/src/public/avm/serialization/instruction_serialization.ts +76 -35
- package/src/public/avm/test_utils.ts +25 -42
- package/src/public/contracts_db_checkpoint.ts +41 -0
- package/src/public/db_interfaces.ts +76 -0
- package/src/public/debug_fn_name.ts +52 -0
- package/src/public/executor_metrics.ts +49 -23
- package/src/public/executor_metrics_interface.ts +15 -0
- package/src/public/fixtures/amm_test.ts +331 -0
- package/src/public/fixtures/bulk_test.ts +194 -0
- package/src/public/fixtures/custom_bytecode_tester.ts +83 -0
- package/src/public/fixtures/custom_bytecode_tests.ts +366 -0
- package/src/public/fixtures/index.ts +13 -0
- package/src/public/fixtures/minimal_public_tx.ts +26 -0
- package/src/public/fixtures/opcode_spammer.ts +1713 -0
- package/src/public/fixtures/public_tx_simulation_tester.ts +264 -114
- package/src/public/{avm/fixtures → fixtures}/simple_contract_data_source.ts +37 -20
- package/src/public/fixtures/token_test.ts +148 -0
- package/src/public/fixtures/utils.ts +156 -80
- 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 +614 -0
- package/src/public/index.ts +11 -8
- package/src/public/public_db_sources.ts +295 -258
- package/src/public/public_errors.ts +14 -0
- package/src/public/public_processor/guarded_merkle_tree.ts +161 -0
- package/src/public/public_processor/public_processor.ts +354 -227
- package/src/public/public_processor/public_processor_metrics.ts +30 -46
- package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +125 -0
- package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +201 -0
- 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 +232 -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 +7 -0
- package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +105 -0
- package/src/public/public_tx_simulator/public_tx_context.ts +187 -209
- package/src/public/public_tx_simulator/public_tx_simulator.ts +320 -263
- package/src/public/public_tx_simulator/public_tx_simulator_interface.ts +33 -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 +99 -322
- package/src/public/side_effect_trace_interface.ts +11 -59
- package/src/public/state_manager/index.ts +1 -0
- package/src/public/{avm/journal → state_manager}/nullifiers.ts +6 -12
- package/src/public/{avm/journal → state_manager}/public_storage.ts +3 -3
- package/src/public/state_manager/state_manager.ts +569 -0
- package/src/public/test_executor_metrics.ts +421 -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 +0 -40
- 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.js +0 -62
- 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 +0 -35
- 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 +0 -209
- 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/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/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/debug_fn_name.ts +0 -18
- 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/public/tx_contract_cache.ts +0 -69
- package/src/test/utils.ts +0 -36
|
@@ -1,327 +1,285 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import {
|
|
2
|
+
L1_TO_L2_MSG_TREE_LEAF_COUNT,
|
|
3
|
+
NOTE_HASH_TREE_LEAF_COUNT,
|
|
4
|
+
NULLIFIER_SUBTREE_HEIGHT,
|
|
5
|
+
PUBLIC_DATA_SUBTREE_HEIGHT,
|
|
6
|
+
} from '@aztec/constants';
|
|
7
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
8
|
+
import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
|
|
3
9
|
import { Timer } from '@aztec/foundation/timer';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
10
|
+
import { ContractClassPublishedEvent } from '@aztec/protocol-contracts/class-registry';
|
|
11
|
+
import { ContractInstancePublishedEvent } from '@aztec/protocol-contracts/instance-registry';
|
|
6
12
|
import type { FunctionSelector } from '@aztec/stdlib/abi';
|
|
7
13
|
import { PublicDataWrite } from '@aztec/stdlib/avm';
|
|
8
14
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
9
15
|
import {
|
|
16
|
+
AllContractDeploymentData,
|
|
10
17
|
type ContractClassPublic,
|
|
11
18
|
type ContractDataSource,
|
|
19
|
+
type ContractDeploymentData,
|
|
12
20
|
type ContractInstanceWithAddress,
|
|
13
21
|
computePublicBytecodeCommitment,
|
|
14
22
|
} from '@aztec/stdlib/contract';
|
|
15
23
|
import { computePublicDataTreeLeafSlot } from '@aztec/stdlib/hash';
|
|
16
|
-
import type {
|
|
17
|
-
MerkleTreeCheckpointOperations,
|
|
18
|
-
MerkleTreeReadOperations,
|
|
19
|
-
MerkleTreeWriteOperations,
|
|
20
|
-
} from '@aztec/stdlib/interfaces/server';
|
|
21
|
-
import { ContractClassLog, PrivateLog } from '@aztec/stdlib/logs';
|
|
24
|
+
import type { MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
|
|
22
25
|
import type { PublicDBAccessStats } from '@aztec/stdlib/stats';
|
|
23
|
-
import {
|
|
24
|
-
|
|
26
|
+
import {
|
|
27
|
+
MerkleTreeId,
|
|
28
|
+
NullifierLeaf,
|
|
29
|
+
PublicDataTreeLeaf,
|
|
30
|
+
type PublicDataTreeLeafPreimage,
|
|
31
|
+
getTreeName,
|
|
32
|
+
} from '@aztec/stdlib/trees';
|
|
33
|
+
import { TreeSnapshots, type Tx } from '@aztec/stdlib/tx';
|
|
34
|
+
import type { UInt64 } from '@aztec/stdlib/types';
|
|
25
35
|
|
|
26
|
-
import
|
|
27
|
-
|
|
36
|
+
import { strict as assert } from 'assert';
|
|
37
|
+
|
|
38
|
+
import { ContractsDbCheckpoint } from './contracts_db_checkpoint.js';
|
|
39
|
+
import type { PublicContractsDBInterface, PublicStateDBInterface } from './db_interfaces.js';
|
|
40
|
+
import { L1ToL2MessageIndexOutOfRangeError, NoteHashIndexOutOfRangeError } from './side_effect_errors.js';
|
|
28
41
|
|
|
29
42
|
/**
|
|
30
|
-
* Implements the
|
|
31
|
-
*
|
|
32
|
-
* Separates block-level contract information (from processed/included txs) from the
|
|
33
|
-
* current tx's contract information (which may be cleared on tx revert/death).
|
|
43
|
+
* Implements the PublicContractsDBInterface using a ContractDataSource.
|
|
44
|
+
* Uses a stack-based checkpoint model for managing contract state.
|
|
34
45
|
*/
|
|
35
|
-
export class
|
|
36
|
-
|
|
37
|
-
// Tx-level cache:
|
|
38
|
-
// - The current tx's new contract information is cached
|
|
39
|
-
// in currentTxNonRevertibleCache and currentTxRevertibleCache.
|
|
40
|
-
// Block-level cache:
|
|
41
|
-
// - Contract information from earlier in the block, usable by later txs.
|
|
42
|
-
// When a tx succeeds, that tx's caches are merged into the block cache and cleared.
|
|
43
|
-
private currentTxNonRevertibleCache = new TxContractCache();
|
|
44
|
-
private currentTxRevertibleCache = new TxContractCache();
|
|
45
|
-
private blockCache = new TxContractCache();
|
|
46
|
-
// Separate flat cache for bytecode commitments.
|
|
47
|
-
private bytecodeCommitmentCache = new Map<string, Fr>();
|
|
48
|
-
|
|
49
|
-
private log = createLogger('simulator:contracts-data-source');
|
|
50
|
-
|
|
51
|
-
constructor(private dataSource: ContractDataSource) {}
|
|
46
|
+
export class PublicContractsDB implements PublicContractsDBInterface {
|
|
47
|
+
private contractStateStack: ContractsDbCheckpoint[] = [new ContractsDbCheckpoint()];
|
|
52
48
|
|
|
53
|
-
|
|
54
|
-
* Add new contracts from a transaction
|
|
55
|
-
* @param tx - The transaction to add contracts from.
|
|
56
|
-
*/
|
|
57
|
-
public async addNewContracts(tx: Tx): Promise<void> {
|
|
58
|
-
await this.addNonRevertibleContractClasses(tx);
|
|
59
|
-
await this.addRevertibleContractClasses(tx);
|
|
60
|
-
this.addNonRevertibleContractInstances(tx);
|
|
61
|
-
this.addRevertibleContractInstances(tx);
|
|
62
|
-
}
|
|
49
|
+
private log: Logger;
|
|
63
50
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
await this.addNonRevertibleContractClasses(tx);
|
|
70
|
-
this.addNonRevertibleContractInstances(tx);
|
|
51
|
+
constructor(
|
|
52
|
+
private dataSource: ContractDataSource,
|
|
53
|
+
bindings?: LoggerBindings,
|
|
54
|
+
) {
|
|
55
|
+
this.log = createLogger('simulator:contracts-data-source', bindings);
|
|
71
56
|
}
|
|
72
57
|
|
|
73
|
-
/**
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
*/
|
|
77
|
-
public async addNewRevertibleContracts(tx: Tx) {
|
|
78
|
-
await this.addRevertibleContractClasses(tx);
|
|
79
|
-
this.addRevertibleContractInstances(tx);
|
|
80
|
-
}
|
|
58
|
+
/** Parses raw log data from the C++/NAPI bridge and inserts the resulting contracts into the current checkpoint. */
|
|
59
|
+
public addContractsFromLogs(contractDeploymentData: ContractDeploymentData): void {
|
|
60
|
+
const currentState = this.getCurrentState();
|
|
81
61
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
*/
|
|
87
|
-
private async addNonRevertibleContractClasses(tx: Tx) {
|
|
88
|
-
const siloedContractClassLogs = tx.data.forPublic
|
|
89
|
-
? await tx.filterContractClassLogs(
|
|
90
|
-
tx.data.forPublic!.nonRevertibleAccumulatedData.contractClassLogsHashes,
|
|
91
|
-
/*siloed=*/ true,
|
|
92
|
-
)
|
|
93
|
-
: await tx.filterContractClassLogs(tx.data.forRollup!.end.contractClassLogsHashes, /*siloed=*/ true);
|
|
94
|
-
|
|
95
|
-
await this.addContractClassesFromLogs(siloedContractClassLogs, this.currentTxNonRevertibleCache, 'non-revertible');
|
|
96
|
-
}
|
|
62
|
+
this.addContractClassesFromEvents(
|
|
63
|
+
ContractClassPublishedEvent.extractContractClassEvents(contractDeploymentData.getContractClassLogs()),
|
|
64
|
+
currentState,
|
|
65
|
+
);
|
|
97
66
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
*/
|
|
103
|
-
private async addRevertibleContractClasses(tx: Tx) {
|
|
104
|
-
const siloedContractClassLogs = tx.data.forPublic
|
|
105
|
-
? await tx.filterContractClassLogs(
|
|
106
|
-
tx.data.forPublic!.revertibleAccumulatedData.contractClassLogsHashes,
|
|
107
|
-
/*siloed=*/ true,
|
|
108
|
-
)
|
|
109
|
-
: [];
|
|
110
|
-
|
|
111
|
-
await this.addContractClassesFromLogs(siloedContractClassLogs, this.currentTxRevertibleCache, 'revertible');
|
|
67
|
+
this.addContractInstancesFromEvents(
|
|
68
|
+
ContractInstancePublishedEvent.extractContractInstanceEvents(contractDeploymentData.getPrivateLogs()),
|
|
69
|
+
currentState,
|
|
70
|
+
);
|
|
112
71
|
}
|
|
113
72
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
*/
|
|
119
|
-
private addNonRevertibleContractInstances(tx: Tx) {
|
|
120
|
-
const contractInstanceLogs = tx.data.forPublic
|
|
121
|
-
? tx.data.forPublic!.nonRevertibleAccumulatedData.privateLogs.filter(l => !l.isEmpty())
|
|
122
|
-
: tx.data.forRollup!.end.privateLogs.filter(l => !l.isEmpty());
|
|
123
|
-
|
|
124
|
-
this.addContractInstancesFromLogs(contractInstanceLogs, this.currentTxNonRevertibleCache, 'non-revertible');
|
|
73
|
+
public addNewContracts(tx: Tx): void {
|
|
74
|
+
const contractDeploymentData = AllContractDeploymentData.fromTx(tx);
|
|
75
|
+
this.addContractsFromLogs(contractDeploymentData.getNonRevertibleContractDeploymentData());
|
|
76
|
+
this.addContractsFromLogs(contractDeploymentData.getRevertibleContractDeploymentData());
|
|
125
77
|
}
|
|
126
78
|
|
|
127
|
-
/**
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
const contractInstanceLogs = tx.data.forPublic
|
|
134
|
-
? tx.data.forPublic!.revertibleAccumulatedData.privateLogs.filter(l => !l.isEmpty())
|
|
135
|
-
: [];
|
|
136
|
-
|
|
137
|
-
this.addContractInstancesFromLogs(contractInstanceLogs, this.currentTxRevertibleCache, 'revertible');
|
|
79
|
+
/** Inserts typed contract instances directly into the current checkpoint. */
|
|
80
|
+
public addContracts(contractInstances?: ContractInstanceWithAddress[]): void {
|
|
81
|
+
const currentState = this.getCurrentState();
|
|
82
|
+
for (const instance of contractInstances ?? []) {
|
|
83
|
+
currentState.addInstance(instance.address, instance);
|
|
84
|
+
}
|
|
138
85
|
}
|
|
139
86
|
|
|
140
87
|
/**
|
|
141
|
-
*
|
|
142
|
-
*
|
|
143
|
-
* @param cache - The cache to store the contract classes in
|
|
144
|
-
* @param cacheType - Type of cache (for logging)
|
|
88
|
+
* Creates a new checkpoint, copying the current state for upcoming modifications,
|
|
89
|
+
* and enabling rollbacks to current state in case of a revert.
|
|
145
90
|
*/
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
) {
|
|
151
|
-
const contractClassEvents = siloedContractClassLogs
|
|
152
|
-
.filter((log: ContractClassLog) => ContractClassRegisteredEvent.isContractClassRegisteredEvent(log))
|
|
153
|
-
.map((log: ContractClassLog) => ContractClassRegisteredEvent.fromLog(log));
|
|
154
|
-
|
|
155
|
-
// Cache contract classes
|
|
156
|
-
await Promise.all(
|
|
157
|
-
contractClassEvents.map(async (event: ContractClassRegisteredEvent) => {
|
|
158
|
-
this.log.debug(`Adding class ${event.contractClassId.toString()} to contract's ${cacheType} tx cache`);
|
|
159
|
-
const contractClass = await event.toContractClassPublic();
|
|
160
|
-
|
|
161
|
-
cache.addClass(event.contractClassId, contractClass);
|
|
162
|
-
}),
|
|
163
|
-
);
|
|
91
|
+
public createCheckpoint(): void {
|
|
92
|
+
const currentState = this.getCurrentState();
|
|
93
|
+
const newState = currentState.fork();
|
|
94
|
+
this.contractStateStack.push(newState);
|
|
164
95
|
}
|
|
165
96
|
|
|
166
97
|
/**
|
|
167
|
-
*
|
|
168
|
-
* @param contractInstanceLogs - Contract instance logs to process
|
|
169
|
-
* @param cache - The cache to store the contract instances in
|
|
170
|
-
* @param cacheType - Type of cache (for logging)
|
|
98
|
+
* Commits the current checkpoint, accepting its state latest.
|
|
171
99
|
*/
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
contractInstanceEvents.forEach(e => {
|
|
179
|
-
this.log.debug(
|
|
180
|
-
`Adding instance ${e.address.toString()} with class ${e.contractClassId.toString()} to ${cacheType} tx contract cache`,
|
|
181
|
-
);
|
|
182
|
-
cache.addInstance(e.address, e.toContractInstance());
|
|
183
|
-
});
|
|
100
|
+
public commitCheckpoint(): void {
|
|
101
|
+
if (this.contractStateStack.length <= 1) {
|
|
102
|
+
throw new Error('No checkpoint to commit');
|
|
103
|
+
}
|
|
104
|
+
const topState = this.contractStateStack.pop()!;
|
|
105
|
+
this.contractStateStack[this.contractStateStack.length - 1] = topState;
|
|
184
106
|
}
|
|
185
107
|
|
|
186
108
|
/**
|
|
187
|
-
*
|
|
109
|
+
* Commits the current checkpoint, not erroring if there is no checkpoint
|
|
110
|
+
* to commit. This is useful to do a sanity commit at the end of tx execution,
|
|
111
|
+
* doing nothing if the checkpoint was already reverted, but truly committing
|
|
112
|
+
* otherwise.
|
|
188
113
|
*/
|
|
189
|
-
public
|
|
190
|
-
this.
|
|
191
|
-
|
|
192
|
-
|
|
114
|
+
public commitCheckpointOkIfNone(): void {
|
|
115
|
+
if (this.contractStateStack.length <= 1) {
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
const topState = this.contractStateStack.pop()!;
|
|
119
|
+
this.contractStateStack[this.contractStateStack.length - 1] = topState;
|
|
193
120
|
}
|
|
194
121
|
|
|
195
122
|
/**
|
|
196
|
-
*
|
|
197
|
-
*
|
|
123
|
+
* Reverts the current checkpoint, discarding its state and rolling back
|
|
124
|
+
* to the state as of the latest checkpoint.
|
|
198
125
|
*/
|
|
199
|
-
public
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
if (!onlyNonRevertibles) {
|
|
204
|
-
// Merge revertible tx cache into block cache
|
|
205
|
-
this.blockCache.mergeFrom(this.currentTxRevertibleCache);
|
|
126
|
+
public revertCheckpoint(): void {
|
|
127
|
+
if (this.contractStateStack.length <= 1) {
|
|
128
|
+
throw new Error('No checkpoint to revert');
|
|
206
129
|
}
|
|
130
|
+
this.contractStateStack.pop();
|
|
131
|
+
}
|
|
207
132
|
|
|
208
|
-
|
|
209
|
-
this.
|
|
210
|
-
this.currentTxRevertibleCache.clear();
|
|
133
|
+
private getCurrentState(): ContractsDbCheckpoint {
|
|
134
|
+
return this.contractStateStack[this.contractStateStack.length - 1];
|
|
211
135
|
}
|
|
212
136
|
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
137
|
+
// TODO(fcarreiro/alvaro): This method currently needs a blockNumber. Since this class
|
|
138
|
+
// is only ever used for a given block, it should be possible to construct it with the
|
|
139
|
+
// block number and then forget about it. However, since this class (and interface) is
|
|
140
|
+
// currently more externally exposed than we'd want to, Facundo preferred to not add it
|
|
141
|
+
// to the constructor right now. If we can make this class more private, we should
|
|
142
|
+
// reconsider this. A litmus test is in how many places we need to initialize with a
|
|
143
|
+
// dummy block number (tests or not) and pass block numbers to `super`.
|
|
144
|
+
// Note: Block number got changed to timestamp so this comment ^ is outdated. Keeping
|
|
145
|
+
// the comment as is as I am not part of the AVM cabal.
|
|
146
|
+
public async getContractInstance(
|
|
147
|
+
address: AztecAddress,
|
|
148
|
+
timestamp: UInt64,
|
|
149
|
+
): Promise<ContractInstanceWithAddress | undefined> {
|
|
150
|
+
const currentState = this.getCurrentState();
|
|
151
|
+
return currentState.getInstance(address) ?? (await this.dataSource.getContract(address, timestamp));
|
|
221
152
|
}
|
|
222
153
|
|
|
223
154
|
public async getContractClass(contractClassId: Fr): Promise<ContractClassPublic | undefined> {
|
|
224
|
-
|
|
225
|
-
return (
|
|
226
|
-
this.currentTxRevertibleCache.getClass(contractClassId) ??
|
|
227
|
-
this.currentTxNonRevertibleCache.getClass(contractClassId) ??
|
|
228
|
-
this.blockCache.getClass(contractClassId) ??
|
|
229
|
-
(await this.dataSource.getContractClass(contractClassId))
|
|
230
|
-
);
|
|
155
|
+
const currentState = this.getCurrentState();
|
|
156
|
+
return currentState.getClass(contractClassId) ?? (await this.dataSource.getContractClass(contractClassId));
|
|
231
157
|
}
|
|
232
158
|
|
|
233
159
|
public async getBytecodeCommitment(contractClassId: Fr): Promise<Fr | undefined> {
|
|
234
|
-
|
|
235
|
-
const
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
// Now try from the store
|
|
241
|
-
const fromStore = await this.dataSource.getBytecodeCommitment(contractClassId);
|
|
242
|
-
if (fromStore !== undefined) {
|
|
243
|
-
this.bytecodeCommitmentCache.set(key, fromStore);
|
|
244
|
-
return fromStore;
|
|
160
|
+
const currentState = this.getCurrentState();
|
|
161
|
+
const commitment =
|
|
162
|
+
currentState.getBytecodeCommitment(contractClassId) ??
|
|
163
|
+
(await this.dataSource.getBytecodeCommitment(contractClassId));
|
|
164
|
+
if (commitment !== undefined) {
|
|
165
|
+
return commitment;
|
|
245
166
|
}
|
|
246
|
-
|
|
247
|
-
//
|
|
167
|
+
// Not in the current state or the store, compute it here
|
|
168
|
+
// Get the contract class
|
|
248
169
|
const contractClass = await this.getContractClass(contractClassId);
|
|
170
|
+
|
|
249
171
|
if (contractClass === undefined) {
|
|
172
|
+
// cannot compute bytecode commitment if contract class is not found
|
|
250
173
|
return undefined;
|
|
251
174
|
}
|
|
252
175
|
|
|
253
176
|
const value = await computePublicBytecodeCommitment(contractClass.packedBytecode);
|
|
254
|
-
|
|
177
|
+
// Add to cache (current checkpoint state) so we don't compute again
|
|
178
|
+
currentState.addBytecodeCommitment(contractClassId, value);
|
|
255
179
|
return value;
|
|
256
180
|
}
|
|
257
181
|
|
|
258
182
|
public async getDebugFunctionName(address: AztecAddress, selector: FunctionSelector): Promise<string | undefined> {
|
|
259
|
-
return await this.dataSource.
|
|
183
|
+
return await this.dataSource.getDebugFunctionName(address, selector);
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
private addContractClassesFromEvents(
|
|
187
|
+
contractClassEvents: ContractClassPublishedEvent[],
|
|
188
|
+
state: ContractsDbCheckpoint,
|
|
189
|
+
) {
|
|
190
|
+
for (const event of contractClassEvents) {
|
|
191
|
+
this.log.debug(`Adding class ${event.contractClassId.toString()} to contract state`);
|
|
192
|
+
const contractClass = event.toContractClassPublic();
|
|
193
|
+
state.addClass(event.contractClassId, contractClass);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
private addContractInstancesFromEvents(
|
|
198
|
+
contractInstanceEvents: ContractInstancePublishedEvent[],
|
|
199
|
+
state: ContractsDbCheckpoint,
|
|
200
|
+
) {
|
|
201
|
+
contractInstanceEvents.forEach(e => {
|
|
202
|
+
this.log.debug(
|
|
203
|
+
`Adding instance ${e.address.toString()} with class ${e.contractClassId.toString()} to contract state`,
|
|
204
|
+
);
|
|
205
|
+
state.addInstance(e.address, e.toContractInstance());
|
|
206
|
+
});
|
|
260
207
|
}
|
|
261
208
|
}
|
|
262
209
|
|
|
263
210
|
/**
|
|
264
|
-
* A
|
|
211
|
+
* A high-level class that provides access to the merkle trees.
|
|
212
|
+
*
|
|
213
|
+
* This class is just a helper wrapper around a merkle db. Anything that you can do with it
|
|
214
|
+
* can also be done directly with the merkle db. This class should NOT be exposed or used
|
|
215
|
+
* outside of `simulator/src/public`.
|
|
216
|
+
*
|
|
217
|
+
* NOTE: This class is currently written in such a way that it would generate the
|
|
218
|
+
* necessary hints if used with a hinting merkle db. This is a bit of a leak of concepts.
|
|
219
|
+
* Eventually we can have everything depend on a config/factory at the TxSimulator level
|
|
220
|
+
* to decide whether to use hints or not (same with tracing, etc).
|
|
265
221
|
*/
|
|
266
|
-
export class
|
|
267
|
-
private logger
|
|
222
|
+
export class PublicTreesDB implements PublicStateDBInterface {
|
|
223
|
+
private logger: Logger;
|
|
268
224
|
|
|
269
|
-
constructor(
|
|
270
|
-
|
|
225
|
+
constructor(
|
|
226
|
+
private readonly db: MerkleTreeWriteOperations,
|
|
227
|
+
bindings?: LoggerBindings,
|
|
228
|
+
) {
|
|
229
|
+
this.logger = createLogger('simulator:public-trees-db', bindings);
|
|
271
230
|
}
|
|
272
231
|
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
public async createCheckpoint() {
|
|
277
|
-
await this.db.createCheckpoint();
|
|
278
|
-
}
|
|
232
|
+
public async storageRead(contract: AztecAddress, slot: Fr): Promise<Fr> {
|
|
233
|
+
const timer = new Timer();
|
|
234
|
+
const leafSlot = (await computePublicDataTreeLeafSlot(contract, slot)).toBigInt();
|
|
279
235
|
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
await this.db.commitCheckpoint();
|
|
285
|
-
}
|
|
236
|
+
const lowLeafResult = await this.db.getPreviousValueIndex(MerkleTreeId.PUBLIC_DATA_TREE, leafSlot);
|
|
237
|
+
if (!lowLeafResult) {
|
|
238
|
+
throw new Error('Low leaf not found');
|
|
239
|
+
}
|
|
286
240
|
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
241
|
+
// TODO: We need this for the hints. See class comment for more details.
|
|
242
|
+
await this.db.getSiblingPath(MerkleTreeId.PUBLIC_DATA_TREE, lowLeafResult.index);
|
|
243
|
+
// Unconditionally fetching the preimage for the hints. Move it to the hinting layer?
|
|
244
|
+
const preimage = (await this.db.getLeafPreimage(
|
|
245
|
+
MerkleTreeId.PUBLIC_DATA_TREE,
|
|
246
|
+
lowLeafResult.index,
|
|
247
|
+
)) as PublicDataTreeLeafPreimage;
|
|
293
248
|
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
249
|
+
const result = lowLeafResult.alreadyPresent ? preimage.leaf.value : Fr.ZERO;
|
|
250
|
+
this.logger.debug(`Storage read (contract=${contract}, slot=${slot}, value=${result})`, {
|
|
251
|
+
eventName: 'public-db-access',
|
|
252
|
+
duration: timer.ms(),
|
|
253
|
+
operation: 'storage-read',
|
|
254
|
+
} satisfies PublicDBAccessStats);
|
|
297
255
|
|
|
298
|
-
|
|
299
|
-
* Reads a value from public storage, returning zero if none.
|
|
300
|
-
* @param contract - Owner of the storage.
|
|
301
|
-
* @param slot - Slot to read in the contract storage.
|
|
302
|
-
* @returns The current value in the storage slot.
|
|
303
|
-
*/
|
|
304
|
-
public async storageRead(contract: AztecAddress, slot: Fr): Promise<Fr> {
|
|
305
|
-
return await readPublicState(this.db, contract, slot);
|
|
256
|
+
return result;
|
|
306
257
|
}
|
|
307
258
|
|
|
308
|
-
/**
|
|
309
|
-
* Records a write to public storage.
|
|
310
|
-
* @param contract - Owner of the storage.
|
|
311
|
-
* @param slot - Slot to read in the contract storage.
|
|
312
|
-
* @param newValue - The new value to store.
|
|
313
|
-
* @returns The slot of the written leaf in the public data tree.
|
|
314
|
-
*/
|
|
315
259
|
public async storageWrite(contract: AztecAddress, slot: Fr, newValue: Fr): Promise<void> {
|
|
260
|
+
const timer = new Timer();
|
|
316
261
|
const leafSlot = await computePublicDataTreeLeafSlot(contract, slot);
|
|
317
262
|
const publicDataWrite = new PublicDataWrite(leafSlot, newValue);
|
|
318
263
|
await this.db.sequentialInsert(MerkleTreeId.PUBLIC_DATA_TREE, [publicDataWrite.toBuffer()]);
|
|
264
|
+
|
|
265
|
+
this.logger.debug(`Storage write (contract=${contract}, slot=${slot}, value=${newValue})`, {
|
|
266
|
+
eventName: 'public-db-access',
|
|
267
|
+
duration: timer.ms(),
|
|
268
|
+
operation: 'storage-write',
|
|
269
|
+
} satisfies PublicDBAccessStats);
|
|
319
270
|
}
|
|
320
271
|
|
|
321
|
-
public async getL1ToL2LeafValue(leafIndex: bigint): Promise<Fr
|
|
272
|
+
public async getL1ToL2LeafValue(leafIndex: bigint): Promise<Fr> {
|
|
322
273
|
const timer = new Timer();
|
|
274
|
+
if (leafIndex > L1_TO_L2_MSG_TREE_LEAF_COUNT) {
|
|
275
|
+
throw new L1ToL2MessageIndexOutOfRangeError(Number(leafIndex));
|
|
276
|
+
}
|
|
323
277
|
const leafValue = await this.db.getLeafValue(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, leafIndex);
|
|
324
|
-
|
|
278
|
+
assert(leafValue !== undefined, 'Unexpected null response from l1 to l2 message tree');
|
|
279
|
+
// TODO: We need this for the hints. See class comment for more details.
|
|
280
|
+
await this.db.getSiblingPath(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, leafIndex);
|
|
281
|
+
|
|
282
|
+
this.logger.debug(`Fetched L1 to L2 message leaf value (leafIndex=${leafIndex}, value=${leafValue})`, {
|
|
325
283
|
eventName: 'public-db-access',
|
|
326
284
|
duration: timer.ms(),
|
|
327
285
|
operation: 'get-l1-to-l2-message-leaf-value',
|
|
@@ -329,41 +287,120 @@ export class WorldStateDB extends ContractsDataSourcePublicDB implements PublicS
|
|
|
329
287
|
return leafValue;
|
|
330
288
|
}
|
|
331
289
|
|
|
332
|
-
public async
|
|
290
|
+
public async getNoteHash(leafIndex: bigint): Promise<Fr> {
|
|
333
291
|
const timer = new Timer();
|
|
292
|
+
if (leafIndex > NOTE_HASH_TREE_LEAF_COUNT) {
|
|
293
|
+
throw new NoteHashIndexOutOfRangeError(Number(leafIndex));
|
|
294
|
+
}
|
|
334
295
|
const leafValue = await this.db.getLeafValue(MerkleTreeId.NOTE_HASH_TREE, leafIndex);
|
|
335
|
-
|
|
296
|
+
assert(leafValue !== undefined, 'Unexpected null response from note hash tree');
|
|
297
|
+
// TODO: We need this for the hints. See class comment for more details.
|
|
298
|
+
await this.db.getSiblingPath(MerkleTreeId.NOTE_HASH_TREE, leafIndex);
|
|
299
|
+
|
|
300
|
+
this.logger.debug(`Fetched note hash leaf value (leafIndex=${leafIndex}, value=${leafValue})`, {
|
|
336
301
|
eventName: 'public-db-access',
|
|
337
302
|
duration: timer.ms(),
|
|
338
|
-
operation: 'get-
|
|
303
|
+
operation: 'get-note-hash',
|
|
339
304
|
} satisfies PublicDBAccessStats);
|
|
340
305
|
return leafValue;
|
|
341
306
|
}
|
|
342
307
|
|
|
343
|
-
public async
|
|
308
|
+
public async writeNoteHash(noteHash: Fr): Promise<void> {
|
|
344
309
|
const timer = new Timer();
|
|
345
|
-
|
|
346
|
-
|
|
310
|
+
await this.db.appendLeaves(MerkleTreeId.NOTE_HASH_TREE, [noteHash]);
|
|
311
|
+
|
|
312
|
+
this.logger.debug(`Wrote note hash (noteHash=${noteHash})`, {
|
|
347
313
|
eventName: 'public-db-access',
|
|
348
314
|
duration: timer.ms(),
|
|
349
|
-
operation: '
|
|
315
|
+
operation: 'write-note-hash',
|
|
350
316
|
} satisfies PublicDBAccessStats);
|
|
351
|
-
return index;
|
|
352
317
|
}
|
|
353
|
-
}
|
|
354
318
|
|
|
355
|
-
|
|
356
|
-
|
|
319
|
+
public async checkNullifierExists(nullifier: Fr): Promise<boolean> {
|
|
320
|
+
const timer = new Timer();
|
|
321
|
+
const lowLeafResult = await this.db.getPreviousValueIndex(MerkleTreeId.NULLIFIER_TREE, nullifier.toBigInt());
|
|
322
|
+
if (!lowLeafResult) {
|
|
323
|
+
throw new Error('Low leaf not found');
|
|
324
|
+
}
|
|
325
|
+
// TODO: We need this for the hints. See class comment for more details.
|
|
326
|
+
await this.db.getSiblingPath(MerkleTreeId.NULLIFIER_TREE, lowLeafResult.index);
|
|
327
|
+
// TODO: We need this for the hints. See class comment for more details.
|
|
328
|
+
await this.db.getLeafPreimage(MerkleTreeId.NULLIFIER_TREE, lowLeafResult.index);
|
|
329
|
+
const exists = lowLeafResult.alreadyPresent;
|
|
330
|
+
|
|
331
|
+
this.logger.debug(`Checked nullifier exists (nullifier=${nullifier}, exists=${exists})`, {
|
|
332
|
+
eventName: 'public-db-access',
|
|
333
|
+
duration: timer.ms(),
|
|
334
|
+
operation: 'check-nullifier-exists',
|
|
335
|
+
} satisfies PublicDBAccessStats);
|
|
336
|
+
return exists;
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
public async writeNullifier(siloedNullifier: Fr): Promise<void> {
|
|
340
|
+
const timer = new Timer();
|
|
341
|
+
await this.db.sequentialInsert(MerkleTreeId.NULLIFIER_TREE, [siloedNullifier.toBuffer()]);
|
|
342
|
+
|
|
343
|
+
this.logger.debug(`Wrote nullifier (nullifier=${siloedNullifier})`, {
|
|
344
|
+
eventName: 'public-db-access',
|
|
345
|
+
duration: timer.ms(),
|
|
346
|
+
operation: 'write-nullifier',
|
|
347
|
+
} satisfies PublicDBAccessStats);
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
public async padTree(treeId: MerkleTreeId, leavesToInsert: number): Promise<void> {
|
|
351
|
+
const timer = new Timer();
|
|
352
|
+
|
|
353
|
+
switch (treeId) {
|
|
354
|
+
// Indexed trees.
|
|
355
|
+
case MerkleTreeId.NULLIFIER_TREE:
|
|
356
|
+
await this.db.batchInsert(
|
|
357
|
+
treeId,
|
|
358
|
+
Array(leavesToInsert).fill(NullifierLeaf.empty().toBuffer()),
|
|
359
|
+
NULLIFIER_SUBTREE_HEIGHT,
|
|
360
|
+
);
|
|
361
|
+
break;
|
|
362
|
+
case MerkleTreeId.PUBLIC_DATA_TREE:
|
|
363
|
+
await this.db.batchInsert(
|
|
364
|
+
treeId,
|
|
365
|
+
Array(leavesToInsert).fill(PublicDataTreeLeaf.empty().toBuffer()),
|
|
366
|
+
PUBLIC_DATA_SUBTREE_HEIGHT,
|
|
367
|
+
);
|
|
368
|
+
break;
|
|
369
|
+
// Append-only trees.
|
|
370
|
+
case MerkleTreeId.L1_TO_L2_MESSAGE_TREE:
|
|
371
|
+
case MerkleTreeId.NOTE_HASH_TREE:
|
|
372
|
+
await this.db.appendLeaves(treeId, Array(leavesToInsert).fill(Fr.ZERO));
|
|
373
|
+
break;
|
|
374
|
+
default:
|
|
375
|
+
throw new Error(`Padding not supported for tree ${treeId}`);
|
|
376
|
+
}
|
|
357
377
|
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
378
|
+
this.logger.debug(`Padded tree (tree=${getTreeName(treeId)}, leavesToInsert=${leavesToInsert})`, {
|
|
379
|
+
eventName: 'public-db-access',
|
|
380
|
+
duration: timer.ms(),
|
|
381
|
+
operation: 'pad-tree',
|
|
382
|
+
} satisfies PublicDBAccessStats);
|
|
361
383
|
}
|
|
362
384
|
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
)) as PublicDataTreeLeafPreimage;
|
|
385
|
+
public async createCheckpoint(): Promise<void> {
|
|
386
|
+
await this.db.createCheckpoint();
|
|
387
|
+
}
|
|
367
388
|
|
|
368
|
-
|
|
389
|
+
public async commitCheckpoint(): Promise<void> {
|
|
390
|
+
await this.db.commitCheckpoint();
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
public async revertCheckpoint(): Promise<void> {
|
|
394
|
+
await this.db.revertCheckpoint();
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
public async getTreeSnapshots(): Promise<TreeSnapshots> {
|
|
398
|
+
const stateReference = await this.db.getStateReference();
|
|
399
|
+
return new TreeSnapshots(
|
|
400
|
+
stateReference.l1ToL2MessageTree,
|
|
401
|
+
stateReference.partial.noteHashTree,
|
|
402
|
+
stateReference.partial.nullifierTree,
|
|
403
|
+
stateReference.partial.publicDataTree,
|
|
404
|
+
);
|
|
405
|
+
}
|
|
369
406
|
}
|