@aztec/simulator 0.0.0-test.1 → 0.0.1-commit.023c3e5
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 +8 -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 +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 +65 -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 +27 -35
- 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 +32 -42
- 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 +63 -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/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 +8 -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 +38 -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 +96 -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 +17 -18
- package/dest/public/avm/opcodes/accrued_substate.d.ts.map +1 -1
- package/dest/public/avm/opcodes/accrued_substate.js +58 -55
- 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 +3 -4
- package/dest/public/avm/opcodes/contract.d.ts.map +1 -1
- package/dest/public/avm/opcodes/contract.js +11 -12
- 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 -3
- package/dest/public/avm/opcodes/ec_add.d.ts.map +1 -1
- package/dest/public/avm/opcodes/ec_add.js +21 -12
- 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 +79 -75
- 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 +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 +262 -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 +12 -0
- package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +1 -0
- package/dest/public/fixtures/custom_bytecode_tests.js +174 -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 +1653 -0
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts +55 -15
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
- package/dest/public/fixtures/public_tx_simulation_tester.js +138 -72
- 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 +102 -59
- 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 +80 -0
- package/dest/public/hinting_db_sources.d.ts.map +1 -0
- package/dest/public/hinting_db_sources.js +355 -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 +54 -103
- package/dest/public/public_db_sources.d.ts.map +1 -1
- package/dest/public/public_db_sources.js +222 -195
- 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 +51 -0
- package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -0
- package/dest/public/public_processor/guarded_merkle_tree.js +113 -0
- package/dest/public/public_processor/public_processor.d.ts +28 -38
- package/dest/public/public_processor/public_processor.d.ts.map +1 -1
- package/dest/public/public_processor/public_processor.js +576 -136
- package/dest/public/public_processor/public_processor_metrics.d.ts +4 -4
- package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
- package/dest/public/public_processor/public_processor_metrics.js +29 -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 +98 -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 +132 -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 +171 -0
- package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts +23 -0
- package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.js +52 -0
- package/dest/public/public_tx_simulator/factories.d.ts +14 -0
- package/dest/public/public_tx_simulator/factories.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/factories.js +28 -0
- package/dest/public/public_tx_simulator/index.d.ts +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 +25 -31
- package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/public_tx_context.js +75 -95
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +38 -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 +220 -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 +56 -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 +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 +76 -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 +26 -38
- 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 +57 -62
- package/src/public/avm/avm_simulator_interface.ts +8 -0
- package/src/public/avm/calldata.ts +100 -0
- package/src/public/avm/errors.ts +20 -75
- package/src/public/avm/fixtures/avm_simulation_tester.ts +41 -24
- package/src/public/avm/fixtures/base_avm_simulation_tester.ts +46 -13
- package/src/public/avm/fixtures/initializers.ts +103 -0
- package/src/public/avm/fixtures/utils.ts +151 -0
- package/src/public/avm/index.ts +0 -2
- package/src/public/avm/opcodes/accrued_substate.ts +81 -48
- 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 +10 -10
- 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 +22 -10
- 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 +89 -80
- package/src/public/avm/serialization/instruction_serialization.ts +75 -34
- 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 +169 -0
- package/src/public/fixtures/custom_bytecode_tester.ts +83 -0
- package/src/public/fixtures/custom_bytecode_tests.ts +228 -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 +1721 -0
- package/src/public/fixtures/public_tx_simulation_tester.ts +223 -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 +141 -69
- 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 +607 -0
- package/src/public/index.ts +11 -8
- package/src/public/public_db_sources.ts +290 -260
- package/src/public/public_errors.ts +14 -0
- package/src/public/public_processor/guarded_merkle_tree.ts +158 -0
- package/src/public/public_processor/public_processor.ts +257 -179
- package/src/public/public_processor/public_processor_metrics.ts +18 -46
- package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +124 -0
- package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +211 -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 +239 -0
- package/src/public/public_tx_simulator/dumping_cpp_public_tx_simulator.ts +83 -0
- package/src/public/public_tx_simulator/factories.ts +43 -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 +179 -199
- package/src/public/public_tx_simulator/public_tx_simulator.ts +316 -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 +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.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
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interface for AvmSimulator to break the circular dependency between avm_context.ts and avm_simulator.ts
|
|
3
|
+
*/
|
|
4
|
+
export interface AvmSimulatorInterface {
|
|
5
|
+
execute(): Promise<any>;
|
|
6
|
+
executeBytecode(bytecode: Buffer): Promise<any>;
|
|
7
|
+
getBytecode(): Buffer | undefined;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX3NpbXVsYXRvcl9pbnRlcmZhY2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wdWJsaWMvYXZtL2F2bV9zaW11bGF0b3JfaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxXQUFXLHFCQUFxQjtJQUNwQyxPQUFPLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hCLGVBQWUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoRCxXQUFXLElBQUksTUFBTSxHQUFHLFNBQVMsQ0FBQztDQUNuQyJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"avm_simulator_interface.d.ts","sourceRoot":"","sources":["../../../src/public/avm/avm_simulator_interface.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;IACxB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAChD,WAAW,IAAI,MAAM,GAAG,SAAS,CAAC;CACnC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { Fr } from '@aztec/foundation/schemas';
|
|
2
|
+
import { TaggedMemory } from './avm_memory_types.js';
|
|
3
|
+
export interface LazyReader {
|
|
4
|
+
bestEffortReadAll(readCap?: number): Fr[];
|
|
5
|
+
readAll(): Fr[];
|
|
6
|
+
read(idx: number): Fr | undefined;
|
|
7
|
+
slice(start: number, end: number): Fr[];
|
|
8
|
+
length(): number;
|
|
9
|
+
}
|
|
10
|
+
export declare class LazyReaderMemory implements LazyReader {
|
|
11
|
+
private memory;
|
|
12
|
+
private offset;
|
|
13
|
+
private size;
|
|
14
|
+
constructor(memory: TaggedMemory, offset: number, size: number);
|
|
15
|
+
bestEffortReadAll(readCap?: number): Fr[];
|
|
16
|
+
read(idx: number): Fr | undefined;
|
|
17
|
+
slice(start: number, end: number): Fr[];
|
|
18
|
+
readAll(): Fr[];
|
|
19
|
+
length(): number;
|
|
20
|
+
}
|
|
21
|
+
export declare class LazyReaderArray implements LazyReader {
|
|
22
|
+
private array;
|
|
23
|
+
constructor(array: Fr[]);
|
|
24
|
+
bestEffortReadAll(readCap?: number): Fr[];
|
|
25
|
+
read(idx: number): Fr | undefined;
|
|
26
|
+
slice(start: number, end: number): Fr[];
|
|
27
|
+
readAll(): Fr[];
|
|
28
|
+
length(): number;
|
|
29
|
+
}
|
|
30
|
+
declare const CallDataBrand: unique symbol;
|
|
31
|
+
declare const ReturnDataBrand: unique symbol;
|
|
32
|
+
export type CallData = LazyReader & {
|
|
33
|
+
readonly [CallDataBrand]: true;
|
|
34
|
+
};
|
|
35
|
+
export type ReturnData = LazyReader & {
|
|
36
|
+
readonly [ReturnDataBrand]: true;
|
|
37
|
+
};
|
|
38
|
+
export declare class CallDataArray extends LazyReaderArray implements CallData {
|
|
39
|
+
readonly [CallDataBrand]: true;
|
|
40
|
+
}
|
|
41
|
+
export declare class CallDataMemory extends LazyReaderMemory implements CallData {
|
|
42
|
+
readonly [CallDataBrand]: true;
|
|
43
|
+
}
|
|
44
|
+
export declare class ReturnDataArray extends LazyReaderArray implements ReturnData {
|
|
45
|
+
readonly [ReturnDataBrand]: true;
|
|
46
|
+
}
|
|
47
|
+
export declare class ReturnDataMemory extends LazyReaderMemory implements ReturnData {
|
|
48
|
+
readonly [ReturnDataBrand]: true;
|
|
49
|
+
}
|
|
50
|
+
export {};
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsbGRhdGEuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wdWJsaWMvYXZtL2NhbGxkYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXBELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUtyRCxNQUFNLFdBQVcsVUFBVTtJQUN6QixpQkFBaUIsQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDMUMsT0FBTyxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQ2hCLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsR0FBRyxTQUFTLENBQUM7SUFDbEMsS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUN4QyxNQUFNLElBQUksTUFBTSxDQUFDO0NBQ2xCO0FBRUQscUJBQWEsZ0JBQWlCLFlBQVcsVUFBVTtJQUUvQyxPQUFPLENBQUMsTUFBTTtJQUNkLE9BQU8sQ0FBQyxNQUFNO0lBQ2QsT0FBTyxDQUFDLElBQUk7SUFIZCxZQUNVLE1BQU0sRUFBRSxZQUFZLEVBQ3BCLE1BQU0sRUFBRSxNQUFNLEVBQ2QsSUFBSSxFQUFFLE1BQU0sRUFDbEI7SUFFRyxpQkFBaUIsQ0FBQyxPQUFPLFNBQStCLEdBQUcsRUFBRSxFQUFFLENBR3JFO0lBRU0sSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxHQUFHLFNBQVMsQ0FLdkM7SUFFTSxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsRUFBRSxDQUk3QztJQUVNLE9BQU8sSUFBSSxFQUFFLEVBQUUsQ0FFckI7SUFFTSxNQUFNLElBQUksTUFBTSxDQUV0QjtDQUNGO0FBRUQscUJBQWEsZUFBZ0IsWUFBVyxVQUFVO0lBQ3BDLE9BQU8sQ0FBQyxLQUFLO0lBQXpCLFlBQW9CLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBSTtJQUU1QixpQkFBaUIsQ0FBQyxPQUFPLFNBQStCLEdBQUcsRUFBRSxFQUFFLENBRXJFO0lBRU0sSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxHQUFHLFNBQVMsQ0FFdkM7SUFFTSxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsRUFBRSxDQUU3QztJQUVNLE9BQU8sSUFBSSxFQUFFLEVBQUUsQ0FFckI7SUFFTSxNQUFNLElBQUksTUFBTSxDQUV0QjtDQUNGO0FBR0QsT0FBTyxDQUFDLE1BQU0sYUFBYSxFQUFFLE9BQU8sTUFBTSxDQUFDO0FBQzNDLE9BQU8sQ0FBQyxNQUFNLGVBQWUsRUFBRSxPQUFPLE1BQU0sQ0FBQztBQUU3QyxNQUFNLE1BQU0sUUFBUSxHQUFHLFVBQVUsR0FBRztJQUNsQyxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsRUFBRSxJQUFJLENBQUM7Q0FDaEMsQ0FBQztBQUVGLE1BQU0sTUFBTSxVQUFVLEdBQUcsVUFBVSxHQUFHO0lBQ3BDLFFBQVEsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxFQUFFLElBQUksQ0FBQztDQUNsQyxDQUFDO0FBRUYscUJBQWEsYUFBYyxTQUFRLGVBQWdCLFlBQVcsUUFBUTtJQUNwRSxTQUFpQixDQUFDLGFBQWEsQ0FBQyxFQUFFLElBQUksQ0FBQztDQUN4QztBQUVELHFCQUFhLGNBQWUsU0FBUSxnQkFBaUIsWUFBVyxRQUFRO0lBQ3RFLFNBQWlCLENBQUMsYUFBYSxDQUFDLEVBQUUsSUFBSSxDQUFDO0NBQ3hDO0FBRUQscUJBQWEsZUFBZ0IsU0FBUSxlQUFnQixZQUFXLFVBQVU7SUFDeEUsU0FBaUIsQ0FBQyxlQUFlLENBQUMsRUFBRSxJQUFJLENBQUM7Q0FDMUM7QUFFRCxxQkFBYSxnQkFBaUIsU0FBUSxnQkFBaUIsWUFBVyxVQUFVO0lBQzFFLFNBQWlCLENBQUMsZUFBZSxDQUFDLEVBQUUsSUFBSSxDQUFDO0NBQzFDIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calldata.d.ts","sourceRoot":"","sources":["../../../src/public/avm/calldata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,2BAA2B,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAKrD,MAAM,WAAW,UAAU;IACzB,iBAAiB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,EAAE,EAAE,CAAC;IAC1C,OAAO,IAAI,EAAE,EAAE,CAAC;IAChB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,GAAG,SAAS,CAAC;IAClC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,EAAE,EAAE,CAAC;IACxC,MAAM,IAAI,MAAM,CAAC;CAClB;AAED,qBAAa,gBAAiB,YAAW,UAAU;IAE/C,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,IAAI;IAHd,YACU,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EAClB;IAEG,iBAAiB,CAAC,OAAO,SAA+B,GAAG,EAAE,EAAE,CAGrE;IAEM,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,GAAG,SAAS,CAKvC;IAEM,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,EAAE,EAAE,CAI7C;IAEM,OAAO,IAAI,EAAE,EAAE,CAErB;IAEM,MAAM,IAAI,MAAM,CAEtB;CACF;AAED,qBAAa,eAAgB,YAAW,UAAU;IACpC,OAAO,CAAC,KAAK;IAAzB,YAAoB,KAAK,EAAE,EAAE,EAAE,EAAI;IAE5B,iBAAiB,CAAC,OAAO,SAA+B,GAAG,EAAE,EAAE,CAErE;IAEM,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,GAAG,SAAS,CAEvC;IAEM,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,EAAE,EAAE,CAE7C;IAEM,OAAO,IAAI,EAAE,EAAE,CAErB;IAEM,MAAM,IAAI,MAAM,CAEtB;CACF;AAGD,OAAO,CAAC,MAAM,aAAa,EAAE,OAAO,MAAM,CAAC;AAC3C,OAAO,CAAC,MAAM,eAAe,EAAE,OAAO,MAAM,CAAC;AAE7C,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG;IAClC,QAAQ,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG;IACpC,QAAQ,CAAC,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC;CAClC,CAAC;AAEF,qBAAa,aAAc,SAAQ,eAAgB,YAAW,QAAQ;IACpE,SAAiB,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC;CACxC;AAED,qBAAa,cAAe,SAAQ,gBAAiB,YAAW,QAAQ;IACtE,SAAiB,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC;CACxC;AAED,qBAAa,eAAgB,SAAQ,eAAgB,YAAW,UAAU;IACxE,SAAiB,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC;CAC1C;AAED,qBAAa,gBAAiB,SAAQ,gBAAiB,YAAW,UAAU;IAC1E,SAAiB,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC;CAC1C"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { TaggedMemory } from './avm_memory_types.js';
|
|
2
|
+
// Allow reading up to 300 kB of return data when unspecified.
|
|
3
|
+
const DEFAULT_BEST_EFFORT_READ_CAP = 10000;
|
|
4
|
+
export class LazyReaderMemory {
|
|
5
|
+
memory;
|
|
6
|
+
offset;
|
|
7
|
+
size;
|
|
8
|
+
constructor(memory, offset, size){
|
|
9
|
+
this.memory = memory;
|
|
10
|
+
this.offset = offset;
|
|
11
|
+
this.size = size;
|
|
12
|
+
}
|
|
13
|
+
bestEffortReadAll(readCap = DEFAULT_BEST_EFFORT_READ_CAP) {
|
|
14
|
+
const size = Math.min(this.size, readCap, TaggedMemory.MAX_MEMORY_SIZE - this.offset);
|
|
15
|
+
return this.memory.getSlice(this.offset, size).map((word)=>word.toFr());
|
|
16
|
+
}
|
|
17
|
+
read(idx) {
|
|
18
|
+
if (idx >= this.size) {
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
return this.memory.get(this.offset + idx).toFr();
|
|
22
|
+
}
|
|
23
|
+
slice(start, end) {
|
|
24
|
+
const clampedEnd = Math.min(end, this.size);
|
|
25
|
+
const length = Math.max(0, clampedEnd - start);
|
|
26
|
+
return this.memory.getSlice(this.offset + start, length).map((word)=>word.toFr());
|
|
27
|
+
}
|
|
28
|
+
readAll() {
|
|
29
|
+
return this.memory.getSlice(this.offset, this.size).map((word)=>word.toFr());
|
|
30
|
+
}
|
|
31
|
+
length() {
|
|
32
|
+
return this.size;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export class LazyReaderArray {
|
|
36
|
+
array;
|
|
37
|
+
constructor(array){
|
|
38
|
+
this.array = array;
|
|
39
|
+
}
|
|
40
|
+
bestEffortReadAll(readCap = DEFAULT_BEST_EFFORT_READ_CAP) {
|
|
41
|
+
return this.array.slice(0, readCap);
|
|
42
|
+
}
|
|
43
|
+
read(idx) {
|
|
44
|
+
return this.array[idx];
|
|
45
|
+
}
|
|
46
|
+
slice(start, end) {
|
|
47
|
+
return this.array.slice(start, end);
|
|
48
|
+
}
|
|
49
|
+
readAll() {
|
|
50
|
+
return this.array;
|
|
51
|
+
}
|
|
52
|
+
length() {
|
|
53
|
+
return this.array.length;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
export class CallDataArray extends LazyReaderArray {
|
|
57
|
+
}
|
|
58
|
+
export class CallDataMemory extends LazyReaderMemory {
|
|
59
|
+
}
|
|
60
|
+
export class ReturnDataArray extends LazyReaderArray {
|
|
61
|
+
}
|
|
62
|
+
export class ReturnDataMemory extends LazyReaderMemory {
|
|
63
|
+
}
|
|
@@ -1,17 +1,13 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
1
|
+
import type { Point } from '@aztec/foundation/curves/grumpkin';
|
|
3
2
|
import type { FailingFunction, NoirCallStack } from '@aztec/stdlib/errors';
|
|
4
3
|
import { ExecutionError } from '../../common/errors.js';
|
|
5
|
-
import
|
|
4
|
+
import { CheckedPublicExecutionError } from '../public_errors.js';
|
|
6
5
|
/**
|
|
7
6
|
* Avm-specific errors should derive from this
|
|
8
7
|
*/
|
|
9
|
-
export declare abstract class AvmExecutionError extends
|
|
8
|
+
export declare abstract class AvmExecutionError extends CheckedPublicExecutionError {
|
|
10
9
|
constructor(message: string);
|
|
11
10
|
}
|
|
12
|
-
export declare class NoBytecodeForContractError extends AvmExecutionError {
|
|
13
|
-
constructor(contractAddress: AztecAddress);
|
|
14
|
-
}
|
|
15
11
|
export declare class ArithmeticError extends AvmExecutionError {
|
|
16
12
|
constructor(message: string);
|
|
17
13
|
}
|
|
@@ -51,6 +47,8 @@ export declare class InstructionExecutionError extends AvmExecutionError {
|
|
|
51
47
|
* Error thrown on failed AVM memory tag check.
|
|
52
48
|
*/
|
|
53
49
|
export declare class TagCheckError extends AvmExecutionError {
|
|
50
|
+
static forBaseAddress(gotTag: string): TagCheckError;
|
|
51
|
+
static forIndirectAddress(address: number, gotTag: string): TagCheckError;
|
|
54
52
|
static forOffset(offset: number, gotTag: string, expectedTag: string): TagCheckError;
|
|
55
53
|
static forTag(gotTag: string, expectedTag: string): TagCheckError;
|
|
56
54
|
constructor(message: string);
|
|
@@ -74,16 +72,10 @@ export declare class OutOfGasError extends AvmExecutionError {
|
|
|
74
72
|
constructor(dimensions: string[]);
|
|
75
73
|
}
|
|
76
74
|
/**
|
|
77
|
-
* Error is thrown when the supplied points
|
|
78
|
-
*/
|
|
79
|
-
export declare class MSMPointsLengthError extends AvmExecutionError {
|
|
80
|
-
constructor(pointsReadLength: number);
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Error is thrown when one of the supplied points does not lie on the Grumpkin curve. Specific for MSM opcode.
|
|
75
|
+
* Error is thrown when one of the supplied points does not lie on the Grumpkin curve. Specific for ECADD opcode.
|
|
84
76
|
*/
|
|
85
|
-
export declare class
|
|
86
|
-
constructor(point: Point);
|
|
77
|
+
export declare class EcAddPointNotOnCurveError extends AvmExecutionError {
|
|
78
|
+
constructor(pointIndex: number, point: Point);
|
|
87
79
|
}
|
|
88
80
|
/**
|
|
89
81
|
* Error is thrown when some inputs of ToRadixBE are not valid.
|
|
@@ -106,17 +98,7 @@ export declare class AvmRevertReason extends ExecutionError {
|
|
|
106
98
|
constructor(message: string, failingFunction: FailingFunction, noirCallStack: NoirCallStack, options?: ErrorOptions);
|
|
107
99
|
}
|
|
108
100
|
/**
|
|
109
|
-
*
|
|
110
|
-
*
|
|
111
|
-
* @param haltingError - the lower-level error causing the exceptional halt
|
|
112
|
-
* @param context - the context of the AVM execution used to extract the failingFunction and noirCallStack
|
|
113
|
-
*/
|
|
114
|
-
export declare function revertReasonFromExceptionalHalt(haltingError: AvmExecutionError, context: AvmContext): Promise<AvmRevertReason>;
|
|
115
|
-
/**
|
|
116
|
-
* Create a "revert reason" error for an explicit revert (a root cause).
|
|
117
|
-
*
|
|
118
|
-
* @param revertData - output data of the explicit REVERT instruction
|
|
119
|
-
* @param context - the context of the AVM execution used to extract the failingFunction and noirCallStack
|
|
101
|
+
* Helper to annotate errors occurring during instruction fetching.
|
|
120
102
|
*/
|
|
121
|
-
export declare function
|
|
122
|
-
//# sourceMappingURL=
|
|
103
|
+
export declare function duringInstrFetch(error: Error, pc: number): Error;
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHVibGljL2F2bS9lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDL0QsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTNFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRTs7R0FFRztBQUNILDhCQUFzQixpQkFBa0IsU0FBUSwyQkFBMkI7SUFDekUsWUFBWSxPQUFPLEVBQUUsTUFBTSxFQUcxQjtDQUNGO0FBRUQscUJBQWEsZUFBZ0IsU0FBUSxpQkFBaUI7SUFDcEQsWUFBWSxPQUFPLEVBQUUsTUFBTSxFQUcxQjtDQUNGO0FBRUQ7OztHQUdHO0FBQ0gscUJBQWEsMEJBQTJCLFNBQVEsaUJBQWlCO0lBQy9ELFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUdsQztDQUNGO0FBRUQ7OztHQUdHO0FBQ0gscUJBQWEsa0JBQW1CLFNBQVEsaUJBQWlCO0lBQ3ZELFlBQVksR0FBRyxFQUFFLE1BQU0sRUFHdEI7Q0FDRjtBQUVEOztHQUVHO0FBQ0gscUJBQWEsZUFBZ0IsU0FBUSxpQkFBaUI7SUFDcEQsWUFBWSxHQUFHLEVBQUUsTUFBTSxFQUd0QjtDQUNGO0FBRUQ7O0dBRUc7QUFDSCxxQkFBYSxvQkFBcUIsU0FBUSxpQkFBaUI7SUFDekQsWUFBWSxRQUFRLEVBQUUsTUFBTSxFQUczQjtDQUNGO0FBRUQ7O0dBRUc7QUFDSCxxQkFBYSx5QkFBMEIsU0FBUSxpQkFBaUI7SUFDOUQsWUFBWSxPQUFPLEVBQUUsTUFBTSxFQUcxQjtDQUNGO0FBRUQ7O0dBRUc7QUFDSCxxQkFBYSxhQUFjLFNBQVEsaUJBQWlCO0lBQ2xELE9BQWMsY0FBYyxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsYUFBYSxDQUUxRDtJQUNELE9BQWMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxHQUFHLGFBQWEsQ0FFL0U7SUFDRCxPQUFjLFNBQVMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sR0FBRyxhQUFhLENBRTFGO0lBRUQsT0FBYyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxHQUFHLGFBQWEsQ0FFdkU7SUFFRCxZQUFZLE9BQU8sRUFBRSxNQUFNLEVBRzFCO0NBQ0Y7QUFFRDs7O0dBR0c7QUFDSCxxQkFBYSw4QkFBK0IsU0FBUSxpQkFBaUI7SUFDbkUsWUFBWSxRQUFRLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBRzlDO0NBQ0Y7QUFFRDs7O0dBR0c7QUFDSCxxQkFBYSwwQkFBMkIsU0FBUSxpQkFBaUI7SUFDL0QsWUFBWSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBR3pDO0NBQ0Y7QUFFRCxvQ0FBb0M7QUFDcEMscUJBQWEsYUFBYyxTQUFRLGlCQUFpQjtJQUNsRCxZQUFZLFVBQVUsRUFBRSxNQUFNLEVBQUUsRUFHL0I7Q0FDRjtBQUVEOztHQUVHO0FBQ0gscUJBQWEseUJBQTBCLFNBQVEsaUJBQWlCO0lBQzlELFlBQVksVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUczQztDQUNGO0FBRUQ7O0dBRUc7QUFDSCxxQkFBYSx5QkFBMEIsU0FBUSxpQkFBaUI7SUFDOUQsWUFBWSxXQUFXLEVBQUUsTUFBTSxFQUc5QjtDQUNGO0FBRUQ7O0dBRUc7QUFDSCxxQkFBYSx5QkFBMEIsU0FBUSx5QkFBeUI7SUFDdEUsY0FHQztDQUNGO0FBRUQ7Ozs7R0FJRztBQUNILHFCQUFhLGVBQWdCLFNBQVEsY0FBYztJQUNqRCxZQUFZLE9BQU8sRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLE9BQU8sQ0FBQyxFQUFFLFlBQVksRUFFbEg7Q0FDRjtBQUVEOztHQUVHO0FBQ0gsd0JBQWdCLGdCQUFnQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sU0FHeEQifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/public/avm/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/public/avm/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE3E,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAElE;;GAEG;AACH,8BAAsB,iBAAkB,SAAQ,2BAA2B;IACzE,YAAY,OAAO,EAAE,MAAM,EAG1B;CACF;AAED,qBAAa,eAAgB,SAAQ,iBAAiB;IACpD,YAAY,OAAO,EAAE,MAAM,EAG1B;CACF;AAED;;;GAGG;AACH,qBAAa,0BAA2B,SAAQ,iBAAiB;IAC/D,YAAY,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAGlC;CACF;AAED;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,iBAAiB;IACvD,YAAY,GAAG,EAAE,MAAM,EAGtB;CACF;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,iBAAiB;IACpD,YAAY,GAAG,EAAE,MAAM,EAGtB;CACF;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,iBAAiB;IACzD,YAAY,QAAQ,EAAE,MAAM,EAG3B;CACF;AAED;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,iBAAiB;IAC9D,YAAY,OAAO,EAAE,MAAM,EAG1B;CACF;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,iBAAiB;IAClD,OAAc,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAE1D;IACD,OAAc,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,CAE/E;IACD,OAAc,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,aAAa,CAE1F;IAED,OAAc,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,aAAa,CAEvE;IAED,YAAY,OAAO,EAAE,MAAM,EAG1B;CACF;AAED;;;GAGG;AACH,qBAAa,8BAA+B,SAAQ,iBAAiB;IACnE,YAAY,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAG9C;CACF;AAED;;;GAGG;AACH,qBAAa,0BAA2B,SAAQ,iBAAiB;IAC/D,YAAY,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAGzC;CACF;AAED,oCAAoC;AACpC,qBAAa,aAAc,SAAQ,iBAAiB;IAClD,YAAY,UAAU,EAAE,MAAM,EAAE,EAG/B;CACF;AAED;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,iBAAiB;IAC9D,YAAY,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAG3C;CACF;AAED;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,iBAAiB;IAC9D,YAAY,WAAW,EAAE,MAAM,EAG9B;CACF;AAED;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,yBAAyB;IACtE,cAGC;CACF;AAED;;;;GAIG;AACH,qBAAa,eAAgB,SAAQ,cAAc;IACjD,YAAY,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,YAAY,EAElH;CACF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,SAGxD"}
|
|
@@ -1,18 +1,13 @@
|
|
|
1
1
|
import { ExecutionError } from '../../common/errors.js';
|
|
2
|
+
import { CheckedPublicExecutionError } from '../public_errors.js';
|
|
2
3
|
/**
|
|
3
4
|
* Avm-specific errors should derive from this
|
|
4
|
-
*/ export class AvmExecutionError extends
|
|
5
|
+
*/ export class AvmExecutionError extends CheckedPublicExecutionError {
|
|
5
6
|
constructor(message){
|
|
6
7
|
super(message);
|
|
7
8
|
this.name = 'AvmExecutionError';
|
|
8
9
|
}
|
|
9
10
|
}
|
|
10
|
-
export class NoBytecodeForContractError extends AvmExecutionError {
|
|
11
|
-
constructor(contractAddress){
|
|
12
|
-
super(`No bytecode found at: ${contractAddress}`);
|
|
13
|
-
this.name = 'NoBytecodeFoundInterpreterError';
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
11
|
export class ArithmeticError extends AvmExecutionError {
|
|
17
12
|
constructor(message){
|
|
18
13
|
super(message);
|
|
@@ -49,7 +44,7 @@ export class ArithmeticError extends AvmExecutionError {
|
|
|
49
44
|
* Error is thrown when the tag has an invalid value.
|
|
50
45
|
*/ export class InvalidTagValueError extends AvmExecutionError {
|
|
51
46
|
constructor(tagValue){
|
|
52
|
-
super(`Tag value ${tagValue} is invalid.`);
|
|
47
|
+
super(`Tag check failed: Tag value ${tagValue} is invalid.`);
|
|
53
48
|
this.name = 'InvalidTagValueError';
|
|
54
49
|
}
|
|
55
50
|
}
|
|
@@ -64,6 +59,12 @@ export class ArithmeticError extends AvmExecutionError {
|
|
|
64
59
|
/**
|
|
65
60
|
* Error thrown on failed AVM memory tag check.
|
|
66
61
|
*/ export class TagCheckError extends AvmExecutionError {
|
|
62
|
+
static forBaseAddress(gotTag) {
|
|
63
|
+
return new TagCheckError(`Base address (mem[0]) is not a valid address (has tag ${gotTag})`);
|
|
64
|
+
}
|
|
65
|
+
static forIndirectAddress(address, gotTag) {
|
|
66
|
+
return new TagCheckError(`Address after indirection is not a valid address (address ${address} has tag ${gotTag})`);
|
|
67
|
+
}
|
|
67
68
|
static forOffset(offset, gotTag, expectedTag) {
|
|
68
69
|
return new TagCheckError(`Tag mismatch at offset ${offset}, got ${gotTag}, expected ${expectedTag}`);
|
|
69
70
|
}
|
|
@@ -80,7 +81,7 @@ export class ArithmeticError extends AvmExecutionError {
|
|
|
80
81
|
* is out of range, i.e, greater than maxUint32.
|
|
81
82
|
*/ export class RelativeAddressOutOfRangeError extends AvmExecutionError {
|
|
82
83
|
constructor(baseAddr, relOffset){
|
|
83
|
-
super(`
|
|
84
|
+
super(`Relative address out of range. Base address ${baseAddr}, relative offset ${relOffset}`);
|
|
84
85
|
this.name = 'RelativeAddressOutOfRangeError';
|
|
85
86
|
}
|
|
86
87
|
}
|
|
@@ -100,19 +101,11 @@ export class ArithmeticError extends AvmExecutionError {
|
|
|
100
101
|
}
|
|
101
102
|
}
|
|
102
103
|
/**
|
|
103
|
-
* Error is thrown when the supplied points
|
|
104
|
-
*/ export class
|
|
105
|
-
constructor(
|
|
106
|
-
super(`
|
|
107
|
-
this.name = '
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Error is thrown when one of the supplied points does not lie on the Grumpkin curve. Specific for MSM opcode.
|
|
112
|
-
*/ export class MSMPointNotOnCurveError extends AvmExecutionError {
|
|
113
|
-
constructor(point){
|
|
114
|
-
super(`Point ${point.toString()} is not on the curve.`);
|
|
115
|
-
this.name = 'MSMPointNotOnCurveError';
|
|
104
|
+
* Error is thrown when one of the supplied points does not lie on the Grumpkin curve. Specific for ECADD opcode.
|
|
105
|
+
*/ export class EcAddPointNotOnCurveError extends AvmExecutionError {
|
|
106
|
+
constructor(pointIndex, point){
|
|
107
|
+
super(`EcAdd point${pointIndex} (${point.toString()}) is not on the curve.`);
|
|
108
|
+
this.name = 'EcAddPointNotOnCurveError';
|
|
116
109
|
}
|
|
117
110
|
}
|
|
118
111
|
/**
|
|
@@ -140,40 +133,9 @@ export class ArithmeticError extends AvmExecutionError {
|
|
|
140
133
|
super(message, failingFunction, noirCallStack, options);
|
|
141
134
|
}
|
|
142
135
|
}
|
|
143
|
-
async function createRevertReason(message, revertData, context) {
|
|
144
|
-
// We drop the returnPc information.
|
|
145
|
-
const internalCallStack = context.machineState.internalCallStack.map((entry)=>entry.callPc);
|
|
146
|
-
// If we are reverting due to the same error that we have been tracking, we use the nested error as the cause.
|
|
147
|
-
let nestedError = undefined;
|
|
148
|
-
const revertDataEquals = (a, b)=>a.length === b.length && a.every((v, i)=>v.equals(b[i]));
|
|
149
|
-
if (context.machineState.collectedRevertInfo && revertDataEquals(context.machineState.collectedRevertInfo.revertDataRepresentative, revertData)) {
|
|
150
|
-
nestedError = context.machineState.collectedRevertInfo.recursiveRevertReason;
|
|
151
|
-
message = context.machineState.collectedRevertInfo.recursiveRevertReason.message;
|
|
152
|
-
}
|
|
153
|
-
const fnName = await context.persistableState.getPublicFunctionDebugName(context.environment);
|
|
154
|
-
return new AvmRevertReason(message, /*failingFunction=*/ {
|
|
155
|
-
contractAddress: context.environment.address,
|
|
156
|
-
functionName: fnName
|
|
157
|
-
}, /*noirCallStack=*/ [
|
|
158
|
-
...internalCallStack,
|
|
159
|
-
context.machineState.pc
|
|
160
|
-
].map((pc)=>`0.${pc}`), /*options=*/ {
|
|
161
|
-
cause: nestedError
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
/**
|
|
165
|
-
* Create a "revert reason" error for an exceptional halt.
|
|
166
|
-
*
|
|
167
|
-
* @param haltingError - the lower-level error causing the exceptional halt
|
|
168
|
-
* @param context - the context of the AVM execution used to extract the failingFunction and noirCallStack
|
|
169
|
-
*/ export async function revertReasonFromExceptionalHalt(haltingError, context) {
|
|
170
|
-
return await createRevertReason(haltingError.message, [], context);
|
|
171
|
-
}
|
|
172
136
|
/**
|
|
173
|
-
*
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
*/ export async function revertReasonFromExplicitRevert(revertData, context) {
|
|
178
|
-
return await createRevertReason('Assertion failed: ', revertData, context);
|
|
137
|
+
* Helper to annotate errors occurring during instruction fetching.
|
|
138
|
+
*/ export function duringInstrFetch(error, pc) {
|
|
139
|
+
error.message = `Instruction fetching error at pc ${pc}: ${error.message}`;
|
|
140
|
+
return error;
|
|
179
141
|
}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
2
2
|
import type { MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
|
|
3
|
+
import { NativeWorldStateService } from '@aztec/world-state';
|
|
3
4
|
import type { AvmContractCallResult } from '../../avm/avm_contract_call_result.js';
|
|
4
|
-
import {
|
|
5
|
+
import { SimpleContractDataSource } from '../../fixtures/simple_contract_data_source.js';
|
|
6
|
+
import { PublicPersistableStateManager } from '../../state_manager/state_manager.js';
|
|
5
7
|
import { BaseAvmSimulationTester } from './base_avm_simulation_tester.js';
|
|
6
|
-
import { SimpleContractDataSource } from './simple_contract_data_source.js';
|
|
7
8
|
/**
|
|
8
9
|
* A test class that extends the BaseAvmSimulationTester to enable real-app testing of the core AvmSimulator.
|
|
9
10
|
* It provides an interface for simulating one top-level call at a time and maintains state between
|
|
@@ -11,11 +12,11 @@ import { SimpleContractDataSource } from './simple_contract_data_source.js';
|
|
|
11
12
|
*/
|
|
12
13
|
export declare class AvmSimulationTester extends BaseAvmSimulationTester {
|
|
13
14
|
private stateManager;
|
|
14
|
-
constructor(contractDataSource: SimpleContractDataSource, merkleTrees: MerkleTreeWriteOperations, stateManager:
|
|
15
|
-
static create(): Promise<AvmSimulationTester>;
|
|
15
|
+
constructor(contractDataSource: SimpleContractDataSource, merkleTrees: MerkleTreeWriteOperations, stateManager: PublicPersistableStateManager);
|
|
16
|
+
static create(worldStateService: NativeWorldStateService): Promise<AvmSimulationTester>;
|
|
16
17
|
/**
|
|
17
18
|
* Simulate a top-level contract call.
|
|
18
19
|
*/
|
|
19
20
|
simulateCall(sender: AztecAddress, address: AztecAddress, fnName: string, args: any[], isStaticCall?: boolean): Promise<AvmContractCallResult>;
|
|
20
21
|
}
|
|
21
|
-
//# sourceMappingURL=
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX3NpbXVsYXRpb25fdGVzdGVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcHVibGljL2F2bS9maXh0dXJlcy9hdm1fc2ltdWxhdGlvbl90ZXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFaEUsT0FBTyxLQUFLLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVqRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUc3RCxPQUFPLEtBQUssRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBRXpGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBR3JGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBVzFFOzs7O0dBSUc7QUFDSCxxQkFBYSxtQkFBb0IsU0FBUSx1QkFBdUI7SUFJNUQsT0FBTyxDQUFDLFlBQVk7SUFIdEIsWUFDRSxrQkFBa0IsRUFBRSx3QkFBd0IsRUFDNUMsV0FBVyxFQUFFLHlCQUF5QixFQUM5QixZQUFZLEVBQUUsNkJBQTZCLEVBR3BEO0lBRUQsT0FBYSxNQUFNLENBQ2pCLGlCQUFpQixFQUFFLHVCQUF1QixHQUN6QyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FnQjlCO0lBRUQ7O09BRUc7SUFDRyxZQUFZLENBQ2hCLE1BQU0sRUFBRSxZQUFZLEVBQ3BCLE9BQU8sRUFBRSxZQUFZLEVBQ3JCLE1BQU0sRUFBRSxNQUFNLEVBQ2QsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUNYLFlBQVksVUFBUSxHQUNuQixPQUFPLENBQUMscUJBQXFCLENBQUMsQ0FrRGhDO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avm_simulation_tester.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/fixtures/avm_simulation_tester.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"avm_simulation_tester.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/fixtures/avm_simulation_tester.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAEjF,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAG7D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AACnF,OAAO,EAAE,wBAAwB,EAAE,MAAM,+CAA+C,CAAC;AAEzF,OAAO,EAAE,6BAA6B,EAAE,MAAM,sCAAsC,CAAC;AAGrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAW1E;;;;GAIG;AACH,qBAAa,mBAAoB,SAAQ,uBAAuB;IAI5D,OAAO,CAAC,YAAY;IAHtB,YACE,kBAAkB,EAAE,wBAAwB,EAC5C,WAAW,EAAE,yBAAyB,EAC9B,YAAY,EAAE,6BAA6B,EAGpD;IAED,OAAa,MAAM,CACjB,iBAAiB,EAAE,uBAAuB,GACzC,OAAO,CAAC,mBAAmB,CAAC,CAgB9B;IAED;;OAEG;IACG,YAAY,CAChB,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,GAAG,EAAE,EACX,YAAY,UAAQ,GACnB,OAAO,CAAC,qBAAqB,CAAC,CAkDhC;CACF"}
|
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
import { Fr } from '@aztec/foundation/
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
2
|
import { encodeArguments } from '@aztec/stdlib/abi';
|
|
3
|
+
import { PublicSimulatorConfig } from '@aztec/stdlib/avm';
|
|
3
4
|
import { GasFees } from '@aztec/stdlib/gas';
|
|
4
5
|
import { GlobalVariables } from '@aztec/stdlib/tx';
|
|
5
|
-
import { NativeWorldStateService } from '@aztec/world-state';
|
|
6
6
|
import { SideEffectTrace } from '../../../public/side_effect_trace.js';
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
7
|
+
import { SimpleContractDataSource } from '../../fixtures/simple_contract_data_source.js';
|
|
8
|
+
import { PublicContractsDB, PublicTreesDB } from '../../public_db_sources.js';
|
|
9
|
+
import { PublicPersistableStateManager } from '../../state_manager/state_manager.js';
|
|
10
10
|
import { AvmSimulator } from '../avm_simulator.js';
|
|
11
|
+
import { CallDataArray } from '../calldata.js';
|
|
11
12
|
import { BaseAvmSimulationTester } from './base_avm_simulation_tester.js';
|
|
12
|
-
import {
|
|
13
|
-
|
|
13
|
+
import { initContext, initExecutionEnvironment } from './initializers.js';
|
|
14
|
+
import { DEFAULT_TIMESTAMP, getContractFunctionAbi, getFunctionSelector, resolveContractAssertionMessage } from './utils.js';
|
|
14
15
|
const DEFAULT_GAS_FEES = new GasFees(2, 3);
|
|
15
16
|
/**
|
|
16
17
|
* A test class that extends the BaseAvmSimulationTester to enable real-app testing of the core AvmSimulator.
|
|
@@ -21,15 +22,14 @@ const DEFAULT_GAS_FEES = new GasFees(2, 3);
|
|
|
21
22
|
constructor(contractDataSource, merkleTrees, stateManager){
|
|
22
23
|
super(contractDataSource, merkleTrees), this.stateManager = stateManager;
|
|
23
24
|
}
|
|
24
|
-
static async create() {
|
|
25
|
+
static async create(worldStateService) {
|
|
25
26
|
const contractDataSource = new SimpleContractDataSource();
|
|
26
|
-
const merkleTrees = await
|
|
27
|
-
const
|
|
27
|
+
const merkleTrees = await worldStateService.fork();
|
|
28
|
+
const treesDB = new PublicTreesDB(merkleTrees);
|
|
29
|
+
const contractsDB = new PublicContractsDB(contractDataSource);
|
|
28
30
|
const trace = new SideEffectTrace();
|
|
29
31
|
const firstNullifier = new Fr(420000);
|
|
30
|
-
|
|
31
|
-
// failures on 2nd call to simulateCall with merkle ops on
|
|
32
|
-
const stateManager = AvmPersistableStateManager.create(worldStateDB, trace, /*doMerkleOperations=*/ false, firstNullifier);
|
|
32
|
+
const stateManager = PublicPersistableStateManager.create(treesDB, contractsDB, trace, firstNullifier, DEFAULT_TIMESTAMP);
|
|
33
33
|
return new AvmSimulationTester(contractDataSource, merkleTrees, stateManager);
|
|
34
34
|
}
|
|
35
35
|
/**
|
|
@@ -40,21 +40,29 @@ const DEFAULT_GAS_FEES = new GasFees(2, 3);
|
|
|
40
40
|
throw new Error(`Contract not found at address: ${address}`);
|
|
41
41
|
}
|
|
42
42
|
const fnSelector = await getFunctionSelector(fnName, contractArtifact);
|
|
43
|
-
const fnAbi =
|
|
43
|
+
const fnAbi = getContractFunctionAbi(fnName, contractArtifact);
|
|
44
44
|
const encodedArgs = encodeArguments(fnAbi, args);
|
|
45
45
|
const calldata = [
|
|
46
46
|
fnSelector.toField(),
|
|
47
47
|
...encodedArgs
|
|
48
48
|
];
|
|
49
49
|
const globals = GlobalVariables.empty();
|
|
50
|
-
globals.timestamp =
|
|
50
|
+
globals.timestamp = DEFAULT_TIMESTAMP;
|
|
51
51
|
globals.gasFees = DEFAULT_GAS_FEES;
|
|
52
|
+
const config = PublicSimulatorConfig.from({
|
|
53
|
+
skipFeeEnforcement: false,
|
|
54
|
+
collectDebugLogs: true,
|
|
55
|
+
collectHints: false,
|
|
56
|
+
collectStatistics: false,
|
|
57
|
+
collectCallMetadata: true
|
|
58
|
+
});
|
|
52
59
|
const environment = initExecutionEnvironment({
|
|
53
|
-
calldata,
|
|
60
|
+
calldata: new CallDataArray(calldata),
|
|
54
61
|
globals,
|
|
55
62
|
address,
|
|
56
63
|
sender,
|
|
57
|
-
isStaticCall
|
|
64
|
+
isStaticCall,
|
|
65
|
+
config
|
|
58
66
|
});
|
|
59
67
|
const persistableState = await this.stateManager.fork();
|
|
60
68
|
const context = initContext({
|
|
@@ -66,7 +74,7 @@ const DEFAULT_GAS_FEES = new GasFees(2, 3);
|
|
|
66
74
|
const result = await simulator.execute();
|
|
67
75
|
if (result.reverted) {
|
|
68
76
|
this.logger.error(`Error in ${fnName}:`);
|
|
69
|
-
this.logger.error(resolveContractAssertionMessage(fnName, result.revertReason, result.output, contractArtifact));
|
|
77
|
+
this.logger.error(resolveContractAssertionMessage(fnName, result.revertReason, result.output.bestEffortReadAll(), contractArtifact));
|
|
70
78
|
} else {
|
|
71
79
|
this.logger.info(`Simulation of function ${fnName} succeeded!`);
|
|
72
80
|
await this.stateManager.merge(persistableState);
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { Fr } from '@aztec/foundation/
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
2
|
import type { ContractArtifact } from '@aztec/stdlib/abi';
|
|
3
3
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
4
|
-
import type {
|
|
4
|
+
import type { ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
5
5
|
import type { MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
|
|
6
|
-
import type { SimpleContractDataSource } from '
|
|
6
|
+
import type { SimpleContractDataSource } from '../../fixtures/simple_contract_data_source.js';
|
|
7
7
|
/**
|
|
8
8
|
* An abstract test class that enables tests of real apps in the AVM without requiring e2e tests.
|
|
9
9
|
* It enables this by letting us (1) perform pseudo-contract-deployments (and registrations)
|
|
@@ -27,10 +27,12 @@ export declare abstract class BaseAvmSimulationTester {
|
|
|
27
27
|
* Derive the contract class and instance with some seed.
|
|
28
28
|
* Add both to the contract data source along with the contract artifact.
|
|
29
29
|
*/
|
|
30
|
-
registerAndDeployContract(constructorArgs: any[], deployer: AztecAddress, contractArtifact: ContractArtifact, skipNullifierInsertion?: boolean, seed?: number, originalContractClassId?: Fr): Promise<ContractInstanceWithAddress>;
|
|
30
|
+
registerAndDeployContract(constructorArgs: any[], deployer: AztecAddress, contractArtifact: ContractArtifact, skipNullifierInsertion?: boolean, seed?: number, contractClassSeed?: number, originalContractClassId?: Fr): Promise<ContractInstanceWithAddress>;
|
|
31
31
|
registerFeeJuiceContract(): Promise<ContractInstanceWithAddress>;
|
|
32
|
-
|
|
32
|
+
registerAuthContract(): Promise<ContractInstanceWithAddress>;
|
|
33
|
+
registerInstanceRegistryContract(): Promise<ContractInstanceWithAddress>;
|
|
33
34
|
addContractInstance(contractInstance: ContractInstanceWithAddress, skipNullifierInsertion?: boolean): Promise<void>;
|
|
34
35
|
private insertContractAddressNullifier;
|
|
36
|
+
insertNullifier(contractThatEmitted: AztecAddress, nullifier: Fr): Promise<void>;
|
|
35
37
|
}
|
|
36
|
-
//# sourceMappingURL=
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZV9hdm1fc2ltdWxhdGlvbl90ZXN0ZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wdWJsaWMvYXZtL2ZpeHR1cmVzL2Jhc2VfYXZtX3NpbXVsYXRpb25fdGVzdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQU1wRCxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEtBQUssRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTFFLE9BQU8sS0FBSyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHakYsT0FBTyxLQUFLLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUc5Rjs7Ozs7Ozs7OztHQVVHO0FBQ0gsOEJBQXNCLHVCQUF1QjtJQUlsQyxrQkFBa0IsRUFBRSx3QkFBd0I7SUFDNUMsV0FBVyxFQUFFLHlCQUF5QjtJQUM3QyxPQUFPLENBQUMsc0JBQXNCO0lBTHpCLE1BQU0seUNBQXlDO0lBRXRELFlBQ1Msa0JBQWtCLEVBQUUsd0JBQXdCLEVBQzVDLFdBQVcsRUFBRSx5QkFBeUIsRUFDckMsc0JBQXNCLEtBQW1CLEVBQy9DO0lBRUUsa0JBQWtCLENBQUMsUUFBUSxFQUFFLFlBQVksRUFBRSxPQUFPLEtBQThCLGlCQUlyRjtJQUVLLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxpQkFLaEU7SUFFRDs7O09BR0c7SUFDRyx5QkFBeUIsQ0FDN0IsZUFBZSxFQUFFLEdBQUcsRUFBRSxFQUN0QixRQUFRLEVBQUUsWUFBWSxFQUN0QixnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFDbEMsc0JBQXNCLFVBQVEsRUFDOUIsSUFBSSxTQUFJLEVBQ1IsaUJBQWlCLFNBQU8sRUFDeEIsdUJBQXVCLENBQUMsRUFBRSxFQUFFLEdBQzNCLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxDQWdCdEM7SUFFSyx3QkFBd0IsSUFBSSxPQUFPLENBQUMsMkJBQTJCLENBQUMsQ0FTckU7SUFFSyxvQkFBb0IsSUFBSSxPQUFPLENBQUMsMkJBQTJCLENBQUMsQ0FhakU7SUFFSyxnQ0FBZ0MsSUFBSSxPQUFPLENBQUMsMkJBQTJCLENBQUMsQ0FhN0U7SUFFSyxtQkFBbUIsQ0FBQyxnQkFBZ0IsRUFBRSwyQkFBMkIsRUFBRSxzQkFBc0IsVUFBUSxpQkFLdEc7WUFFYSw4QkFBOEI7SUFRdEMsZUFBZSxDQUFDLG1CQUFtQixFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsRUFBRSxpQkFHckU7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base_avm_simulation_tester.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/fixtures/base_avm_simulation_tester.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"base_avm_simulation_tester.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/fixtures/base_avm_simulation_tester.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAMpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAE1E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAGjF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,+CAA+C,CAAC;AAG9F;;;;;;;;;;GAUG;AACH,8BAAsB,uBAAuB;IAIlC,kBAAkB,EAAE,wBAAwB;IAC5C,WAAW,EAAE,yBAAyB;IAC7C,OAAO,CAAC,sBAAsB;IALzB,MAAM,yCAAyC;IAEtD,YACS,kBAAkB,EAAE,wBAAwB,EAC5C,WAAW,EAAE,yBAAyB,EACrC,sBAAsB,KAAmB,EAC/C;IAEE,kBAAkB,CAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,KAA8B,iBAIrF;IAEK,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,iBAKhE;IAED;;;OAGG;IACG,yBAAyB,CAC7B,eAAe,EAAE,GAAG,EAAE,EACtB,QAAQ,EAAE,YAAY,EACtB,gBAAgB,EAAE,gBAAgB,EAClC,sBAAsB,UAAQ,EAC9B,IAAI,SAAI,EACR,iBAAiB,SAAO,EACxB,uBAAuB,CAAC,EAAE,EAAE,GAC3B,OAAO,CAAC,2BAA2B,CAAC,CAgBtC;IAEK,wBAAwB,IAAI,OAAO,CAAC,2BAA2B,CAAC,CASrE;IAEK,oBAAoB,IAAI,OAAO,CAAC,2BAA2B,CAAC,CAajE;IAEK,gCAAgC,IAAI,OAAO,CAAC,2BAA2B,CAAC,CAa7E;IAEK,mBAAmB,CAAC,gBAAgB,EAAE,2BAA2B,EAAE,sBAAsB,UAAQ,iBAKtG;YAEa,8BAA8B;IAQtC,eAAe,CAAC,mBAAmB,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,iBAGrE;CACF"}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Fr } from '@aztec/foundation/
|
|
1
|
+
import { CONTRACT_INSTANCE_REGISTRY_CONTRACT_ADDRESS } from '@aztec/constants';
|
|
2
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
3
|
import { createLogger } from '@aztec/foundation/log';
|
|
4
4
|
import { ProtocolContractAddress } from '@aztec/protocol-contracts';
|
|
5
|
+
import { getCanonicalAuthRegistry } from '@aztec/protocol-contracts/auth-registry';
|
|
5
6
|
import { computeFeePayerBalanceStorageSlot, getCanonicalFeeJuice } from '@aztec/protocol-contracts/fee-juice';
|
|
7
|
+
import { getCanonicalInstanceRegistry } from '@aztec/protocol-contracts/instance-registry';
|
|
6
8
|
import { PublicDataWrite } from '@aztec/stdlib/avm';
|
|
7
9
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
8
10
|
import { computePublicDataTreeLeafSlot, siloNullifier } from '@aztec/stdlib/hash';
|
|
9
11
|
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
10
|
-
import { createContractClassAndInstance } from './
|
|
12
|
+
import { createContractClassAndInstance } from './utils.js';
|
|
11
13
|
/**
|
|
12
14
|
* An abstract test class that enables tests of real apps in the AVM without requiring e2e tests.
|
|
13
15
|
* It enables this by letting us (1) perform pseudo-contract-deployments (and registrations)
|
|
@@ -38,15 +40,15 @@ import { createContractClassAndInstance } from './index.js';
|
|
|
38
40
|
const leafSlot = await computePublicDataTreeLeafSlot(address, slot);
|
|
39
41
|
// get existing preimage
|
|
40
42
|
const publicDataWrite = new PublicDataWrite(leafSlot, value);
|
|
41
|
-
await this.merkleTrees.
|
|
43
|
+
await this.merkleTrees.sequentialInsert(MerkleTreeId.PUBLIC_DATA_TREE, [
|
|
42
44
|
publicDataWrite.toBuffer()
|
|
43
|
-
]
|
|
45
|
+
]);
|
|
44
46
|
}
|
|
45
47
|
/**
|
|
46
48
|
* Derive the contract class and instance with some seed.
|
|
47
49
|
* Add both to the contract data source along with the contract artifact.
|
|
48
|
-
*/ async registerAndDeployContract(constructorArgs, deployer, contractArtifact, skipNullifierInsertion = false, seed = 0, originalContractClassId) {
|
|
49
|
-
const { contractClass, contractInstance } = await createContractClassAndInstance(constructorArgs, deployer, contractArtifact, seed, originalContractClassId);
|
|
50
|
+
*/ async registerAndDeployContract(constructorArgs, deployer, contractArtifact, skipNullifierInsertion = false, seed = 0, contractClassSeed = seed, originalContractClassId) {
|
|
51
|
+
const { contractClass, contractInstance } = await createContractClassAndInstance(constructorArgs, deployer, contractArtifact, seed, contractClassSeed, originalContractClassId);
|
|
50
52
|
await this.contractDataSource.addNewContract(contractArtifact, contractClass, contractInstance);
|
|
51
53
|
if (!skipNullifierInsertion) {
|
|
52
54
|
await this.insertContractAddressNullifier(contractInstance.address);
|
|
@@ -58,15 +60,30 @@ import { createContractClassAndInstance } from './index.js';
|
|
|
58
60
|
const feeJuiceContractClassPublic = {
|
|
59
61
|
...feeJuice.contractClass,
|
|
60
62
|
privateFunctions: [],
|
|
61
|
-
|
|
63
|
+
utilityFunctions: []
|
|
62
64
|
};
|
|
63
65
|
await this.contractDataSource.addNewContract(feeJuice.artifact, feeJuiceContractClassPublic, feeJuice.instance);
|
|
64
66
|
return feeJuice.instance;
|
|
65
67
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
68
|
+
async registerAuthContract() {
|
|
69
|
+
const authRegistry = await getCanonicalAuthRegistry();
|
|
70
|
+
const authRegistryContractClassPublic = {
|
|
71
|
+
...authRegistry.contractClass,
|
|
72
|
+
privateFunctions: [],
|
|
73
|
+
utilityFunctions: []
|
|
74
|
+
};
|
|
75
|
+
await this.contractDataSource.addNewContract(authRegistry.artifact, authRegistryContractClassPublic, authRegistry.instance);
|
|
76
|
+
return authRegistry.instance;
|
|
77
|
+
}
|
|
78
|
+
async registerInstanceRegistryContract() {
|
|
79
|
+
const instanceRegistry = await getCanonicalInstanceRegistry();
|
|
80
|
+
const instanceRegistryContractClassPublic = {
|
|
81
|
+
...instanceRegistry.contractClass,
|
|
82
|
+
privateFunctions: [],
|
|
83
|
+
utilityFunctions: []
|
|
84
|
+
};
|
|
85
|
+
await this.contractDataSource.addNewContract(instanceRegistry.artifact, instanceRegistryContractClassPublic, instanceRegistry.instance);
|
|
86
|
+
return instanceRegistry.instance;
|
|
70
87
|
}
|
|
71
88
|
async addContractInstance(contractInstance, skipNullifierInsertion = false) {
|
|
72
89
|
if (!skipNullifierInsertion) {
|
|
@@ -75,9 +92,15 @@ import { createContractClassAndInstance } from './index.js';
|
|
|
75
92
|
await this.contractDataSource.addContractInstance(contractInstance);
|
|
76
93
|
}
|
|
77
94
|
async insertContractAddressNullifier(contractAddress) {
|
|
78
|
-
const contractAddressNullifier = await siloNullifier(AztecAddress.fromNumber(
|
|
79
|
-
await this.merkleTrees.
|
|
95
|
+
const contractAddressNullifier = await siloNullifier(AztecAddress.fromNumber(CONTRACT_INSTANCE_REGISTRY_CONTRACT_ADDRESS), contractAddress.toField());
|
|
96
|
+
await this.merkleTrees.sequentialInsert(MerkleTreeId.NULLIFIER_TREE, [
|
|
80
97
|
contractAddressNullifier.toBuffer()
|
|
81
|
-
]
|
|
98
|
+
]);
|
|
99
|
+
}
|
|
100
|
+
async insertNullifier(contractThatEmitted, nullifier) {
|
|
101
|
+
const siloedNullifier = await siloNullifier(contractThatEmitted, nullifier);
|
|
102
|
+
await this.merkleTrees.sequentialInsert(MerkleTreeId.NULLIFIER_TREE, [
|
|
103
|
+
siloedNullifier.toBuffer()
|
|
104
|
+
]);
|
|
82
105
|
}
|
|
83
106
|
}
|