@aztec/simulator 0.0.1-commit.2ed92850 → 0.0.1-commit.2f68f620
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 +4 -4
- 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_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 +4 -3
- package/dest/private/circuit_recording/circuit_recorder.d.ts.map +1 -1
- package/dest/private/circuit_recording/circuit_recorder.js +7 -5
- package/dest/private/circuit_recording/file_circuit_recorder.d.ts +3 -2
- package/dest/private/circuit_recording/file_circuit_recorder.d.ts.map +1 -1
- package/dest/private/circuit_recording/file_circuit_recorder.js +2 -2
- package/dest/private/circuit_recording/memory_circuit_recorder.d.ts +7 -2
- package/dest/private/circuit_recording/memory_circuit_recorder.d.ts.map +1 -1
- package/dest/private/circuit_recording/memory_circuit_recorder.js +4 -4
- package/dest/private/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 +2 -1
- 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 +17 -2
- 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 +3 -33
- package/dest/public/contracts_db_checkpoint.d.ts +2 -2
- package/dest/public/contracts_db_checkpoint.d.ts.map +1 -1
- package/dest/public/contracts_db_checkpoint.js +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 +7 -2
- package/dest/public/fixtures/amm_test.js +2 -2
- package/dest/public/fixtures/bulk_test.d.ts +1 -1
- package/dest/public/fixtures/bulk_test.d.ts.map +1 -1
- package/dest/public/fixtures/bulk_test.js +31 -4
- package/dest/public/fixtures/index.d.ts +1 -4
- package/dest/public/fixtures/index.d.ts.map +1 -1
- package/dest/public/fixtures/index.js +0 -3
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts +8 -7
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
- package/dest/public/fixtures/public_tx_simulation_tester.js +16 -17
- package/dest/public/fixtures/simple_contract_data_source.js +1 -1
- package/dest/public/fixtures/utils.d.ts +2 -2
- package/dest/public/fixtures/utils.d.ts.map +1 -1
- package/dest/public/fixtures/utils.js +19 -20
- package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts +6 -4
- package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts.map +1 -1
- package/dest/public/fuzzing/avm_fuzzer_simulator.js +12 -7
- package/dest/public/fuzzing/avm_simulator_bin.js +4 -4
- package/dest/public/index.d.ts +2 -2
- package/dest/public/index.d.ts.map +1 -1
- package/dest/public/index.js +1 -1
- package/dest/public/public_db_sources.d.ts +9 -5
- package/dest/public/public_db_sources.d.ts.map +1 -1
- package/dest/public/public_db_sources.js +20 -14
- package/dest/public/public_processor/guarded_merkle_tree.d.ts +8 -7
- package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -1
- package/dest/public/public_processor/guarded_merkle_tree.js +8 -5
- package/dest/public/public_processor/public_processor.d.ts +11 -6
- package/dest/public/public_processor/public_processor.d.ts.map +1 -1
- package/dest/public/public_processor/public_processor.js +112 -74
- 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 +28 -4
- package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts +3 -2
- package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/contract_provider_for_cpp.js +5 -4
- package/dest/public/public_tx_simulator/dumping_public_tx_simulator.d.ts +23 -0
- package/dest/public/public_tx_simulator/dumping_public_tx_simulator.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/{dumping_cpp_public_tx_simulator.js → dumping_public_tx_simulator.js} +4 -4
- package/dest/public/public_tx_simulator/factories.d.ts +7 -6
- package/dest/public/public_tx_simulator/factories.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/factories.js +8 -8
- package/dest/public/public_tx_simulator/index.d.ts +3 -5
- package/dest/public/public_tx_simulator/index.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/index.js +2 -4
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +42 -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 -318
- package/dest/public/public_tx_simulator/public_tx_simulator_base.d.ts +22 -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 +28 -0
- 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 +17 -18
- package/src/private/acvm/acvm.ts +4 -3
- package/src/private/acvm_native.ts +11 -5
- package/src/private/acvm_wasm.ts +11 -4
- package/src/private/circuit_recording/circuit_recorder.ts +7 -5
- package/src/private/circuit_recording/file_circuit_recorder.ts +7 -2
- package/src/private/circuit_recording/memory_circuit_recorder.ts +6 -4
- package/src/private/factory.ts +7 -4
- package/src/public/avm/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 +22 -2
- package/src/public/avm/{fixtures → testing}/utils.ts +3 -39
- package/src/public/contracts_db_checkpoint.ts +1 -1
- package/src/public/executor_metrics.ts +4 -1
- package/src/public/fixtures/amm_test.ts +2 -2
- package/src/public/fixtures/bulk_test.ts +29 -4
- package/src/public/fixtures/index.ts +0 -3
- package/src/public/fixtures/public_tx_simulation_tester.ts +30 -15
- package/src/public/fixtures/simple_contract_data_source.ts +1 -1
- package/src/public/fixtures/utils.ts +26 -22
- package/src/public/fuzzing/avm_fuzzer_simulator.ts +16 -19
- package/src/public/fuzzing/avm_simulator_bin.ts +3 -5
- package/src/public/index.ts +3 -3
- package/src/public/public_db_sources.ts +36 -19
- package/src/public/public_processor/guarded_merkle_tree.ts +11 -8
- package/src/public/public_processor/public_processor.ts +156 -94
- package/src/public/public_processor/public_processor_metrics.ts +22 -4
- package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +9 -5
- package/src/public/public_tx_simulator/{dumping_cpp_public_tx_simulator.ts → dumping_public_tx_simulator.ts} +5 -3
- package/src/public/public_tx_simulator/factories.ts +10 -7
- package/src/public/public_tx_simulator/index.ts +2 -4
- package/src/public/public_tx_simulator/public_tx_simulator.ts +153 -475
- package/src/public/public_tx_simulator/public_tx_simulator_base.ts +35 -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 -24
- 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 -98
- package/dest/public/avm/avm_machine_state.d.ts.map +0 -1
- package/dest/public/avm/avm_machine_state.js +0 -110
- 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 -354
- package/dest/public/avm/avm_simulator.d.ts +0 -41
- package/dest/public/avm/avm_simulator.d.ts.map +0 -1
- package/dest/public/avm/avm_simulator.js +0 -192
- 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/calldata.d.ts +0 -51
- package/dest/public/avm/calldata.d.ts.map +0 -1
- package/dest/public/avm/calldata.js +0 -63
- 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 -84
- 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 -45
- 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 -259
- 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 -49
- package/dest/public/avm/opcodes/arithmetic.d.ts.map +0 -1
- package/dest/public/avm/opcodes/arithmetic.js +0 -97
- 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 -93
- 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 -210
- 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 -119
- 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 -25
- package/dest/public/avm/opcodes/storage.d.ts.map +0 -1
- package/dest/public/avm/opcodes/storage.js +0 -78
- 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 -37
- package/dest/public/fixtures/custom_bytecode_tests.d.ts +0 -12
- package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +0 -1
- package/dest/public/fixtures/custom_bytecode_tests.js +0 -174
- package/dest/public/fixtures/minimal_public_tx.d.ts +0 -4
- package/dest/public/fixtures/minimal_public_tx.d.ts.map +0 -1
- package/dest/public/fixtures/minimal_public_tx.js +0 -19
- package/dest/public/fixtures/opcode_spammer.d.ts +0 -123
- package/dest/public/fixtures/opcode_spammer.d.ts.map +0 -1
- package/dest/public/fixtures/opcode_spammer.js +0 -1693
- package/dest/public/hinting_db_sources.d.ts +0 -80
- package/dest/public/hinting_db_sources.d.ts.map +0 -1
- package/dest/public/hinting_db_sources.js +0 -355
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +0 -53
- 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 -132
- 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 -171
- package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts +0 -22
- package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts.map +0 -1
- 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 -415
- package/dest/public/side_effect_trace.d.ts +0 -87
- 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 -69
- package/src/public/avm/avm_execution_environment.ts +0 -51
- package/src/public/avm/avm_gas.ts +0 -183
- package/src/public/avm/avm_machine_state.ts +0 -170
- package/src/public/avm/avm_memory_types.ts +0 -440
- package/src/public/avm/avm_simulator.ts +0 -279
- package/src/public/avm/avm_simulator_interface.ts +0 -8
- package/src/public/avm/calldata.ts +0 -100
- package/src/public/avm/errors.ts +0 -177
- package/src/public/avm/fixtures/avm_simulation_tester.ts +0 -122
- package/src/public/avm/fixtures/initializers.ts +0 -103
- package/src/public/avm/index.ts +0 -1
- package/src/public/avm/opcodes/accrued_substate.ts +0 -294
- package/src/public/avm/opcodes/addressing_mode.ts +0 -111
- package/src/public/avm/opcodes/arithmetic.ts +0 -129
- 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 -72
- 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 -105
- package/src/public/avm/opcodes/environment_getters.ts +0 -87
- package/src/public/avm/opcodes/external_calls.ts +0 -262
- package/src/public/avm/opcodes/hashing.ts +0 -151
- 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 -95
- 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 -52
- package/src/public/fixtures/custom_bytecode_tests.ts +0 -228
- package/src/public/fixtures/minimal_public_tx.ts +0 -26
- package/src/public/fixtures/opcode_spammer.ts +0 -1754
- package/src/public/hinting_db_sources.ts +0 -607
- package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +0 -208
- 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 -237
- 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 -546
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
|
|
2
|
+
import { ProtocolContractsList } from '@aztec/protocol-contracts';
|
|
3
|
+
import { PublicSimulatorConfig } from '@aztec/stdlib/avm';
|
|
4
|
+
import type { MerkleTreeWriteOperations } from '@aztec/stdlib/trees';
|
|
5
|
+
import type { GlobalVariables, ProtocolContracts, Tx } from '@aztec/stdlib/tx';
|
|
6
|
+
|
|
7
|
+
import type { PublicContractsDB } from '../public_db_sources.js';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Shared base for public tx simulators. Holds the common configuration, world-state and contract DB
|
|
11
|
+
* handles, logger, and the tx-hash helper. Concrete simulators (e.g. the C++ simulator) extend this
|
|
12
|
+
* and implement `simulate`.
|
|
13
|
+
*/
|
|
14
|
+
export abstract class PublicTxSimulatorBase {
|
|
15
|
+
protected log: Logger;
|
|
16
|
+
protected readonly config: PublicSimulatorConfig;
|
|
17
|
+
protected readonly bindings?: LoggerBindings;
|
|
18
|
+
|
|
19
|
+
constructor(
|
|
20
|
+
protected merkleTree: MerkleTreeWriteOperations,
|
|
21
|
+
protected contractsDB: PublicContractsDB,
|
|
22
|
+
protected globalVariables: GlobalVariables,
|
|
23
|
+
config?: Partial<PublicSimulatorConfig>,
|
|
24
|
+
protected protocolContracts: ProtocolContracts = ProtocolContractsList,
|
|
25
|
+
bindings?: LoggerBindings,
|
|
26
|
+
) {
|
|
27
|
+
this.config = PublicSimulatorConfig.from(config ?? {});
|
|
28
|
+
this.bindings = bindings;
|
|
29
|
+
this.log = createLogger(`simulator:public_tx_simulator`, bindings);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
protected computeTxHash(tx: Tx) {
|
|
33
|
+
return tx.getTxHash();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { sum } from '@aztec/foundation/collection';
|
|
2
|
-
import { type Logger, createLogger } from '@aztec/foundation/log';
|
|
2
|
+
import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
|
|
3
3
|
import { Timer } from '@aztec/foundation/timer';
|
|
4
4
|
import type { RevertCode } from '@aztec/stdlib/avm';
|
|
5
5
|
import type { GasUsed } from '@aztec/stdlib/gas';
|
|
@@ -88,8 +88,8 @@ export class TestExecutorMetrics implements ExecutorMetricsInterface {
|
|
|
88
88
|
private currentTxLabel: string | undefined;
|
|
89
89
|
private txTimer: Timer | undefined;
|
|
90
90
|
|
|
91
|
-
constructor() {
|
|
92
|
-
this.logger = createLogger(`simulator:test_executor_metrics
|
|
91
|
+
constructor(bindings?: LoggerBindings) {
|
|
92
|
+
this.logger = createLogger(`simulator:test_executor_metrics`, bindings);
|
|
93
93
|
}
|
|
94
94
|
|
|
95
95
|
startRecordingTxSimulation(txLabel: string) {
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
2
|
-
import type { PublicPersistableStateManager } from '../state_manager/state_manager.js';
|
|
3
|
-
import type { AvmExecutionEnvironment } from './avm_execution_environment.js';
|
|
4
|
-
import { type Gas } from './avm_gas.js';
|
|
5
|
-
import { AvmMachineState } from './avm_machine_state.js';
|
|
6
|
-
import type { AvmSimulatorInterface } from './avm_simulator_interface.js';
|
|
7
|
-
import type { CallData } from './calldata.js';
|
|
8
|
-
/**
|
|
9
|
-
* An execution context includes the information necessary to initiate AVM
|
|
10
|
-
* execution along with all state maintained by the AVM throughout execution.
|
|
11
|
-
*/
|
|
12
|
-
export declare class AvmContext {
|
|
13
|
-
persistableState: PublicPersistableStateManager;
|
|
14
|
-
environment: AvmExecutionEnvironment;
|
|
15
|
-
machineState: AvmMachineState;
|
|
16
|
-
/**
|
|
17
|
-
* Create a new AVM context
|
|
18
|
-
* @param persistableState - Manages world state and accrued substate during execution - (caching, fetching, tracing)
|
|
19
|
-
* @param environment - Contains constant variables provided by the kernel
|
|
20
|
-
* @param machineState - VM state that is modified on an instruction-by-instruction basis
|
|
21
|
-
* @returns new AvmContext instance
|
|
22
|
-
*/
|
|
23
|
-
constructor(persistableState: PublicPersistableStateManager, environment: AvmExecutionEnvironment, machineState: AvmMachineState);
|
|
24
|
-
provideSimulator?: (context: AvmContext) => Promise<AvmSimulatorInterface>;
|
|
25
|
-
/**
|
|
26
|
-
* Prepare a new AVM context that will be ready for an external/nested call
|
|
27
|
-
* - Fork the world state journal
|
|
28
|
-
* - Derive a machine state from the current state
|
|
29
|
-
* - E.g., gas metering is preserved but pc is reset
|
|
30
|
-
* - Derive an execution environment from the caller/parent
|
|
31
|
-
* - Alter address
|
|
32
|
-
*
|
|
33
|
-
* @param address - The contract instance to initialize a context for
|
|
34
|
-
* @param calldata - Data/arguments for nested call
|
|
35
|
-
* @param allocatedGas - Gas allocated for the nested call
|
|
36
|
-
* @param callType - Type of call (CALL or STATICCALL)
|
|
37
|
-
* @returns new AvmContext instance
|
|
38
|
-
*/
|
|
39
|
-
createNestedContractCallContext(address: AztecAddress, calldata: CallData, allocatedGas: Gas, callType: 'CALL' | 'STATICCALL'): Promise<AvmContext>;
|
|
40
|
-
}
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX2NvbnRleHQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wdWJsaWMvYXZtL2F2bV9jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRWhFLE9BQU8sS0FBSyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkYsT0FBTyxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsS0FBSyxHQUFHLEVBQWdCLE1BQU0sY0FBYyxDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEtBQUssRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzFFLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5Qzs7O0dBR0c7QUFDSCxxQkFBYSxVQUFVO0lBU1osZ0JBQWdCLEVBQUUsNkJBQTZCO0lBQy9DLFdBQVcsRUFBRSx1QkFBdUI7SUFDcEMsWUFBWSxFQUFFLGVBQWU7SUFWdEM7Ozs7OztPQU1HO0lBQ0gsWUFDUyxnQkFBZ0IsRUFBRSw2QkFBNkIsRUFDL0MsV0FBVyxFQUFFLHVCQUF1QixFQUNwQyxZQUFZLEVBQUUsZUFBZSxFQUNsQztJQUlHLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsVUFBVSxLQUFLLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBRWxGOzs7Ozs7Ozs7Ozs7O09BYUc7SUFDVSwrQkFBK0IsQ0FDMUMsT0FBTyxFQUFFLFlBQVksRUFDckIsUUFBUSxFQUFFLFFBQVEsRUFDbEIsWUFBWSxFQUFFLEdBQUcsRUFDakIsUUFBUSxFQUFFLE1BQU0sR0FBRyxZQUFZLEdBQzlCLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FTckI7Q0FDRiJ9
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"avm_context.d.ts","sourceRoot":"","sources":["../../../src/public/avm/avm_context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AACvF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,KAAK,GAAG,EAAgB,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C;;;GAGG;AACH,qBAAa,UAAU;IASZ,gBAAgB,EAAE,6BAA6B;IAC/C,WAAW,EAAE,uBAAuB;IACpC,YAAY,EAAE,eAAe;IAVtC;;;;;;OAMG;IACH,YACS,gBAAgB,EAAE,6BAA6B,EAC/C,WAAW,EAAE,uBAAuB,EACpC,YAAY,EAAE,eAAe,EAClC;IAIG,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAElF;;;;;;;;;;;;;OAaG;IACU,+BAA+B,CAC1C,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,GAAG,EACjB,QAAQ,EAAE,MAAM,GAAG,YAAY,GAC9B,OAAO,CAAC,UAAU,CAAC,CASrB;CACF"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { gasToGasLeft } from './avm_gas.js';
|
|
2
|
-
import { AvmMachineState } from './avm_machine_state.js';
|
|
3
|
-
/**
|
|
4
|
-
* An execution context includes the information necessary to initiate AVM
|
|
5
|
-
* execution along with all state maintained by the AVM throughout execution.
|
|
6
|
-
*/ export class AvmContext {
|
|
7
|
-
persistableState;
|
|
8
|
-
environment;
|
|
9
|
-
machineState;
|
|
10
|
-
/**
|
|
11
|
-
* Create a new AVM context
|
|
12
|
-
* @param persistableState - Manages world state and accrued substate during execution - (caching, fetching, tracing)
|
|
13
|
-
* @param environment - Contains constant variables provided by the kernel
|
|
14
|
-
* @param machineState - VM state that is modified on an instruction-by-instruction basis
|
|
15
|
-
* @returns new AvmContext instance
|
|
16
|
-
*/ constructor(persistableState, environment, machineState){
|
|
17
|
-
this.persistableState = persistableState;
|
|
18
|
-
this.environment = environment;
|
|
19
|
-
this.machineState = machineState;
|
|
20
|
-
}
|
|
21
|
-
// This is needed to break a dependency cycle created by the CALL opcode,
|
|
22
|
-
// which needs to create a new simulator but cannot depend directly on AvmSimulator.
|
|
23
|
-
provideSimulator;
|
|
24
|
-
/**
|
|
25
|
-
* Prepare a new AVM context that will be ready for an external/nested call
|
|
26
|
-
* - Fork the world state journal
|
|
27
|
-
* - Derive a machine state from the current state
|
|
28
|
-
* - E.g., gas metering is preserved but pc is reset
|
|
29
|
-
* - Derive an execution environment from the caller/parent
|
|
30
|
-
* - Alter address
|
|
31
|
-
*
|
|
32
|
-
* @param address - The contract instance to initialize a context for
|
|
33
|
-
* @param calldata - Data/arguments for nested call
|
|
34
|
-
* @param allocatedGas - Gas allocated for the nested call
|
|
35
|
-
* @param callType - Type of call (CALL or STATICCALL)
|
|
36
|
-
* @returns new AvmContext instance
|
|
37
|
-
*/ async createNestedContractCallContext(address, calldata, allocatedGas, callType) {
|
|
38
|
-
const deriveFn = callType === 'CALL' ? this.environment.deriveEnvironmentForNestedCall : this.environment.deriveEnvironmentForNestedStaticCall;
|
|
39
|
-
const newExecutionEnvironment = deriveFn.call(this.environment, address, calldata);
|
|
40
|
-
const forkedWorldState = await this.persistableState.fork();
|
|
41
|
-
const machineState = AvmMachineState.fromState(gasToGasLeft(allocatedGas));
|
|
42
|
-
return new AvmContext(forkedWorldState, newExecutionEnvironment, machineState);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import type { SimulationError } from '@aztec/stdlib/errors';
|
|
2
|
-
import { Gas } from '@aztec/stdlib/gas';
|
|
3
|
-
import type { Gas as AvmGas } from './avm_gas.js';
|
|
4
|
-
import type { ReturnData } from './calldata.js';
|
|
5
|
-
import type { AvmRevertReason } from './errors.js';
|
|
6
|
-
/**
|
|
7
|
-
* Results of an contract call's execution in the AVM.
|
|
8
|
-
*/
|
|
9
|
-
export declare class AvmContractCallResult {
|
|
10
|
-
reverted: boolean;
|
|
11
|
-
output: ReturnData;
|
|
12
|
-
gasLeft: AvmGas;
|
|
13
|
-
revertReason?: AvmRevertReason | undefined;
|
|
14
|
-
totalInstructions: number;
|
|
15
|
-
constructor(reverted: boolean, output: ReturnData, gasLeft: AvmGas, revertReason?: AvmRevertReason | undefined, totalInstructions?: number);
|
|
16
|
-
toString(): string;
|
|
17
|
-
finalize(): AvmFinalizedCallResult;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Similar to AvmContractCallResult, but with a SimulationError and standard Gas
|
|
21
|
-
* which are useful for consumption external to core AVM simulation.
|
|
22
|
-
*/
|
|
23
|
-
export declare class AvmFinalizedCallResult {
|
|
24
|
-
reverted: boolean;
|
|
25
|
-
output: ReturnData;
|
|
26
|
-
gasLeft: Gas;
|
|
27
|
-
revertReason?: SimulationError | undefined;
|
|
28
|
-
totalInstructions: number;
|
|
29
|
-
constructor(reverted: boolean, output: ReturnData, gasLeft: Gas, revertReason?: SimulationError | undefined, totalInstructions?: number);
|
|
30
|
-
toString(): string;
|
|
31
|
-
}
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX2NvbnRyYWN0X2NhbGxfcmVzdWx0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHVibGljL2F2bS9hdm1fY29udHJhY3RfY2FsbF9yZXN1bHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDNUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBS3hDLE9BQU8sS0FBSyxFQUFFLEdBQUcsSUFBSSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbEQsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVuRDs7R0FFRztBQUNILHFCQUFhLHFCQUFxQjtJQUV2QixRQUFRLEVBQUUsT0FBTztJQUNqQixNQUFNLEVBQUUsVUFBVTtJQUNsQixPQUFPLEVBQUUsTUFBTTtJQUNmLFlBQVksQ0FBQztJQUNiLGlCQUFpQixFQUFFLE1BQU07SUFMbEMsWUFDUyxRQUFRLEVBQUUsT0FBTyxFQUNqQixNQUFNLEVBQUUsVUFBVSxFQUNsQixPQUFPLEVBQUUsTUFBTSxFQUNmLFlBQVksQ0FBQyw2QkFBaUIsRUFDOUIsaUJBQWlCLEdBQUUsTUFBVSxFQUNsQztJQUVKLFFBQVEsSUFBSSxNQUFNLENBUWpCO0lBRUQsUUFBUSxJQUFJLHNCQUFzQixDQVdqQztDQUNGO0FBRUQ7OztHQUdHO0FBQ0gscUJBQWEsc0JBQXNCO0lBRXhCLFFBQVEsRUFBRSxPQUFPO0lBQ2pCLE1BQU0sRUFBRSxVQUFVO0lBQ2xCLE9BQU8sRUFBRSxHQUFHO0lBQ1osWUFBWSxDQUFDO0lBQ2IsaUJBQWlCLEVBQUUsTUFBTTtJQUxsQyxZQUNTLFFBQVEsRUFBRSxPQUFPLEVBQ2pCLE1BQU0sRUFBRSxVQUFVLEVBQ2xCLE9BQU8sRUFBRSxHQUFHLEVBQ1osWUFBWSxDQUFDLDZCQUFpQixFQUM5QixpQkFBaUIsR0FBRSxNQUFVLEVBQ2xDO0lBRUosUUFBUSxJQUFJLE1BQU0sQ0FRakI7Q0FDRiJ9
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"avm_contract_call_result.d.ts","sourceRoot":"","sources":["../../../src/public/avm/avm_contract_call_result.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAKxC,OAAO,KAAK,EAAE,GAAG,IAAI,MAAM,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD;;GAEG;AACH,qBAAa,qBAAqB;IAEvB,QAAQ,EAAE,OAAO;IACjB,MAAM,EAAE,UAAU;IAClB,OAAO,EAAE,MAAM;IACf,YAAY,CAAC;IACb,iBAAiB,EAAE,MAAM;IALlC,YACS,QAAQ,EAAE,OAAO,EACjB,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,MAAM,EACf,YAAY,CAAC,6BAAiB,EAC9B,iBAAiB,GAAE,MAAU,EAClC;IAEJ,QAAQ,IAAI,MAAM,CAQjB;IAED,QAAQ,IAAI,sBAAsB,CAWjC;CACF;AAED;;;GAGG;AACH,qBAAa,sBAAsB;IAExB,QAAQ,EAAE,OAAO;IACjB,MAAM,EAAE,UAAU;IAClB,OAAO,EAAE,GAAG;IACZ,YAAY,CAAC;IACb,iBAAiB,EAAE,MAAM;IALlC,YACS,QAAQ,EAAE,OAAO,EACjB,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,GAAG,EACZ,YAAY,CAAC,6BAAiB,EAC9B,iBAAiB,GAAE,MAAU,EAClC;IAEJ,QAAQ,IAAI,MAAM,CAQjB;CACF"}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { Gas } from '@aztec/stdlib/gas';
|
|
2
|
-
import { inspect } from 'util';
|
|
3
|
-
import { createSimulationError } from '../../common/errors.js';
|
|
4
|
-
/**
|
|
5
|
-
* Results of an contract call's execution in the AVM.
|
|
6
|
-
*/ export class AvmContractCallResult {
|
|
7
|
-
reverted;
|
|
8
|
-
output;
|
|
9
|
-
gasLeft;
|
|
10
|
-
revertReason;
|
|
11
|
-
totalInstructions;
|
|
12
|
-
constructor(reverted, output, gasLeft, revertReason, totalInstructions = 0){
|
|
13
|
-
this.reverted = reverted;
|
|
14
|
-
this.output = output;
|
|
15
|
-
this.gasLeft = gasLeft;
|
|
16
|
-
this.revertReason = revertReason;
|
|
17
|
-
this.totalInstructions = totalInstructions;
|
|
18
|
-
}
|
|
19
|
-
toString() {
|
|
20
|
-
let resultsStr = `reverted: ${this.reverted}, output: ${this.output.bestEffortReadAll(10)}${this.output.length() > 10 ? ' ...' : ''}, gasLeft: ${inspect(this.gasLeft)}, totalInstructions: ${this.totalInstructions}`;
|
|
21
|
-
if (this.revertReason) {
|
|
22
|
-
resultsStr += `, revertReason: ${this.revertReason.message}`;
|
|
23
|
-
}
|
|
24
|
-
return resultsStr;
|
|
25
|
-
}
|
|
26
|
-
finalize() {
|
|
27
|
-
const revertReason = this.revertReason ? createSimulationError(this.revertReason, this.output.bestEffortReadAll()) : undefined;
|
|
28
|
-
return new AvmFinalizedCallResult(this.reverted, this.output, Gas.from(this.gasLeft), revertReason, this.totalInstructions);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Similar to AvmContractCallResult, but with a SimulationError and standard Gas
|
|
33
|
-
* which are useful for consumption external to core AVM simulation.
|
|
34
|
-
*/ export class AvmFinalizedCallResult {
|
|
35
|
-
reverted;
|
|
36
|
-
output;
|
|
37
|
-
gasLeft;
|
|
38
|
-
revertReason;
|
|
39
|
-
totalInstructions;
|
|
40
|
-
constructor(reverted, output, gasLeft, revertReason, totalInstructions = 0){
|
|
41
|
-
this.reverted = reverted;
|
|
42
|
-
this.output = output;
|
|
43
|
-
this.gasLeft = gasLeft;
|
|
44
|
-
this.revertReason = revertReason;
|
|
45
|
-
this.totalInstructions = totalInstructions;
|
|
46
|
-
}
|
|
47
|
-
toString() {
|
|
48
|
-
let resultsStr = `reverted: ${this.reverted}, output: ${this.output.bestEffortReadAll(10)}${this.output.length() > 10 ? ' ...' : ''}, gasLeft: ${inspect(this.gasLeft)}, totalInstructions: ${this.totalInstructions}`;
|
|
49
|
-
if (this.revertReason) {
|
|
50
|
-
resultsStr += `, revertReason: ${this.revertReason.message}`;
|
|
51
|
-
}
|
|
52
|
-
return resultsStr;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
-
import type { PublicSimulatorConfig } from '@aztec/stdlib/avm';
|
|
3
|
-
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
4
|
-
import type { GlobalVariables } from '@aztec/stdlib/tx';
|
|
5
|
-
import type { CallData } from './calldata.js';
|
|
6
|
-
/**
|
|
7
|
-
* Contains variables that remain constant during AVM execution
|
|
8
|
-
* These variables are provided by the public kernel circuit
|
|
9
|
-
*/
|
|
10
|
-
export declare class AvmExecutionEnvironment {
|
|
11
|
-
readonly address: AztecAddress;
|
|
12
|
-
readonly sender: AztecAddress;
|
|
13
|
-
readonly contractCallDepth: Fr;
|
|
14
|
-
readonly transactionFee: Fr;
|
|
15
|
-
readonly globals: GlobalVariables;
|
|
16
|
-
readonly isStaticCall: boolean;
|
|
17
|
-
readonly calldata: CallData;
|
|
18
|
-
readonly config: PublicSimulatorConfig;
|
|
19
|
-
constructor(address: AztecAddress, sender: AztecAddress, contractCallDepth: Fr, transactionFee: Fr, globals: GlobalVariables, isStaticCall: boolean, calldata: CallData, config: PublicSimulatorConfig);
|
|
20
|
-
private deriveEnvironmentForNestedCallInternal;
|
|
21
|
-
deriveEnvironmentForNestedCall(targetAddress: AztecAddress, calldata: CallData): AvmExecutionEnvironment;
|
|
22
|
-
deriveEnvironmentForNestedStaticCall(targetAddress: AztecAddress, calldata: CallData): AvmExecutionEnvironment;
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX2V4ZWN1dGlvbl9lbnZpcm9ubWVudC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3B1YmxpYy9hdm0vYXZtX2V4ZWN1dGlvbl9lbnZpcm9ubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvRCxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUV4RCxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUM7OztHQUdHO0FBQ0gscUJBQWEsdUJBQXVCO2FBRWhCLE9BQU8sRUFBRSxZQUFZO2FBQ3JCLE1BQU0sRUFBRSxZQUFZO2FBQ3BCLGlCQUFpQixFQUFFLEVBQUU7YUFDckIsY0FBYyxFQUFFLEVBQUU7YUFDbEIsT0FBTyxFQUFFLGVBQWU7YUFDeEIsWUFBWSxFQUFFLE9BQU87YUFDckIsUUFBUSxFQUFFLFFBQVE7YUFDbEIsTUFBTSxFQUFFLHFCQUFxQjtJQVIvQyxZQUNrQixPQUFPLEVBQUUsWUFBWSxFQUNyQixNQUFNLEVBQUUsWUFBWSxFQUNwQixpQkFBaUIsRUFBRSxFQUFFLEVBQ3JCLGNBQWMsRUFBRSxFQUFFLEVBQ2xCLE9BQU8sRUFBRSxlQUFlLEVBQ3hCLFlBQVksRUFBRSxPQUFPLEVBQ3JCLFFBQVEsRUFBRSxRQUFRLEVBQ2xCLE1BQU0sRUFBRSxxQkFBcUIsRUFDM0M7SUFFSixPQUFPLENBQUMsc0NBQXNDO0lBaUJ2Qyw4QkFBOEIsQ0FBQyxhQUFhLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxRQUFRLEdBQUcsdUJBQXVCLENBRTlHO0lBRU0sb0NBQW9DLENBQ3pDLGFBQWEsRUFBRSxZQUFZLEVBQzNCLFFBQVEsRUFBRSxRQUFRLEdBQ2pCLHVCQUF1QixDQUV6QjtDQUNGIn0=
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"avm_execution_environment.d.ts","sourceRoot":"","sources":["../../../src/public/avm/avm_execution_environment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C;;;GAGG;AACH,qBAAa,uBAAuB;aAEhB,OAAO,EAAE,YAAY;aACrB,MAAM,EAAE,YAAY;aACpB,iBAAiB,EAAE,EAAE;aACrB,cAAc,EAAE,EAAE;aAClB,OAAO,EAAE,eAAe;aACxB,YAAY,EAAE,OAAO;aACrB,QAAQ,EAAE,QAAQ;aAClB,MAAM,EAAE,qBAAqB;IAR/C,YACkB,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,YAAY,EACpB,iBAAiB,EAAE,EAAE,EACrB,cAAc,EAAE,EAAE,EAClB,OAAO,EAAE,eAAe,EACxB,YAAY,EAAE,OAAO,EACrB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,qBAAqB,EAC3C;IAEJ,OAAO,CAAC,sCAAsC;IAiBvC,8BAA8B,CAAC,aAAa,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,GAAG,uBAAuB,CAE9G;IAEM,oCAAoC,CACzC,aAAa,EAAE,YAAY,EAC3B,QAAQ,EAAE,QAAQ,GACjB,uBAAuB,CAEzB;CACF"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
-
/**
|
|
3
|
-
* Contains variables that remain constant during AVM execution
|
|
4
|
-
* These variables are provided by the public kernel circuit
|
|
5
|
-
*/ export class AvmExecutionEnvironment {
|
|
6
|
-
address;
|
|
7
|
-
sender;
|
|
8
|
-
contractCallDepth;
|
|
9
|
-
transactionFee;
|
|
10
|
-
globals;
|
|
11
|
-
isStaticCall;
|
|
12
|
-
calldata;
|
|
13
|
-
config;
|
|
14
|
-
constructor(address, sender, contractCallDepth, transactionFee, globals, isStaticCall, calldata, config){
|
|
15
|
-
this.address = address;
|
|
16
|
-
this.sender = sender;
|
|
17
|
-
this.contractCallDepth = contractCallDepth;
|
|
18
|
-
this.transactionFee = transactionFee;
|
|
19
|
-
this.globals = globals;
|
|
20
|
-
this.isStaticCall = isStaticCall;
|
|
21
|
-
this.calldata = calldata;
|
|
22
|
-
this.config = config;
|
|
23
|
-
}
|
|
24
|
-
deriveEnvironmentForNestedCallInternal(targetAddress, calldata, isStaticCall) {
|
|
25
|
-
return new AvmExecutionEnvironment(/*address=*/ targetAddress, /*sender=*/ this.address, this.contractCallDepth.add(Fr.ONE), this.transactionFee, this.globals, isStaticCall, calldata, this.config);
|
|
26
|
-
}
|
|
27
|
-
deriveEnvironmentForNestedCall(targetAddress, calldata) {
|
|
28
|
-
return this.deriveEnvironmentForNestedCallInternal(targetAddress, calldata, /*isStaticCall=*/ false);
|
|
29
|
-
}
|
|
30
|
-
deriveEnvironmentForNestedStaticCall(targetAddress, calldata) {
|
|
31
|
-
return this.deriveEnvironmentForNestedCallInternal(targetAddress, calldata, /*isStaticCall=*/ true);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { TypeTag } from './avm_memory_types.js';
|
|
2
|
-
import { Opcode } from './serialization/instruction_serialization.js';
|
|
3
|
-
/** Gas counters in L1, L2, and DA. */
|
|
4
|
-
export type Gas = {
|
|
5
|
-
l2Gas: number;
|
|
6
|
-
daGas: number;
|
|
7
|
-
};
|
|
8
|
-
/** Maps a Gas struct to gasLeft properties. */
|
|
9
|
-
export declare function gasToGasLeft(gas: Gas): {
|
|
10
|
-
l2GasLeft: number;
|
|
11
|
-
daGasLeft: number;
|
|
12
|
-
};
|
|
13
|
-
/** Maps gasLeft properties to a gas struct. */
|
|
14
|
-
export declare function gasLeftToGas(gasLeft: {
|
|
15
|
-
l2GasLeft: number;
|
|
16
|
-
daGasLeft: number;
|
|
17
|
-
}): {
|
|
18
|
-
l2Gas: number;
|
|
19
|
-
daGas: number;
|
|
20
|
-
};
|
|
21
|
-
/** Creates a new instance with all values set to zero except the ones set. */
|
|
22
|
-
export declare function makeGas(gasCost: Partial<Gas>): {
|
|
23
|
-
l2Gas: number;
|
|
24
|
-
daGas: number;
|
|
25
|
-
};
|
|
26
|
-
/** Sums together multiple instances of Gas. */
|
|
27
|
-
export declare function sumGas(...gases: Partial<Gas>[]): Gas;
|
|
28
|
-
/** Multiplies a gas instance by a scalar. */
|
|
29
|
-
export declare function mulGas(gas: Partial<Gas>, scalar: number): {
|
|
30
|
-
l2Gas: number;
|
|
31
|
-
daGas: number;
|
|
32
|
-
};
|
|
33
|
-
/** Zero gas across all gas dimensions. */
|
|
34
|
-
export declare const EmptyGas: Gas;
|
|
35
|
-
/** Dimensions of gas usage: L1, L2, and DA. */
|
|
36
|
-
export declare const GAS_DIMENSIONS: readonly ["l2Gas", "daGas"];
|
|
37
|
-
/** Returns the fixed base gas cost for a given opcode. */
|
|
38
|
-
export declare function getBaseGasCost(opcode: Opcode): Gas;
|
|
39
|
-
export declare function computeAddressingCost(indirectOperandsCount: number, relativeOperandsCount: number): Gas;
|
|
40
|
-
export declare function getDynamicGasCost(opcode: Opcode): Gas;
|
|
41
|
-
/** Returns a multiplier based on the byte size of the type represented by the integer tag.
|
|
42
|
-
* Used to account for necessary rows in the bitwise trace. Throws on invalid. */
|
|
43
|
-
export declare function getBitwiseDynamicGasMultiplier(tag: TypeTag): 0 | 1 | 2 | 4 | 8 | 16;
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX2dhcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3B1YmxpYy9hdm0vYXZtX2dhcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFaEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBRXRFLHNDQUFzQztBQUN0QyxNQUFNLE1BQU0sR0FBRyxHQUFHO0lBQ2hCLEtBQUssRUFBRSxNQUFNLENBQUM7SUFDZCxLQUFLLEVBQUUsTUFBTSxDQUFDO0NBQ2YsQ0FBQztBQUVGLCtDQUErQztBQUMvQyx3QkFBZ0IsWUFBWSxDQUFDLEdBQUcsRUFBRSxHQUFHOzs7RUFFcEM7QUFFRCwrQ0FBK0M7QUFDL0Msd0JBQWdCLFlBQVksQ0FBQyxPQUFPLEVBQUU7SUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDO0lBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQTtDQUFFOzs7RUFFN0U7QUFFRCw4RUFBOEU7QUFDOUUsd0JBQWdCLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQzs7O0VBRTVDO0FBRUQsK0NBQStDO0FBQy9DLHdCQUFnQixNQUFNLENBQUMsR0FBRyxLQUFLLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQVFwRDtBQUVELDZDQUE2QztBQUM3Qyx3QkFBZ0IsTUFBTSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU07OztFQUV2RDtBQUVELDBDQUEwQztBQUMxQyxlQUFPLE1BQU0sUUFBUSxFQUFFLEdBR3RCLENBQUM7QUFNRiwrQ0FBK0M7QUFDL0MsZUFBTyxNQUFNLGNBQWMsNkJBQThCLENBQUM7QUF5RjFELDBEQUEwRDtBQUMxRCx3QkFBZ0IsY0FBYyxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsR0FBRyxDQUVsRDtBQUVELHdCQUFnQixxQkFBcUIsQ0FBQyxxQkFBcUIsRUFBRSxNQUFNLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxHQUFHLEdBQUcsQ0FPdkc7QUFFRCx3QkFBZ0IsaUJBQWlCLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxHQUFHLENBRXJEO0FBRUQ7aUZBQ2lGO0FBQ2pGLHdCQUFnQiw4QkFBOEIsQ0FBQyxHQUFHLEVBQUUsT0FBTywwQkFtQjFEIn0=
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"avm_gas.d.ts","sourceRoot":"","sources":["../../../src/public/avm/avm_gas.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,8CAA8C,CAAC;AAEtE,sCAAsC;AACtC,MAAM,MAAM,GAAG,GAAG;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,+CAA+C;AAC/C,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG;;;EAEpC;AAED,+CAA+C;AAC/C,wBAAgB,YAAY,CAAC,OAAO,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE;;;EAE7E;AAED,8EAA8E;AAC9E,wBAAgB,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC;;;EAE5C;AAED,+CAA+C;AAC/C,wBAAgB,MAAM,CAAC,GAAG,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAQpD;AAED,6CAA6C;AAC7C,wBAAgB,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM;;;EAEvD;AAED,0CAA0C;AAC1C,eAAO,MAAM,QAAQ,EAAE,GAGtB,CAAC;AAMF,+CAA+C;AAC/C,eAAO,MAAM,cAAc,6BAA8B,CAAC;AAyF1D,0DAA0D;AAC1D,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAElD;AAED,wBAAgB,qBAAqB,CAAC,qBAAqB,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,GAAG,GAAG,CAOvG;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAErD;AAED;iFACiF;AACjF,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,OAAO,0BAmB1D"}
|
|
@@ -1,195 +0,0 @@
|
|
|
1
|
-
import * as c from '@aztec/constants';
|
|
2
|
-
import { TypeTag } from './avm_memory_types.js';
|
|
3
|
-
import { InstructionExecutionError } from './errors.js';
|
|
4
|
-
import { Opcode } from './serialization/instruction_serialization.js';
|
|
5
|
-
/** Maps a Gas struct to gasLeft properties. */ export function gasToGasLeft(gas) {
|
|
6
|
-
return {
|
|
7
|
-
l2GasLeft: gas.l2Gas,
|
|
8
|
-
daGasLeft: gas.daGas
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
/** Maps gasLeft properties to a gas struct. */ export function gasLeftToGas(gasLeft) {
|
|
12
|
-
return {
|
|
13
|
-
l2Gas: gasLeft.l2GasLeft,
|
|
14
|
-
daGas: gasLeft.daGasLeft
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
/** Creates a new instance with all values set to zero except the ones set. */ export function makeGas(gasCost) {
|
|
18
|
-
return {
|
|
19
|
-
...EmptyGas,
|
|
20
|
-
...gasCost
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
/** Sums together multiple instances of Gas. */ export function sumGas(...gases) {
|
|
24
|
-
return gases.reduce((acc, gas)=>({
|
|
25
|
-
l2Gas: acc.l2Gas + (gas.l2Gas ?? 0),
|
|
26
|
-
daGas: acc.daGas + (gas.daGas ?? 0)
|
|
27
|
-
}), EmptyGas);
|
|
28
|
-
}
|
|
29
|
-
/** Multiplies a gas instance by a scalar. */ export function mulGas(gas, scalar) {
|
|
30
|
-
return {
|
|
31
|
-
l2Gas: (gas.l2Gas ?? 0) * scalar,
|
|
32
|
-
daGas: (gas.daGas ?? 0) * scalar
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
/** Zero gas across all gas dimensions. */ export const EmptyGas = {
|
|
36
|
-
l2Gas: 0,
|
|
37
|
-
daGas: 0
|
|
38
|
-
};
|
|
39
|
-
function makeCost(l2Gas, daGas) {
|
|
40
|
-
return {
|
|
41
|
-
l2Gas,
|
|
42
|
-
daGas
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
/** Dimensions of gas usage: L1, L2, and DA. */ export const GAS_DIMENSIONS = [
|
|
46
|
-
'l2Gas',
|
|
47
|
-
'daGas'
|
|
48
|
-
];
|
|
49
|
-
/** Base gas costs for each instruction. Additional gas cost may be added on top due to memory or storage accesses, etc. */ const BASE_GAS_COSTS = {
|
|
50
|
-
[Opcode.ADD_8]: makeCost(c.AVM_ADD_BASE_L2_GAS, 0),
|
|
51
|
-
[Opcode.ADD_16]: makeCost(c.AVM_ADD_BASE_L2_GAS, 0),
|
|
52
|
-
[Opcode.SUB_8]: makeCost(c.AVM_SUB_BASE_L2_GAS, 0),
|
|
53
|
-
[Opcode.SUB_16]: makeCost(c.AVM_SUB_BASE_L2_GAS, 0),
|
|
54
|
-
[Opcode.MUL_8]: makeCost(c.AVM_MUL_BASE_L2_GAS, 0),
|
|
55
|
-
[Opcode.MUL_16]: makeCost(c.AVM_MUL_BASE_L2_GAS, 0),
|
|
56
|
-
[Opcode.DIV_8]: makeCost(c.AVM_DIV_BASE_L2_GAS, 0),
|
|
57
|
-
[Opcode.DIV_16]: makeCost(c.AVM_DIV_BASE_L2_GAS, 0),
|
|
58
|
-
[Opcode.FDIV_8]: makeCost(c.AVM_FDIV_BASE_L2_GAS, 0),
|
|
59
|
-
[Opcode.FDIV_16]: makeCost(c.AVM_FDIV_BASE_L2_GAS, 0),
|
|
60
|
-
[Opcode.EQ_8]: makeCost(c.AVM_EQ_BASE_L2_GAS, 0),
|
|
61
|
-
[Opcode.EQ_16]: makeCost(c.AVM_EQ_BASE_L2_GAS, 0),
|
|
62
|
-
[Opcode.LT_8]: makeCost(c.AVM_LT_BASE_L2_GAS, 0),
|
|
63
|
-
[Opcode.LT_16]: makeCost(c.AVM_LT_BASE_L2_GAS, 0),
|
|
64
|
-
[Opcode.LTE_8]: makeCost(c.AVM_LTE_BASE_L2_GAS, 0),
|
|
65
|
-
[Opcode.LTE_16]: makeCost(c.AVM_LTE_BASE_L2_GAS, 0),
|
|
66
|
-
[Opcode.AND_8]: makeCost(c.AVM_AND_BASE_L2_GAS, 0),
|
|
67
|
-
[Opcode.AND_16]: makeCost(c.AVM_AND_BASE_L2_GAS, 0),
|
|
68
|
-
[Opcode.OR_8]: makeCost(c.AVM_OR_BASE_L2_GAS, 0),
|
|
69
|
-
[Opcode.OR_16]: makeCost(c.AVM_OR_BASE_L2_GAS, 0),
|
|
70
|
-
[Opcode.XOR_8]: makeCost(c.AVM_XOR_BASE_L2_GAS, 0),
|
|
71
|
-
[Opcode.XOR_16]: makeCost(c.AVM_XOR_BASE_L2_GAS, 0),
|
|
72
|
-
[Opcode.NOT_8]: makeCost(c.AVM_NOT_BASE_L2_GAS, 0),
|
|
73
|
-
[Opcode.NOT_16]: makeCost(c.AVM_NOT_BASE_L2_GAS, 0),
|
|
74
|
-
[Opcode.SHL_8]: makeCost(c.AVM_SHL_BASE_L2_GAS, 0),
|
|
75
|
-
[Opcode.SHL_16]: makeCost(c.AVM_SHL_BASE_L2_GAS, 0),
|
|
76
|
-
[Opcode.SHR_8]: makeCost(c.AVM_SHR_BASE_L2_GAS, 0),
|
|
77
|
-
[Opcode.SHR_16]: makeCost(c.AVM_SHR_BASE_L2_GAS, 0),
|
|
78
|
-
[Opcode.CAST_8]: makeCost(c.AVM_CAST_BASE_L2_GAS, 0),
|
|
79
|
-
[Opcode.CAST_16]: makeCost(c.AVM_CAST_BASE_L2_GAS, 0),
|
|
80
|
-
[Opcode.GETENVVAR_16]: makeCost(c.AVM_GETENVVAR_BASE_L2_GAS, 0),
|
|
81
|
-
[Opcode.CALLDATACOPY]: makeCost(c.AVM_CALLDATACOPY_BASE_L2_GAS, 0),
|
|
82
|
-
[Opcode.SUCCESSCOPY]: makeCost(c.AVM_SUCCESSCOPY_BASE_L2_GAS, 0),
|
|
83
|
-
[Opcode.RETURNDATASIZE]: makeCost(c.AVM_RETURNDATASIZE_BASE_L2_GAS, 0),
|
|
84
|
-
[Opcode.RETURNDATACOPY]: makeCost(c.AVM_RETURNDATACOPY_BASE_L2_GAS, 0),
|
|
85
|
-
[Opcode.JUMP_32]: makeCost(c.AVM_JUMP_BASE_L2_GAS, 0),
|
|
86
|
-
[Opcode.JUMPI_32]: makeCost(c.AVM_JUMPI_BASE_L2_GAS, 0),
|
|
87
|
-
[Opcode.INTERNALCALL]: makeCost(c.AVM_INTERNALCALL_BASE_L2_GAS, 0),
|
|
88
|
-
[Opcode.INTERNALRETURN]: makeCost(c.AVM_INTERNALRETURN_BASE_L2_GAS, 0),
|
|
89
|
-
[Opcode.SET_8]: makeCost(c.AVM_SET_BASE_L2_GAS, 0),
|
|
90
|
-
[Opcode.SET_16]: makeCost(c.AVM_SET_BASE_L2_GAS, 0),
|
|
91
|
-
[Opcode.SET_32]: makeCost(c.AVM_SET_BASE_L2_GAS, 0),
|
|
92
|
-
[Opcode.SET_64]: makeCost(c.AVM_SET_BASE_L2_GAS, 0),
|
|
93
|
-
[Opcode.SET_128]: makeCost(c.AVM_SET_BASE_L2_GAS, 0),
|
|
94
|
-
[Opcode.SET_FF]: makeCost(c.AVM_SET_BASE_L2_GAS, 0),
|
|
95
|
-
[Opcode.MOV_8]: makeCost(c.AVM_MOV_BASE_L2_GAS, 0),
|
|
96
|
-
[Opcode.MOV_16]: makeCost(c.AVM_MOV_BASE_L2_GAS, 0),
|
|
97
|
-
[Opcode.SLOAD]: makeCost(c.AVM_SLOAD_BASE_L2_GAS, 0),
|
|
98
|
-
[Opcode.SSTORE]: makeCost(c.AVM_SSTORE_BASE_L2_GAS, 0),
|
|
99
|
-
[Opcode.NOTEHASHEXISTS]: makeCost(c.AVM_NOTEHASHEXISTS_BASE_L2_GAS, 0),
|
|
100
|
-
[Opcode.EMITNOTEHASH]: makeCost(c.AVM_EMITNOTEHASH_BASE_L2_GAS, c.AVM_EMITNOTEHASH_BASE_DA_GAS),
|
|
101
|
-
[Opcode.NULLIFIEREXISTS]: makeCost(c.AVM_NULLIFIEREXISTS_BASE_L2_GAS, 0),
|
|
102
|
-
[Opcode.EMITNULLIFIER]: makeCost(c.AVM_EMITNULLIFIER_BASE_L2_GAS, c.AVM_EMITNULLIFIER_BASE_DA_GAS),
|
|
103
|
-
[Opcode.L1TOL2MSGEXISTS]: makeCost(c.AVM_L1TOL2MSGEXISTS_BASE_L2_GAS, 0),
|
|
104
|
-
[Opcode.EMITUNENCRYPTEDLOG]: makeCost(c.AVM_EMITUNENCRYPTEDLOG_BASE_L2_GAS, c.AVM_EMITUNENCRYPTEDLOG_BASE_DA_GAS),
|
|
105
|
-
[Opcode.SENDL2TOL1MSG]: makeCost(c.AVM_SENDL2TOL1MSG_BASE_L2_GAS, c.AVM_SENDL2TOL1MSG_BASE_DA_GAS),
|
|
106
|
-
[Opcode.GETCONTRACTINSTANCE]: makeCost(c.AVM_GETCONTRACTINSTANCE_BASE_L2_GAS, 0),
|
|
107
|
-
[Opcode.CALL]: makeCost(c.AVM_CALL_BASE_L2_GAS, 0),
|
|
108
|
-
[Opcode.STATICCALL]: makeCost(c.AVM_STATICCALL_BASE_L2_GAS, 0),
|
|
109
|
-
[Opcode.RETURN]: makeCost(c.AVM_RETURN_BASE_L2_GAS, 0),
|
|
110
|
-
[Opcode.REVERT_8]: makeCost(c.AVM_REVERT_BASE_L2_GAS, 0),
|
|
111
|
-
[Opcode.REVERT_16]: makeCost(c.AVM_REVERT_BASE_L2_GAS, 0),
|
|
112
|
-
[Opcode.DEBUGLOG]: makeCost(c.AVM_DEBUGLOG_BASE_L2_GAS, 0),
|
|
113
|
-
[Opcode.POSEIDON2]: makeCost(c.AVM_POSEIDON2_BASE_L2_GAS, 0),
|
|
114
|
-
[Opcode.SHA256COMPRESSION]: makeCost(c.AVM_SHA256COMPRESSION_BASE_L2_GAS, 0),
|
|
115
|
-
[Opcode.KECCAKF1600]: makeCost(c.AVM_KECCAKF1600_BASE_L2_GAS, 0),
|
|
116
|
-
[Opcode.ECADD]: makeCost(c.AVM_ECADD_BASE_L2_GAS, 0),
|
|
117
|
-
[Opcode.TORADIXBE]: makeCost(c.AVM_TORADIXBE_BASE_L2_GAS, 0)
|
|
118
|
-
};
|
|
119
|
-
const DYNAMIC_GAS_COSTS = new Map([
|
|
120
|
-
[
|
|
121
|
-
Opcode.CALLDATACOPY,
|
|
122
|
-
makeCost(c.AVM_CALLDATACOPY_DYN_L2_GAS, 0)
|
|
123
|
-
],
|
|
124
|
-
[
|
|
125
|
-
Opcode.RETURNDATACOPY,
|
|
126
|
-
makeCost(c.AVM_RETURNDATACOPY_DYN_L2_GAS, 0)
|
|
127
|
-
],
|
|
128
|
-
// TODO: Call and static call based on bytecode length
|
|
129
|
-
[
|
|
130
|
-
Opcode.EMITUNENCRYPTEDLOG,
|
|
131
|
-
makeCost(c.AVM_EMITUNENCRYPTEDLOG_DYN_L2_GAS, c.AVM_EMITUNENCRYPTEDLOG_DYN_DA_GAS)
|
|
132
|
-
],
|
|
133
|
-
[
|
|
134
|
-
Opcode.TORADIXBE,
|
|
135
|
-
makeCost(c.AVM_TORADIXBE_DYN_L2_GAS, 0)
|
|
136
|
-
],
|
|
137
|
-
[
|
|
138
|
-
Opcode.AND_8,
|
|
139
|
-
makeCost(c.AVM_BITWISE_DYN_L2_GAS, 0)
|
|
140
|
-
],
|
|
141
|
-
[
|
|
142
|
-
Opcode.AND_16,
|
|
143
|
-
makeCost(c.AVM_BITWISE_DYN_L2_GAS, 0)
|
|
144
|
-
],
|
|
145
|
-
[
|
|
146
|
-
Opcode.OR_8,
|
|
147
|
-
makeCost(c.AVM_BITWISE_DYN_L2_GAS, 0)
|
|
148
|
-
],
|
|
149
|
-
[
|
|
150
|
-
Opcode.OR_16,
|
|
151
|
-
makeCost(c.AVM_BITWISE_DYN_L2_GAS, 0)
|
|
152
|
-
],
|
|
153
|
-
[
|
|
154
|
-
Opcode.XOR_8,
|
|
155
|
-
makeCost(c.AVM_BITWISE_DYN_L2_GAS, 0)
|
|
156
|
-
],
|
|
157
|
-
[
|
|
158
|
-
Opcode.XOR_16,
|
|
159
|
-
makeCost(c.AVM_BITWISE_DYN_L2_GAS, 0)
|
|
160
|
-
],
|
|
161
|
-
[
|
|
162
|
-
Opcode.SSTORE,
|
|
163
|
-
makeCost(0, c.AVM_SSTORE_DYN_DA_GAS)
|
|
164
|
-
]
|
|
165
|
-
]);
|
|
166
|
-
/** Returns the fixed base gas cost for a given opcode. */ export function getBaseGasCost(opcode) {
|
|
167
|
-
return BASE_GAS_COSTS[opcode];
|
|
168
|
-
}
|
|
169
|
-
export function computeAddressingCost(indirectOperandsCount, relativeOperandsCount) {
|
|
170
|
-
return makeCost((relativeOperandsCount !== 0 ? c.AVM_ADDRESSING_BASE_RESOLUTION_L2_GAS : 0) + indirectOperandsCount * c.AVM_ADDRESSING_INDIRECT_L2_GAS + relativeOperandsCount * c.AVM_ADDRESSING_RELATIVE_L2_GAS, 0);
|
|
171
|
-
}
|
|
172
|
-
export function getDynamicGasCost(opcode) {
|
|
173
|
-
return DYNAMIC_GAS_COSTS.has(opcode) ? DYNAMIC_GAS_COSTS.get(opcode) : makeCost(0, 0);
|
|
174
|
-
}
|
|
175
|
-
/** Returns a multiplier based on the byte size of the type represented by the integer tag.
|
|
176
|
-
* Used to account for necessary rows in the bitwise trace. Throws on invalid. */ export function getBitwiseDynamicGasMultiplier(tag) {
|
|
177
|
-
switch(tag){
|
|
178
|
-
case TypeTag.UINT1:
|
|
179
|
-
return 1;
|
|
180
|
-
case TypeTag.UINT8:
|
|
181
|
-
return 1;
|
|
182
|
-
case TypeTag.UINT16:
|
|
183
|
-
return 2;
|
|
184
|
-
case TypeTag.UINT32:
|
|
185
|
-
return 4;
|
|
186
|
-
case TypeTag.UINT64:
|
|
187
|
-
return 8;
|
|
188
|
-
case TypeTag.UINT128:
|
|
189
|
-
return 16;
|
|
190
|
-
case TypeTag.FIELD:
|
|
191
|
-
return 0; // Field is not allowed for bitwise operations. However we don't fail in gas, since we'll fail in bitwise.
|
|
192
|
-
case TypeTag.INVALID:
|
|
193
|
-
throw new InstructionExecutionError(`Invalid tag type for gas cost multiplier: ${TypeTag[tag]}`);
|
|
194
|
-
}
|
|
195
|
-
}
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
-
import type { Gas } from './avm_gas.js';
|
|
3
|
-
import { TaggedMemory } from './avm_memory_types.js';
|
|
4
|
-
import { type ReturnData } from './calldata.js';
|
|
5
|
-
import { type AvmRevertReason } from './errors.js';
|
|
6
|
-
/**
|
|
7
|
-
* A few fields of machine state are initialized from AVM session inputs or call instruction arguments
|
|
8
|
-
*/
|
|
9
|
-
export type InitialAvmMachineState = {
|
|
10
|
-
l2GasLeft: number;
|
|
11
|
-
daGasLeft: number;
|
|
12
|
-
};
|
|
13
|
-
/**
|
|
14
|
-
* Used to track the call stack and revert data of nested calls.
|
|
15
|
-
* This is used to provide a more detailed revert reason when a contract call reverts.
|
|
16
|
-
* It is only a heuristic and may not always provide the correct revert reason.
|
|
17
|
-
*/
|
|
18
|
-
type TrackedRevertInfo = {
|
|
19
|
-
revertDataRepresentative: Fr[];
|
|
20
|
-
recursiveRevertReason: AvmRevertReason;
|
|
21
|
-
};
|
|
22
|
-
type CallStackEntry = {
|
|
23
|
-
callPc: number;
|
|
24
|
-
returnPc: number;
|
|
25
|
-
};
|
|
26
|
-
/**
|
|
27
|
-
* Avm state modified on an instruction-per-instruction basis.
|
|
28
|
-
*/
|
|
29
|
-
export declare class AvmMachineState {
|
|
30
|
-
/** gas remaining of the gas allocated for a contract call */
|
|
31
|
-
l2GasLeft: number;
|
|
32
|
-
daGasLeft: number;
|
|
33
|
-
/** program counter, byte based */
|
|
34
|
-
pc: number;
|
|
35
|
-
/** program counter of the next instruction, byte based */
|
|
36
|
-
nextPc: number;
|
|
37
|
-
/** return/revertdata of the last nested call. */
|
|
38
|
-
nestedReturndata: ReturnData;
|
|
39
|
-
/** Tracks whether the last external call was successful */
|
|
40
|
-
nestedCallSuccess: boolean;
|
|
41
|
-
/**
|
|
42
|
-
* Used to track the call stack and revert data of nested calls.
|
|
43
|
-
* This is used to provide a more detailed revert reason when a contract call reverts.
|
|
44
|
-
* It is only a heuristic and may not always provide the correct revert reason.
|
|
45
|
-
*/
|
|
46
|
-
collectedRevertInfo: TrackedRevertInfo | undefined;
|
|
47
|
-
/**
|
|
48
|
-
* On INTERNALCALL, internal call stack is pushed to with the current pc and the return pc.
|
|
49
|
-
* On INTERNALRETURN, value is popped from the internal call stack and assigned to the return pc.
|
|
50
|
-
*/
|
|
51
|
-
internalCallStack: CallStackEntry[];
|
|
52
|
-
/** Memory accessible to user code */
|
|
53
|
-
readonly memory: TaggedMemory;
|
|
54
|
-
/**
|
|
55
|
-
* Signals that execution should end.
|
|
56
|
-
* AvmContext execution continues executing instructions until the machine state signals "halted"
|
|
57
|
-
*/
|
|
58
|
-
private halted;
|
|
59
|
-
/** Signals that execution has reverted normally (this does not cover exceptional halts) */
|
|
60
|
-
private reverted;
|
|
61
|
-
/** Output data must NOT be modified once it is set */
|
|
62
|
-
private output;
|
|
63
|
-
/** instruction counter, including nested calls */
|
|
64
|
-
instrCounter: number;
|
|
65
|
-
constructor(gasLeft: Gas);
|
|
66
|
-
constructor(l2GasLeft: number, daGasLeft: number);
|
|
67
|
-
get gasLeft(): Gas;
|
|
68
|
-
static fromState(state: InitialAvmMachineState): AvmMachineState;
|
|
69
|
-
/**
|
|
70
|
-
* Consumes the given gas.
|
|
71
|
-
* Should any of the gas dimensions get depleted, it sets all gas left to zero and triggers
|
|
72
|
-
* an exceptional halt by throwing an OutOfGasError.
|
|
73
|
-
*/
|
|
74
|
-
consumeGas(gasCost: Partial<Gas>): void;
|
|
75
|
-
/** Increases the gas left by the amounts specified. */
|
|
76
|
-
refundGas(gasRefund: Partial<Gas>): void;
|
|
77
|
-
/**
|
|
78
|
-
* Halt as successful
|
|
79
|
-
* Output data must NOT be modified once it is set
|
|
80
|
-
* @param output
|
|
81
|
-
*/
|
|
82
|
-
return(output: ReturnData): void;
|
|
83
|
-
/**
|
|
84
|
-
* Halt as reverted
|
|
85
|
-
* Output data must NOT be modified once it is set
|
|
86
|
-
* @param output
|
|
87
|
-
*/
|
|
88
|
-
revert(output: ReturnData): void;
|
|
89
|
-
getHalted(): boolean;
|
|
90
|
-
getReverted(): boolean;
|
|
91
|
-
getOutput(): ReturnData;
|
|
92
|
-
/**
|
|
93
|
-
* Flag an exceptional halt. Clears gas left and sets the reverted flag. No output data.
|
|
94
|
-
*/
|
|
95
|
-
private exceptionalHalt;
|
|
96
|
-
}
|
|
97
|
-
export {};
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX21hY2hpbmVfc3RhdGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wdWJsaWMvYXZtL2F2bV9tYWNoaW5lX3N0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXpELE9BQU8sS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLEtBQUssVUFBVSxFQUFtQixNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQWlCLE1BQU0sYUFBYSxDQUFDO0FBRWxFOztHQUVHO0FBQ0gsTUFBTSxNQUFNLHNCQUFzQixHQUFHO0lBQ25DLFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDbEIsU0FBUyxFQUFFLE1BQU0sQ0FBQztDQUNuQixDQUFDO0FBRUY7Ozs7R0FJRztBQUNILEtBQUssaUJBQWlCLEdBQUc7SUFDdkIsd0JBQXdCLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDL0IscUJBQXFCLEVBQUUsZUFBZSxDQUFDO0NBQ3hDLENBQUM7QUFFRixLQUFLLGNBQWMsR0FBRztJQUNwQixNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQ2YsUUFBUSxFQUFFLE1BQU0sQ0FBQztDQUNsQixDQUFDO0FBRUY7O0dBRUc7QUFDSCxxQkFBYSxlQUFlO0lBQzFCLDZEQUE2RDtJQUN0RCxTQUFTLEVBQUUsTUFBTSxDQUFDO0lBQ2xCLFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDekIsa0NBQWtDO0lBQzNCLEVBQUUsRUFBRSxNQUFNLENBQUs7SUFDdEIsMERBQTBEO0lBQ25ELE1BQU0sRUFBRSxNQUFNLENBQUs7SUFDMUIsaURBQWlEO0lBQzFDLGdCQUFnQixFQUFFLFVBQVUsQ0FBMkI7SUFDOUQsMkRBQTJEO0lBQ3BELGlCQUFpQixFQUFFLE9BQU8sQ0FBUztJQUMxQzs7OztPQUlHO0lBQ0ksbUJBQW1CLEVBQUUsaUJBQWlCLEdBQUcsU0FBUyxDQUFDO0lBRTFEOzs7T0FHRztJQUNJLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxDQUFNO0lBRWhELHFDQUFxQztJQUNyQyxTQUFnQixNQUFNLEVBQUUsWUFBWSxDQUFzQjtJQUUxRDs7O09BR0c7SUFDSCxPQUFPLENBQUMsTUFBTSxDQUFrQjtJQUNoQywyRkFBMkY7SUFDM0YsT0FBTyxDQUFDLFFBQVEsQ0FBa0I7SUFDbEMsc0RBQXNEO0lBQ3RELE9BQU8sQ0FBQyxNQUFNLENBQXVDO0lBR3JELGtEQUFrRDtJQUMzQyxZQUFZLEVBQUUsTUFBTSxDQUFLO0lBR2hDLFlBQVksT0FBTyxFQUFFLEdBQUcsRUFBRTtJQUMxQixZQUFZLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRTtJQVVsRCxJQUFXLE9BQU8sSUFBSSxHQUFHLENBRXhCO0lBRUQsT0FBYyxTQUFTLENBQUMsS0FBSyxFQUFFLHNCQUFzQixHQUFHLGVBQWUsQ0FFdEU7SUFFRDs7OztPQUlHO0lBQ0ksVUFBVSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBbUJ0QztJQUVELHVEQUF1RDtJQUNoRCxTQUFTLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFHdkM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLE1BQU0sRUFBRSxVQUFVLFFBRy9CO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsVUFBVSxRQUkvQjtJQUVNLFNBQVMsSUFBSSxPQUFPLENBRTFCO0lBRU0sV0FBVyxJQUFJLE9BQU8sQ0FFNUI7SUFFTSxTQUFTLElBQUksVUFBVSxDQUU3QjtJQUVEOztPQUVHO0lBQ0gsT0FBTyxDQUFDLGVBQWU7Q0FNeEIifQ==
|