@aztec/simulator 6.0.0-nightly.20260604 → 6.0.0-nightly.20260721
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/dest/client.d.ts +1 -3
- package/dest/client.d.ts.map +1 -1
- package/dest/client.js +0 -2
- package/dest/private/circuit_recording/circuit_recorder.d.ts +36 -23
- package/dest/private/circuit_recording/circuit_recorder.d.ts.map +1 -1
- package/dest/private/circuit_recording/circuit_recorder.js +65 -69
- package/dest/private/circuit_recording/file_circuit_recorder.d.ts +7 -19
- package/dest/private/circuit_recording/file_circuit_recorder.d.ts.map +1 -1
- package/dest/private/circuit_recording/file_circuit_recorder.js +38 -42
- 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/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/{fixtures → testing}/base_avm_simulation_tester.d.ts +1 -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 +1 -1
- 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 +1 -34
- 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/fixtures/amm_test.js +2 -2
- package/dest/public/fixtures/bulk_test.js +2 -2
- package/dest/public/fixtures/custom_bytecode_tester.d.ts +1 -1
- package/dest/public/fixtures/custom_bytecode_tester.d.ts.map +1 -1
- package/dest/public/fixtures/custom_bytecode_tester.js +2 -2
- package/dest/public/fixtures/index.d.ts +2 -4
- package/dest/public/fixtures/index.d.ts.map +1 -1
- package/dest/public/fixtures/index.js +1 -3
- 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 +11 -7
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
- package/dest/public/fixtures/public_tx_simulation_tester.js +33 -43
- package/dest/public/fixtures/simple_contract_data_source.js +1 -1
- package/dest/public/fixtures/token_test.js +3 -3
- package/dest/public/fixtures/utils.d.ts +1 -1
- package/dest/public/fixtures/utils.d.ts.map +1 -1
- package/dest/public/fixtures/utils.js +5 -3
- package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts +11 -4
- package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts.map +1 -1
- package/dest/public/fuzzing/avm_fuzzer_simulator.js +24 -10
- package/dest/public/fuzzing/avm_simulator_bin.js +4 -4
- 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 +2 -2
- package/dest/public/public_db_sources.d.ts.map +1 -1
- package/dest/public/public_db_sources.js +1 -1
- package/dest/public/public_processor/guarded_merkle_tree.d.ts +4 -3
- package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -1
- package/dest/public/public_processor/guarded_merkle_tree.js +3 -0
- package/dest/public/public_processor/public_processor.d.ts +8 -4
- package/dest/public/public_processor/public_processor.d.ts.map +1 -1
- package/dest/public/public_processor/public_processor.js +18 -14
- 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_cpp_public_tx_simulator.js → dumping_public_tx_simulator.js} +10 -23
- package/dest/public/public_tx_simulator/factories.d.ts +8 -8
- 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 +4 -6
- 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 -75
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/public_tx_simulator.js +98 -323
- 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 +5 -5
- package/dest/public/test_executor_metrics.d.ts +1 -6
- package/dest/public/test_executor_metrics.d.ts.map +1 -1
- package/dest/public/test_executor_metrics.js +0 -22
- package/package.json +22 -19
- package/src/client.ts +0 -2
- package/src/private/circuit_recording/circuit_recorder.ts +84 -78
- package/src/private/circuit_recording/file_circuit_recorder.ts +38 -48
- package/src/private/circuit_recording/simulator_recorder_wrapper.ts +9 -15
- package/src/public/avm/{fixtures → testing}/base_avm_simulation_tester.ts +1 -1
- package/src/public/avm/{fixtures → testing}/utils.ts +1 -40
- 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/fixtures/amm_test.ts +2 -2
- package/src/public/fixtures/bulk_test.ts +2 -2
- package/src/public/fixtures/custom_bytecode_tester.ts +2 -2
- package/src/public/fixtures/index.ts +1 -3
- package/src/public/fixtures/public_processor_test_env.ts +88 -0
- package/src/public/fixtures/public_tx_simulation_tester.ts +41 -55
- package/src/public/fixtures/simple_contract_data_source.ts +1 -1
- package/src/public/fixtures/token_test.ts +3 -3
- package/src/public/fixtures/utils.ts +6 -11
- package/src/public/fuzzing/avm_fuzzer_simulator.ts +25 -10
- package/src/public/fuzzing/avm_simulator_bin.ts +3 -5
- package/src/public/index.ts +7 -3
- package/src/public/public_db_sources.ts +1 -1
- package/src/public/public_processor/guarded_merkle_tree.ts +5 -2
- package/src/public/public_processor/public_processor.ts +24 -17
- package/src/public/public_tx_simulator/{dumping_cpp_public_tx_simulator.ts → dumping_public_tx_simulator.ts} +15 -31
- package/src/public/public_tx_simulator/factories.ts +27 -10
- package/src/public/public_tx_simulator/index.ts +6 -5
- package/src/public/public_tx_simulator/public_tx_simulator.ts +139 -480
- package/src/public/public_tx_simulator/public_tx_simulator_base.ts +37 -0
- package/src/public/public_tx_simulator/public_tx_simulator_interface.ts +5 -5
- package/src/public/test_executor_metrics.ts +0 -24
- 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 -64
- 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/account_proof_fetcher.d.ts +0 -2
- package/dest/public/avm/fixtures/account_proof_fetcher.d.ts.map +0 -1
- 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 -74
- package/dest/public/avm/opcodes/accrued_substate.d.ts.map +0 -1
- package/dest/public/avm/opcodes/accrued_substate.js +0 -254
- 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 -21
- package/dest/public/avm/opcodes/contract.d.ts.map +0 -1
- package/dest/public/avm/opcodes/contract.js +0 -69
- 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 -17
- package/dest/public/avm/opcodes/ec_add.d.ts.map +0 -1
- package/dest/public/avm/opcodes/ec_add.js +0 -79
- 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 -14
- package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +0 -1
- package/dest/public/fixtures/custom_bytecode_tests.js +0 -234
- 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 -122
- package/dest/public/fixtures/opcode_spammer.d.ts.map +0 -1
- package/dest/public/fixtures/opcode_spammer.js +0 -1645
- 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 -356
- package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts +0 -19
- 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 -99
- 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 -131
- 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 -23
- 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 -135
- 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 -298
- 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 -170
- package/dest/public/state_manager/state_manager.d.ts.map +0 -1
- package/dest/public/state_manager/state_manager.js +0 -402
- 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 -101
- 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 -285
- 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 -76
- 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 -86
- 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 -366
- package/src/public/fixtures/minimal_public_tx.ts +0 -26
- package/src/public/fixtures/opcode_spammer.ts +0 -1713
- package/src/public/hinting_db_sources.ts +0 -610
- package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +0 -125
- package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +0 -210
- package/src/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.ts +0 -134
- package/src/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.ts +0 -239
- package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +0 -105
- package/src/public/public_tx_simulator/public_tx_context.ts +0 -482
- package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +0 -63
- package/src/public/side_effect_trace.ts +0 -293
- 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 -569
- /package/dest/public/avm/{fixtures → testing}/account_proof_fetcher.js +0 -0
- /package/src/public/avm/{fixtures → testing}/account_proof.json +0 -0
- /package/src/public/avm/{fixtures → testing}/account_proof_fetcher.ts +0 -0
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
import type { AvmContext } from '../avm_context.js';
|
|
2
|
-
import { getBitwiseDynamicGasMultiplier } from '../avm_gas.js';
|
|
3
|
-
import { type IntegralValue, TaggedMemory, type TaggedMemoryInterface, TypeTag } from '../avm_memory_types.js';
|
|
4
|
-
import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
|
|
5
|
-
import { Addressing } from './addressing_mode.js';
|
|
6
|
-
import { Instruction } from './instruction.js';
|
|
7
|
-
import { ThreeOperandInstruction } from './instruction_impl.js';
|
|
8
|
-
|
|
9
|
-
abstract class ThreeOperandBitwiseInstruction extends ThreeOperandInstruction {
|
|
10
|
-
public async execute(context: AvmContext): Promise<void> {
|
|
11
|
-
const memory = context.machineState.memory;
|
|
12
|
-
const addressing = Addressing.fromWire(this.addressingMode);
|
|
13
|
-
|
|
14
|
-
context.machineState.consumeGas(
|
|
15
|
-
this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()),
|
|
16
|
-
);
|
|
17
|
-
|
|
18
|
-
const operands = [this.aOffset, this.bOffset, this.dstOffset];
|
|
19
|
-
const [aOffset, bOffset, dstOffset] = addressing.resolve(operands, memory);
|
|
20
|
-
this.checkTags(memory, aOffset, bOffset);
|
|
21
|
-
|
|
22
|
-
const multiplier = this.getDynamicMultiplier(memory.getTag(aOffset));
|
|
23
|
-
context.machineState.consumeGas(this.dynamicGasCost(multiplier));
|
|
24
|
-
|
|
25
|
-
const a = memory.getAs<IntegralValue>(aOffset);
|
|
26
|
-
const b = memory.getAs<IntegralValue>(bOffset);
|
|
27
|
-
|
|
28
|
-
const res = this.compute(a, b);
|
|
29
|
-
memory.set(dstOffset, res);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
protected abstract compute(a: IntegralValue, b: IntegralValue): IntegralValue;
|
|
33
|
-
protected checkTags(memory: TaggedMemoryInterface, aOffset: number, bOffset: number) {
|
|
34
|
-
TaggedMemory.checkIsIntegralTag(memory.getTag(aOffset));
|
|
35
|
-
memory.checkTagsAreSame(aOffset, bOffset);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
protected getDynamicMultiplier(_lhsTag: TypeTag): number {
|
|
39
|
-
return 0;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
export class And extends ThreeOperandBitwiseInstruction {
|
|
44
|
-
static readonly type: string = 'AND';
|
|
45
|
-
static readonly opcode = Opcode.AND_8; // FIXME: needed for gas.
|
|
46
|
-
|
|
47
|
-
protected override compute(a: IntegralValue, b: IntegralValue): IntegralValue {
|
|
48
|
-
return a.and(b);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
protected override getDynamicMultiplier(lhsTag: TypeTag): number {
|
|
52
|
-
return getBitwiseDynamicGasMultiplier(lhsTag);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
export class Or extends ThreeOperandBitwiseInstruction {
|
|
57
|
-
static readonly type: string = 'OR';
|
|
58
|
-
static readonly opcode = Opcode.OR_8; // FIXME: needed for gas.
|
|
59
|
-
|
|
60
|
-
protected override compute(a: IntegralValue, b: IntegralValue): IntegralValue {
|
|
61
|
-
return a.or(b);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
protected override getDynamicMultiplier(lhsTag: TypeTag): number {
|
|
65
|
-
return getBitwiseDynamicGasMultiplier(lhsTag);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
export class Xor extends ThreeOperandBitwiseInstruction {
|
|
70
|
-
static readonly type: string = 'XOR';
|
|
71
|
-
static readonly opcode = Opcode.XOR_8; // FIXME: needed for gas.
|
|
72
|
-
|
|
73
|
-
protected override compute(a: IntegralValue, b: IntegralValue): IntegralValue {
|
|
74
|
-
return a.xor(b);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
protected override getDynamicMultiplier(lhsTag: TypeTag): number {
|
|
78
|
-
return getBitwiseDynamicGasMultiplier(lhsTag);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
export class Not extends Instruction {
|
|
83
|
-
static readonly type: string = 'NOT';
|
|
84
|
-
static readonly opcode = Opcode.NOT_8;
|
|
85
|
-
|
|
86
|
-
static readonly wireFormat8 = [OperandType.UINT8, OperandType.UINT8, OperandType.UINT8, OperandType.UINT8];
|
|
87
|
-
static readonly wireFormat16 = [OperandType.UINT8, OperandType.UINT8, OperandType.UINT16, OperandType.UINT16];
|
|
88
|
-
|
|
89
|
-
constructor(
|
|
90
|
-
private addressingMode: number,
|
|
91
|
-
private srcOffset: number,
|
|
92
|
-
private dstOffset: number,
|
|
93
|
-
) {
|
|
94
|
-
super();
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
public async execute(context: AvmContext): Promise<void> {
|
|
98
|
-
const memory = context.machineState.memory;
|
|
99
|
-
const addressing = Addressing.fromWire(this.addressingMode);
|
|
100
|
-
|
|
101
|
-
context.machineState.consumeGas(
|
|
102
|
-
this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()),
|
|
103
|
-
);
|
|
104
|
-
|
|
105
|
-
const operands = [this.srcOffset, this.dstOffset];
|
|
106
|
-
const [srcOffset, dstOffset] = addressing.resolve(operands, memory);
|
|
107
|
-
TaggedMemory.checkIsIntegralTag(memory.getTag(srcOffset));
|
|
108
|
-
const value = memory.getAs<IntegralValue>(srcOffset);
|
|
109
|
-
|
|
110
|
-
const res = value.not();
|
|
111
|
-
memory.set(dstOffset, res);
|
|
112
|
-
}
|
|
113
|
-
}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import type { AvmContext } from '../avm_context.js';
|
|
2
|
-
import { type MemoryValue, Uint1 } from '../avm_memory_types.js';
|
|
3
|
-
import { Opcode } from '../serialization/instruction_serialization.js';
|
|
4
|
-
import { Addressing } from './addressing_mode.js';
|
|
5
|
-
import { ThreeOperandInstruction } from './instruction_impl.js';
|
|
6
|
-
|
|
7
|
-
abstract class ComparatorInstruction extends ThreeOperandInstruction {
|
|
8
|
-
public async execute(context: AvmContext): Promise<void> {
|
|
9
|
-
const memory = context.machineState.memory;
|
|
10
|
-
const addressing = Addressing.fromWire(this.addressingMode);
|
|
11
|
-
|
|
12
|
-
context.machineState.consumeGas(
|
|
13
|
-
this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()),
|
|
14
|
-
);
|
|
15
|
-
|
|
16
|
-
const operands = [this.aOffset, this.bOffset, this.dstOffset];
|
|
17
|
-
const [aOffset, bOffset, dstOffset] = addressing.resolve(operands, memory);
|
|
18
|
-
memory.checkTagsAreSame(aOffset, bOffset); // Brillig semantic enforces that tags match.
|
|
19
|
-
|
|
20
|
-
const a = memory.get(aOffset);
|
|
21
|
-
const b = memory.get(bOffset);
|
|
22
|
-
|
|
23
|
-
const dest = new Uint1(this.compare(a, b) ? 1 : 0);
|
|
24
|
-
memory.set(dstOffset, dest);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
protected abstract compare(a: MemoryValue, b: MemoryValue): boolean;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export class Eq extends ComparatorInstruction {
|
|
31
|
-
static readonly type: string = 'EQ';
|
|
32
|
-
static readonly opcode = Opcode.EQ_8; // FIXME: needed for gas.
|
|
33
|
-
|
|
34
|
-
protected compare(a: MemoryValue, b: MemoryValue): boolean {
|
|
35
|
-
return a.equals(b);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
export class Lt extends ComparatorInstruction {
|
|
40
|
-
static readonly type: string = 'LT';
|
|
41
|
-
static readonly opcode = Opcode.LT_8; // FIXME: needed for gas.
|
|
42
|
-
|
|
43
|
-
protected compare(a: MemoryValue, b: MemoryValue): boolean {
|
|
44
|
-
return a.lt(b);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
export class Lte extends ComparatorInstruction {
|
|
49
|
-
static readonly type: string = 'LTE';
|
|
50
|
-
static readonly opcode = Opcode.LTE_8; // FIXME: needed for gas.
|
|
51
|
-
|
|
52
|
-
protected compare(a: MemoryValue, b: MemoryValue): boolean {
|
|
53
|
-
return a.lt(b) || a.equals(b);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import type { AvmContext } from '../avm_context.js';
|
|
2
|
-
import { Field, TypeTag, Uint1 } from '../avm_memory_types.js';
|
|
3
|
-
import { InstructionExecutionError } from '../errors.js';
|
|
4
|
-
import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
|
|
5
|
-
import { Addressing } from './addressing_mode.js';
|
|
6
|
-
import { Instruction } from './instruction.js';
|
|
7
|
-
|
|
8
|
-
export enum ContractInstanceMember {
|
|
9
|
-
DEPLOYER,
|
|
10
|
-
CLASS_ID,
|
|
11
|
-
INIT_HASH,
|
|
12
|
-
IMMUTABLES_HASH,
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export class GetContractInstance extends Instruction {
|
|
16
|
-
static readonly type: string = 'GETCONTRACTINSTANCE';
|
|
17
|
-
static readonly opcode: Opcode = Opcode.GETCONTRACTINSTANCE;
|
|
18
|
-
// Informs (de)serialization. See Instruction.deserialize.
|
|
19
|
-
static readonly wireFormat: OperandType[] = [
|
|
20
|
-
OperandType.UINT8, // opcode
|
|
21
|
-
OperandType.UINT8, // addressing_mode bits
|
|
22
|
-
OperandType.UINT16, // addressOffset
|
|
23
|
-
OperandType.UINT16, // dstOffset
|
|
24
|
-
OperandType.UINT8, // member enum (immediate)
|
|
25
|
-
];
|
|
26
|
-
|
|
27
|
-
constructor(
|
|
28
|
-
private addressingMode: number,
|
|
29
|
-
private addressOffset: number,
|
|
30
|
-
private dstOffset: number,
|
|
31
|
-
private memberEnum: number,
|
|
32
|
-
) {
|
|
33
|
-
super();
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
async execute(context: AvmContext): Promise<void> {
|
|
37
|
-
const memory = context.machineState.memory;
|
|
38
|
-
const addressing = Addressing.fromWire(this.addressingMode);
|
|
39
|
-
|
|
40
|
-
context.machineState.consumeGas(
|
|
41
|
-
this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()),
|
|
42
|
-
);
|
|
43
|
-
|
|
44
|
-
if (!(this.memberEnum in ContractInstanceMember)) {
|
|
45
|
-
throw new InstructionExecutionError(`Invalid GETCONTRACTINSTANCE member enum ${this.memberEnum}`);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
const operands = [this.addressOffset, this.dstOffset];
|
|
49
|
-
const [addressOffset, dstOffset] = addressing.resolve(operands, memory);
|
|
50
|
-
memory.checkTag(TypeTag.FIELD, addressOffset);
|
|
51
|
-
|
|
52
|
-
const address = memory.get(addressOffset).toAztecAddress();
|
|
53
|
-
const instance = await context.persistableState.getContractInstance(address);
|
|
54
|
-
const exists = instance !== undefined;
|
|
55
|
-
|
|
56
|
-
let memberValue = new Field(0);
|
|
57
|
-
if (exists) {
|
|
58
|
-
switch (this.memberEnum as ContractInstanceMember) {
|
|
59
|
-
case ContractInstanceMember.DEPLOYER:
|
|
60
|
-
memberValue = new Field(instance.deployer.toField());
|
|
61
|
-
break;
|
|
62
|
-
case ContractInstanceMember.CLASS_ID:
|
|
63
|
-
memberValue = new Field(instance.currentContractClassId.toField());
|
|
64
|
-
break;
|
|
65
|
-
case ContractInstanceMember.INIT_HASH:
|
|
66
|
-
memberValue = new Field(instance.initializationHash);
|
|
67
|
-
break;
|
|
68
|
-
case ContractInstanceMember.IMMUTABLES_HASH:
|
|
69
|
-
memberValue = new Field(instance.immutablesHash);
|
|
70
|
-
break;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
memory.setSlice(dstOffset, [new Uint1(exists ? 1 : 0), memberValue]);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
import type { AvmContext } from '../avm_context.js';
|
|
2
|
-
import { TypeTag, type Uint1 } from '../avm_memory_types.js';
|
|
3
|
-
import { InstructionExecutionError } from '../errors.js';
|
|
4
|
-
import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
|
|
5
|
-
import { Addressing } from './addressing_mode.js';
|
|
6
|
-
import { Instruction } from './instruction.js';
|
|
7
|
-
|
|
8
|
-
export class Jump extends Instruction {
|
|
9
|
-
static type: string = 'JUMP';
|
|
10
|
-
static readonly opcode: Opcode = Opcode.JUMP_32;
|
|
11
|
-
// Informs (de)serialization. See Instruction.deserialize.
|
|
12
|
-
static readonly wireFormat: OperandType[] = [OperandType.UINT8, OperandType.UINT32];
|
|
13
|
-
|
|
14
|
-
constructor(private jumpOffset: number) {
|
|
15
|
-
super();
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
public async execute(context: AvmContext): Promise<void> {
|
|
19
|
-
context.machineState.consumeGas(this.baseGasCost(0, 0));
|
|
20
|
-
|
|
21
|
-
context.machineState.pc = this.jumpOffset;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
public override handlesPC(): boolean {
|
|
25
|
-
return true;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export class JumpI extends Instruction {
|
|
30
|
-
static type: string = 'JUMPI';
|
|
31
|
-
static readonly opcode: Opcode = Opcode.JUMPI_32;
|
|
32
|
-
|
|
33
|
-
// Instruction wire format with opcode.
|
|
34
|
-
static readonly wireFormat: OperandType[] = [
|
|
35
|
-
OperandType.UINT8,
|
|
36
|
-
OperandType.UINT8,
|
|
37
|
-
OperandType.UINT16,
|
|
38
|
-
OperandType.UINT32,
|
|
39
|
-
];
|
|
40
|
-
|
|
41
|
-
constructor(
|
|
42
|
-
private addressingMode: number,
|
|
43
|
-
private condOffset: number,
|
|
44
|
-
private loc: number,
|
|
45
|
-
) {
|
|
46
|
-
super();
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
public async execute(context: AvmContext): Promise<void> {
|
|
50
|
-
const memory = context.machineState.memory;
|
|
51
|
-
const addressing = Addressing.fromWire(this.addressingMode);
|
|
52
|
-
|
|
53
|
-
context.machineState.consumeGas(
|
|
54
|
-
this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()),
|
|
55
|
-
);
|
|
56
|
-
|
|
57
|
-
const operands = [this.condOffset];
|
|
58
|
-
const [resolvedCondOffset] = addressing.resolve(operands, memory);
|
|
59
|
-
|
|
60
|
-
memory.checkTag(TypeTag.UINT1, resolvedCondOffset);
|
|
61
|
-
const condition = memory.getAs<Uint1>(resolvedCondOffset);
|
|
62
|
-
|
|
63
|
-
if (condition.toNumber() == 0) {
|
|
64
|
-
context.machineState.pc = context.machineState.nextPc;
|
|
65
|
-
} else {
|
|
66
|
-
context.machineState.pc = this.loc;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
public override handlesPC(): boolean {
|
|
71
|
-
return true;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
export class InternalCall extends Instruction {
|
|
76
|
-
static readonly type: string = 'INTERNALCALL';
|
|
77
|
-
static readonly opcode: Opcode = Opcode.INTERNALCALL;
|
|
78
|
-
// Informs (de)serialization. See Instruction.deserialize.
|
|
79
|
-
static readonly wireFormat: OperandType[] = [OperandType.UINT8, OperandType.UINT32];
|
|
80
|
-
|
|
81
|
-
constructor(private loc: number) {
|
|
82
|
-
super();
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
public async execute(context: AvmContext): Promise<void> {
|
|
86
|
-
context.machineState.consumeGas(this.baseGasCost(0, 0));
|
|
87
|
-
|
|
88
|
-
context.machineState.internalCallStack.push({
|
|
89
|
-
callPc: context.machineState.pc,
|
|
90
|
-
returnPc: context.machineState.nextPc,
|
|
91
|
-
});
|
|
92
|
-
context.machineState.pc = this.loc;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
public override handlesPC(): boolean {
|
|
96
|
-
return true;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
export class InternalReturn extends Instruction {
|
|
101
|
-
static readonly type: string = 'INTERNALRETURN';
|
|
102
|
-
static readonly opcode: Opcode = Opcode.INTERNALRETURN;
|
|
103
|
-
// Informs (de)serialization. See Instruction.deserialize.
|
|
104
|
-
static readonly wireFormat: OperandType[] = [OperandType.UINT8];
|
|
105
|
-
|
|
106
|
-
constructor() {
|
|
107
|
-
super();
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
public async execute(context: AvmContext): Promise<void> {
|
|
111
|
-
context.machineState.consumeGas(this.baseGasCost(0, 0));
|
|
112
|
-
|
|
113
|
-
const stackEntry = context.machineState.internalCallStack.pop();
|
|
114
|
-
if (stackEntry === undefined) {
|
|
115
|
-
throw new InstructionExecutionError('Internal call stack empty!');
|
|
116
|
-
}
|
|
117
|
-
context.machineState.pc = stackEntry.returnPc;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
public override handlesPC(): boolean {
|
|
121
|
-
return true;
|
|
122
|
-
}
|
|
123
|
-
}
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
import type { AvmContext } from '../avm_context.js';
|
|
2
|
-
import { TypeTag, Uint1, Uint8 } from '../avm_memory_types.js';
|
|
3
|
-
import { InvalidToRadixInputsError } from '../errors.js';
|
|
4
|
-
import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
|
|
5
|
-
import { Addressing } from './addressing_mode.js';
|
|
6
|
-
import { Instruction } from './instruction.js';
|
|
7
|
-
|
|
8
|
-
export class ToRadixBE extends Instruction {
|
|
9
|
-
static type: string = 'TORADIXBE';
|
|
10
|
-
static readonly opcode: Opcode = Opcode.TORADIXBE;
|
|
11
|
-
|
|
12
|
-
// Informs (de)serialization. See Instruction.deserialize.
|
|
13
|
-
static readonly wireFormat: OperandType[] = [
|
|
14
|
-
OperandType.UINT8, // Opcode
|
|
15
|
-
OperandType.UINT16, // addressing_mode
|
|
16
|
-
OperandType.UINT16, // src memory address
|
|
17
|
-
OperandType.UINT16, // radix memory address
|
|
18
|
-
OperandType.UINT16, // number of limbs address
|
|
19
|
-
OperandType.UINT16, // output is in "bits" mode memory address (boolean/Uint1 is stored)
|
|
20
|
-
OperandType.UINT16, // dst memory address
|
|
21
|
-
];
|
|
22
|
-
|
|
23
|
-
constructor(
|
|
24
|
-
private addressingMode: number,
|
|
25
|
-
private srcOffset: number,
|
|
26
|
-
private radixOffset: number,
|
|
27
|
-
private numLimbsOffset: number,
|
|
28
|
-
private outputBitsOffset: number,
|
|
29
|
-
private dstOffset: number,
|
|
30
|
-
) {
|
|
31
|
-
super();
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
public async execute(context: AvmContext): Promise<void> {
|
|
35
|
-
const memory = context.machineState.memory;
|
|
36
|
-
const addressing = Addressing.fromWire(this.addressingMode);
|
|
37
|
-
|
|
38
|
-
context.machineState.consumeGas(
|
|
39
|
-
this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()),
|
|
40
|
-
);
|
|
41
|
-
|
|
42
|
-
const operands = [this.srcOffset, this.radixOffset, this.numLimbsOffset, this.outputBitsOffset, this.dstOffset];
|
|
43
|
-
const [srcOffset, radixOffset, numLimbsOffset, outputBitsOffset, dstOffset] = addressing.resolve(operands, memory);
|
|
44
|
-
|
|
45
|
-
// The radix gadget only takes in a Field
|
|
46
|
-
memory.checkTag(TypeTag.FIELD, srcOffset);
|
|
47
|
-
memory.checkTag(TypeTag.UINT32, radixOffset);
|
|
48
|
-
memory.checkTag(TypeTag.UINT32, numLimbsOffset);
|
|
49
|
-
memory.checkTag(TypeTag.UINT1, outputBitsOffset);
|
|
50
|
-
|
|
51
|
-
const numLimbs = memory.get(numLimbsOffset).toNumber();
|
|
52
|
-
const radix: bigint = memory.get(radixOffset).toBigInt();
|
|
53
|
-
context.machineState.consumeGas(
|
|
54
|
-
this.dynamicGasCost(Math.max(numLimbs, radix > 256n ? 32 : MODULUS_LIMBS_PER_RADIX[Number(radix)])),
|
|
55
|
-
);
|
|
56
|
-
const outputBits = memory.get(outputBitsOffset).toNumber();
|
|
57
|
-
|
|
58
|
-
let value: bigint = memory.get(srcOffset).toBigInt();
|
|
59
|
-
|
|
60
|
-
if (radix < 2 || radix > 256) {
|
|
61
|
-
throw new InvalidToRadixInputsError(`ToRadixBE instruction's radix should be in range [2,256] (was ${radix}).`);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
if (numLimbs < 1 && value != BigInt(0n)) {
|
|
65
|
-
throw new InvalidToRadixInputsError(
|
|
66
|
-
`ToRadixBE instruction's input value is not zero (was ${value}) but numLimbs zero.`,
|
|
67
|
-
);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
if (outputBits != 0 && radix != BigInt(2n)) {
|
|
71
|
-
throw new InvalidToRadixInputsError(`Radix ${radix} is not equal to 2 and bit mode is activated.`);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
const radixBN: bigint = BigInt(radix);
|
|
75
|
-
const limbArray = new Array(numLimbs);
|
|
76
|
-
|
|
77
|
-
for (let i = numLimbs - 1; i >= 0; i--) {
|
|
78
|
-
const limb = value % radixBN;
|
|
79
|
-
limbArray[i] = limb;
|
|
80
|
-
value /= radixBN;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
if (value !== 0n) {
|
|
84
|
-
throw new InvalidToRadixInputsError(`Field failed to decompose in ${numLimbs} limbs.`);
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
const outputType = outputBits != 0 ? Uint1 : Uint8;
|
|
88
|
-
const res = limbArray.map(byte => new outputType(byte));
|
|
89
|
-
memory.setSlice(dstOffset, res);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
// First two are for radix = 0 and 1, which are invalid, so we have 0 limbs for those cases.
|
|
94
|
-
export const MODULUS_LIMBS_PER_RADIX: number[] = [
|
|
95
|
-
0, 0, 254, 161, 127, 110, 99, 91, 85, 81, 77, 74, 71, 69, 67, 65, 64, 63, 61, 60, 59, 58, 57, 57, 56, 55, 54, 54, 53,
|
|
96
|
-
53, 52, 52, 51, 51, 50, 50, 50, 49, 49, 48, 48, 48, 48, 47, 47, 47, 46, 46, 46, 46, 45, 45, 45, 45, 45, 44, 44, 44,
|
|
97
|
-
44, 44, 43, 43, 43, 43, 43, 43, 42, 42, 42, 42, 42, 42, 42, 41, 41, 41, 41, 41, 41, 41, 41, 41, 40, 40, 40, 40, 40,
|
|
98
|
-
40, 40, 40, 40, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
|
|
99
|
-
37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
|
|
100
|
-
36, 36, 36, 36, 36, 36, 36, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
|
|
101
|
-
35, 35, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
|
|
102
|
-
34, 34, 34, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
|
|
103
|
-
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
|
104
|
-
];
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import { Grumpkin } from '@aztec/foundation/crypto/grumpkin';
|
|
2
|
-
import { Point } from '@aztec/foundation/curves/grumpkin';
|
|
3
|
-
|
|
4
|
-
import type { AvmContext } from '../avm_context.js';
|
|
5
|
-
import { Field, TypeTag } from '../avm_memory_types.js';
|
|
6
|
-
import { EcAddPointNotOnCurveError } from '../errors.js';
|
|
7
|
-
import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
|
|
8
|
-
import { Addressing } from './addressing_mode.js';
|
|
9
|
-
import { Instruction } from './instruction.js';
|
|
10
|
-
|
|
11
|
-
export class EcAdd extends Instruction {
|
|
12
|
-
static type: string = 'ECADD';
|
|
13
|
-
static readonly opcode = Opcode.ECADD;
|
|
14
|
-
|
|
15
|
-
// Informs (de)serialization. See Instruction.deserialize.
|
|
16
|
-
static readonly wireFormat: OperandType[] = [
|
|
17
|
-
OperandType.UINT8, // reserved
|
|
18
|
-
OperandType.UINT16, // indirect
|
|
19
|
-
OperandType.UINT16, // p1X
|
|
20
|
-
OperandType.UINT16, // p1Y
|
|
21
|
-
OperandType.UINT16, // p2X
|
|
22
|
-
OperandType.UINT16, // p2Y
|
|
23
|
-
OperandType.UINT16, // dst
|
|
24
|
-
];
|
|
25
|
-
|
|
26
|
-
constructor(
|
|
27
|
-
private addressingMode: number,
|
|
28
|
-
private p1XOffset: number,
|
|
29
|
-
private p1YOffset: number,
|
|
30
|
-
private p2XOffset: number,
|
|
31
|
-
private p2YOffset: number,
|
|
32
|
-
private dstOffset: number,
|
|
33
|
-
) {
|
|
34
|
-
super();
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
public async execute(context: AvmContext): Promise<void> {
|
|
38
|
-
const memory = context.machineState.memory;
|
|
39
|
-
const addressing = Addressing.fromWire(this.addressingMode);
|
|
40
|
-
|
|
41
|
-
context.machineState.consumeGas(
|
|
42
|
-
this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()),
|
|
43
|
-
);
|
|
44
|
-
|
|
45
|
-
const operands = [this.p1XOffset, this.p1YOffset, this.p2XOffset, this.p2YOffset, this.dstOffset];
|
|
46
|
-
const [p1XOffset, p1YOffset, p2XOffset, p2YOffset, dstOffset] = addressing.resolve(operands, memory);
|
|
47
|
-
|
|
48
|
-
memory.checkTags(TypeTag.FIELD, p1XOffset, p1YOffset, p2XOffset, p2YOffset);
|
|
49
|
-
|
|
50
|
-
const p1X = memory.get(p1XOffset);
|
|
51
|
-
const p1Y = memory.get(p1YOffset);
|
|
52
|
-
const p1 = new Point(p1X.toFr(), p1Y.toFr());
|
|
53
|
-
if (!p1.isOnCurve()) {
|
|
54
|
-
throw new EcAddPointNotOnCurveError(/*pointIndex=*/ 1, p1);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
const p2X = memory.get(p2XOffset);
|
|
58
|
-
const p2Y = memory.get(p2YOffset);
|
|
59
|
-
const p2 = new Point(p2X.toFr(), p2Y.toFr());
|
|
60
|
-
if (!p2.isOnCurve()) {
|
|
61
|
-
throw new EcAddPointNotOnCurveError(/*pointIndex=*/ 2, p2);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
let dest;
|
|
65
|
-
if (p1.isInfinite && p2.isInfinite) {
|
|
66
|
-
dest = Point.INFINITY;
|
|
67
|
-
} else if (p1.isInfinite) {
|
|
68
|
-
dest = p2;
|
|
69
|
-
} else if (p2.isInfinite) {
|
|
70
|
-
dest = p1;
|
|
71
|
-
} else {
|
|
72
|
-
// TS<>BB ecc add communication is broken for points that add up to infinity.
|
|
73
|
-
// However, here we know that both points are on the curve, and that none is infinity
|
|
74
|
-
// so we can check for the case where you add p + (-p) = infinity.
|
|
75
|
-
if (p1.x.equals(p2.x) && !p1.y.equals(p2.y)) {
|
|
76
|
-
dest = Point.INFINITY;
|
|
77
|
-
} else {
|
|
78
|
-
dest = await Grumpkin.add(p1, p2);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
// Important to use setSlice() and not set() in the two following statements as
|
|
83
|
-
// this checks that the offsets lie within memory range.
|
|
84
|
-
memory.setSlice(dstOffset, [new Field(dest.x), new Field(dest.y)]);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
import type { AvmContext } from '../avm_context.js';
|
|
2
|
-
import { Field, Uint1, Uint32, Uint64, Uint128 } from '../avm_memory_types.js';
|
|
3
|
-
import { InstructionExecutionError } from '../errors.js';
|
|
4
|
-
import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
|
|
5
|
-
import { Addressing } from './addressing_mode.js';
|
|
6
|
-
import { Instruction } from './instruction.js';
|
|
7
|
-
|
|
8
|
-
export enum EnvironmentVariable {
|
|
9
|
-
ADDRESS,
|
|
10
|
-
SENDER,
|
|
11
|
-
TRANSACTIONFEE,
|
|
12
|
-
CHAINID,
|
|
13
|
-
VERSION,
|
|
14
|
-
BLOCKNUMBER,
|
|
15
|
-
TIMESTAMP,
|
|
16
|
-
MINFEEPERL2GAS,
|
|
17
|
-
MINFEEPERDAGAS,
|
|
18
|
-
ISSTATICCALL,
|
|
19
|
-
L2GASLEFT,
|
|
20
|
-
DAGASLEFT,
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
function getValue(varEnum: EnvironmentVariable, ctx: AvmContext) {
|
|
24
|
-
switch (varEnum) {
|
|
25
|
-
case EnvironmentVariable.ADDRESS:
|
|
26
|
-
return new Field(ctx.environment.address.toField());
|
|
27
|
-
case EnvironmentVariable.SENDER:
|
|
28
|
-
return new Field(ctx.environment.sender.toField());
|
|
29
|
-
case EnvironmentVariable.TRANSACTIONFEE:
|
|
30
|
-
return new Field(ctx.environment.transactionFee);
|
|
31
|
-
case EnvironmentVariable.CHAINID:
|
|
32
|
-
return new Field(ctx.environment.globals.chainId);
|
|
33
|
-
case EnvironmentVariable.VERSION:
|
|
34
|
-
return new Field(ctx.environment.globals.version);
|
|
35
|
-
case EnvironmentVariable.BLOCKNUMBER:
|
|
36
|
-
return new Uint32(ctx.environment.globals.blockNumber);
|
|
37
|
-
case EnvironmentVariable.TIMESTAMP:
|
|
38
|
-
return new Uint64(ctx.environment.globals.timestamp);
|
|
39
|
-
case EnvironmentVariable.MINFEEPERL2GAS:
|
|
40
|
-
return new Uint128(ctx.environment.globals.gasFees.feePerL2Gas);
|
|
41
|
-
case EnvironmentVariable.MINFEEPERDAGAS:
|
|
42
|
-
return new Uint128(ctx.environment.globals.gasFees.feePerDaGas);
|
|
43
|
-
case EnvironmentVariable.ISSTATICCALL:
|
|
44
|
-
return new Uint1(ctx.environment.isStaticCall ? 1 : 0);
|
|
45
|
-
case EnvironmentVariable.L2GASLEFT:
|
|
46
|
-
return new Uint32(ctx.machineState.l2GasLeft);
|
|
47
|
-
case EnvironmentVariable.DAGASLEFT:
|
|
48
|
-
return new Uint32(ctx.machineState.daGasLeft);
|
|
49
|
-
default:
|
|
50
|
-
throw new InstructionExecutionError(`Invalid GETENVVAR var enum ${varEnum}`);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
export class GetEnvVar extends Instruction {
|
|
55
|
-
public static readonly type: string = 'GETENVVAR';
|
|
56
|
-
public static readonly opcode: Opcode = Opcode.GETENVVAR_16;
|
|
57
|
-
static readonly wireFormat16: OperandType[] = [
|
|
58
|
-
OperandType.UINT8, // opcode
|
|
59
|
-
OperandType.UINT8, // addressing_mode
|
|
60
|
-
OperandType.UINT16, // dstOffset
|
|
61
|
-
OperandType.UINT8, // variable enum (immediate)
|
|
62
|
-
];
|
|
63
|
-
|
|
64
|
-
constructor(
|
|
65
|
-
private addressingMode: number,
|
|
66
|
-
private dstOffset: number,
|
|
67
|
-
private varEnum: number,
|
|
68
|
-
) {
|
|
69
|
-
super();
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
public async execute(context: AvmContext): Promise<void> {
|
|
73
|
-
const memory = context.machineState.memory;
|
|
74
|
-
const addressing = Addressing.fromWire(this.addressingMode);
|
|
75
|
-
|
|
76
|
-
context.machineState.consumeGas(
|
|
77
|
-
this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()),
|
|
78
|
-
);
|
|
79
|
-
|
|
80
|
-
const operands = [this.dstOffset];
|
|
81
|
-
const [dstOffset] = addressing.resolve(operands, memory);
|
|
82
|
-
|
|
83
|
-
const value = getValue(this.varEnum as EnvironmentVariable, context);
|
|
84
|
-
|
|
85
|
-
memory.set(dstOffset, value);
|
|
86
|
-
}
|
|
87
|
-
}
|