@aztec/simulator 0.0.1-commit.4d79d1f2d → 0.0.1-commit.4d9804df
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/client.d.ts +1 -3
- package/dest/client.d.ts.map +1 -1
- package/dest/client.js +0 -2
- package/dest/private/acvm_wasm.d.ts +1 -1
- package/dest/private/acvm_wasm.d.ts.map +1 -1
- package/dest/private/acvm_wasm.js +3 -1
- 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 +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 +18 -3
- 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 +4 -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/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/fixtures/amm_test.js +4 -4
- 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 +33 -6
- 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 +12 -7
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
- package/dest/public/fixtures/public_tx_simulation_tester.js +32 -15
- 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 +2 -2
- package/dest/public/fixtures/utils.d.ts.map +1 -1
- package/dest/public/fixtures/utils.js +21 -20
- 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 +6 -3
- package/dest/public/public_db_sources.d.ts.map +1 -1
- package/dest/public/public_db_sources.js +16 -10
- 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 +15 -8
- package/dest/public/public_processor/public_processor.d.ts.map +1 -1
- package/dest/public/public_processor/public_processor.js +117 -78
- package/dest/public/public_processor/public_processor_metrics.d.ts +4 -1
- package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
- package/dest/public/public_processor/public_processor_metrics.js +8 -0
- 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 +9 -9
- 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 -71
- 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 -318
- 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/package.json +22 -19
- package/src/client.ts +0 -2
- package/src/private/acvm_wasm.ts +4 -1
- 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 +23 -3
- package/src/public/avm/{fixtures → testing}/utils.ts +4 -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/contracts_db_checkpoint.ts +1 -1
- package/src/public/fixtures/amm_test.ts +4 -4
- package/src/public/fixtures/bulk_test.ts +31 -6
- 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 +45 -18
- 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 +23 -24
- package/src/public/fuzzing/avm_fuzzer_simulator.ts +26 -11
- package/src/public/fuzzing/avm_simulator_bin.ts +3 -5
- package/src/public/index.ts +7 -3
- package/src/public/public_db_sources.ts +21 -14
- package/src/public/public_processor/guarded_merkle_tree.ts +11 -8
- package/src/public/public_processor/public_processor.ts +154 -98
- package/src/public/public_processor/public_processor_metrics.ts +12 -0
- 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 +29 -11
- package/src/public/public_tx_simulator/index.ts +6 -5
- package/src/public/public_tx_simulator/public_tx_simulator.ts +139 -476
- 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/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/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 -255
- package/dest/public/avm/opcodes/addressing_mode.d.ts +0 -31
- package/dest/public/avm/opcodes/addressing_mode.d.ts.map +0 -1
- package/dest/public/avm/opcodes/addressing_mode.js +0 -94
- package/dest/public/avm/opcodes/arithmetic.d.ts +0 -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 -122
- package/dest/public/fixtures/opcode_spammer.d.ts.map +0 -1
- package/dest/public/fixtures/opcode_spammer.js +0 -1653
- 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/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 -98
- 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 -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 -131
- 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 -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 -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 -286
- 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 -1721
- package/src/public/hinting_db_sources.ts +0 -607
- package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +0 -124
- package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +0 -211
- 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 -484
- 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
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
// AUTOGENERATED FILE - DO NOT EDIT
|
|
2
|
+
// Server-side dispatch for IPC protocol
|
|
3
|
+
|
|
4
|
+
import { Decoder, Encoder } from 'msgpackr';
|
|
5
|
+
import type { CdbAddContracts, CdbAddContractsResponse, CdbCommitCheckpoint, CdbCommitCheckpointResponse, CdbCreateCheckpoint, CdbCreateCheckpointResponse, CdbGetBytecodeCommitment, CdbGetBytecodeCommitmentResponse, CdbGetContractClass, CdbGetContractClassResponse, CdbGetContractInstance, CdbGetContractInstanceResponse, CdbGetDebugFunctionName, CdbGetDebugFunctionNameResponse, CdbRevertCheckpoint, CdbRevertCheckpointResponse } from './api_types.js';
|
|
6
|
+
import { fromCdbAddContractsResponse, fromCdbCommitCheckpointResponse, fromCdbCreateCheckpointResponse, fromCdbGetBytecodeCommitmentResponse, fromCdbGetContractClassResponse, fromCdbGetContractInstanceResponse, fromCdbGetDebugFunctionNameResponse, fromCdbRevertCheckpointResponse, toCdbAddContracts, toCdbCommitCheckpoint, toCdbCreateCheckpoint, toCdbGetBytecodeCommitment, toCdbGetContractClass, toCdbGetContractInstance, toCdbGetDebugFunctionName, toCdbRevertCheckpoint } from './api_types.js';
|
|
7
|
+
|
|
8
|
+
/** Handler interface — implement this to serve commands. */
|
|
9
|
+
export interface Handler {
|
|
10
|
+
getContractInstance(command: CdbGetContractInstance): Promise<CdbGetContractInstanceResponse>;
|
|
11
|
+
getContractClass(command: CdbGetContractClass): Promise<CdbGetContractClassResponse>;
|
|
12
|
+
getBytecodeCommitment(command: CdbGetBytecodeCommitment): Promise<CdbGetBytecodeCommitmentResponse>;
|
|
13
|
+
getDebugFunctionName(command: CdbGetDebugFunctionName): Promise<CdbGetDebugFunctionNameResponse>;
|
|
14
|
+
addContracts(command: CdbAddContracts): Promise<CdbAddContractsResponse>;
|
|
15
|
+
createCheckpoint(command: CdbCreateCheckpoint): Promise<CdbCreateCheckpointResponse>;
|
|
16
|
+
commitCheckpoint(command: CdbCommitCheckpoint): Promise<CdbCommitCheckpointResponse>;
|
|
17
|
+
revertCheckpoint(command: CdbRevertCheckpoint): Promise<CdbRevertCheckpointResponse>;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Dispatch a [commandName, payload] pair to the handler.
|
|
22
|
+
* Returns [responseName, responsePayload] for serialization.
|
|
23
|
+
* Handler failures are wrapped into the schema error variant.
|
|
24
|
+
*/
|
|
25
|
+
export async function dispatch(
|
|
26
|
+
handler: Handler,
|
|
27
|
+
commandName: string,
|
|
28
|
+
payload: any,
|
|
29
|
+
): Promise<[string, any]> {
|
|
30
|
+
try {
|
|
31
|
+
switch (commandName) {
|
|
32
|
+
case 'CdbGetContractInstance': {
|
|
33
|
+
const cmd = toCdbGetContractInstance(payload);
|
|
34
|
+
const result = await handler.getContractInstance(cmd);
|
|
35
|
+
return ['CdbGetContractInstanceResponse', fromCdbGetContractInstanceResponse(result)];
|
|
36
|
+
}
|
|
37
|
+
case 'CdbGetContractClass': {
|
|
38
|
+
const cmd = toCdbGetContractClass(payload);
|
|
39
|
+
const result = await handler.getContractClass(cmd);
|
|
40
|
+
return ['CdbGetContractClassResponse', fromCdbGetContractClassResponse(result)];
|
|
41
|
+
}
|
|
42
|
+
case 'CdbGetBytecodeCommitment': {
|
|
43
|
+
const cmd = toCdbGetBytecodeCommitment(payload);
|
|
44
|
+
const result = await handler.getBytecodeCommitment(cmd);
|
|
45
|
+
return ['CdbGetBytecodeCommitmentResponse', fromCdbGetBytecodeCommitmentResponse(result)];
|
|
46
|
+
}
|
|
47
|
+
case 'CdbGetDebugFunctionName': {
|
|
48
|
+
const cmd = toCdbGetDebugFunctionName(payload);
|
|
49
|
+
const result = await handler.getDebugFunctionName(cmd);
|
|
50
|
+
return ['CdbGetDebugFunctionNameResponse', fromCdbGetDebugFunctionNameResponse(result)];
|
|
51
|
+
}
|
|
52
|
+
case 'CdbAddContracts': {
|
|
53
|
+
const cmd = toCdbAddContracts(payload);
|
|
54
|
+
const result = await handler.addContracts(cmd);
|
|
55
|
+
return ['CdbAddContractsResponse', fromCdbAddContractsResponse(result)];
|
|
56
|
+
}
|
|
57
|
+
case 'CdbCreateCheckpoint': {
|
|
58
|
+
const cmd = toCdbCreateCheckpoint(payload);
|
|
59
|
+
const result = await handler.createCheckpoint(cmd);
|
|
60
|
+
return ['CdbCreateCheckpointResponse', fromCdbCreateCheckpointResponse(result)];
|
|
61
|
+
}
|
|
62
|
+
case 'CdbCommitCheckpoint': {
|
|
63
|
+
const cmd = toCdbCommitCheckpoint(payload);
|
|
64
|
+
const result = await handler.commitCheckpoint(cmd);
|
|
65
|
+
return ['CdbCommitCheckpointResponse', fromCdbCommitCheckpointResponse(result)];
|
|
66
|
+
}
|
|
67
|
+
case 'CdbRevertCheckpoint': {
|
|
68
|
+
const cmd = toCdbRevertCheckpoint(payload);
|
|
69
|
+
const result = await handler.revertCheckpoint(cmd);
|
|
70
|
+
return ['CdbRevertCheckpointResponse', fromCdbRevertCheckpointResponse(result)];
|
|
71
|
+
}
|
|
72
|
+
default:
|
|
73
|
+
return ['CdbErrorResponse', { message: `Unknown command: ${commandName}` }];
|
|
74
|
+
}
|
|
75
|
+
} catch (err: any) {
|
|
76
|
+
return ['CdbErrorResponse', { message: err?.message ?? String(err) }];
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
const requestDecoder = new Decoder({ useRecords: false });
|
|
81
|
+
const responseEncoder = new Encoder({ useRecords: false, variableMapSize: true });
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Decode a framed request, dispatch it, and encode the framed response.
|
|
85
|
+
* All failures (malformed framing included) produce a decodable error
|
|
86
|
+
* variant rather than a throw, so transports can use this directly as
|
|
87
|
+
* their request handler.
|
|
88
|
+
*/
|
|
89
|
+
export async function handleRequest(
|
|
90
|
+
handler: Handler,
|
|
91
|
+
requestBytes: Uint8Array,
|
|
92
|
+
): Promise<Uint8Array> {
|
|
93
|
+
let commandName: string;
|
|
94
|
+
let payload: any;
|
|
95
|
+
try {
|
|
96
|
+
const request = requestDecoder.unpack(requestBytes) as [[string, any]];
|
|
97
|
+
[[commandName, payload]] = request;
|
|
98
|
+
if (typeof commandName !== 'string') {
|
|
99
|
+
throw new Error('expected [name, payload] request framing');
|
|
100
|
+
}
|
|
101
|
+
} catch (err: any) {
|
|
102
|
+
return responseEncoder.pack([
|
|
103
|
+
'CdbErrorResponse',
|
|
104
|
+
{ message: `Malformed request: ${err?.message ?? String(err)}` },
|
|
105
|
+
]);
|
|
106
|
+
}
|
|
107
|
+
const [respName, respPayload] = await dispatch(handler, commandName, payload ?? {});
|
|
108
|
+
return responseEncoder.pack([respName, respPayload]);
|
|
109
|
+
}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UDS server for AVM CDB requests.
|
|
3
|
+
*
|
|
4
|
+
* Transport (socket, framing, per-connection response ordering) is handled by the shared
|
|
5
|
+
* `UdsIpcServer` from `@aztec/ipc-runtime`; message dispatch comes from the generated CDB
|
|
6
|
+
* server. This class only implements the generated handler interface and routes requests to
|
|
7
|
+
* PublicContractsDB instances by fork ID.
|
|
8
|
+
*/
|
|
9
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
10
|
+
import { type Logger, createLogger } from '@aztec/foundation/log';
|
|
11
|
+
import { UdsIpcServer } from '@aztec/ipc-runtime';
|
|
12
|
+
import { FunctionSelector } from '@aztec/stdlib/abi';
|
|
13
|
+
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
14
|
+
import { ContractDeploymentData, type ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
15
|
+
|
|
16
|
+
import { Decoder, Encoder } from 'msgpackr';
|
|
17
|
+
import * as os from 'node:os';
|
|
18
|
+
import * as path from 'node:path';
|
|
19
|
+
import { threadId } from 'node:worker_threads';
|
|
20
|
+
|
|
21
|
+
import type {
|
|
22
|
+
CdbAddContracts,
|
|
23
|
+
CdbAddContractsResponse,
|
|
24
|
+
CdbCommitCheckpoint,
|
|
25
|
+
CdbCommitCheckpointResponse,
|
|
26
|
+
CdbCreateCheckpoint,
|
|
27
|
+
CdbCreateCheckpointResponse,
|
|
28
|
+
CdbGetBytecodeCommitment,
|
|
29
|
+
CdbGetBytecodeCommitmentResponse,
|
|
30
|
+
CdbGetContractClass,
|
|
31
|
+
CdbGetContractClassResponse,
|
|
32
|
+
CdbGetContractInstance,
|
|
33
|
+
CdbGetContractInstanceResponse,
|
|
34
|
+
CdbGetDebugFunctionName,
|
|
35
|
+
CdbGetDebugFunctionNameResponse,
|
|
36
|
+
CdbRevertCheckpoint,
|
|
37
|
+
CdbRevertCheckpointResponse,
|
|
38
|
+
} from './cdb/generated/api_types.js';
|
|
39
|
+
import { type Handler as CdbHandler, handleRequest } from './cdb/generated/server.js';
|
|
40
|
+
import type { PublicContractsDB } from './public_db_sources.js';
|
|
41
|
+
|
|
42
|
+
const encoder = new Encoder({ useRecords: false });
|
|
43
|
+
const decoder = new Decoder({ useRecords: false });
|
|
44
|
+
|
|
45
|
+
let instanceCounter = 0;
|
|
46
|
+
|
|
47
|
+
function toFieldBuffer(field: Fr | AztecAddress): Buffer {
|
|
48
|
+
return field.toBuffer();
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/** Serializes contract instances to the AVM CDB wire shape. */
|
|
52
|
+
export function serializeContractInstance(instance: ContractInstanceWithAddress): Record<string, unknown> {
|
|
53
|
+
return {
|
|
54
|
+
salt: toFieldBuffer(instance.salt),
|
|
55
|
+
deployer: toFieldBuffer(instance.deployer),
|
|
56
|
+
currentContractClassId: toFieldBuffer(instance.currentContractClassId),
|
|
57
|
+
originalContractClassId: toFieldBuffer(instance.originalContractClassId),
|
|
58
|
+
initializationHash: toFieldBuffer(instance.initializationHash),
|
|
59
|
+
immutablesHash: toFieldBuffer(instance.immutablesHash),
|
|
60
|
+
publicKeys: {
|
|
61
|
+
npkMHash: toFieldBuffer(instance.publicKeys.npkMHash),
|
|
62
|
+
ivpkM: {
|
|
63
|
+
x: toFieldBuffer(instance.publicKeys.ivpkM.x),
|
|
64
|
+
y: toFieldBuffer(instance.publicKeys.ivpkM.y),
|
|
65
|
+
},
|
|
66
|
+
ovpkMHash: toFieldBuffer(instance.publicKeys.ovpkMHash),
|
|
67
|
+
tpkMHash: toFieldBuffer(instance.publicKeys.tpkMHash),
|
|
68
|
+
mspkMHash: toFieldBuffer(instance.publicKeys.mspkMHash),
|
|
69
|
+
fbpkMHash: toFieldBuffer(instance.publicKeys.fbpkMHash),
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/** Serializes contract classes to the AVM CDB wire shape. */
|
|
75
|
+
function serializeContractClass(contractClass: {
|
|
76
|
+
id: Fr;
|
|
77
|
+
artifactHash: Fr;
|
|
78
|
+
privateFunctionsRoot: Fr;
|
|
79
|
+
packedBytecode: Buffer;
|
|
80
|
+
}): Record<string, unknown> {
|
|
81
|
+
return {
|
|
82
|
+
id: toFieldBuffer(contractClass.id),
|
|
83
|
+
artifactHash: toFieldBuffer(contractClass.artifactHash),
|
|
84
|
+
privateFunctionsRoot: toFieldBuffer(contractClass.privateFunctionsRoot),
|
|
85
|
+
packedBytecode: contractClass.packedBytecode,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/** Routes AVM CDB IPC requests to registered PublicContractsDB forks. */
|
|
90
|
+
export class CdbIpcServer implements CdbHandler {
|
|
91
|
+
public readonly ipcPath: string;
|
|
92
|
+
private server: Promise<UdsIpcServer>;
|
|
93
|
+
private log: Logger;
|
|
94
|
+
/** Maps WSDB fork IDs to contracts DB/timestamp pairs for concurrent simulations. */
|
|
95
|
+
private forks = new Map<number, { db: PublicContractsDB; timestamp: bigint }>();
|
|
96
|
+
|
|
97
|
+
constructor() {
|
|
98
|
+
this.log = createLogger('cdb-ipc-server');
|
|
99
|
+
this.ipcPath = path.join(os.tmpdir(), `cdb-ts-${process.pid}-${threadId}-${instanceCounter++}.sock`);
|
|
100
|
+
|
|
101
|
+
// Listen asynchronously; the C++ AVM retries connecting until the socket is up.
|
|
102
|
+
this.server = UdsIpcServer.listen(this.ipcPath, (_clientId, request) => handleRequest(this, request));
|
|
103
|
+
this.server.then(
|
|
104
|
+
() => this.log.debug(`CDB IPC server listening on ${this.ipcPath}`),
|
|
105
|
+
err => this.log.error(`CDB IPC server failed to listen on ${this.ipcPath}`, { err }),
|
|
106
|
+
);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/** Register a PublicContractsDB for a given WSDB fork ID. */
|
|
110
|
+
registerFork(forkId: number, contractsDB: PublicContractsDB, timestamp: bigint): void {
|
|
111
|
+
this.forks.set(forkId, { db: contractsDB, timestamp });
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/** Unregister a fork's contracts DB (call after simulation completes). */
|
|
115
|
+
unregisterFork(forkId: number): void {
|
|
116
|
+
this.forks.delete(forkId);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/** Close the server and all active connections. */
|
|
120
|
+
async close(): Promise<void> {
|
|
121
|
+
const server = await this.server.catch(() => undefined);
|
|
122
|
+
await server?.close();
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
async [Symbol.asyncDispose](): Promise<void> {
|
|
126
|
+
await this.close();
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/** Look up the contracts DB for a given fork ID, throwing if not registered. */
|
|
130
|
+
private getFork(forkId: number): { db: PublicContractsDB; timestamp: bigint } {
|
|
131
|
+
const fork = this.forks.get(forkId);
|
|
132
|
+
if (!fork) {
|
|
133
|
+
const registered = Array.from(this.forks.keys()).sort((a, b) => a - b);
|
|
134
|
+
throw new Error(
|
|
135
|
+
`CDB server: no contracts DB registered for forkId ${forkId} (registered=[${registered.join(',')}])`,
|
|
136
|
+
);
|
|
137
|
+
}
|
|
138
|
+
return fork;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
async getContractInstance(command: CdbGetContractInstance): Promise<CdbGetContractInstanceResponse> {
|
|
142
|
+
const { db, timestamp } = this.getFork(command.forkId);
|
|
143
|
+
const address = AztecAddress.fromBuffer(Buffer.from(command.address));
|
|
144
|
+
const instance = await db.getContractInstance(address, timestamp);
|
|
145
|
+
return { instance: instance ? encoder.encode(serializeContractInstance(instance)) : null };
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
async getContractClass(command: CdbGetContractClass): Promise<CdbGetContractClassResponse> {
|
|
149
|
+
const { db } = this.getFork(command.forkId);
|
|
150
|
+
const classId = Fr.fromBuffer(Buffer.from(command.classId));
|
|
151
|
+
const contractClass = await db.getContractClass(classId);
|
|
152
|
+
return { contractClass: contractClass ? encoder.encode(serializeContractClass(contractClass)) : null };
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
async getBytecodeCommitment(command: CdbGetBytecodeCommitment): Promise<CdbGetBytecodeCommitmentResponse> {
|
|
156
|
+
const { db } = this.getFork(command.forkId);
|
|
157
|
+
const classId = Fr.fromBuffer(Buffer.from(command.classId));
|
|
158
|
+
const commitment = await db.getBytecodeCommitment(classId);
|
|
159
|
+
return { commitment: commitment ? toFieldBuffer(commitment) : null };
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
async getDebugFunctionName(command: CdbGetDebugFunctionName): Promise<CdbGetDebugFunctionNameResponse> {
|
|
163
|
+
const { db } = this.getFork(command.forkId);
|
|
164
|
+
const address = AztecAddress.fromBuffer(Buffer.from(command.address));
|
|
165
|
+
const selectorField = Fr.fromBuffer(Buffer.from(command.selector));
|
|
166
|
+
const selector = FunctionSelector.fromFieldOrUndefined(selectorField);
|
|
167
|
+
const name = selector ? await db.getDebugFunctionName(address, selector) : undefined;
|
|
168
|
+
return { name: name ?? null };
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
addContracts(command: CdbAddContracts): Promise<CdbAddContractsResponse> {
|
|
172
|
+
const { db } = this.getFork(command.forkId);
|
|
173
|
+
const contractDeploymentData = ContractDeploymentData.fromPlainObject(
|
|
174
|
+
decoder.decode(command.contractDeploymentData),
|
|
175
|
+
);
|
|
176
|
+
db.addContractsFromLogs(contractDeploymentData);
|
|
177
|
+
return Promise.resolve({});
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
createCheckpoint(command: CdbCreateCheckpoint): Promise<CdbCreateCheckpointResponse> {
|
|
181
|
+
const { db } = this.getFork(command.forkId);
|
|
182
|
+
db.createCheckpoint();
|
|
183
|
+
return Promise.resolve({});
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
commitCheckpoint(command: CdbCommitCheckpoint): Promise<CdbCommitCheckpointResponse> {
|
|
187
|
+
const { db } = this.getFork(command.forkId);
|
|
188
|
+
db.commitCheckpoint();
|
|
189
|
+
return Promise.resolve({});
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
revertCheckpoint(command: CdbRevertCheckpoint): Promise<CdbRevertCheckpointResponse> {
|
|
193
|
+
const { db } = this.getFork(command.forkId);
|
|
194
|
+
db.revertCheckpoint();
|
|
195
|
+
return Promise.resolve({});
|
|
196
|
+
}
|
|
197
|
+
}
|
|
@@ -31,7 +31,7 @@ export class ContractsDbCheckpoint {
|
|
|
31
31
|
return this.bytecodeCommitments.get(classId.toString());
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
public
|
|
34
|
+
public fork(): ContractsDbCheckpoint {
|
|
35
35
|
const copy = new ContractsDbCheckpoint();
|
|
36
36
|
this.instances.forEach((value, key) => copy.instances.set(key, value));
|
|
37
37
|
this.classes.forEach((value, key) => copy.classes.set(key, value));
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DomainSeparator } from '@aztec/constants';
|
|
2
2
|
import { poseidon2HashWithSeparator } from '@aztec/foundation/crypto/poseidon';
|
|
3
3
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
4
|
import type { Logger } from '@aztec/foundation/log';
|
|
@@ -25,8 +25,8 @@ export async function ammTest(
|
|
|
25
25
|
) {
|
|
26
26
|
const timer = new Timer();
|
|
27
27
|
|
|
28
|
-
const admin = AztecAddress.
|
|
29
|
-
const sender = AztecAddress.
|
|
28
|
+
const admin = AztecAddress.fromNumberUnsafe(42);
|
|
29
|
+
const sender = AztecAddress.fromNumberUnsafe(111);
|
|
30
30
|
|
|
31
31
|
logger.debug(`Deploying tokens`);
|
|
32
32
|
const token0 = await setUpToken(tester, tokenArtifact, admin, expectToBeTrue, /*seed=*/ 0);
|
|
@@ -326,6 +326,6 @@ async function removeLiquidity(
|
|
|
326
326
|
async function computePartialNoteValidityCommitment(partialNote: { commitment: Fr }, completer: AztecAddress) {
|
|
327
327
|
return await poseidon2HashWithSeparator(
|
|
328
328
|
[partialNote.commitment, completer],
|
|
329
|
-
|
|
329
|
+
DomainSeparator.PARTIAL_NOTE_VALIDITY_COMMITMENT,
|
|
330
330
|
);
|
|
331
331
|
}
|
|
@@ -13,7 +13,7 @@ export async function bulkTest(
|
|
|
13
13
|
) {
|
|
14
14
|
const timer = new Timer();
|
|
15
15
|
|
|
16
|
-
const deployer = AztecAddress.
|
|
16
|
+
const deployer = AztecAddress.fromNumberUnsafe(42);
|
|
17
17
|
const avmTestContract = await tester.registerAndDeployContract(
|
|
18
18
|
/*constructorArgs=*/ [],
|
|
19
19
|
deployer,
|
|
@@ -25,14 +25,26 @@ export async function bulkTest(
|
|
|
25
25
|
// Register multiple different protocol contracts (to ensure we don't dedup bytecode hashing events):
|
|
26
26
|
await tester.registerAuthContract();
|
|
27
27
|
await tester.registerInstanceRegistryContract();
|
|
28
|
+
await tester.registerClassRegistryContract();
|
|
28
29
|
|
|
29
30
|
// Get a deployed contract instance to pass to the contract
|
|
30
31
|
// for it to use as "expected" values when testing contract instance retrieval.
|
|
31
32
|
const expectContractInstance = avmTestContract;
|
|
32
33
|
const argsField = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map(x => new Fr(x));
|
|
33
|
-
const argsU8 = [1, 2, 3, 4, 5, 6, 7, 8].map(x => new Fr(x));
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
const argsU8 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map(x => new Fr(x));
|
|
35
|
+
// Pinned grumpkin-Poseidon2 Schnorr signature (mirrors the C++ `pinned_test_vector_large`
|
|
36
|
+
// and noir-lang/schnorr v0.4.0's `pinned_vector_large`). Passing these in as calldata
|
|
37
|
+
// (rather than baking them into Noir as constants) keeps MSM + Poseidon2 from being folded
|
|
38
|
+
// by the Noir compiler.
|
|
39
|
+
const schnorrInputs = [
|
|
40
|
+
Fr.fromHexString('0x065812e335a97c2108ea8cf4ccfe2f9dd6b117a0714f5e18461575be93f61da6'), // pubkey.x
|
|
41
|
+
Fr.fromHexString('0x1a915003e8ec534f9a15d926a7ded478e178468ccc4f28e236e67450a55ac622'), // pubkey.y
|
|
42
|
+
Fr.fromHexString('0xf3bc3b7147acb9c621fd9f72dbf15ffa'), // sig_s.lo
|
|
43
|
+
Fr.fromHexString('0x08599f379f0301dfefdbd0272554454d'), // sig_s.hi
|
|
44
|
+
Fr.fromHexString('0x97065383ebbbd76620398792bd259bc2'), // sig_e.lo
|
|
45
|
+
Fr.fromHexString('0x2ceaee87f45b7a417f0ffb05451a8c92'), // sig_e.hi
|
|
46
|
+
Fr.fromHexString('0x0123456789abcdef0fedcba9876543210123456789abcdef0fedcba987654321'), // message
|
|
47
|
+
];
|
|
36
48
|
const args = [
|
|
37
49
|
argsField,
|
|
38
50
|
argsU8,
|
|
@@ -40,6 +52,8 @@ export async function bulkTest(
|
|
|
40
52
|
/*expectedDeployer=*/ expectContractInstance.deployer,
|
|
41
53
|
/*expectedClassId=*/ expectContractInstance.currentContractClassId,
|
|
42
54
|
/*expectedInitializationHash=*/ expectContractInstance.initializationHash,
|
|
55
|
+
/*expectedImmutablesHash=*/ expectContractInstance.immutablesHash,
|
|
56
|
+
/*schnorrInputs=*/ schnorrInputs,
|
|
43
57
|
/*skip_strictly_limited_side_effects=*/ false,
|
|
44
58
|
];
|
|
45
59
|
|
|
@@ -62,7 +76,7 @@ export async function bulkTest(
|
|
|
62
76
|
{
|
|
63
77
|
address: avmTestContract.address,
|
|
64
78
|
fnName: 'assert_calldata_copy',
|
|
65
|
-
args: [argsField.slice(3), /* with_selector: */ true],
|
|
79
|
+
args: [argsField.slice(0, 3), /* with_selector: */ true],
|
|
66
80
|
},
|
|
67
81
|
{
|
|
68
82
|
address: avmTestContract.address,
|
|
@@ -100,7 +114,7 @@ export async function megaBulkTest(
|
|
|
100
114
|
) {
|
|
101
115
|
const timer = new Timer();
|
|
102
116
|
|
|
103
|
-
const deployer = AztecAddress.
|
|
117
|
+
const deployer = AztecAddress.fromNumberUnsafe(42);
|
|
104
118
|
const avmTestContract = await tester.registerAndDeployContract(
|
|
105
119
|
/*constructorArgs=*/ [],
|
|
106
120
|
deployer,
|
|
@@ -123,6 +137,15 @@ export async function megaBulkTest(
|
|
|
123
137
|
//const argsField7 = [15, 2, 3, 4, 5, 6, 7, 8, 9, 10].map(x => new Fr(x));
|
|
124
138
|
//const argsField8 = [17, 2, 3, 4, 5, 6, 7, 8, 9, 10].map(x => new Fr(x));
|
|
125
139
|
const argsU8 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map(x => new Fr(x));
|
|
140
|
+
const schnorrInputs = [
|
|
141
|
+
Fr.fromHexString('0x065812e335a97c2108ea8cf4ccfe2f9dd6b117a0714f5e18461575be93f61da6'), // pubkey.x
|
|
142
|
+
Fr.fromHexString('0x1a915003e8ec534f9a15d926a7ded478e178468ccc4f28e236e67450a55ac622'), // pubkey.y
|
|
143
|
+
Fr.fromHexString('0xf3bc3b7147acb9c621fd9f72dbf15ffa'), // sig_s.lo
|
|
144
|
+
Fr.fromHexString('0x08599f379f0301dfefdbd0272554454d'), // sig_s.hi
|
|
145
|
+
Fr.fromHexString('0x97065383ebbbd76620398792bd259bc2'), // sig_e.lo
|
|
146
|
+
Fr.fromHexString('0x2ceaee87f45b7a417f0ffb05451a8c92'), // sig_e.hi
|
|
147
|
+
Fr.fromHexString('0x0123456789abcdef0fedcba9876543210123456789abcdef0fedcba987654321'), // message
|
|
148
|
+
];
|
|
126
149
|
const genArgs = (argsField: Fr[]) => [
|
|
127
150
|
argsField,
|
|
128
151
|
argsU8,
|
|
@@ -130,6 +153,8 @@ export async function megaBulkTest(
|
|
|
130
153
|
/*expectedDeployer=*/ expectContractInstance.deployer.toField(),
|
|
131
154
|
/*expectedClassId=*/ expectContractInstance.currentContractClassId.toField(),
|
|
132
155
|
/*expectedInitializationHash=*/ expectContractInstance.initializationHash.toField(),
|
|
156
|
+
/*expectedImmutablesHash=*/ expectContractInstance.immutablesHash.toField(),
|
|
157
|
+
/*schnorrInputs=*/ schnorrInputs,
|
|
133
158
|
// Must skip strictly limited side effects (logs, messages) so we can spam the bulk test several times.
|
|
134
159
|
/*skip_strictly_limited_side_effects=*/ true,
|
|
135
160
|
];
|
|
@@ -17,7 +17,7 @@ export async function deployCustomBytecode(
|
|
|
17
17
|
bytecode: Buffer,
|
|
18
18
|
tester: PublicTxSimulationTester,
|
|
19
19
|
contractName: string = 'CustomBytecodeContract',
|
|
20
|
-
deployer: AztecAddress = AztecAddress.
|
|
20
|
+
deployer: AztecAddress = AztecAddress.fromNumberUnsafe(42),
|
|
21
21
|
): Promise<ContractInstanceWithAddress> {
|
|
22
22
|
const contractArtifact = emptyContractArtifact();
|
|
23
23
|
contractArtifact.name = contractName;
|
|
@@ -75,7 +75,7 @@ export async function deployAndExecuteCustomBytecode(
|
|
|
75
75
|
tester: PublicTxSimulationTester,
|
|
76
76
|
txLabel: string = 'CustomBytecodeTest',
|
|
77
77
|
contractName: string = 'CustomBytecodeContract',
|
|
78
|
-
deployer: AztecAddress = AztecAddress.
|
|
78
|
+
deployer: AztecAddress = AztecAddress.fromNumberUnsafe(42),
|
|
79
79
|
calldata: any[] = [],
|
|
80
80
|
): Promise<PublicTxResult> {
|
|
81
81
|
const testContract = await deployCustomBytecode(bytecode, tester, contractName, deployer);
|
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
export * from './public_tx_simulation_tester.js';
|
|
2
|
+
export * from './public_processor_test_env.js';
|
|
2
3
|
export * from './utils.js';
|
|
3
4
|
export * from './simple_contract_data_source.js';
|
|
4
|
-
export { executeAvmMinimalPublicTx } from './minimal_public_tx.js';
|
|
5
5
|
export { TestExecutorMetrics } from '../test_executor_metrics.js';
|
|
6
6
|
export { ammTest } from './amm_test.js';
|
|
7
7
|
export { bulkTest, megaBulkTest } from './bulk_test.js';
|
|
8
8
|
export { tokenTest } from './token_test.js';
|
|
9
|
-
export * from './custom_bytecode_tests.js';
|
|
10
9
|
export {
|
|
11
10
|
deployCustomBytecode,
|
|
12
11
|
executeCustomBytecode,
|
|
13
12
|
deployAndExecuteCustomBytecode,
|
|
14
13
|
} from './custom_bytecode_tester.js';
|
|
15
|
-
export { getSpamConfigsPerOpcode, testOpcodeSpamCase } from './opcode_spammer.js';
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { createLogger } from '@aztec/foundation/log';
|
|
2
|
+
import { TestDateProvider } from '@aztec/foundation/timer';
|
|
3
|
+
import { PublicSimulatorConfig } from '@aztec/stdlib/avm';
|
|
4
|
+
import { GasFees } from '@aztec/stdlib/gas';
|
|
5
|
+
import { GlobalVariables } from '@aztec/stdlib/tx';
|
|
6
|
+
import { getTelemetryClient } from '@aztec/telemetry-client';
|
|
7
|
+
import { NativeWorldStateService } from '@aztec/world-state';
|
|
8
|
+
|
|
9
|
+
import { AvmSimulatorPool } from '../avm_simulator_pool.js';
|
|
10
|
+
import { PublicContractsDB } from '../public_db_sources.js';
|
|
11
|
+
import { GuardedMerkleTreeOperations } from '../public_processor/guarded_merkle_tree.js';
|
|
12
|
+
import { PublicProcessor } from '../public_processor/public_processor.js';
|
|
13
|
+
import { PublicTxSimulator } from '../public_tx_simulator/public_tx_simulator.js';
|
|
14
|
+
import { PublicTxSimulationTester } from './public_tx_simulation_tester.js';
|
|
15
|
+
import { SimpleContractDataSource } from './simple_contract_data_source.js';
|
|
16
|
+
|
|
17
|
+
/** Options for {@link PublicProcessorTestEnv.create}. */
|
|
18
|
+
export interface PublicProcessorTestEnvOptions {
|
|
19
|
+
/** Global variables shared by the processor and the tester. Defaults to empty with nonzero gas fees. */
|
|
20
|
+
globals?: GlobalVariables;
|
|
21
|
+
/** Simulator config for the processor's PublicTxSimulator. */
|
|
22
|
+
config?: Partial<PublicSimulatorConfig>;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function defaultGlobals(): GlobalVariables {
|
|
26
|
+
const globals = GlobalVariables.empty();
|
|
27
|
+
globals.gasFees = new GasFees(2, 3);
|
|
28
|
+
return globals;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const defaultConfig = PublicSimulatorConfig.from({
|
|
32
|
+
skipFeeEnforcement: false,
|
|
33
|
+
collectDebugLogs: true,
|
|
34
|
+
collectHints: false,
|
|
35
|
+
collectStatistics: false,
|
|
36
|
+
collectCallMetadata: true,
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Bundles the real-AVM wiring shared by public-processor app tests: a live WSDB world state, a CDB IPC
|
|
41
|
+
* server, a spawned AVM simulator, a {@link PublicProcessor} backed by all three, and a setup-only
|
|
42
|
+
* {@link PublicTxSimulationTester} sharing the same fork and contract data source for building txs and
|
|
43
|
+
* seeding balances. Own it with `await using`, or call {@link Symbol.asyncDispose} from `afterEach`.
|
|
44
|
+
*/
|
|
45
|
+
export class PublicProcessorTestEnv implements AsyncDisposable {
|
|
46
|
+
private constructor(
|
|
47
|
+
public readonly processor: PublicProcessor,
|
|
48
|
+
public readonly tester: PublicTxSimulationTester,
|
|
49
|
+
public readonly contractsDB: PublicContractsDB,
|
|
50
|
+
public readonly globals: GlobalVariables,
|
|
51
|
+
private readonly worldStateService: NativeWorldStateService,
|
|
52
|
+
private readonly avmSimulator: AvmSimulatorPool,
|
|
53
|
+
) {}
|
|
54
|
+
|
|
55
|
+
static async create(opts: PublicProcessorTestEnvOptions = {}): Promise<PublicProcessorTestEnv> {
|
|
56
|
+
const globals = opts.globals ?? defaultGlobals();
|
|
57
|
+
const config = opts.config ? PublicSimulatorConfig.from({ ...defaultConfig, ...opts.config }) : defaultConfig;
|
|
58
|
+
|
|
59
|
+
const contractDataSource = new SimpleContractDataSource();
|
|
60
|
+
const worldStateService = await NativeWorldStateService.tmp();
|
|
61
|
+
const merkleTrees = await worldStateService.fork();
|
|
62
|
+
const contractsDB = new PublicContractsDB(contractDataSource);
|
|
63
|
+
|
|
64
|
+
const forkId = merkleTrees.getRevision().forkId;
|
|
65
|
+
const avmSimulator = await AvmSimulatorPool.spawn({ wsdbIpcPath: worldStateService.getIpcPath() });
|
|
66
|
+
|
|
67
|
+
const simulator = new PublicTxSimulator(avmSimulator, globals, contractsDB, forkId, config, undefined);
|
|
68
|
+
const processor = new PublicProcessor(
|
|
69
|
+
globals,
|
|
70
|
+
new GuardedMerkleTreeOperations(merkleTrees),
|
|
71
|
+
contractsDB,
|
|
72
|
+
simulator,
|
|
73
|
+
new TestDateProvider(),
|
|
74
|
+
getTelemetryClient(),
|
|
75
|
+
createLogger('simulator:public-processor'),
|
|
76
|
+
);
|
|
77
|
+
|
|
78
|
+
const tester = new PublicTxSimulationTester(merkleTrees, contractDataSource, globals);
|
|
79
|
+
|
|
80
|
+
return new PublicProcessorTestEnv(processor, tester, contractsDB, globals, worldStateService, avmSimulator);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
async [Symbol.asyncDispose](): Promise<void> {
|
|
84
|
+
await this.avmSimulator[Symbol.asyncDispose]();
|
|
85
|
+
await this.tester.close();
|
|
86
|
+
await this.worldStateService.close();
|
|
87
|
+
}
|
|
88
|
+
}
|