@aztec/simulator 0.0.0-test.1 → 0.0.1-commit.5daedc8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -0
- package/dest/client.d.ts +6 -4
- package/dest/client.d.ts.map +1 -1
- package/dest/client.js +4 -2
- package/dest/common/errors.d.ts +5 -14
- 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 +12 -6
- package/dest/private/acvm/acvm.d.ts.map +1 -1
- package/dest/private/acvm/acvm.js +10 -16
- package/dest/private/acvm/acvm_types.d.ts +2 -2
- package/dest/private/acvm/acvm_types.d.ts.map +1 -1
- package/dest/private/acvm/deserialize.d.ts +18 -19
- package/dest/private/acvm/deserialize.d.ts.map +1 -1
- package/dest/private/acvm/deserialize.js +31 -23
- package/dest/private/acvm/index.d.ts +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 +20 -3
- package/dest/private/acvm/serialize.d.ts.map +1 -1
- package/dest/private/acvm/serialize.js +53 -0
- package/dest/private/acvm_native.d.ts +39 -0
- package/dest/private/acvm_native.d.ts.map +1 -0
- package/dest/private/{providers/acvm_native.js → acvm_native.js} +26 -20
- package/dest/private/acvm_wasm.d.ts +15 -0
- package/dest/private/acvm_wasm.d.ts.map +1 -0
- package/dest/private/{providers/acvm_wasm.js → acvm_wasm.js} +22 -19
- package/dest/private/acvm_wasm_with_blobs.d.ts +20 -0
- package/dest/private/acvm_wasm_with_blobs.d.ts.map +1 -0
- package/dest/private/acvm_wasm_with_blobs.js +35 -0
- package/dest/private/circuit_recording/circuit_recorder.d.ts +108 -0
- package/dest/private/circuit_recording/circuit_recorder.d.ts.map +1 -0
- package/dest/private/circuit_recording/circuit_recorder.js +209 -0
- package/dest/private/circuit_recording/file_circuit_recorder.d.ts +31 -0
- package/dest/private/circuit_recording/file_circuit_recorder.d.ts.map +1 -0
- package/dest/private/circuit_recording/file_circuit_recorder.js +135 -0
- package/dest/private/circuit_recording/memory_circuit_recorder.d.ts +5 -0
- package/dest/private/circuit_recording/memory_circuit_recorder.d.ts.map +1 -0
- package/dest/private/circuit_recording/memory_circuit_recorder.js +9 -0
- package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts +21 -0
- package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts.map +1 -0
- package/dest/private/circuit_recording/simulator_recorder_wrapper.js +44 -0
- package/dest/private/circuit_simulator.d.ts +35 -0
- package/dest/private/circuit_simulator.d.ts.map +1 -0
- package/dest/private/circuit_simulator.js +43 -0
- package/dest/private/factory.d.ts +12 -0
- package/dest/private/factory.d.ts.map +1 -0
- package/dest/private/{providers/factory.js → factory.js} +2 -2
- package/dest/public/avm/avm_context.d.ts +6 -6
- package/dest/public/avm/avm_context.d.ts.map +1 -1
- package/dest/public/avm/avm_contract_call_result.d.ts +5 -3
- package/dest/public/avm/avm_contract_call_result.d.ts.map +1 -1
- package/dest/public/avm/avm_contract_call_result.js +11 -7
- package/dest/public/avm/avm_execution_environment.d.ts +4 -2
- package/dest/public/avm/avm_execution_environment.d.ts.map +1 -1
- package/dest/public/avm/avm_execution_environment.js +4 -2
- 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 +27 -35
- package/dest/public/avm/avm_machine_state.d.ts +3 -1
- package/dest/public/avm/avm_machine_state.d.ts.map +1 -1
- package/dest/public/avm/avm_machine_state.js +2 -0
- package/dest/public/avm/avm_memory_types.d.ts +99 -88
- package/dest/public/avm/avm_memory_types.d.ts.map +1 -1
- package/dest/public/avm/avm_memory_types.js +17 -6
- package/dest/public/avm/avm_simulator.d.ts +6 -6
- package/dest/public/avm/avm_simulator.d.ts.map +1 -1
- package/dest/public/avm/avm_simulator.js +23 -35
- package/dest/public/avm/avm_simulator_interface.d.ts +9 -0
- package/dest/public/avm/avm_simulator_interface.d.ts.map +1 -0
- package/dest/public/avm/avm_simulator_interface.js +3 -0
- package/dest/public/avm/errors.d.ts +7 -31
- package/dest/public/avm/errors.d.ts.map +1 -1
- package/dest/public/avm/errors.js +7 -57
- package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +6 -5
- package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +1 -1
- package/dest/public/avm/fixtures/avm_simulation_tester.js +22 -15
- package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts +7 -5
- package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +1 -1
- package/dest/public/avm/fixtures/base_avm_simulation_tester.js +37 -14
- package/dest/public/avm/fixtures/initializers.d.ts +42 -0
- package/dest/public/avm/fixtures/initializers.d.ts.map +1 -0
- package/dest/public/avm/fixtures/initializers.js +44 -0
- package/dest/public/avm/fixtures/utils.d.ts +38 -0
- package/dest/public/avm/fixtures/utils.d.ts.map +1 -0
- package/dest/public/avm/fixtures/utils.js +95 -0
- package/dest/public/avm/index.d.ts +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 +3 -3
- package/dest/public/avm/opcodes/accrued_substate.d.ts.map +1 -1
- package/dest/public/avm/opcodes/accrued_substate.js +28 -25
- package/dest/public/avm/opcodes/addressing_mode.d.ts +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 +17 -7
- package/dest/public/avm/opcodes/arithmetic.d.ts.map +1 -1
- package/dest/public/avm/opcodes/arithmetic.js +16 -2
- package/dest/public/avm/opcodes/bitwise.d.ts +10 -18
- package/dest/public/avm/opcodes/bitwise.d.ts.map +1 -1
- package/dest/public/avm/opcodes/bitwise.js +19 -26
- package/dest/public/avm/opcodes/comparators.d.ts +4 -4
- 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 +2 -3
- package/dest/public/avm/opcodes/contract.d.ts.map +1 -1
- package/dest/public/avm/opcodes/contract.js +9 -10
- package/dest/public/avm/opcodes/control_flow.d.ts +1 -1
- package/dest/public/avm/opcodes/control_flow.d.ts.map +1 -1
- package/dest/public/avm/opcodes/control_flow.js +10 -8
- package/dest/public/avm/opcodes/conversion.d.ts +2 -1
- package/dest/public/avm/opcodes/conversion.d.ts.map +1 -1
- package/dest/public/avm/opcodes/conversion.js +267 -3
- package/dest/public/avm/opcodes/ec_add.d.ts +2 -2
- package/dest/public/avm/opcodes/ec_add.d.ts.map +1 -1
- package/dest/public/avm/opcodes/ec_add.js +6 -6
- package/dest/public/avm/opcodes/environment_getters.d.ts +3 -3
- package/dest/public/avm/opcodes/environment_getters.d.ts.map +1 -1
- package/dest/public/avm/opcodes/environment_getters.js +17 -19
- package/dest/public/avm/opcodes/external_calls.d.ts +9 -8
- package/dest/public/avm/opcodes/external_calls.d.ts.map +1 -1
- package/dest/public/avm/opcodes/external_calls.js +39 -34
- package/dest/public/avm/opcodes/hashing.d.ts +2 -2
- package/dest/public/avm/opcodes/hashing.d.ts.map +1 -1
- package/dest/public/avm/opcodes/hashing.js +6 -6
- package/dest/public/avm/opcodes/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 +1 -1
- package/dest/public/avm/opcodes/instruction_impl.d.ts.map +1 -1
- package/dest/public/avm/opcodes/memory.d.ts +6 -6
- package/dest/public/avm/opcodes/memory.d.ts.map +1 -1
- package/dest/public/avm/opcodes/memory.js +37 -33
- package/dest/public/avm/opcodes/misc.d.ts +3 -2
- package/dest/public/avm/opcodes/misc.d.ts.map +1 -1
- package/dest/public/avm/opcodes/misc.js +41 -16
- package/dest/public/avm/opcodes/storage.d.ts +3 -3
- package/dest/public/avm/opcodes/storage.d.ts.map +1 -1
- package/dest/public/avm/opcodes/storage.js +7 -5
- package/dest/public/avm/revert_reason.d.ts +18 -0
- package/dest/public/avm/revert_reason.d.ts.map +1 -0
- package/dest/public/avm/revert_reason.js +38 -0
- package/dest/public/avm/serialization/buffer_cursor.d.ts +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 +70 -69
- package/dest/public/avm/serialization/instruction_serialization.d.ts +14 -5
- package/dest/public/avm/serialization/instruction_serialization.d.ts.map +1 -1
- package/dest/public/avm/serialization/instruction_serialization.js +70 -35
- package/dest/public/avm/test_utils.d.ts +11 -14
- package/dest/public/avm/test_utils.d.ts.map +1 -1
- package/dest/public/avm/test_utils.js +16 -24
- 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 +5 -0
- package/dest/public/debug_fn_name.d.ts.map +1 -0
- package/dest/public/debug_fn_name.js +9 -0
- package/dest/public/executor_metrics.d.ts +12 -4
- package/dest/public/executor_metrics.d.ts.map +1 -1
- package/dest/public/executor_metrics.js +37 -6
- package/dest/public/executor_metrics_interface.d.ts +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 +326 -0
- package/dest/public/fixtures/custom_bytecode_tester.d.ts +12 -0
- package/dest/public/fixtures/custom_bytecode_tester.d.ts.map +1 -0
- package/dest/public/fixtures/custom_bytecode_tester.js +29 -0
- package/dest/public/fixtures/custom_bytecode_tests.d.ts +9 -0
- package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +1 -0
- package/dest/public/fixtures/custom_bytecode_tests.js +109 -0
- package/dest/public/fixtures/index.d.ts +8 -1
- package/dest/public/fixtures/index.d.ts.map +1 -1
- package/dest/public/fixtures/index.js +7 -0
- package/dest/public/fixtures/minimal_public_tx.d.ts +9 -0
- package/dest/public/fixtures/minimal_public_tx.d.ts.map +1 -0
- package/dest/public/fixtures/minimal_public_tx.js +29 -0
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts +35 -14
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
- package/dest/public/fixtures/public_tx_simulation_tester.js +100 -71
- package/dest/public/fixtures/simple_contract_data_source.d.ts +35 -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 +8 -0
- package/dest/public/fixtures/token_test.d.ts.map +1 -0
- package/dest/public/fixtures/token_test.js +94 -0
- package/dest/public/fixtures/utils.d.ts +17 -4
- package/dest/public/fixtures/utils.d.ts.map +1 -1
- package/dest/public/fixtures/utils.js +100 -58
- package/dest/public/hinting_db_sources.d.ts +78 -0
- package/dest/public/hinting_db_sources.d.ts.map +1 -0
- package/dest/public/hinting_db_sources.js +350 -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 +51 -101
- package/dest/public/public_db_sources.d.ts.map +1 -1
- package/dest/public/public_db_sources.js +219 -192
- package/dest/public/public_errors.d.ts +12 -0
- package/dest/public/public_errors.d.ts.map +1 -0
- package/dest/public/public_errors.js +13 -0
- package/dest/public/public_processor/guarded_merkle_tree.d.ts +49 -0
- package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -0
- package/dest/public/public_processor/guarded_merkle_tree.js +108 -0
- package/dest/public/public_processor/public_processor.d.ts +25 -37
- package/dest/public/public_processor/public_processor.d.ts.map +1 -1
- package/dest/public/public_processor/public_processor.js +154 -111
- package/dest/public/public_processor/public_processor_metrics.d.ts +3 -3
- package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
- package/dest/public/public_processor/public_processor_metrics.js +1 -1
- package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts +30 -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 +133 -0
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +66 -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 +210 -0
- package/dest/public/public_tx_simulator/index.d.ts +5 -0
- package/dest/public/public_tx_simulator/index.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/index.js +2 -0
- package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +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 +23 -30
- package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/public_tx_context.js +71 -91
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +36 -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 +208 -206
- package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts +9 -0
- package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/public_tx_simulator_interface.js +1 -0
- package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts +21 -0
- package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.js +39 -0
- package/dest/public/side_effect_errors.d.ts +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 +21 -67
- package/dest/public/side_effect_trace.d.ts.map +1 -1
- package/dest/public/side_effect_trace.js +71 -121
- package/dest/public/side_effect_trace_interface.d.ts +12 -24
- 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 +3 -6
- 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 +3 -3
- package/dest/public/state_manager/public_storage.d.ts.map +1 -0
- package/dest/public/state_manager/state_manager.d.ts +159 -0
- package/dest/public/state_manager/state_manager.d.ts.map +1 -0
- package/dest/public/state_manager/state_manager.js +392 -0
- package/dest/public/test_executor_metrics.d.ts +55 -0
- package/dest/public/test_executor_metrics.d.ts.map +1 -0
- package/dest/public/test_executor_metrics.js +307 -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 +79 -44
- package/src/common/index.ts +0 -1
- package/src/private/acvm/acvm.ts +17 -32
- package/src/private/acvm/acvm_types.ts +1 -1
- package/src/private/acvm/deserialize.ts +35 -29
- package/src/private/acvm/index.ts +0 -1
- package/src/private/acvm/serialize.ts +63 -0
- package/src/private/{providers/acvm_native.ts → acvm_native.ts} +47 -24
- package/src/private/acvm_wasm.ts +72 -0
- package/src/private/acvm_wasm_with_blobs.ts +54 -0
- package/src/private/circuit_recording/circuit_recorder.ts +260 -0
- package/src/private/circuit_recording/file_circuit_recorder.ts +158 -0
- package/src/private/circuit_recording/memory_circuit_recorder.ts +11 -0
- package/src/private/circuit_recording/simulator_recorder_wrapper.ts +91 -0
- package/src/private/circuit_simulator.ts +90 -0
- package/src/private/{providers/factory.ts → factory.ts} +6 -6
- package/src/public/avm/avm_context.ts +4 -4
- package/src/public/avm/avm_contract_call_result.ts +17 -5
- package/src/public/avm/avm_execution_environment.ts +8 -1
- package/src/public/avm/avm_gas.ts +23 -35
- package/src/public/avm/avm_machine_state.ts +5 -0
- package/src/public/avm/avm_memory_types.ts +19 -6
- package/src/public/avm/avm_simulator.ts +43 -54
- package/src/public/avm/avm_simulator_interface.ts +8 -0
- package/src/public/avm/errors.ts +8 -77
- package/src/public/avm/fixtures/avm_simulation_tester.ts +32 -21
- package/src/public/avm/fixtures/base_avm_simulation_tester.ts +45 -12
- package/src/public/avm/fixtures/initializers.ts +102 -0
- package/src/public/avm/fixtures/utils.ts +150 -0
- package/src/public/avm/index.ts +0 -2
- package/src/public/avm/opcodes/accrued_substate.ts +64 -29
- package/src/public/avm/opcodes/addressing_mode.ts +56 -32
- package/src/public/avm/opcodes/arithmetic.ts +24 -2
- package/src/public/avm/opcodes/bitwise.ts +33 -29
- package/src/public/avm/opcodes/comparators.ts +6 -3
- package/src/public/avm/opcodes/contract.ts +10 -7
- package/src/public/avm/opcodes/control_flow.ts +19 -10
- package/src/public/avm/opcodes/conversion.ts +27 -3
- package/src/public/avm/opcodes/ec_add.ts +9 -6
- package/src/public/avm/opcodes/environment_getters.ts +27 -22
- package/src/public/avm/opcodes/external_calls.ts +61 -29
- package/src/public/avm/opcodes/hashing.ts +28 -8
- package/src/public/avm/opcodes/instruction.ts +31 -21
- package/src/public/avm/opcodes/memory.ts +71 -32
- package/src/public/avm/opcodes/misc.ts +60 -18
- package/src/public/avm/opcodes/storage.ts +22 -6
- package/src/public/avm/revert_reason.ts +55 -0
- package/src/public/avm/serialization/buffer_cursor.ts +4 -1
- package/src/public/avm/serialization/bytecode_serialization.ts +72 -74
- package/src/public/avm/serialization/instruction_serialization.ts +75 -34
- package/src/public/avm/test_utils.ts +24 -41
- package/src/public/contracts_db_checkpoint.ts +41 -0
- package/src/public/db_interfaces.ts +76 -0
- package/src/{common → public}/debug_fn_name.ts +7 -7
- package/src/public/executor_metrics.ts +56 -6
- 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 +169 -0
- package/src/public/fixtures/custom_bytecode_tester.ts +49 -0
- package/src/public/fixtures/custom_bytecode_tests.ts +135 -0
- package/src/public/fixtures/index.ts +7 -0
- package/src/public/fixtures/minimal_public_tx.ts +35 -0
- package/src/public/fixtures/public_tx_simulation_tester.ts +166 -113
- package/src/public/{avm/fixtures → fixtures}/simple_contract_data_source.ts +36 -18
- package/src/public/fixtures/token_test.ts +139 -0
- package/src/public/fixtures/utils.ts +141 -68
- package/src/public/hinting_db_sources.ts +602 -0
- package/src/public/index.ts +5 -8
- package/src/public/public_db_sources.ts +278 -258
- package/src/public/public_errors.ts +14 -0
- package/src/public/public_processor/guarded_merkle_tree.ts +153 -0
- package/src/public/public_processor/public_processor.ts +212 -164
- package/src/public/public_processor/public_processor_metrics.ts +2 -2
- package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +162 -0
- package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +306 -0
- package/src/public/public_tx_simulator/index.ts +4 -0
- package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +105 -0
- package/src/public/public_tx_simulator/public_tx_context.ts +167 -194
- package/src/public/public_tx_simulator/public_tx_simulator.ts +292 -265
- package/src/public/public_tx_simulator/public_tx_simulator_interface.ts +10 -0
- package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +63 -0
- package/src/public/side_effect_errors.ts +91 -1
- package/src/public/side_effect_trace.ts +94 -320
- package/src/public/side_effect_trace_interface.ts +10 -58
- package/src/public/state_manager/index.ts +1 -0
- package/src/public/{avm/journal → state_manager}/nullifiers.ts +5 -11
- package/src/public/{avm/journal → state_manager}/public_storage.ts +2 -2
- package/src/public/state_manager/state_manager.ts +553 -0
- package/src/public/test_executor_metrics.ts +397 -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_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/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
- /package/dest/public/{avm/journal → state_manager}/public_storage.js +0 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
2
|
+
import { GlobalVariables } from '@aztec/stdlib/tx';
|
|
3
|
+
import type { UInt64 } from '@aztec/stdlib/types';
|
|
4
|
+
import type { PublicContractsDB, PublicTreesDB } from '../../public_db_sources.js';
|
|
5
|
+
import type { PublicSideEffectTraceInterface } from '../../side_effect_trace_interface.js';
|
|
6
|
+
import { NullifierManager } from '../../state_manager/nullifiers.js';
|
|
7
|
+
import { PublicStorage } from '../../state_manager/public_storage.js';
|
|
8
|
+
import { PublicPersistableStateManager } from '../../state_manager/state_manager.js';
|
|
9
|
+
import { AvmContext } from '../avm_context.js';
|
|
10
|
+
import { AvmExecutionEnvironment } from '../avm_execution_environment.js';
|
|
11
|
+
import { AvmMachineState } from '../avm_machine_state.js';
|
|
12
|
+
/**
|
|
13
|
+
* Create a new AVM context with default values.
|
|
14
|
+
*/
|
|
15
|
+
export declare function initContext(overrides?: {
|
|
16
|
+
persistableState?: PublicPersistableStateManager;
|
|
17
|
+
env?: AvmExecutionEnvironment;
|
|
18
|
+
machineState?: AvmMachineState;
|
|
19
|
+
}): AvmContext;
|
|
20
|
+
/** Creates an empty state manager with mocked host storage. */
|
|
21
|
+
export declare function initPersistableStateManager(overrides?: {
|
|
22
|
+
treesDB?: PublicTreesDB;
|
|
23
|
+
contractsDB?: PublicContractsDB;
|
|
24
|
+
trace?: PublicSideEffectTraceInterface;
|
|
25
|
+
publicStorage?: PublicStorage;
|
|
26
|
+
nullifiers?: NullifierManager;
|
|
27
|
+
firstNullifier?: Fr;
|
|
28
|
+
timestamp?: UInt64;
|
|
29
|
+
}): PublicPersistableStateManager;
|
|
30
|
+
/**
|
|
31
|
+
* Create an empty instance of the Execution Environment where all values are zero, unless overridden in the overrides object
|
|
32
|
+
*/
|
|
33
|
+
export declare function initExecutionEnvironment(overrides?: Partial<AvmExecutionEnvironment>): AvmExecutionEnvironment;
|
|
34
|
+
/**
|
|
35
|
+
* Create an empty instance of the Execution Environment where all values are zero, unless overridden in the overrides object
|
|
36
|
+
*/
|
|
37
|
+
export declare function initGlobalVariables(overrides?: Partial<GlobalVariables>): GlobalVariables;
|
|
38
|
+
/**
|
|
39
|
+
* Create an empty instance of the Machine State where all values are set to a large enough amount, unless overridden in the overrides object
|
|
40
|
+
*/
|
|
41
|
+
export declare function initMachineState(overrides?: Partial<AvmMachineState>): AvmMachineState;
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdGlhbGl6ZXJzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcHVibGljL2F2bS9maXh0dXJlcy9pbml0aWFsaXplcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBSTlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNuRCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUlsRCxPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRixPQUFPLEtBQUssRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNyRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBSTFEOztHQUVHO0FBQ0gsd0JBQWdCLFdBQVcsQ0FBQyxTQUFTLENBQUMsRUFBRTtJQUN0QyxnQkFBZ0IsQ0FBQyxFQUFFLDZCQUE2QixDQUFDO0lBQ2pELEdBQUcsQ0FBQyxFQUFFLHVCQUF1QixDQUFDO0lBQzlCLFlBQVksQ0FBQyxFQUFFLGVBQWUsQ0FBQztDQUNoQyxHQUFHLFVBQVUsQ0FRYjtBQUVELCtEQUErRDtBQUMvRCx3QkFBZ0IsMkJBQTJCLENBQUMsU0FBUyxDQUFDLEVBQUU7SUFDdEQsT0FBTyxDQUFDLEVBQUUsYUFBYSxDQUFDO0lBQ3hCLFdBQVcsQ0FBQyxFQUFFLGlCQUFpQixDQUFDO0lBQ2hDLEtBQUssQ0FBQyxFQUFFLDhCQUE4QixDQUFDO0lBQ3ZDLGFBQWEsQ0FBQyxFQUFFLGFBQWEsQ0FBQztJQUM5QixVQUFVLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQztJQUM5QixjQUFjLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDcEIsU0FBUyxDQUFDLEVBQUUsTUFBTSxDQUFDO0NBQ3BCLEdBQUcsNkJBQTZCLENBVWhDO0FBRUQ7O0dBRUc7QUFDSCx3QkFBZ0Isd0JBQXdCLENBQUMsU0FBUyxDQUFDLEVBQUUsT0FBTyxDQUFDLHVCQUF1QixDQUFDLEdBQUcsdUJBQXVCLENBVzlHO0FBRUQ7O0dBRUc7QUFDSCx3QkFBZ0IsbUJBQW1CLENBQUMsU0FBUyxDQUFDLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQyxHQUFHLGVBQWUsQ0FXekY7QUFFRDs7R0FFRztBQUNILHdCQUFnQixnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsRUFBRSxPQUFPLENBQUMsZUFBZSxDQUFDLEdBQUcsZUFBZSxDQUt0RiJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initializers.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/fixtures/initializers.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAI9C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAIlD,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AACnF,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC;AAC3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACtE,OAAO,EAAE,6BAA6B,EAAE,MAAM,sCAAsC,CAAC;AACrF,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAI1D;;GAEG;AACH,wBAAgB,WAAW,CAAC,SAAS,CAAC,EAAE;IACtC,gBAAgB,CAAC,EAAE,6BAA6B,CAAC;IACjD,GAAG,CAAC,EAAE,uBAAuB,CAAC;IAC9B,YAAY,CAAC,EAAE,eAAe,CAAC;CAChC,GAAG,UAAU,CAQb;AAED,+DAA+D;AAC/D,wBAAgB,2BAA2B,CAAC,SAAS,CAAC,EAAE;IACtD,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,KAAK,CAAC,EAAE,8BAA8B,CAAC;IACvC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,cAAc,CAAC,EAAE,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,6BAA6B,CAUhC;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAAG,uBAAuB,CAW9G;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,CAWzF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,CAKtF"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { AVM_MAX_PROCESSABLE_L2_GAS } from '@aztec/constants';
|
|
2
|
+
import { SlotNumber } from '@aztec/foundation/branded-types';
|
|
3
|
+
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
4
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
5
|
+
import { PublicSimulatorConfig } from '@aztec/stdlib/avm';
|
|
6
|
+
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
7
|
+
import { GasFees } from '@aztec/stdlib/gas';
|
|
8
|
+
import { GlobalVariables } from '@aztec/stdlib/tx';
|
|
9
|
+
import { mock } from 'jest-mock-extended';
|
|
10
|
+
import { PublicPersistableStateManager } from '../../state_manager/state_manager.js';
|
|
11
|
+
import { AvmContext } from '../avm_context.js';
|
|
12
|
+
import { AvmExecutionEnvironment } from '../avm_execution_environment.js';
|
|
13
|
+
import { AvmMachineState } from '../avm_machine_state.js';
|
|
14
|
+
import { AvmSimulator } from '../avm_simulator.js';
|
|
15
|
+
import { DEFAULT_TIMESTAMP } from './utils.js';
|
|
16
|
+
/**
|
|
17
|
+
* Create a new AVM context with default values.
|
|
18
|
+
*/ export function initContext(overrides) {
|
|
19
|
+
const ctx = new AvmContext(overrides?.persistableState || initPersistableStateManager(), overrides?.env || initExecutionEnvironment(), overrides?.machineState || initMachineState());
|
|
20
|
+
ctx.provideSimulator = AvmSimulator.build;
|
|
21
|
+
return ctx;
|
|
22
|
+
}
|
|
23
|
+
/** Creates an empty state manager with mocked host storage. */ export function initPersistableStateManager(overrides) {
|
|
24
|
+
const treesDB = overrides?.treesDB || mock();
|
|
25
|
+
return new PublicPersistableStateManager(treesDB, overrides?.contractsDB || mock(), overrides?.trace || mock(), overrides?.firstNullifier || new Fr(27), overrides?.timestamp || DEFAULT_TIMESTAMP, /*doMerkleOperations=*/ false);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Create an empty instance of the Execution Environment where all values are zero, unless overridden in the overrides object
|
|
29
|
+
*/ export function initExecutionEnvironment(overrides) {
|
|
30
|
+
return new AvmExecutionEnvironment(overrides?.address ?? AztecAddress.zero(), overrides?.sender ?? AztecAddress.zero(), overrides?.contractCallDepth ?? Fr.zero(), overrides?.transactionFee ?? Fr.zero(), overrides?.globals ?? GlobalVariables.empty(), overrides?.isStaticCall ?? false, overrides?.calldata ?? [], overrides?.config ?? PublicSimulatorConfig.empty());
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Create an empty instance of the Execution Environment where all values are zero, unless overridden in the overrides object
|
|
34
|
+
*/ export function initGlobalVariables(overrides) {
|
|
35
|
+
return new GlobalVariables(overrides?.chainId ?? Fr.zero(), overrides?.version ?? Fr.zero(), overrides?.blockNumber ?? 0, overrides?.slotNumber ?? SlotNumber.ZERO, overrides?.timestamp ?? 0n, overrides?.coinbase ?? EthAddress.ZERO, overrides?.feeRecipient ?? AztecAddress.zero(), overrides?.gasFees ?? GasFees.empty());
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Create an empty instance of the Machine State where all values are set to a large enough amount, unless overridden in the overrides object
|
|
39
|
+
*/ export function initMachineState(overrides) {
|
|
40
|
+
return AvmMachineState.fromState({
|
|
41
|
+
l2GasLeft: overrides?.l2GasLeft ?? AVM_MAX_PROCESSABLE_L2_GAS,
|
|
42
|
+
daGasLeft: overrides?.daGasLeft ?? 1e8
|
|
43
|
+
});
|
|
44
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
2
|
+
import { type ContractArtifact, type FunctionAbi, type FunctionArtifact, FunctionSelector } from '@aztec/stdlib/abi';
|
|
3
|
+
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
4
|
+
import { type ContractClassPublic, type ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
5
|
+
import type { UInt64 } from '@aztec/stdlib/types';
|
|
6
|
+
import { Field, Uint8, Uint32, Uint64 } from '../avm_memory_types.js';
|
|
7
|
+
import type { AvmRevertReason } from '../errors.js';
|
|
8
|
+
export declare const PUBLIC_DISPATCH_FN_NAME = "public_dispatch";
|
|
9
|
+
export declare const DEFAULT_TIMESTAMP: UInt64;
|
|
10
|
+
export declare const DEFAULT_BLOCK_NUMBER = 42;
|
|
11
|
+
/**
|
|
12
|
+
* Create a new object with all the same properties as the original, except for the ones in the overrides object.
|
|
13
|
+
*/
|
|
14
|
+
export declare function allSameExcept(original: any, overrides: any): any;
|
|
15
|
+
export declare function randomMemoryBytes(length: number): Uint8[];
|
|
16
|
+
export declare function randomMemoryUint32s(length: number): Uint32[];
|
|
17
|
+
export declare function randomMemoryUint64s(length: number): Uint64[];
|
|
18
|
+
export declare function randomMemoryFields(length: number): Field[];
|
|
19
|
+
export declare function getFunctionSelector(functionName: string, contractArtifact: ContractArtifact): Promise<FunctionSelector>;
|
|
20
|
+
export declare function getContractFunctionArtifact(functionName: string, contractArtifact: ContractArtifact): FunctionArtifact | undefined;
|
|
21
|
+
export declare function getContractFunctionAbi(functionName: string, contractArtifact: ContractArtifact): FunctionAbi | undefined;
|
|
22
|
+
export declare function resolveContractAssertionMessage(functionName: string, revertReason: AvmRevertReason, output: Fr[], contractArtifact: ContractArtifact): string | undefined;
|
|
23
|
+
/**
|
|
24
|
+
* Create a contract class and instance given constructor args, artifact, etc.
|
|
25
|
+
* NOTE: This is useful for testing real-ish contract class registration and instance deployment TXs (via logs)
|
|
26
|
+
* @param constructorArgs - The constructor arguments for the contract.
|
|
27
|
+
* @param deployer - The deployer of the contract.
|
|
28
|
+
* @param contractArtifact - The contract artifact for the contract.
|
|
29
|
+
* @param seed - The seed for the contract.
|
|
30
|
+
* @param originalContractClassId - The original contract class ID (if upgraded)
|
|
31
|
+
* @returns The contract class, instance, and contract address nullifier.
|
|
32
|
+
*/
|
|
33
|
+
export declare function createContractClassAndInstance(constructorArgs: any[], deployer: AztecAddress, contractArtifact: ContractArtifact, seed?: number, contractClassSeed?: number, originalContractClassId?: Fr): Promise<{
|
|
34
|
+
contractClass: ContractClassPublic;
|
|
35
|
+
contractInstance: ContractInstanceWithAddress;
|
|
36
|
+
contractAddressNullifier: Fr;
|
|
37
|
+
}>;
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wdWJsaWMvYXZtL2ZpeHR1cmVzL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5QyxPQUFPLEVBQ0wsS0FBSyxnQkFBZ0IsRUFDckIsS0FBSyxXQUFXLEVBQ2hCLEtBQUssZ0JBQWdCLEVBQ3JCLGdCQUFnQixFQUVqQixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQ0wsS0FBSyxtQkFBbUIsRUFDeEIsS0FBSywyQkFBMkIsRUFFakMsTUFBTSx3QkFBd0IsQ0FBQztBQUtoQyxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQU1sRCxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEUsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXBELGVBQU8sTUFBTSx1QkFBdUIsb0JBQW9CLENBQUM7QUFDekQsZUFBTyxNQUFNLGlCQUFpQixFQUFFLE1BQWUsQ0FBQztBQUNoRCxlQUFPLE1BQU0sb0JBQW9CLEtBQUssQ0FBQztBQUV2Qzs7R0FFRztBQUNILHdCQUFnQixhQUFhLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxHQUFHLEdBQUcsQ0FFaEU7QUFFRCx3QkFBZ0IsaUJBQWlCLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxLQUFLLEVBQUUsQ0FFekQ7QUFFRCx3QkFBZ0IsbUJBQW1CLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FFNUQ7QUFFRCx3QkFBZ0IsbUJBQW1CLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FFNUQ7QUFFRCx3QkFBZ0Isa0JBQWtCLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxLQUFLLEVBQUUsQ0FFMUQ7QUFFRCx3QkFBZ0IsbUJBQW1CLENBQ2pDLFlBQVksRUFBRSxNQUFNLEVBQ3BCLGdCQUFnQixFQUFFLGdCQUFnQixHQUNqQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FLM0I7QUFFRCx3QkFBZ0IsMkJBQTJCLENBQ3pDLFlBQVksRUFBRSxNQUFNLEVBQ3BCLGdCQUFnQixFQUFFLGdCQUFnQixHQUNqQyxnQkFBZ0IsR0FBRyxTQUFTLENBRTlCO0FBRUQsd0JBQWdCLHNCQUFzQixDQUNwQyxZQUFZLEVBQUUsTUFBTSxFQUNwQixnQkFBZ0IsRUFBRSxnQkFBZ0IsR0FDakMsV0FBVyxHQUFHLFNBQVMsQ0FLekI7QUFFRCx3QkFBZ0IsK0JBQStCLENBQzdDLFlBQVksRUFBRSxNQUFNLEVBQ3BCLFlBQVksRUFBRSxlQUFlLEVBQzdCLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFDWixnQkFBZ0IsRUFBRSxnQkFBZ0IsR0FDakMsTUFBTSxHQUFHLFNBQVMsQ0FXcEI7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCx3QkFBc0IsOEJBQThCLENBQ2xELGVBQWUsRUFBRSxHQUFHLEVBQUUsRUFDdEIsUUFBUSxFQUFFLFlBQVksRUFDdEIsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQ2xDLElBQUksU0FBSSxFQUNSLGlCQUFpQixTQUFPLEVBQ3hCLHVCQUF1QixDQUFDLEVBQUUsRUFBRSxHQUMzQixPQUFPLENBQUM7SUFDVCxhQUFhLEVBQUUsbUJBQW1CLENBQUM7SUFDbkMsZ0JBQWdCLEVBQUUsMkJBQTJCLENBQUM7SUFDOUMsd0JBQXdCLEVBQUUsRUFBRSxDQUFDO0NBQzlCLENBQUMsQ0E0QkQifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/fixtures/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,gBAAgB,EAEjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,2BAA2B,EAEjC,MAAM,wBAAwB,CAAC;AAKhC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAMlD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,eAAO,MAAM,uBAAuB,oBAAoB,CAAC;AACzD,eAAO,MAAM,iBAAiB,EAAE,MAAe,CAAC;AAChD,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,GAAG,GAAG,CAEhE;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,CAEzD;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAE5D;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAE5D;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,CAE1D;AAED,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,gBAAgB,GACjC,OAAO,CAAC,gBAAgB,CAAC,CAK3B;AAED,wBAAgB,2BAA2B,CACzC,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,gBAAgB,GACjC,gBAAgB,GAAG,SAAS,CAE9B;AAED,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,gBAAgB,GACjC,WAAW,GAAG,SAAS,CAKzB;AAED,wBAAgB,+BAA+B,CAC7C,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,eAAe,EAC7B,MAAM,EAAE,EAAE,EAAE,EACZ,gBAAgB,EAAE,gBAAgB,GACjC,MAAM,GAAG,SAAS,CAWpB;AAED;;;;;;;;;GASG;AACH,wBAAsB,8BAA8B,CAClD,eAAe,EAAE,GAAG,EAAE,EACtB,QAAQ,EAAE,YAAY,EACtB,gBAAgB,EAAE,gBAAgB,EAClC,IAAI,SAAI,EACR,iBAAiB,SAAO,EACxB,uBAAuB,CAAC,EAAE,EAAE,GAC3B,OAAO,CAAC;IACT,aAAa,EAAE,mBAAmB,CAAC;IACnC,gBAAgB,EAAE,2BAA2B,CAAC;IAC9C,wBAAwB,EAAE,EAAE,CAAC;CAC9B,CAAC,CA4BD"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { CONTRACT_INSTANCE_REGISTRY_CONTRACT_ADDRESS } from '@aztec/constants';
|
|
2
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
3
|
+
import { FunctionSelector, getAllFunctionAbis } from '@aztec/stdlib/abi';
|
|
4
|
+
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
5
|
+
import { computeInitializationHash } from '@aztec/stdlib/contract';
|
|
6
|
+
import { isNoirCallStackUnresolved } from '@aztec/stdlib/errors';
|
|
7
|
+
import { siloNullifier } from '@aztec/stdlib/hash';
|
|
8
|
+
import { deriveKeys } from '@aztec/stdlib/keys';
|
|
9
|
+
import { makeContractClassPublic, makeContractInstanceFromClassId } from '@aztec/stdlib/testing';
|
|
10
|
+
import { strict as assert } from 'assert';
|
|
11
|
+
import merge from 'lodash.merge';
|
|
12
|
+
import { resolveAssertionMessageFromRevertData, traverseCauseChain } from '../../../common/index.js';
|
|
13
|
+
import { Field, Uint8, Uint32, Uint64 } from '../avm_memory_types.js';
|
|
14
|
+
export const PUBLIC_DISPATCH_FN_NAME = 'public_dispatch';
|
|
15
|
+
export const DEFAULT_TIMESTAMP = 99833n;
|
|
16
|
+
export const DEFAULT_BLOCK_NUMBER = 42;
|
|
17
|
+
/**
|
|
18
|
+
* Create a new object with all the same properties as the original, except for the ones in the overrides object.
|
|
19
|
+
*/ export function allSameExcept(original, overrides) {
|
|
20
|
+
return merge({}, original, overrides);
|
|
21
|
+
}
|
|
22
|
+
export function randomMemoryBytes(length) {
|
|
23
|
+
return [
|
|
24
|
+
...Array(length)
|
|
25
|
+
].map((_)=>new Uint8(Math.floor(Math.random() * 255)));
|
|
26
|
+
}
|
|
27
|
+
export function randomMemoryUint32s(length) {
|
|
28
|
+
return [
|
|
29
|
+
...Array(length)
|
|
30
|
+
].map((_)=>new Uint32(Math.floor(Math.random() * 255)));
|
|
31
|
+
}
|
|
32
|
+
export function randomMemoryUint64s(length) {
|
|
33
|
+
return [
|
|
34
|
+
...Array(length)
|
|
35
|
+
].map((_)=>new Uint64(Math.floor(Math.random() * 255)));
|
|
36
|
+
}
|
|
37
|
+
export function randomMemoryFields(length) {
|
|
38
|
+
return [
|
|
39
|
+
...Array(length)
|
|
40
|
+
].map((_)=>new Field(Fr.random()));
|
|
41
|
+
}
|
|
42
|
+
export function getFunctionSelector(functionName, contractArtifact) {
|
|
43
|
+
const fnArtifact = getAllFunctionAbis(contractArtifact).find((f)=>f.name === functionName);
|
|
44
|
+
assert(!!fnArtifact, `Function ${functionName} not found in ${contractArtifact.name}`);
|
|
45
|
+
const params = fnArtifact.parameters;
|
|
46
|
+
return FunctionSelector.fromNameAndParameters(fnArtifact.name, params);
|
|
47
|
+
}
|
|
48
|
+
export function getContractFunctionArtifact(functionName, contractArtifact) {
|
|
49
|
+
return contractArtifact.functions.find((f)=>f.name === functionName);
|
|
50
|
+
}
|
|
51
|
+
export function getContractFunctionAbi(functionName, contractArtifact) {
|
|
52
|
+
return contractArtifact.functions.find((f)=>f.name === functionName) ?? contractArtifact.nonDispatchPublicFunctions.find((f)=>f.name === functionName);
|
|
53
|
+
}
|
|
54
|
+
export function resolveContractAssertionMessage(functionName, revertReason, output, contractArtifact) {
|
|
55
|
+
traverseCauseChain(revertReason, (cause)=>{
|
|
56
|
+
revertReason = cause;
|
|
57
|
+
});
|
|
58
|
+
const functionArtifact = getAllFunctionAbis(contractArtifact).find((f)=>f.name === functionName);
|
|
59
|
+
if (!functionArtifact || !revertReason.noirCallStack || !isNoirCallStackUnresolved(revertReason.noirCallStack)) {
|
|
60
|
+
return undefined;
|
|
61
|
+
}
|
|
62
|
+
return resolveAssertionMessageFromRevertData(output, functionArtifact);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Create a contract class and instance given constructor args, artifact, etc.
|
|
66
|
+
* NOTE: This is useful for testing real-ish contract class registration and instance deployment TXs (via logs)
|
|
67
|
+
* @param constructorArgs - The constructor arguments for the contract.
|
|
68
|
+
* @param deployer - The deployer of the contract.
|
|
69
|
+
* @param contractArtifact - The contract artifact for the contract.
|
|
70
|
+
* @param seed - The seed for the contract.
|
|
71
|
+
* @param originalContractClassId - The original contract class ID (if upgraded)
|
|
72
|
+
* @returns The contract class, instance, and contract address nullifier.
|
|
73
|
+
*/ export async function createContractClassAndInstance(constructorArgs, deployer, contractArtifact, seed = 0, contractClassSeed = seed, originalContractClassId) {
|
|
74
|
+
const bytecode = getContractFunctionArtifact(PUBLIC_DISPATCH_FN_NAME, contractArtifact).bytecode;
|
|
75
|
+
const contractClass = await makeContractClassPublic(contractClassSeed, bytecode);
|
|
76
|
+
const constructorAbi = getContractFunctionAbi('constructor', contractArtifact);
|
|
77
|
+
const { publicKeys } = await deriveKeys(new Fr(seed));
|
|
78
|
+
const initializationHash = await computeInitializationHash(constructorAbi, constructorArgs);
|
|
79
|
+
const contractInstance = originalContractClassId === undefined ? await makeContractInstanceFromClassId(contractClass.id, seed, {
|
|
80
|
+
deployer,
|
|
81
|
+
initializationHash,
|
|
82
|
+
publicKeys
|
|
83
|
+
}) : await makeContractInstanceFromClassId(originalContractClassId, seed, {
|
|
84
|
+
deployer,
|
|
85
|
+
initializationHash,
|
|
86
|
+
currentClassId: contractClass.id,
|
|
87
|
+
publicKeys
|
|
88
|
+
});
|
|
89
|
+
const contractAddressNullifier = await siloNullifier(AztecAddress.fromNumber(CONTRACT_INSTANCE_REGISTRY_CONTRACT_ADDRESS), contractInstance.address.toField());
|
|
90
|
+
return {
|
|
91
|
+
contractClass,
|
|
92
|
+
contractInstance,
|
|
93
|
+
contractAddressNullifier
|
|
94
|
+
};
|
|
95
|
+
}
|
|
@@ -1,4 +1,2 @@
|
|
|
1
1
|
export * from './avm_simulator.js';
|
|
2
|
-
|
|
3
|
-
export * from './fixtures/simple_contract_data_source.js';
|
|
4
|
-
//# sourceMappingURL=index.d.ts.map
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wdWJsaWMvYXZtL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsb0JBQW9CLENBQUMifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/public/avm/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/public/avm/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC"}
|
package/dest/public/avm/index.js
CHANGED
|
@@ -54,12 +54,12 @@ export declare class L1ToL2MessageExists extends Instruction {
|
|
|
54
54
|
}
|
|
55
55
|
export declare class EmitUnencryptedLog extends Instruction {
|
|
56
56
|
private indirect;
|
|
57
|
-
private logOffset;
|
|
58
57
|
private logSizeOffset;
|
|
58
|
+
private logOffset;
|
|
59
59
|
static type: string;
|
|
60
60
|
static readonly opcode: Opcode;
|
|
61
61
|
static readonly wireFormat: OperandType[];
|
|
62
|
-
constructor(indirect: number,
|
|
62
|
+
constructor(indirect: number, logSizeOffset: number, logOffset: number);
|
|
63
63
|
execute(context: AvmContext): Promise<void>;
|
|
64
64
|
}
|
|
65
65
|
export declare class SendL2ToL1Message extends Instruction {
|
|
@@ -72,4 +72,4 @@ export declare class SendL2ToL1Message extends Instruction {
|
|
|
72
72
|
constructor(indirect: number, recipientOffset: number, contentOffset: number);
|
|
73
73
|
execute(context: AvmContext): Promise<void>;
|
|
74
74
|
}
|
|
75
|
-
//# sourceMappingURL=
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjcnVlZF9zdWJzdGF0ZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3B1YmxpYy9hdm0vb3Bjb2Rlcy9hY2NydWVkX3N1YnN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR3BELE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFFcEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRS9DLHFCQUFhLGNBQWUsU0FBUSxXQUFXO0lBYTNDLE9BQU8sQ0FBQyxRQUFRO0lBQ2hCLE9BQU8sQ0FBQyxjQUFjO0lBQ3RCLE9BQU8sQ0FBQyxlQUFlO0lBQ3ZCLE9BQU8sQ0FBQyxZQUFZO0lBZnRCLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFvQjtJQUN2QyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQXlCO0lBRXZELE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxnQkFNeEI7SUFFRixZQUNVLFFBQVEsRUFBRSxNQUFNLEVBQ2hCLGNBQWMsRUFBRSxNQUFNLEVBQ3RCLGVBQWUsRUFBRSxNQUFNLEVBQ3ZCLFlBQVksRUFBRSxNQUFNLEVBRzdCO0lBRVksT0FBTyxDQUFDLE9BQU8sRUFBRSxVQUFVLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQWtCdkQ7Q0FDRjtBQUVELHFCQUFhLFlBQWEsU0FBUSxXQUFXO0lBT3pDLE9BQU8sQ0FBQyxRQUFRO0lBQ2hCLE9BQU8sQ0FBQyxjQUFjO0lBUHhCLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFrQjtJQUNyQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQXVCO0lBRXJELE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxnQkFBOEQ7SUFFeEYsWUFDVSxRQUFRLEVBQUUs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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accrued_substate.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/opcodes/accrued_substate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"accrued_substate.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/opcodes/accrued_substate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { NullifierCollisionError } from '../../side_effect_errors.js';
|
|
1
2
|
import { TypeTag, Uint1 } from '../avm_memory_types.js';
|
|
2
3
|
import { InstructionExecutionError, StaticCallAlterationError } from '../errors.js';
|
|
3
|
-
import { NullifierCollisionError } from '../journal/nullifiers.js';
|
|
4
4
|
import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
|
|
5
5
|
import { Addressing } from './addressing_mode.js';
|
|
6
6
|
import { Instruction } from './instruction.js';
|
|
@@ -24,18 +24,19 @@ export class NoteHashExists extends Instruction {
|
|
|
24
24
|
}
|
|
25
25
|
async execute(context) {
|
|
26
26
|
const memory = context.machineState.memory;
|
|
27
|
-
|
|
27
|
+
const addressing = Addressing.fromWire(this.indirect);
|
|
28
|
+
context.machineState.consumeGas(this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()));
|
|
28
29
|
const operands = [
|
|
29
30
|
this.noteHashOffset,
|
|
30
31
|
this.leafIndexOffset,
|
|
31
32
|
this.existsOffset
|
|
32
33
|
];
|
|
33
|
-
const addressing = Addressing.fromWire(this.indirect, operands.length);
|
|
34
34
|
const [noteHashOffset, leafIndexOffset, existsOffset] = addressing.resolve(operands, memory);
|
|
35
|
-
memory.
|
|
35
|
+
memory.checkTag(TypeTag.FIELD, noteHashOffset);
|
|
36
|
+
memory.checkTag(TypeTag.UINT64, leafIndexOffset);
|
|
36
37
|
// Note that this instruction accepts any type in memory, and converts to Field.
|
|
37
38
|
const noteHash = memory.get(noteHashOffset).toFr();
|
|
38
|
-
const leafIndex = memory.get(leafIndexOffset).
|
|
39
|
+
const leafIndex = memory.get(leafIndexOffset).toBigInt();
|
|
39
40
|
const exists = await context.persistableState.checkNoteHashExists(context.environment.address, noteHash, leafIndex);
|
|
40
41
|
memory.set(existsOffset, exists ? new Uint1(1) : new Uint1(0));
|
|
41
42
|
}
|
|
@@ -56,11 +57,11 @@ export class EmitNoteHash extends Instruction {
|
|
|
56
57
|
}
|
|
57
58
|
async execute(context) {
|
|
58
59
|
const memory = context.machineState.memory;
|
|
59
|
-
|
|
60
|
+
const addressing = Addressing.fromWire(this.indirect);
|
|
61
|
+
context.machineState.consumeGas(this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()));
|
|
60
62
|
const operands = [
|
|
61
63
|
this.noteHashOffset
|
|
62
64
|
];
|
|
63
|
-
const addressing = Addressing.fromWire(this.indirect, operands.length);
|
|
64
65
|
const [noteHashOffset] = addressing.resolve(operands, memory);
|
|
65
66
|
memory.checkTag(TypeTag.FIELD, noteHashOffset);
|
|
66
67
|
if (context.environment.isStaticCall) {
|
|
@@ -90,13 +91,13 @@ export class NullifierExists extends Instruction {
|
|
|
90
91
|
}
|
|
91
92
|
async execute(context) {
|
|
92
93
|
const memory = context.machineState.memory;
|
|
93
|
-
|
|
94
|
+
const addressing = Addressing.fromWire(this.indirect);
|
|
95
|
+
context.machineState.consumeGas(this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()));
|
|
94
96
|
const operands = [
|
|
95
97
|
this.nullifierOffset,
|
|
96
98
|
this.addressOffset,
|
|
97
99
|
this.existsOffset
|
|
98
100
|
];
|
|
99
|
-
const addressing = Addressing.fromWire(this.indirect, operands.length);
|
|
100
101
|
const [nullifierOffset, addressOffset, existsOffset] = addressing.resolve(operands, memory);
|
|
101
102
|
memory.checkTags(TypeTag.FIELD, nullifierOffset, addressOffset);
|
|
102
103
|
const nullifier = memory.get(nullifierOffset).toFr();
|
|
@@ -124,11 +125,11 @@ export class EmitNullifier extends Instruction {
|
|
|
124
125
|
throw new StaticCallAlterationError();
|
|
125
126
|
}
|
|
126
127
|
const memory = context.machineState.memory;
|
|
127
|
-
|
|
128
|
+
const addressing = Addressing.fromWire(this.indirect);
|
|
129
|
+
context.machineState.consumeGas(this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()));
|
|
128
130
|
const operands = [
|
|
129
131
|
this.nullifierOffset
|
|
130
132
|
];
|
|
131
|
-
const addressing = Addressing.fromWire(this.indirect, operands.length);
|
|
132
133
|
const [nullifierOffset] = addressing.resolve(operands, memory);
|
|
133
134
|
memory.checkTag(TypeTag.FIELD, nullifierOffset);
|
|
134
135
|
const nullifier = memory.get(nullifierOffset).toFr();
|
|
@@ -164,25 +165,26 @@ export class L1ToL2MessageExists extends Instruction {
|
|
|
164
165
|
}
|
|
165
166
|
async execute(context) {
|
|
166
167
|
const memory = context.machineState.memory;
|
|
167
|
-
|
|
168
|
+
const addressing = Addressing.fromWire(this.indirect);
|
|
169
|
+
context.machineState.consumeGas(this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()));
|
|
168
170
|
const operands = [
|
|
169
171
|
this.msgHashOffset,
|
|
170
172
|
this.msgLeafIndexOffset,
|
|
171
173
|
this.existsOffset
|
|
172
174
|
];
|
|
173
|
-
const addressing = Addressing.fromWire(this.indirect, operands.length);
|
|
174
175
|
const [msgHashOffset, msgLeafIndexOffset, existsOffset] = addressing.resolve(operands, memory);
|
|
175
|
-
memory.
|
|
176
|
+
memory.checkTag(TypeTag.FIELD, msgHashOffset);
|
|
177
|
+
memory.checkTag(TypeTag.UINT64, msgLeafIndexOffset);
|
|
176
178
|
const msgHash = memory.get(msgHashOffset).toFr();
|
|
177
179
|
const msgLeafIndex = memory.get(msgLeafIndexOffset).toFr();
|
|
178
|
-
const exists = await context.persistableState.checkL1ToL2MessageExists(
|
|
180
|
+
const exists = await context.persistableState.checkL1ToL2MessageExists(msgHash, msgLeafIndex);
|
|
179
181
|
memory.set(existsOffset, exists ? new Uint1(1) : new Uint1(0));
|
|
180
182
|
}
|
|
181
183
|
}
|
|
182
184
|
export class EmitUnencryptedLog extends Instruction {
|
|
183
185
|
indirect;
|
|
184
|
-
logOffset;
|
|
185
186
|
logSizeOffset;
|
|
187
|
+
logOffset;
|
|
186
188
|
// TODO(#11124): rename unencrypted -> public
|
|
187
189
|
static type = 'EMITUNENCRYPTEDLOG';
|
|
188
190
|
static opcode = Opcode.EMITUNENCRYPTEDLOG;
|
|
@@ -193,25 +195,26 @@ export class EmitUnencryptedLog extends Instruction {
|
|
|
193
195
|
OperandType.UINT16,
|
|
194
196
|
OperandType.UINT16
|
|
195
197
|
];
|
|
196
|
-
constructor(indirect,
|
|
197
|
-
super(), this.indirect = indirect, this.
|
|
198
|
+
constructor(indirect, logSizeOffset, logOffset){
|
|
199
|
+
super(), this.indirect = indirect, this.logSizeOffset = logSizeOffset, this.logOffset = logOffset;
|
|
198
200
|
}
|
|
199
201
|
async execute(context) {
|
|
200
202
|
if (context.environment.isStaticCall) {
|
|
201
203
|
throw new StaticCallAlterationError();
|
|
202
204
|
}
|
|
203
205
|
const memory = context.machineState.memory;
|
|
206
|
+
const addressing = Addressing.fromWire(this.indirect);
|
|
207
|
+
context.machineState.consumeGas(this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()));
|
|
204
208
|
const operands = [
|
|
205
|
-
this.
|
|
206
|
-
this.
|
|
209
|
+
this.logSizeOffset,
|
|
210
|
+
this.logOffset
|
|
207
211
|
];
|
|
208
|
-
const
|
|
209
|
-
const [logOffset, logSizeOffset] = addressing.resolve(operands, memory);
|
|
212
|
+
const [logSizeOffset, logOffset] = addressing.resolve(operands, memory);
|
|
210
213
|
memory.checkTag(TypeTag.UINT32, logSizeOffset);
|
|
211
214
|
const logSize = memory.get(logSizeOffset).toNumber();
|
|
212
215
|
memory.checkTagsRange(TypeTag.FIELD, logOffset, logSize);
|
|
213
216
|
const contractAddress = context.environment.address;
|
|
214
|
-
context.machineState.consumeGas(this.
|
|
217
|
+
context.machineState.consumeGas(this.dynamicGasCost(logSize));
|
|
215
218
|
const log = memory.getSlice(logOffset, logSize).map((f)=>f.toFr());
|
|
216
219
|
context.persistableState.writePublicLog(contractAddress, log);
|
|
217
220
|
}
|
|
@@ -237,12 +240,12 @@ export class SendL2ToL1Message extends Instruction {
|
|
|
237
240
|
throw new StaticCallAlterationError();
|
|
238
241
|
}
|
|
239
242
|
const memory = context.machineState.memory;
|
|
240
|
-
|
|
243
|
+
const addressing = Addressing.fromWire(this.indirect);
|
|
244
|
+
context.machineState.consumeGas(this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()));
|
|
241
245
|
const operands = [
|
|
242
246
|
this.recipientOffset,
|
|
243
247
|
this.contentOffset
|
|
244
248
|
];
|
|
245
|
-
const addressing = Addressing.fromWire(this.indirect, operands.length);
|
|
246
249
|
const [recipientOffset, contentOffset] = addressing.resolve(operands, memory);
|
|
247
250
|
memory.checkTags(TypeTag.FIELD, recipientOffset, contentOffset);
|
|
248
251
|
const recipient = memory.get(recipientOffset).toFr();
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { AVM_MAX_OPERANDS } from '@aztec/constants';
|
|
2
|
+
import type { Tuple } from '@aztec/foundation/serialize';
|
|
1
3
|
import { type TaggedMemoryInterface } from '../avm_memory_types.js';
|
|
2
4
|
export declare enum AddressingMode {
|
|
3
5
|
DIRECT = 0,
|
|
@@ -7,21 +9,23 @@ export declare enum AddressingMode {
|
|
|
7
9
|
}
|
|
8
10
|
/** A class to represent the addressing mode of an instruction. */
|
|
9
11
|
export declare class Addressing {
|
|
10
|
-
/** The addressing mode for each operand.
|
|
12
|
+
/** The addressing mode for each possible operand. */
|
|
11
13
|
private readonly modePerOperand;
|
|
12
14
|
constructor(
|
|
13
|
-
/** The addressing mode for each operand.
|
|
14
|
-
modePerOperand: AddressingMode
|
|
15
|
-
static
|
|
15
|
+
/** The addressing mode for each possible operand. */
|
|
16
|
+
modePerOperand: Tuple<AddressingMode, typeof AVM_MAX_OPERANDS>);
|
|
17
|
+
static fromModes(modes: AddressingMode[]): Addressing;
|
|
18
|
+
static fromWire(wireModes: number): Addressing;
|
|
16
19
|
toWire(): number;
|
|
17
|
-
|
|
18
|
-
|
|
20
|
+
indirectOperandsCount(): number;
|
|
21
|
+
relativeOperandsCount(): number;
|
|
19
22
|
/**
|
|
20
23
|
* Resolves the offsets using the addressing mode.
|
|
21
24
|
* @param offsets The offsets to resolve.
|
|
22
25
|
* @param mem The memory to use for resolution.
|
|
23
|
-
* @returns The resolved offsets. The length of the returned array is the same as the length of the input array.
|
|
26
|
+
* @returns The resolved offsets. The length of the returned array is the same as the length of the input array and the resolved offsets are guaranteed to be valid addresses.
|
|
27
|
+
* @throws An error if any step failed. Should be treated as a black box.
|
|
24
28
|
*/
|
|
25
29
|
resolve(offsets: number[], mem: TaggedMemoryInterface): number[];
|
|
26
30
|
}
|
|
27
|
-
//# sourceMappingURL=
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzc2luZ19tb2RlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcHVibGljL2F2bS9vcGNvZGVzL2FkZHJlc3NpbmdfbW9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVwRCxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUl6RCxPQUFPLEVBQTZCLEtBQUsscUJBQXFCLEVBQVcsTUFBTSx3QkFBd0IsQ0FBQztBQUd4RyxvQkFBWSxjQUFjO0lBQ3hCLE1BQU0sSUFBSTtJQUNWLFFBQVEsSUFBSTtJQUNaLFFBQVEsSUFBSTtJQUNaLGlCQUFpQixJQUFJO0NBQ3RCO0FBRUQsa0VBQWtFO0FBQ2xFLHFCQUFhLFVBQVU7SUFFbkIscURBQXFEO0lBQ3JELE9BQU8sQ0FBQyxRQUFRLENBQUMsY0FBYztJQUZqQztJQUNFLHFEQUFxRDtJQUNwQyxjQUFjLEVBQUUsS0FBSyxDQUFDLGNBQWMsRUFBRSxPQUFPLGdCQUFnQixDQUFDLEVBQzdFO0lBRUosT0FBYyxTQUFTLENBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRSxHQUFHLFVBQVUsQ0FHM0Q7SUFFRCxPQUFjLFFBQVEsQ0FBQyxTQUFTLEVBQUUsTUFBTSxHQUFHLFVBQVUsQ0FXcEQ7SUFFTSxNQUFNLElBQUksTUFBTSxDQWF0QjtJQUVNLHFCQUFxQixJQUFJLE1BQU0sQ0FFckM7SUFFTSxxQkFBcUIsSUFBSSxNQUFNLENBRXJDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksT0FBTyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUscUJBQXFCLEdBQUcsTUFBTSxFQUFFLENBc0N0RTtDQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addressing_mode.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/opcodes/addressing_mode.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"addressing_mode.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/opcodes/addressing_mode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAIzD,OAAO,EAA6B,KAAK,qBAAqB,EAAW,MAAM,wBAAwB,CAAC;AAGxG,oBAAY,cAAc;IACxB,MAAM,IAAI;IACV,QAAQ,IAAI;IACZ,QAAQ,IAAI;IACZ,iBAAiB,IAAI;CACtB;AAED,kEAAkE;AAClE,qBAAa,UAAU;IAEnB,qDAAqD;IACrD,OAAO,CAAC,QAAQ,CAAC,cAAc;IAFjC;IACE,qDAAqD;IACpC,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,OAAO,gBAAgB,CAAC,EAC7E;IAEJ,OAAc,SAAS,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,UAAU,CAG3D;IAED,OAAc,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,CAWpD;IAEM,MAAM,IAAI,MAAM,CAatB;IAEM,qBAAqB,IAAI,MAAM,CAErC;IAEM,qBAAqB,IAAI,MAAM,CAErC;IAED;;;;;;OAMG;IACI,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,qBAAqB,GAAG,MAAM,EAAE,CAsCtE;CACF"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import { AVM_MAX_OPERANDS } from '@aztec/constants';
|
|
2
|
+
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
1
3
|
import { strict as assert } from 'assert';
|
|
2
|
-
import { TaggedMemory } from '../avm_memory_types.js';
|
|
3
|
-
import { RelativeAddressOutOfRangeError } from '../errors.js';
|
|
4
|
+
import { TaggedMemory, TypeTag } from '../avm_memory_types.js';
|
|
5
|
+
import { RelativeAddressOutOfRangeError, TagCheckError } from '../errors.js';
|
|
4
6
|
export var AddressingMode = /*#__PURE__*/ function(AddressingMode) {
|
|
5
7
|
AddressingMode[AddressingMode["DIRECT"] = 0] = "DIRECT";
|
|
6
8
|
AddressingMode[AddressingMode["INDIRECT"] = 1] = "INDIRECT";
|
|
@@ -10,17 +12,21 @@ export var AddressingMode = /*#__PURE__*/ function(AddressingMode) {
|
|
|
10
12
|
}({});
|
|
11
13
|
/** A class to represent the addressing mode of an instruction. */ export class Addressing {
|
|
12
14
|
modePerOperand;
|
|
13
|
-
constructor(/** The addressing mode for each operand.
|
|
15
|
+
constructor(/** The addressing mode for each possible operand. */ modePerOperand){
|
|
14
16
|
this.modePerOperand = modePerOperand;
|
|
15
17
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
18
|
+
static fromModes(modes) {
|
|
19
|
+
assert(modes.length <= AVM_MAX_OPERANDS, 'Too many operands for addressing mode');
|
|
20
|
+
return new Addressing(padArrayEnd(modes, 0, AVM_MAX_OPERANDS));
|
|
21
|
+
}
|
|
22
|
+
static fromWire(wireModes) {
|
|
23
|
+
// The modes are stored in the wire format as one or two bytes, with each two bits representing the modes for an operand.
|
|
24
|
+
// Even bits are indirect, odd bits are relative.
|
|
25
|
+
const modes = new Array(AVM_MAX_OPERANDS);
|
|
26
|
+
for(let i = 0; i < AVM_MAX_OPERANDS; i++){
|
|
27
|
+
modes[i] = (wireModes >> i * 2 & 1) * 1 | (wireModes >> i * 2 + 1 & 1) * 2;
|
|
23
28
|
}
|
|
29
|
+
// Casting the array to tuple since it should be more performant than using makeTuple
|
|
24
30
|
return new Addressing(modes);
|
|
25
31
|
}
|
|
26
32
|
toWire() {
|
|
@@ -29,44 +35,58 @@ export var AddressingMode = /*#__PURE__*/ function(AddressingMode) {
|
|
|
29
35
|
let wire = 0;
|
|
30
36
|
for(let i = 0; i < this.modePerOperand.length; i++){
|
|
31
37
|
if (this.modePerOperand[i] & 1) {
|
|
32
|
-
wire |= 1 << i;
|
|
38
|
+
wire |= 1 << i * 2;
|
|
33
39
|
}
|
|
34
40
|
if (this.modePerOperand[i] & 2) {
|
|
35
|
-
wire |= 1 <<
|
|
41
|
+
wire |= 1 << i * 2 + 1;
|
|
36
42
|
}
|
|
37
43
|
}
|
|
38
44
|
return wire;
|
|
39
45
|
}
|
|
40
|
-
|
|
41
|
-
return this.modePerOperand.filter((
|
|
46
|
+
indirectOperandsCount() {
|
|
47
|
+
return this.modePerOperand.filter((mode)=>mode & 1).length;
|
|
48
|
+
}
|
|
49
|
+
relativeOperandsCount() {
|
|
50
|
+
return this.modePerOperand.filter((mode)=>mode & 2).length;
|
|
42
51
|
}
|
|
43
52
|
/**
|
|
44
53
|
* Resolves the offsets using the addressing mode.
|
|
45
54
|
* @param offsets The offsets to resolve.
|
|
46
55
|
* @param mem The memory to use for resolution.
|
|
47
|
-
* @returns The resolved offsets. The length of the returned array is the same as the length of the input array.
|
|
56
|
+
* @returns The resolved offsets. The length of the returned array is the same as the length of the input array and the resolved offsets are guaranteed to be valid addresses.
|
|
57
|
+
* @throws An error if any step failed. Should be treated as a black box.
|
|
48
58
|
*/ resolve(offsets, mem) {
|
|
49
|
-
assert(offsets.length <= this.modePerOperand.length);
|
|
50
59
|
const resolved = new Array(offsets.length);
|
|
51
|
-
|
|
52
|
-
let baseAddr
|
|
60
|
+
// These will be read (once) if we have any relative operands.
|
|
61
|
+
let baseAddr;
|
|
53
62
|
for (const [i, offset] of offsets.entries()){
|
|
54
63
|
const mode = this.modePerOperand[i];
|
|
64
|
+
// The given offsets are assumed to be valid addresses.
|
|
55
65
|
resolved[i] = offset;
|
|
56
66
|
if (mode & 2) {
|
|
57
|
-
if (!
|
|
58
|
-
mem.
|
|
59
|
-
|
|
60
|
-
|
|
67
|
+
if (!baseAddr) {
|
|
68
|
+
baseAddr = mem.get(0);
|
|
69
|
+
const baseAddrTag = baseAddr.getTag();
|
|
70
|
+
if (!TaggedMemory.isValidMemoryAddressTag(baseAddrTag)) {
|
|
71
|
+
throw TagCheckError.forOffset(0, TypeTag[baseAddrTag], TypeTag[TypeTag.UINT32]);
|
|
72
|
+
}
|
|
61
73
|
}
|
|
62
|
-
resolved[i]
|
|
74
|
+
// Here we know that resolved[i] is at most 32 bits and baseAddr is at most 32 bits.
|
|
75
|
+
// Therefore, the addition is safe since the `number` type fits more than 33 bits.
|
|
76
|
+
resolved[i] += Number(baseAddr.toBigInt());
|
|
63
77
|
if (resolved[i] >= TaggedMemory.MAX_MEMORY_SIZE) {
|
|
64
|
-
throw new RelativeAddressOutOfRangeError(baseAddr, offset);
|
|
78
|
+
throw new RelativeAddressOutOfRangeError(Number(baseAddr.toBigInt()), offset);
|
|
65
79
|
}
|
|
66
80
|
}
|
|
67
81
|
if (mode & 1) {
|
|
68
|
-
|
|
69
|
-
|
|
82
|
+
// At this point we know that resolved[i] is a valid memory address.
|
|
83
|
+
const resolvedValue = mem.get(resolved[i]);
|
|
84
|
+
const resolvedTag = resolvedValue.getTag();
|
|
85
|
+
// Final check.
|
|
86
|
+
if (!TaggedMemory.isValidMemoryAddressTag(resolvedTag)) {
|
|
87
|
+
throw TagCheckError.forOffset(resolved[i], TypeTag[resolvedTag], TypeTag[TypeTag.UINT32]);
|
|
88
|
+
}
|
|
89
|
+
resolved[i] = Number(resolvedValue.toBigInt());
|
|
70
90
|
}
|
|
71
91
|
}
|
|
72
92
|
return resolved;
|