@aztec/simulator 0.0.1-commit.d3ec352c → 0.0.1-commit.d58ff9d0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -4
- package/dest/client.d.ts +1 -3
- package/dest/client.d.ts.map +1 -1
- package/dest/client.js +0 -2
- package/dest/common/errors.d.ts +8 -2
- package/dest/common/errors.d.ts.map +1 -1
- package/dest/private/acvm/acvm.d.ts +4 -2
- package/dest/private/acvm/acvm.d.ts.map +1 -1
- package/dest/private/acvm/acvm.js +4 -3
- package/dest/private/acvm/deserialize.d.ts +2 -2
- package/dest/private/acvm/deserialize.d.ts.map +1 -1
- package/dest/private/acvm/deserialize.js +1 -1
- package/dest/private/acvm/serialize.d.ts +2 -2
- package/dest/private/acvm/serialize.d.ts.map +1 -1
- package/dest/private/acvm/serialize.js +1 -1
- package/dest/private/acvm_native.d.ts +5 -3
- package/dest/private/acvm_native.d.ts.map +1 -1
- package/dest/private/acvm_native.js +8 -6
- package/dest/private/acvm_wasm.d.ts +4 -3
- package/dest/private/acvm_wasm.d.ts.map +1 -1
- package/dest/private/acvm_wasm.js +7 -5
- package/dest/private/circuit_recording/circuit_recorder.d.ts +39 -25
- package/dest/private/circuit_recording/circuit_recorder.d.ts.map +1 -1
- package/dest/private/circuit_recording/circuit_recorder.js +71 -72
- package/dest/private/circuit_recording/file_circuit_recorder.d.ts +9 -20
- package/dest/private/circuit_recording/file_circuit_recorder.d.ts.map +1 -1
- package/dest/private/circuit_recording/file_circuit_recorder.js +39 -43
- package/dest/private/circuit_recording/memory_circuit_recorder.d.ts +7 -2
- package/dest/private/circuit_recording/memory_circuit_recorder.d.ts.map +1 -1
- package/dest/private/circuit_recording/memory_circuit_recorder.js +4 -4
- package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts +1 -1
- package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts.map +1 -1
- package/dest/private/circuit_recording/simulator_recorder_wrapper.js +11 -14
- package/dest/private/factory.d.ts +3 -3
- package/dest/private/factory.d.ts.map +1 -1
- package/dest/private/factory.js +7 -4
- package/dest/public/avm/testing/account_proof_fetcher.d.ts +2 -0
- package/dest/public/avm/testing/account_proof_fetcher.d.ts.map +1 -0
- package/dest/public/avm/testing/account_proof_fetcher.js +152 -0
- package/dest/public/avm/{fixtures → testing}/base_avm_simulation_tester.d.ts +3 -2
- package/dest/public/avm/testing/base_avm_simulation_tester.d.ts.map +1 -0
- package/dest/public/avm/{fixtures → testing}/base_avm_simulation_tester.js +19 -4
- package/dest/public/avm/testing/utils.d.ts +32 -0
- package/dest/public/avm/testing/utils.d.ts.map +1 -0
- package/dest/public/avm/{fixtures → testing}/utils.js +5 -35
- package/dest/public/avm_simulator.d.ts +28 -0
- package/dest/public/avm_simulator.d.ts.map +1 -0
- package/dest/public/avm_simulator.js +4 -0
- package/dest/public/avm_simulator_pool.d.ts +45 -0
- package/dest/public/avm_simulator_pool.d.ts.map +1 -0
- package/dest/public/avm_simulator_pool.js +197 -0
- package/dest/public/cdb/generated/api_types.d.ts +171 -0
- package/dest/public/cdb/generated/api_types.d.ts.map +1 -0
- package/dest/public/cdb/generated/api_types.js +314 -0
- package/dest/public/cdb/generated/server.d.ts +26 -0
- package/dest/public/cdb/generated/server.d.ts.map +1 -0
- package/dest/public/cdb/generated/server.js +135 -0
- package/dest/public/cdb_ipc_server.d.ts +33 -0
- package/dest/public/cdb_ipc_server.d.ts.map +1 -0
- package/dest/public/cdb_ipc_server.js +153 -0
- package/dest/public/contracts_db_checkpoint.d.ts +3 -3
- package/dest/public/contracts_db_checkpoint.d.ts.map +1 -1
- package/dest/public/contracts_db_checkpoint.js +1 -1
- package/dest/public/db_interfaces.d.ts +2 -2
- package/dest/public/db_interfaces.d.ts.map +1 -1
- package/dest/public/executor_metrics.d.ts +1 -1
- package/dest/public/executor_metrics.d.ts.map +1 -1
- package/dest/public/executor_metrics.js +12 -33
- package/dest/public/fixtures/amm_test.js +6 -6
- package/dest/public/fixtures/bulk_test.d.ts +3 -3
- package/dest/public/fixtures/bulk_test.d.ts.map +1 -1
- package/dest/public/fixtures/bulk_test.js +38 -75
- package/dest/public/fixtures/custom_bytecode_tester.d.ts +28 -6
- package/dest/public/fixtures/custom_bytecode_tester.d.ts.map +1 -1
- package/dest/public/fixtures/custom_bytecode_tester.js +36 -12
- package/dest/public/fixtures/index.d.ts +3 -3
- package/dest/public/fixtures/index.d.ts.map +1 -1
- package/dest/public/fixtures/index.js +2 -2
- package/dest/public/fixtures/public_processor_test_env.d.ts +30 -0
- package/dest/public/fixtures/public_processor_test_env.d.ts.map +1 -0
- package/dest/public/fixtures/public_processor_test_env.js +73 -0
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts +24 -6
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
- package/dest/public/fixtures/public_tx_simulation_tester.js +66 -21
- package/dest/public/fixtures/simple_contract_data_source.d.ts +2 -2
- package/dest/public/fixtures/simple_contract_data_source.d.ts.map +1 -1
- package/dest/public/fixtures/simple_contract_data_source.js +1 -1
- package/dest/public/fixtures/token_test.js +4 -4
- package/dest/public/fixtures/utils.d.ts +3 -3
- package/dest/public/fixtures/utils.d.ts.map +1 -1
- package/dest/public/fixtures/utils.js +25 -23
- package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts +67 -0
- package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts.map +1 -0
- package/dest/public/fuzzing/avm_fuzzer_simulator.js +185 -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/index.d.ts +5 -2
- package/dest/public/index.d.ts.map +1 -1
- package/dest/public/index.js +2 -1
- package/dest/public/public_db_sources.d.ts +10 -6
- package/dest/public/public_db_sources.d.ts.map +1 -1
- package/dest/public/public_db_sources.js +21 -15
- package/dest/public/public_processor/guarded_merkle_tree.d.ts +8 -6
- package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -1
- package/dest/public/public_processor/guarded_merkle_tree.js +12 -4
- package/dest/public/public_processor/public_processor.d.ts +17 -8
- package/dest/public/public_processor/public_processor.d.ts.map +1 -1
- package/dest/public/public_processor/public_processor.js +535 -100
- package/dest/public/public_processor/public_processor_metrics.d.ts +5 -2
- package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
- package/dest/public/public_processor/public_processor_metrics.js +36 -45
- package/dest/public/public_tx_simulator/dumping_public_tx_simulator.d.ts +17 -0
- package/dest/public/public_tx_simulator/dumping_public_tx_simulator.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/dumping_public_tx_simulator.js +39 -0
- package/dest/public/public_tx_simulator/factories.d.ts +14 -0
- package/dest/public/public_tx_simulator/factories.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/factories.js +28 -0
- package/dest/public/public_tx_simulator/index.d.ts +5 -5
- package/dest/public/public_tx_simulator/index.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/index.js +3 -3
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +43 -70
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/public_tx_simulator.js +99 -312
- package/dest/public/public_tx_simulator/public_tx_simulator_base.d.ts +24 -0
- package/dest/public/public_tx_simulator/public_tx_simulator_base.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/public_tx_simulator_base.js +31 -0
- package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts +24 -1
- package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts.map +1 -1
- package/dest/public/test_executor_metrics.d.ts +3 -2
- package/dest/public/test_executor_metrics.d.ts.map +1 -1
- package/dest/public/test_executor_metrics.js +2 -2
- package/package.json +23 -20
- package/src/client.ts +0 -2
- package/src/common/errors.ts +1 -1
- package/src/private/acvm/acvm.ts +4 -3
- package/src/private/acvm/deserialize.ts +1 -1
- package/src/private/acvm/serialize.ts +1 -1
- package/src/private/acvm_native.ts +11 -5
- package/src/private/acvm_wasm.ts +11 -4
- package/src/private/circuit_recording/circuit_recorder.ts +90 -81
- package/src/private/circuit_recording/file_circuit_recorder.ts +45 -50
- package/src/private/circuit_recording/memory_circuit_recorder.ts +6 -4
- package/src/private/circuit_recording/simulator_recorder_wrapper.ts +9 -15
- package/src/private/factory.ts +7 -4
- package/src/public/avm/testing/account_proof.json +553 -0
- package/src/public/avm/testing/account_proof_fetcher.ts +166 -0
- package/src/public/avm/{fixtures → testing}/base_avm_simulation_tester.ts +24 -4
- package/src/public/avm/{fixtures → testing}/utils.ts +5 -41
- package/src/public/avm_simulator.ts +29 -0
- package/src/public/avm_simulator_pool.ts +226 -0
- package/src/public/cdb/generated/api_types.ts +457 -0
- package/src/public/cdb/generated/server.ts +109 -0
- package/src/public/cdb_ipc_server.ts +197 -0
- package/src/public/contracts_db_checkpoint.ts +2 -2
- package/src/public/db_interfaces.ts +1 -1
- package/src/public/executor_metrics.ts +9 -33
- package/src/public/fixtures/amm_test.ts +6 -6
- package/src/public/fixtures/bulk_test.ts +40 -15
- package/src/public/fixtures/custom_bytecode_tester.ts +53 -19
- package/src/public/fixtures/index.ts +6 -2
- package/src/public/fixtures/public_processor_test_env.ts +88 -0
- package/src/public/fixtures/public_tx_simulation_tester.ts +82 -21
- package/src/public/fixtures/simple_contract_data_source.ts +2 -2
- package/src/public/fixtures/token_test.ts +4 -4
- package/src/public/fixtures/utils.ts +25 -27
- package/src/public/fuzzing/avm_fuzzer_simulator.ts +303 -0
- package/src/public/fuzzing/avm_simulator_bin.ts +173 -0
- package/src/public/index.ts +8 -2
- package/src/public/public_db_sources.ts +37 -20
- package/src/public/public_processor/guarded_merkle_tree.ts +14 -7
- package/src/public/public_processor/public_processor.ts +188 -102
- package/src/public/public_processor/public_processor_metrics.ts +28 -44
- package/src/public/public_tx_simulator/dumping_public_tx_simulator.ts +67 -0
- package/src/public/public_tx_simulator/factories.ts +61 -0
- package/src/public/public_tx_simulator/index.ts +7 -4
- package/src/public/public_tx_simulator/public_tx_simulator.ts +143 -458
- package/src/public/public_tx_simulator/public_tx_simulator_base.ts +37 -0
- package/src/public/public_tx_simulator/public_tx_simulator_interface.ts +23 -0
- package/src/public/test_executor_metrics.ts +3 -3
- package/dest/public/avm/avm_context.d.ts +0 -41
- package/dest/public/avm/avm_context.d.ts.map +0 -1
- package/dest/public/avm/avm_context.js +0 -44
- package/dest/public/avm/avm_contract_call_result.d.ts +0 -32
- package/dest/public/avm/avm_contract_call_result.d.ts.map +0 -1
- package/dest/public/avm/avm_contract_call_result.js +0 -54
- package/dest/public/avm/avm_execution_environment.d.ts +0 -23
- package/dest/public/avm/avm_execution_environment.d.ts.map +0 -1
- package/dest/public/avm/avm_execution_environment.js +0 -33
- package/dest/public/avm/avm_gas.d.ts +0 -44
- package/dest/public/avm/avm_gas.d.ts.map +0 -1
- package/dest/public/avm/avm_gas.js +0 -195
- package/dest/public/avm/avm_machine_state.d.ts +0 -97
- package/dest/public/avm/avm_machine_state.d.ts.map +0 -1
- package/dest/public/avm/avm_machine_state.js +0 -109
- package/dest/public/avm/avm_memory_types.d.ts +0 -275
- package/dest/public/avm/avm_memory_types.d.ts.map +0 -1
- package/dest/public/avm/avm_memory_types.js +0 -351
- package/dest/public/avm/avm_simulator.d.ts +0 -40
- package/dest/public/avm/avm_simulator.d.ts.map +0 -1
- package/dest/public/avm/avm_simulator.js +0 -191
- package/dest/public/avm/avm_simulator_interface.d.ts +0 -9
- package/dest/public/avm/avm_simulator_interface.d.ts.map +0 -1
- package/dest/public/avm/avm_simulator_interface.js +0 -3
- package/dest/public/avm/errors.d.ts +0 -104
- package/dest/public/avm/errors.d.ts.map +0 -1
- package/dest/public/avm/errors.js +0 -141
- package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +0 -22
- package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +0 -1
- package/dest/public/avm/fixtures/avm_simulation_tester.js +0 -83
- package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +0 -1
- package/dest/public/avm/fixtures/initializers.d.ts +0 -42
- package/dest/public/avm/fixtures/initializers.d.ts.map +0 -1
- package/dest/public/avm/fixtures/initializers.js +0 -44
- package/dest/public/avm/fixtures/utils.d.ts +0 -39
- package/dest/public/avm/fixtures/utils.d.ts.map +0 -1
- package/dest/public/avm/index.d.ts +0 -2
- package/dest/public/avm/index.d.ts.map +0 -1
- package/dest/public/avm/index.js +0 -1
- package/dest/public/avm/opcodes/accrued_substate.d.ts +0 -75
- package/dest/public/avm/opcodes/accrued_substate.d.ts.map +0 -1
- package/dest/public/avm/opcodes/accrued_substate.js +0 -255
- package/dest/public/avm/opcodes/addressing_mode.d.ts +0 -31
- package/dest/public/avm/opcodes/addressing_mode.d.ts.map +0 -1
- package/dest/public/avm/opcodes/addressing_mode.js +0 -94
- package/dest/public/avm/opcodes/arithmetic.d.ts +0 -47
- package/dest/public/avm/opcodes/arithmetic.d.ts.map +0 -1
- package/dest/public/avm/opcodes/arithmetic.js +0 -87
- package/dest/public/avm/opcodes/bitwise.d.ts +0 -42
- package/dest/public/avm/opcodes/bitwise.d.ts.map +0 -1
- package/dest/public/avm/opcodes/bitwise.js +0 -99
- package/dest/public/avm/opcodes/comparators.d.ts +0 -25
- package/dest/public/avm/opcodes/comparators.d.ts.map +0 -1
- package/dest/public/avm/opcodes/comparators.js +0 -43
- package/dest/public/avm/opcodes/contract.d.ts +0 -20
- package/dest/public/avm/opcodes/contract.d.ts.map +0 -1
- package/dest/public/avm/opcodes/contract.js +0 -65
- package/dest/public/avm/opcodes/control_flow.d.ts +0 -41
- package/dest/public/avm/opcodes/control_flow.d.ts.map +0 -1
- package/dest/public/avm/opcodes/control_flow.js +0 -107
- package/dest/public/avm/opcodes/conversion.d.ts +0 -18
- package/dest/public/avm/opcodes/conversion.d.ts.map +0 -1
- package/dest/public/avm/opcodes/conversion.js +0 -333
- package/dest/public/avm/opcodes/ec_add.d.ts +0 -19
- package/dest/public/avm/opcodes/ec_add.d.ts.map +0 -1
- package/dest/public/avm/opcodes/ec_add.js +0 -84
- package/dest/public/avm/opcodes/environment_getters.d.ts +0 -28
- package/dest/public/avm/opcodes/environment_getters.d.ts.map +0 -1
- package/dest/public/avm/opcodes/environment_getters.js +0 -77
- package/dest/public/avm/opcodes/external_calls.d.ts +0 -59
- package/dest/public/avm/opcodes/external_calls.d.ts.map +0 -1
- package/dest/public/avm/opcodes/external_calls.js +0 -209
- package/dest/public/avm/opcodes/hashing.d.ts +0 -36
- package/dest/public/avm/opcodes/hashing.d.ts.map +0 -1
- package/dest/public/avm/opcodes/hashing.js +0 -114
- package/dest/public/avm/opcodes/index.d.ts +0 -16
- package/dest/public/avm/opcodes/index.d.ts.map +0 -1
- package/dest/public/avm/opcodes/index.js +0 -15
- package/dest/public/avm/opcodes/instruction.d.ts +0 -74
- package/dest/public/avm/opcodes/instruction.d.ts.map +0 -1
- package/dest/public/avm/opcodes/instruction.js +0 -95
- package/dest/public/avm/opcodes/instruction_impl.d.ts +0 -19
- package/dest/public/avm/opcodes/instruction_impl.d.ts.map +0 -1
- package/dest/public/avm/opcodes/instruction_impl.js +0 -30
- package/dest/public/avm/opcodes/memory.d.ts +0 -74
- package/dest/public/avm/opcodes/memory.d.ts.map +0 -1
- package/dest/public/avm/opcodes/memory.js +0 -257
- package/dest/public/avm/opcodes/misc.d.ts +0 -18
- package/dest/public/avm/opcodes/misc.d.ts.map +0 -1
- package/dest/public/avm/opcodes/misc.js +0 -73
- package/dest/public/avm/opcodes/storage.d.ts +0 -24
- package/dest/public/avm/opcodes/storage.d.ts.map +0 -1
- package/dest/public/avm/opcodes/storage.js +0 -68
- package/dest/public/avm/revert_reason.d.ts +0 -18
- package/dest/public/avm/revert_reason.d.ts.map +0 -1
- package/dest/public/avm/revert_reason.js +0 -39
- package/dest/public/avm/serialization/buffer_cursor.d.ts +0 -26
- package/dest/public/avm/serialization/buffer_cursor.d.ts.map +0 -1
- package/dest/public/avm/serialization/buffer_cursor.js +0 -99
- package/dest/public/avm/serialization/bytecode_serialization.d.ts +0 -17
- package/dest/public/avm/serialization/bytecode_serialization.d.ts.map +0 -1
- package/dest/public/avm/serialization/bytecode_serialization.js +0 -336
- package/dest/public/avm/serialization/instruction_serialization.d.ts +0 -114
- package/dest/public/avm/serialization/instruction_serialization.d.ts.map +0 -1
- package/dest/public/avm/serialization/instruction_serialization.js +0 -261
- package/dest/public/avm/test_utils.d.ts +0 -15
- package/dest/public/avm/test_utils.d.ts.map +0 -1
- package/dest/public/avm/test_utils.js +0 -44
- package/dest/public/debug_fn_name.d.ts +0 -18
- package/dest/public/debug_fn_name.d.ts.map +0 -1
- package/dest/public/debug_fn_name.js +0 -28
- package/dest/public/fixtures/custom_bytecode_tests.d.ts +0 -9
- package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +0 -1
- package/dest/public/fixtures/custom_bytecode_tests.js +0 -109
- package/dest/public/fixtures/minimal_public_tx.d.ts +0 -9
- package/dest/public/fixtures/minimal_public_tx.d.ts.map +0 -1
- package/dest/public/fixtures/minimal_public_tx.js +0 -29
- package/dest/public/hinting_db_sources.d.ts +0 -79
- package/dest/public/hinting_db_sources.d.ts.map +0 -1
- package/dest/public/hinting_db_sources.js +0 -350
- package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts +0 -30
- package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts.map +0 -1
- package/dest/public/public_tx_simulator/contract_provider_for_cpp.js +0 -133
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +0 -38
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +0 -1
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +0 -93
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts +0 -42
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts.map +0 -1
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.js +0 -86
- package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts +0 -30
- package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts.map +0 -1
- package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.js +0 -170
- package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +0 -31
- package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts.map +0 -1
- package/dest/public/public_tx_simulator/measured_public_tx_simulator.js +0 -51
- package/dest/public/public_tx_simulator/public_tx_context.d.ts +0 -130
- package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +0 -1
- package/dest/public/public_tx_simulator/public_tx_context.js +0 -300
- package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts +0 -21
- package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts.map +0 -1
- package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.js +0 -39
- package/dest/public/side_effect_trace.d.ts +0 -86
- package/dest/public/side_effect_trace.d.ts.map +0 -1
- package/dest/public/side_effect_trace.js +0 -199
- package/dest/public/side_effect_trace_interface.d.ts +0 -22
- package/dest/public/side_effect_trace_interface.d.ts.map +0 -1
- package/dest/public/side_effect_trace_interface.js +0 -1
- package/dest/public/state_manager/index.d.ts +0 -2
- package/dest/public/state_manager/index.d.ts.map +0 -1
- package/dest/public/state_manager/index.js +0 -1
- package/dest/public/state_manager/nullifiers.d.ts +0 -61
- package/dest/public/state_manager/nullifiers.d.ts.map +0 -1
- package/dest/public/state_manager/nullifiers.js +0 -92
- package/dest/public/state_manager/public_storage.d.ts +0 -66
- package/dest/public/state_manager/public_storage.d.ts.map +0 -1
- package/dest/public/state_manager/public_storage.js +0 -145
- package/dest/public/state_manager/state_manager.d.ts +0 -164
- package/dest/public/state_manager/state_manager.d.ts.map +0 -1
- package/dest/public/state_manager/state_manager.js +0 -395
- package/src/public/avm/avm_context.ts +0 -61
- package/src/public/avm/avm_contract_call_result.ts +0 -67
- package/src/public/avm/avm_execution_environment.ts +0 -46
- package/src/public/avm/avm_gas.ts +0 -183
- package/src/public/avm/avm_machine_state.ts +0 -169
- package/src/public/avm/avm_memory_types.ts +0 -436
- package/src/public/avm/avm_simulator.ts +0 -276
- package/src/public/avm/avm_simulator_interface.ts +0 -8
- package/src/public/avm/errors.ts +0 -177
- package/src/public/avm/fixtures/avm_simulation_tester.ts +0 -116
- package/src/public/avm/fixtures/initializers.ts +0 -102
- package/src/public/avm/index.ts +0 -1
- package/src/public/avm/opcodes/accrued_substate.ts +0 -288
- package/src/public/avm/opcodes/addressing_mode.ts +0 -111
- package/src/public/avm/opcodes/arithmetic.ts +0 -117
- package/src/public/avm/opcodes/bitwise.ts +0 -113
- package/src/public/avm/opcodes/comparators.ts +0 -55
- package/src/public/avm/opcodes/contract.ts +0 -75
- package/src/public/avm/opcodes/control_flow.ts +0 -123
- package/src/public/avm/opcodes/conversion.ts +0 -104
- package/src/public/avm/opcodes/ec_add.ts +0 -96
- package/src/public/avm/opcodes/environment_getters.ts +0 -87
- package/src/public/avm/opcodes/external_calls.ts +0 -260
- package/src/public/avm/opcodes/hashing.ts +0 -145
- package/src/public/avm/opcodes/index.ts +0 -15
- package/src/public/avm/opcodes/instruction.ts +0 -136
- package/src/public/avm/opcodes/instruction_impl.ts +0 -36
- package/src/public/avm/opcodes/memory.ts +0 -293
- package/src/public/avm/opcodes/misc.ts +0 -102
- package/src/public/avm/opcodes/storage.ts +0 -87
- package/src/public/avm/revert_reason.ts +0 -58
- package/src/public/avm/serialization/buffer_cursor.ts +0 -118
- package/src/public/avm/serialization/bytecode_serialization.ts +0 -215
- package/src/public/avm/serialization/instruction_serialization.ts +0 -249
- package/src/public/avm/test_utils.ts +0 -64
- package/src/public/debug_fn_name.ts +0 -43
- package/src/public/fixtures/custom_bytecode_tests.ts +0 -135
- package/src/public/fixtures/minimal_public_tx.ts +0 -35
- package/src/public/hinting_db_sources.ts +0 -603
- package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +0 -162
- package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +0 -155
- package/src/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.ts +0 -132
- package/src/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.ts +0 -240
- package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +0 -105
- package/src/public/public_tx_simulator/public_tx_context.ts +0 -477
- package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +0 -63
- package/src/public/side_effect_trace.ts +0 -290
- package/src/public/side_effect_trace_interface.ts +0 -28
- package/src/public/state_manager/index.ts +0 -1
- package/src/public/state_manager/nullifiers.ts +0 -103
- package/src/public/state_manager/public_storage.ts +0 -174
- package/src/public/state_manager/state_manager.ts +0 -560
|
@@ -1,8 +0,0 @@
|
|
|
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>; // Using any here to avoid importing AvmContractCallResult
|
|
6
|
-
executeBytecode(bytecode: Buffer): Promise<any>;
|
|
7
|
-
getBytecode(): Buffer | undefined;
|
|
8
|
-
}
|
package/src/public/avm/errors.ts
DELETED
|
@@ -1,177 +0,0 @@
|
|
|
1
|
-
import type { Point } from '@aztec/foundation/fields';
|
|
2
|
-
import type { FailingFunction, NoirCallStack } from '@aztec/stdlib/errors';
|
|
3
|
-
|
|
4
|
-
import { ExecutionError } from '../../common/errors.js';
|
|
5
|
-
import { CheckedPublicExecutionError } from '../public_errors.js';
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Avm-specific errors should derive from this
|
|
9
|
-
*/
|
|
10
|
-
export abstract class AvmExecutionError extends CheckedPublicExecutionError {
|
|
11
|
-
constructor(message: string) {
|
|
12
|
-
super(message);
|
|
13
|
-
this.name = 'AvmExecutionError';
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export class ArithmeticError extends AvmExecutionError {
|
|
18
|
-
constructor(message: string) {
|
|
19
|
-
super(message);
|
|
20
|
-
this.name = 'ArithmeticError';
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Error is thrown when the program counter goes to an invalid location.
|
|
26
|
-
* There is no instruction at the provided pc
|
|
27
|
-
*/
|
|
28
|
-
export class InvalidProgramCounterError extends AvmExecutionError {
|
|
29
|
-
constructor(pc: number, max: number) {
|
|
30
|
-
super(`Invalid program counter ${pc}, max is ${max}`);
|
|
31
|
-
this.name = 'InvalidProgramCounterError';
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Error is thrown when the program counter points to a byte
|
|
37
|
-
* of an invalid opcode.
|
|
38
|
-
*/
|
|
39
|
-
export class InvalidOpcodeError extends AvmExecutionError {
|
|
40
|
-
constructor(str: string) {
|
|
41
|
-
super(str);
|
|
42
|
-
this.name = 'InvalidOpcodeError';
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Error is thrown during parsing.
|
|
48
|
-
*/
|
|
49
|
-
export class AvmParsingError extends AvmExecutionError {
|
|
50
|
-
constructor(str: string) {
|
|
51
|
-
super(str);
|
|
52
|
-
this.name = 'AvmParsingError';
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* Error is thrown when the tag has an invalid value.
|
|
58
|
-
*/
|
|
59
|
-
export class InvalidTagValueError extends AvmExecutionError {
|
|
60
|
-
constructor(tagValue: number) {
|
|
61
|
-
super(`Tag check failed: Tag value ${tagValue} is invalid.`);
|
|
62
|
-
this.name = 'InvalidTagValueError';
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* Error thrown during an instruction's execution (during its execute()).
|
|
68
|
-
*/
|
|
69
|
-
export class InstructionExecutionError extends AvmExecutionError {
|
|
70
|
-
constructor(message: string) {
|
|
71
|
-
super(message);
|
|
72
|
-
this.name = 'InstructionExecutionError';
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* Error thrown on failed AVM memory tag check.
|
|
78
|
-
*/
|
|
79
|
-
export class TagCheckError extends AvmExecutionError {
|
|
80
|
-
public static forBaseAddress(gotTag: string): TagCheckError {
|
|
81
|
-
return new TagCheckError(`Base address (mem[0]) is not a valid address (has tag ${gotTag})`);
|
|
82
|
-
}
|
|
83
|
-
public static forIndirectAddress(address: number, gotTag: string): TagCheckError {
|
|
84
|
-
return new TagCheckError(`Address after indirection is not a valid address (address ${address} has tag ${gotTag})`);
|
|
85
|
-
}
|
|
86
|
-
public static forOffset(offset: number, gotTag: string, expectedTag: string): TagCheckError {
|
|
87
|
-
return new TagCheckError(`Tag mismatch at offset ${offset}, got ${gotTag}, expected ${expectedTag}`);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
public static forTag(gotTag: string, expectedTag: string): TagCheckError {
|
|
91
|
-
return new TagCheckError(`Tag mismatch, got ${gotTag}, expected ${expectedTag}`);
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
constructor(message: string) {
|
|
95
|
-
super(message);
|
|
96
|
-
this.name = 'TagCheckError';
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
/**
|
|
101
|
-
* Error is thrown when a relative memory address resolved to an offset which
|
|
102
|
-
* is out of range, i.e, greater than maxUint32.
|
|
103
|
-
*/
|
|
104
|
-
export class RelativeAddressOutOfRangeError extends AvmExecutionError {
|
|
105
|
-
constructor(baseAddr: number, relOffset: number) {
|
|
106
|
-
super(`Relative address out of range. Base address ${baseAddr}, relative offset ${relOffset}`);
|
|
107
|
-
this.name = 'RelativeAddressOutOfRangeError';
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
/**
|
|
112
|
-
* Error is thrown when a memory slice contains addresses which are
|
|
113
|
-
* out of range, i.e, greater than maxUint32.
|
|
114
|
-
*/
|
|
115
|
-
export class MemorySliceOutOfRangeError extends AvmExecutionError {
|
|
116
|
-
constructor(baseAddr: number, size: number) {
|
|
117
|
-
super(`Memory slice is out of range. Base address ${baseAddr}, size ${size}`);
|
|
118
|
-
this.name = 'MemorySliceOutOfRangeError';
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
/** Error thrown when out of gas. */
|
|
123
|
-
export class OutOfGasError extends AvmExecutionError {
|
|
124
|
-
constructor(dimensions: string[]) {
|
|
125
|
-
super(`Not enough ${dimensions.map(d => d.toUpperCase()).join(', ')} gas left`);
|
|
126
|
-
this.name = 'OutOfGasError';
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
/**
|
|
131
|
-
* Error is thrown when one of the supplied points does not lie on the Grumpkin curve. Specific for ECADD opcode.
|
|
132
|
-
*/
|
|
133
|
-
export class EcAddPointNotOnCurveError extends AvmExecutionError {
|
|
134
|
-
constructor(pointIndex: number, point: Point) {
|
|
135
|
-
super(`EcAdd point${pointIndex} (${point.toString()}) is not on the curve.`);
|
|
136
|
-
this.name = 'EcAddPointNotOnCurveError';
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
/**
|
|
141
|
-
* Error is thrown when some inputs of ToRadixBE are not valid.
|
|
142
|
-
*/
|
|
143
|
-
export class InvalidToRadixInputsError extends AvmExecutionError {
|
|
144
|
-
constructor(errorString: string) {
|
|
145
|
-
super(errorString);
|
|
146
|
-
this.name = 'InvalidToRadixInputsError';
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
/**
|
|
151
|
-
* Error is thrown when a static call attempts to alter some state
|
|
152
|
-
*/
|
|
153
|
-
export class StaticCallAlterationError extends InstructionExecutionError {
|
|
154
|
-
constructor() {
|
|
155
|
-
super('Static call cannot update the state, emit L2->L1 messages or generate logs');
|
|
156
|
-
this.name = 'StaticCallAlterationError';
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
/**
|
|
161
|
-
* Meaningfully named alias for ExecutionError when used in the context of the AVM.
|
|
162
|
-
* Maintains a recursive structure reflecting the AVM's external callstack/errorstack, where
|
|
163
|
-
* options.cause is the error that caused this error (if this is not the root-cause itself).
|
|
164
|
-
*/
|
|
165
|
-
export class AvmRevertReason extends ExecutionError {
|
|
166
|
-
constructor(message: string, failingFunction: FailingFunction, noirCallStack: NoirCallStack, options?: ErrorOptions) {
|
|
167
|
-
super(message, failingFunction, noirCallStack, options);
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
/**
|
|
172
|
-
* Helper to annotate errors occurring during instruction fetching.
|
|
173
|
-
*/
|
|
174
|
-
export function duringInstrFetch(error: Error, pc: number) {
|
|
175
|
-
error.message = `Instruction fetching error at pc ${pc}: ${error.message}`;
|
|
176
|
-
return error;
|
|
177
|
-
}
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
import { Fr } from '@aztec/foundation/fields';
|
|
2
|
-
import { encodeArguments } from '@aztec/stdlib/abi';
|
|
3
|
-
import { PublicSimulatorConfig } from '@aztec/stdlib/avm';
|
|
4
|
-
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
5
|
-
import { GasFees } from '@aztec/stdlib/gas';
|
|
6
|
-
import type { MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
|
|
7
|
-
import { GlobalVariables } from '@aztec/stdlib/tx';
|
|
8
|
-
import { NativeWorldStateService } from '@aztec/world-state';
|
|
9
|
-
|
|
10
|
-
import { SideEffectTrace } from '../../../public/side_effect_trace.js';
|
|
11
|
-
import type { AvmContractCallResult } from '../../avm/avm_contract_call_result.js';
|
|
12
|
-
import { SimpleContractDataSource } from '../../fixtures/simple_contract_data_source.js';
|
|
13
|
-
import { PublicContractsDB, PublicTreesDB } from '../../public_db_sources.js';
|
|
14
|
-
import { PublicPersistableStateManager } from '../../state_manager/state_manager.js';
|
|
15
|
-
import { AvmSimulator } from '../avm_simulator.js';
|
|
16
|
-
import { BaseAvmSimulationTester } from './base_avm_simulation_tester.js';
|
|
17
|
-
import { initContext, initExecutionEnvironment } from './initializers.js';
|
|
18
|
-
import {
|
|
19
|
-
DEFAULT_TIMESTAMP,
|
|
20
|
-
getContractFunctionAbi,
|
|
21
|
-
getFunctionSelector,
|
|
22
|
-
resolveContractAssertionMessage,
|
|
23
|
-
} from './utils.js';
|
|
24
|
-
|
|
25
|
-
const DEFAULT_GAS_FEES = new GasFees(2, 3);
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* A test class that extends the BaseAvmSimulationTester to enable real-app testing of the core AvmSimulator.
|
|
29
|
-
* It provides an interface for simulating one top-level call at a time and maintains state between
|
|
30
|
-
* subsequent top-level calls.
|
|
31
|
-
*/
|
|
32
|
-
export class AvmSimulationTester extends BaseAvmSimulationTester {
|
|
33
|
-
constructor(
|
|
34
|
-
contractDataSource: SimpleContractDataSource,
|
|
35
|
-
merkleTrees: MerkleTreeWriteOperations,
|
|
36
|
-
private stateManager: PublicPersistableStateManager,
|
|
37
|
-
) {
|
|
38
|
-
super(contractDataSource, merkleTrees);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
static async create(
|
|
42
|
-
worldStateService: NativeWorldStateService, // make sure to close this later
|
|
43
|
-
): Promise<AvmSimulationTester> {
|
|
44
|
-
const contractDataSource = new SimpleContractDataSource();
|
|
45
|
-
const merkleTrees = await worldStateService.fork();
|
|
46
|
-
const treesDB = new PublicTreesDB(merkleTrees);
|
|
47
|
-
const contractsDB = new PublicContractsDB(contractDataSource);
|
|
48
|
-
const trace = new SideEffectTrace();
|
|
49
|
-
const firstNullifier = new Fr(420000);
|
|
50
|
-
|
|
51
|
-
const stateManager = PublicPersistableStateManager.create(
|
|
52
|
-
treesDB,
|
|
53
|
-
contractsDB,
|
|
54
|
-
trace,
|
|
55
|
-
firstNullifier,
|
|
56
|
-
DEFAULT_TIMESTAMP,
|
|
57
|
-
);
|
|
58
|
-
return new AvmSimulationTester(contractDataSource, merkleTrees, stateManager);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* Simulate a top-level contract call.
|
|
63
|
-
*/
|
|
64
|
-
async simulateCall(
|
|
65
|
-
sender: AztecAddress,
|
|
66
|
-
address: AztecAddress,
|
|
67
|
-
fnName: string,
|
|
68
|
-
args: any[],
|
|
69
|
-
isStaticCall = false,
|
|
70
|
-
): Promise<AvmContractCallResult> {
|
|
71
|
-
const contractArtifact = await this.contractDataSource.getContractArtifact(address);
|
|
72
|
-
if (!contractArtifact) {
|
|
73
|
-
throw new Error(`Contract not found at address: ${address}`);
|
|
74
|
-
}
|
|
75
|
-
const fnSelector = await getFunctionSelector(fnName, contractArtifact);
|
|
76
|
-
const fnAbi = getContractFunctionAbi(fnName, contractArtifact);
|
|
77
|
-
const encodedArgs = encodeArguments(fnAbi!, args);
|
|
78
|
-
const calldata = [fnSelector.toField(), ...encodedArgs];
|
|
79
|
-
|
|
80
|
-
const globals = GlobalVariables.empty();
|
|
81
|
-
globals.timestamp = DEFAULT_TIMESTAMP;
|
|
82
|
-
globals.gasFees = DEFAULT_GAS_FEES;
|
|
83
|
-
|
|
84
|
-
const config = PublicSimulatorConfig.from({
|
|
85
|
-
skipFeeEnforcement: false,
|
|
86
|
-
collectDebugLogs: true,
|
|
87
|
-
collectHints: false,
|
|
88
|
-
collectStatistics: false,
|
|
89
|
-
collectCallMetadata: true,
|
|
90
|
-
});
|
|
91
|
-
const environment = initExecutionEnvironment({
|
|
92
|
-
calldata,
|
|
93
|
-
globals,
|
|
94
|
-
address,
|
|
95
|
-
sender,
|
|
96
|
-
isStaticCall,
|
|
97
|
-
config,
|
|
98
|
-
});
|
|
99
|
-
const persistableState = await this.stateManager.fork();
|
|
100
|
-
const context = initContext({ env: environment, persistableState });
|
|
101
|
-
|
|
102
|
-
// First we simulate (though it's not needed in this simple case).
|
|
103
|
-
const simulator = new AvmSimulator(context);
|
|
104
|
-
const result = await simulator.execute();
|
|
105
|
-
if (result.reverted) {
|
|
106
|
-
this.logger.error(`Error in ${fnName}:`);
|
|
107
|
-
this.logger.error(
|
|
108
|
-
resolveContractAssertionMessage(fnName, result.revertReason!, result.output, contractArtifact)!,
|
|
109
|
-
);
|
|
110
|
-
} else {
|
|
111
|
-
this.logger.info(`Simulation of function ${fnName} succeeded!`);
|
|
112
|
-
await this.stateManager.merge(persistableState);
|
|
113
|
-
}
|
|
114
|
-
return result;
|
|
115
|
-
}
|
|
116
|
-
}
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
import { AVM_MAX_PROCESSABLE_L2_GAS } from '@aztec/constants';
|
|
2
|
-
import { BlockNumber, 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 type { UInt64 } from '@aztec/stdlib/types';
|
|
10
|
-
|
|
11
|
-
import { mock } from 'jest-mock-extended';
|
|
12
|
-
|
|
13
|
-
import type { PublicContractsDB, PublicTreesDB } from '../../public_db_sources.js';
|
|
14
|
-
import type { PublicSideEffectTraceInterface } from '../../side_effect_trace_interface.js';
|
|
15
|
-
import { NullifierManager } from '../../state_manager/nullifiers.js';
|
|
16
|
-
import { PublicStorage } from '../../state_manager/public_storage.js';
|
|
17
|
-
import { PublicPersistableStateManager } from '../../state_manager/state_manager.js';
|
|
18
|
-
import { AvmContext } from '../avm_context.js';
|
|
19
|
-
import { AvmExecutionEnvironment } from '../avm_execution_environment.js';
|
|
20
|
-
import { AvmMachineState } from '../avm_machine_state.js';
|
|
21
|
-
import { AvmSimulator } from '../avm_simulator.js';
|
|
22
|
-
import { DEFAULT_TIMESTAMP } from './utils.js';
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Create a new AVM context with default values.
|
|
26
|
-
*/
|
|
27
|
-
export function initContext(overrides?: {
|
|
28
|
-
persistableState?: PublicPersistableStateManager;
|
|
29
|
-
env?: AvmExecutionEnvironment;
|
|
30
|
-
machineState?: AvmMachineState;
|
|
31
|
-
}): AvmContext {
|
|
32
|
-
const ctx = new AvmContext(
|
|
33
|
-
overrides?.persistableState || initPersistableStateManager(),
|
|
34
|
-
overrides?.env || initExecutionEnvironment(),
|
|
35
|
-
overrides?.machineState || initMachineState(),
|
|
36
|
-
);
|
|
37
|
-
ctx.provideSimulator = AvmSimulator.build;
|
|
38
|
-
return ctx;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
/** Creates an empty state manager with mocked host storage. */
|
|
42
|
-
export function initPersistableStateManager(overrides?: {
|
|
43
|
-
treesDB?: PublicTreesDB;
|
|
44
|
-
contractsDB?: PublicContractsDB;
|
|
45
|
-
trace?: PublicSideEffectTraceInterface;
|
|
46
|
-
publicStorage?: PublicStorage;
|
|
47
|
-
nullifiers?: NullifierManager;
|
|
48
|
-
firstNullifier?: Fr;
|
|
49
|
-
timestamp?: UInt64;
|
|
50
|
-
}): PublicPersistableStateManager {
|
|
51
|
-
const treesDB = overrides?.treesDB || mock<PublicTreesDB>();
|
|
52
|
-
return new PublicPersistableStateManager(
|
|
53
|
-
treesDB,
|
|
54
|
-
overrides?.contractsDB || mock<PublicContractsDB>(),
|
|
55
|
-
overrides?.trace || mock<PublicSideEffectTraceInterface>(),
|
|
56
|
-
overrides?.firstNullifier || new Fr(27),
|
|
57
|
-
overrides?.timestamp || DEFAULT_TIMESTAMP,
|
|
58
|
-
/*doMerkleOperations=*/ false,
|
|
59
|
-
);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* Create an empty instance of the Execution Environment where all values are zero, unless overridden in the overrides object
|
|
64
|
-
*/
|
|
65
|
-
export function initExecutionEnvironment(overrides?: Partial<AvmExecutionEnvironment>): AvmExecutionEnvironment {
|
|
66
|
-
return new AvmExecutionEnvironment(
|
|
67
|
-
overrides?.address ?? AztecAddress.zero(),
|
|
68
|
-
overrides?.sender ?? AztecAddress.zero(),
|
|
69
|
-
overrides?.contractCallDepth ?? Fr.zero(),
|
|
70
|
-
overrides?.transactionFee ?? Fr.zero(),
|
|
71
|
-
overrides?.globals ?? GlobalVariables.empty(),
|
|
72
|
-
overrides?.isStaticCall ?? false,
|
|
73
|
-
overrides?.calldata ?? [],
|
|
74
|
-
overrides?.config ?? PublicSimulatorConfig.empty(),
|
|
75
|
-
);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* Create an empty instance of the Execution Environment where all values are zero, unless overridden in the overrides object
|
|
80
|
-
*/
|
|
81
|
-
export function initGlobalVariables(overrides?: Partial<GlobalVariables>): GlobalVariables {
|
|
82
|
-
return new GlobalVariables(
|
|
83
|
-
overrides?.chainId ?? Fr.zero(),
|
|
84
|
-
overrides?.version ?? Fr.zero(),
|
|
85
|
-
overrides?.blockNumber ?? BlockNumber.ZERO,
|
|
86
|
-
overrides?.slotNumber ?? SlotNumber.ZERO,
|
|
87
|
-
overrides?.timestamp ?? 0n,
|
|
88
|
-
overrides?.coinbase ?? EthAddress.ZERO,
|
|
89
|
-
overrides?.feeRecipient ?? AztecAddress.zero(),
|
|
90
|
-
overrides?.gasFees ?? GasFees.empty(),
|
|
91
|
-
);
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
/**
|
|
95
|
-
* Create an empty instance of the Machine State where all values are set to a large enough amount, unless overridden in the overrides object
|
|
96
|
-
*/
|
|
97
|
-
export function initMachineState(overrides?: Partial<AvmMachineState>): AvmMachineState {
|
|
98
|
-
return AvmMachineState.fromState({
|
|
99
|
-
l2GasLeft: overrides?.l2GasLeft ?? AVM_MAX_PROCESSABLE_L2_GAS,
|
|
100
|
-
daGasLeft: overrides?.daGasLeft ?? 1e8,
|
|
101
|
-
});
|
|
102
|
-
}
|
package/src/public/avm/index.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './avm_simulator.js';
|
|
@@ -1,288 +0,0 @@
|
|
|
1
|
-
import { NullifierCollisionError } from '../../side_effect_errors.js';
|
|
2
|
-
import type { AvmContext } from '../avm_context.js';
|
|
3
|
-
import { TypeTag, Uint1 } from '../avm_memory_types.js';
|
|
4
|
-
import { InstructionExecutionError, StaticCallAlterationError } from '../errors.js';
|
|
5
|
-
import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
|
|
6
|
-
import { Addressing } from './addressing_mode.js';
|
|
7
|
-
import { Instruction } from './instruction.js';
|
|
8
|
-
|
|
9
|
-
export class NoteHashExists extends Instruction {
|
|
10
|
-
static type: string = 'NOTEHASHEXISTS';
|
|
11
|
-
static readonly opcode: Opcode = Opcode.NOTEHASHEXISTS;
|
|
12
|
-
// Informs (de)serialization. See Instruction.deserialize.
|
|
13
|
-
static readonly wireFormat = [
|
|
14
|
-
OperandType.UINT8,
|
|
15
|
-
OperandType.UINT8,
|
|
16
|
-
OperandType.UINT16,
|
|
17
|
-
OperandType.UINT16,
|
|
18
|
-
OperandType.UINT16,
|
|
19
|
-
];
|
|
20
|
-
|
|
21
|
-
constructor(
|
|
22
|
-
private indirect: number,
|
|
23
|
-
private noteHashOffset: number,
|
|
24
|
-
private leafIndexOffset: number,
|
|
25
|
-
private existsOffset: number,
|
|
26
|
-
) {
|
|
27
|
-
super();
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
public async execute(context: AvmContext): Promise<void> {
|
|
31
|
-
const memory = context.machineState.memory;
|
|
32
|
-
const addressing = Addressing.fromWire(this.indirect);
|
|
33
|
-
|
|
34
|
-
context.machineState.consumeGas(
|
|
35
|
-
this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()),
|
|
36
|
-
);
|
|
37
|
-
const operands = [this.noteHashOffset, this.leafIndexOffset, this.existsOffset];
|
|
38
|
-
const [noteHashOffset, leafIndexOffset, existsOffset] = addressing.resolve(operands, memory);
|
|
39
|
-
memory.checkTag(TypeTag.FIELD, noteHashOffset);
|
|
40
|
-
memory.checkTag(TypeTag.UINT64, leafIndexOffset);
|
|
41
|
-
|
|
42
|
-
// Note that this instruction accepts any type in memory, and converts to Field.
|
|
43
|
-
const noteHash = memory.get(noteHashOffset).toFr();
|
|
44
|
-
const leafIndex = memory.get(leafIndexOffset).toBigInt();
|
|
45
|
-
|
|
46
|
-
const exists = await context.persistableState.checkNoteHashExists(context.environment.address, noteHash, leafIndex);
|
|
47
|
-
memory.set(existsOffset, exists ? new Uint1(1) : new Uint1(0));
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
export class EmitNoteHash extends Instruction {
|
|
52
|
-
static type: string = 'EMITNOTEHASH';
|
|
53
|
-
static readonly opcode: Opcode = Opcode.EMITNOTEHASH;
|
|
54
|
-
// Informs (de)serialization. See Instruction.deserialize.
|
|
55
|
-
static readonly wireFormat = [OperandType.UINT8, OperandType.UINT8, OperandType.UINT16];
|
|
56
|
-
|
|
57
|
-
constructor(
|
|
58
|
-
private indirect: number,
|
|
59
|
-
private noteHashOffset: number,
|
|
60
|
-
) {
|
|
61
|
-
super();
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
public async execute(context: AvmContext): Promise<void> {
|
|
65
|
-
const memory = context.machineState.memory;
|
|
66
|
-
const addressing = Addressing.fromWire(this.indirect);
|
|
67
|
-
|
|
68
|
-
context.machineState.consumeGas(
|
|
69
|
-
this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()),
|
|
70
|
-
);
|
|
71
|
-
|
|
72
|
-
const operands = [this.noteHashOffset];
|
|
73
|
-
const [noteHashOffset] = addressing.resolve(operands, memory);
|
|
74
|
-
memory.checkTag(TypeTag.FIELD, noteHashOffset);
|
|
75
|
-
|
|
76
|
-
if (context.environment.isStaticCall) {
|
|
77
|
-
throw new StaticCallAlterationError();
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
const noteHash = memory.get(noteHashOffset).toFr();
|
|
81
|
-
await context.persistableState.writeNoteHash(context.environment.address, noteHash);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
export class NullifierExists extends Instruction {
|
|
86
|
-
static type: string = 'NULLIFIEREXISTS';
|
|
87
|
-
static readonly opcode: Opcode = Opcode.NULLIFIEREXISTS;
|
|
88
|
-
// Informs (de)serialization. See Instruction.deserialize.
|
|
89
|
-
static readonly wireFormat = [
|
|
90
|
-
OperandType.UINT8,
|
|
91
|
-
OperandType.UINT8,
|
|
92
|
-
OperandType.UINT16,
|
|
93
|
-
OperandType.UINT16,
|
|
94
|
-
OperandType.UINT16,
|
|
95
|
-
];
|
|
96
|
-
|
|
97
|
-
constructor(
|
|
98
|
-
private indirect: number,
|
|
99
|
-
private nullifierOffset: number,
|
|
100
|
-
private addressOffset: number,
|
|
101
|
-
private existsOffset: number,
|
|
102
|
-
) {
|
|
103
|
-
super();
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
public async execute(context: AvmContext): Promise<void> {
|
|
107
|
-
const memory = context.machineState.memory;
|
|
108
|
-
const addressing = Addressing.fromWire(this.indirect);
|
|
109
|
-
|
|
110
|
-
context.machineState.consumeGas(
|
|
111
|
-
this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()),
|
|
112
|
-
);
|
|
113
|
-
|
|
114
|
-
const operands = [this.nullifierOffset, this.addressOffset, this.existsOffset];
|
|
115
|
-
const [nullifierOffset, addressOffset, existsOffset] = addressing.resolve(operands, memory);
|
|
116
|
-
memory.checkTags(TypeTag.FIELD, nullifierOffset, addressOffset);
|
|
117
|
-
|
|
118
|
-
const nullifier = memory.get(nullifierOffset).toFr();
|
|
119
|
-
const address = memory.get(addressOffset).toAztecAddress();
|
|
120
|
-
const exists = await context.persistableState.checkNullifierExists(address, nullifier);
|
|
121
|
-
|
|
122
|
-
memory.set(existsOffset, exists ? new Uint1(1) : new Uint1(0));
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
export class EmitNullifier extends Instruction {
|
|
127
|
-
static type: string = 'EMITNULLIFIER';
|
|
128
|
-
static readonly opcode: Opcode = Opcode.EMITNULLIFIER;
|
|
129
|
-
// Informs (de)serialization. See Instruction.deserialize.
|
|
130
|
-
static readonly wireFormat = [OperandType.UINT8, OperandType.UINT8, OperandType.UINT16];
|
|
131
|
-
|
|
132
|
-
constructor(
|
|
133
|
-
private indirect: number,
|
|
134
|
-
private nullifierOffset: number,
|
|
135
|
-
) {
|
|
136
|
-
super();
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
public async execute(context: AvmContext): Promise<void> {
|
|
140
|
-
if (context.environment.isStaticCall) {
|
|
141
|
-
throw new StaticCallAlterationError();
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
const memory = context.machineState.memory;
|
|
145
|
-
const addressing = Addressing.fromWire(this.indirect);
|
|
146
|
-
|
|
147
|
-
context.machineState.consumeGas(
|
|
148
|
-
this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()),
|
|
149
|
-
);
|
|
150
|
-
|
|
151
|
-
const operands = [this.nullifierOffset];
|
|
152
|
-
const [nullifierOffset] = addressing.resolve(operands, memory);
|
|
153
|
-
memory.checkTag(TypeTag.FIELD, nullifierOffset);
|
|
154
|
-
|
|
155
|
-
const nullifier = memory.get(nullifierOffset).toFr();
|
|
156
|
-
try {
|
|
157
|
-
await context.persistableState.writeNullifier(context.environment.address, nullifier);
|
|
158
|
-
} catch (e) {
|
|
159
|
-
if (e instanceof NullifierCollisionError) {
|
|
160
|
-
// Error is known/expected, raise as InstructionExecutionError that the will lead the simulator to revert this call
|
|
161
|
-
throw new InstructionExecutionError(
|
|
162
|
-
`Attempted to emit duplicate nullifier ${nullifier} (contract address: ${context.environment.address}).`,
|
|
163
|
-
);
|
|
164
|
-
} else {
|
|
165
|
-
throw e;
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
export class L1ToL2MessageExists extends Instruction {
|
|
172
|
-
static type: string = 'L1TOL2MSGEXISTS';
|
|
173
|
-
static readonly opcode: Opcode = Opcode.L1TOL2MSGEXISTS;
|
|
174
|
-
// Informs (de)serialization. See Instruction.deserialize.
|
|
175
|
-
static readonly wireFormat = [
|
|
176
|
-
OperandType.UINT8,
|
|
177
|
-
OperandType.UINT8,
|
|
178
|
-
OperandType.UINT16,
|
|
179
|
-
OperandType.UINT16,
|
|
180
|
-
OperandType.UINT16,
|
|
181
|
-
];
|
|
182
|
-
|
|
183
|
-
constructor(
|
|
184
|
-
private indirect: number,
|
|
185
|
-
private msgHashOffset: number,
|
|
186
|
-
private msgLeafIndexOffset: number,
|
|
187
|
-
private existsOffset: number,
|
|
188
|
-
) {
|
|
189
|
-
super();
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
public async execute(context: AvmContext): Promise<void> {
|
|
193
|
-
const memory = context.machineState.memory;
|
|
194
|
-
const addressing = Addressing.fromWire(this.indirect);
|
|
195
|
-
|
|
196
|
-
context.machineState.consumeGas(
|
|
197
|
-
this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()),
|
|
198
|
-
);
|
|
199
|
-
|
|
200
|
-
const operands = [this.msgHashOffset, this.msgLeafIndexOffset, this.existsOffset];
|
|
201
|
-
const [msgHashOffset, msgLeafIndexOffset, existsOffset] = addressing.resolve(operands, memory);
|
|
202
|
-
|
|
203
|
-
memory.checkTag(TypeTag.FIELD, msgHashOffset);
|
|
204
|
-
memory.checkTag(TypeTag.UINT64, msgLeafIndexOffset);
|
|
205
|
-
|
|
206
|
-
const msgHash = memory.get(msgHashOffset).toFr();
|
|
207
|
-
const msgLeafIndex = memory.get(msgLeafIndexOffset).toFr();
|
|
208
|
-
const exists = await context.persistableState.checkL1ToL2MessageExists(msgHash, msgLeafIndex);
|
|
209
|
-
memory.set(existsOffset, exists ? new Uint1(1) : new Uint1(0));
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
export class EmitUnencryptedLog extends Instruction {
|
|
214
|
-
// TODO(#11124): rename unencrypted -> public
|
|
215
|
-
static type: string = 'EMITUNENCRYPTEDLOG';
|
|
216
|
-
static readonly opcode: Opcode = Opcode.EMITUNENCRYPTEDLOG;
|
|
217
|
-
// Informs (de)serialization. See Instruction.deserialize.
|
|
218
|
-
static readonly wireFormat = [OperandType.UINT8, OperandType.UINT8, OperandType.UINT16, OperandType.UINT16];
|
|
219
|
-
|
|
220
|
-
constructor(
|
|
221
|
-
private indirect: number,
|
|
222
|
-
private logSizeOffset: number,
|
|
223
|
-
private logOffset: number,
|
|
224
|
-
) {
|
|
225
|
-
super();
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
public async execute(context: AvmContext): Promise<void> {
|
|
229
|
-
if (context.environment.isStaticCall) {
|
|
230
|
-
throw new StaticCallAlterationError();
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
const memory = context.machineState.memory;
|
|
234
|
-
const addressing = Addressing.fromWire(this.indirect);
|
|
235
|
-
|
|
236
|
-
context.machineState.consumeGas(
|
|
237
|
-
this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()),
|
|
238
|
-
);
|
|
239
|
-
|
|
240
|
-
const operands = [this.logSizeOffset, this.logOffset];
|
|
241
|
-
const [logSizeOffset, logOffset] = addressing.resolve(operands, memory);
|
|
242
|
-
memory.checkTag(TypeTag.UINT32, logSizeOffset);
|
|
243
|
-
const logSize = memory.get(logSizeOffset).toNumber();
|
|
244
|
-
memory.checkTagsRange(TypeTag.FIELD, logOffset, logSize);
|
|
245
|
-
|
|
246
|
-
const contractAddress = context.environment.address;
|
|
247
|
-
|
|
248
|
-
context.machineState.consumeGas(this.dynamicGasCost(logSize));
|
|
249
|
-
const log = memory.getSlice(logOffset, logSize).map(f => f.toFr());
|
|
250
|
-
context.persistableState.writePublicLog(contractAddress, log);
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
export class SendL2ToL1Message extends Instruction {
|
|
255
|
-
static type: string = 'SENDL2TOL1MSG';
|
|
256
|
-
static readonly opcode: Opcode = Opcode.SENDL2TOL1MSG;
|
|
257
|
-
// Informs (de)serialization. See Instruction.deserialize.
|
|
258
|
-
static readonly wireFormat = [OperandType.UINT8, OperandType.UINT8, OperandType.UINT16, OperandType.UINT16];
|
|
259
|
-
|
|
260
|
-
constructor(
|
|
261
|
-
private indirect: number,
|
|
262
|
-
private recipientOffset: number,
|
|
263
|
-
private contentOffset: number,
|
|
264
|
-
) {
|
|
265
|
-
super();
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
public async execute(context: AvmContext): Promise<void> {
|
|
269
|
-
if (context.environment.isStaticCall) {
|
|
270
|
-
throw new StaticCallAlterationError();
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
const memory = context.machineState.memory;
|
|
274
|
-
const addressing = Addressing.fromWire(this.indirect);
|
|
275
|
-
|
|
276
|
-
context.machineState.consumeGas(
|
|
277
|
-
this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()),
|
|
278
|
-
);
|
|
279
|
-
|
|
280
|
-
const operands = [this.recipientOffset, this.contentOffset];
|
|
281
|
-
const [recipientOffset, contentOffset] = addressing.resolve(operands, memory);
|
|
282
|
-
memory.checkTags(TypeTag.FIELD, recipientOffset, contentOffset);
|
|
283
|
-
|
|
284
|
-
const recipient = memory.get(recipientOffset).toFr();
|
|
285
|
-
const content = memory.get(contentOffset).toFr();
|
|
286
|
-
context.persistableState.writeL2ToL1Message(context.environment.address, recipient, content);
|
|
287
|
-
}
|
|
288
|
-
}
|