@aztec/simulator 0.0.0-test.0
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 +49 -0
- package/dest/client.d.ts +5 -0
- package/dest/client.d.ts.map +1 -0
- package/dest/client.js +3 -0
- package/dest/common/db_interfaces.d.ts +80 -0
- package/dest/common/db_interfaces.d.ts.map +1 -0
- package/dest/common/db_interfaces.js +1 -0
- package/dest/common/debug_fn_name.d.ts +5 -0
- package/dest/common/debug_fn_name.d.ts.map +1 -0
- package/dest/common/debug_fn_name.js +6 -0
- package/dest/common/errors.d.ts +54 -0
- package/dest/common/errors.d.ts.map +1 -0
- package/dest/common/errors.js +135 -0
- package/dest/common/index.d.ts +4 -0
- package/dest/common/index.d.ts.map +1 -0
- package/dest/common/index.js +3 -0
- package/dest/common/message_load_oracle_inputs.d.ts +15 -0
- package/dest/common/message_load_oracle_inputs.d.ts.map +1 -0
- package/dest/common/message_load_oracle_inputs.js +15 -0
- package/dest/common/stats/index.d.ts +2 -0
- package/dest/common/stats/index.d.ts.map +1 -0
- package/dest/common/stats/index.js +1 -0
- package/dest/common/stats/stats.d.ts +4 -0
- package/dest/common/stats/stats.d.ts.map +1 -0
- package/dest/common/stats/stats.js +10 -0
- package/dest/private/acvm/acvm.d.ts +35 -0
- package/dest/private/acvm/acvm.d.ts.map +1 -0
- package/dest/private/acvm/acvm.js +70 -0
- package/dest/private/acvm/acvm_types.d.ts +10 -0
- package/dest/private/acvm/acvm_types.d.ts.map +1 -0
- package/dest/private/acvm/acvm_types.js +3 -0
- package/dest/private/acvm/deserialize.d.ts +36 -0
- package/dest/private/acvm/deserialize.d.ts.map +1 -0
- package/dest/private/acvm/deserialize.js +42 -0
- package/dest/private/acvm/index.d.ts +6 -0
- package/dest/private/acvm/index.d.ts.map +1 -0
- package/dest/private/acvm/index.js +5 -0
- package/dest/private/acvm/oracle/index.d.ts +14 -0
- package/dest/private/acvm/oracle/index.d.ts.map +1 -0
- package/dest/private/acvm/oracle/index.js +2 -0
- package/dest/private/acvm/oracle/oracle.d.ts +49 -0
- package/dest/private/acvm/oracle/oracle.d.ts.map +1 -0
- package/dest/private/acvm/oracle/oracle.js +263 -0
- package/dest/private/acvm/oracle/typed_oracle.d.ts +83 -0
- package/dest/private/acvm/oracle/typed_oracle.d.ts.map +1 -0
- package/dest/private/acvm/oracle/typed_oracle.js +132 -0
- package/dest/private/acvm/serialize.d.ts +24 -0
- package/dest/private/acvm/serialize.d.ts.map +1 -0
- package/dest/private/acvm/serialize.js +46 -0
- package/dest/private/execution_data_provider.d.ts +261 -0
- package/dest/private/execution_data_provider.d.ts.map +1 -0
- package/dest/private/execution_data_provider.js +14 -0
- package/dest/private/execution_note_cache.d.ts +93 -0
- package/dest/private/execution_note_cache.d.ts.map +1 -0
- package/dest/private/execution_note_cache.js +180 -0
- package/dest/private/hashed_values_cache.d.ts +28 -0
- package/dest/private/hashed_values_cache.d.ts.map +1 -0
- package/dest/private/hashed_values_cache.js +46 -0
- package/dest/private/index.d.ts +13 -0
- package/dest/private/index.d.ts.map +1 -0
- package/dest/private/index.js +12 -0
- package/dest/private/pick_notes.d.ts +85 -0
- package/dest/private/pick_notes.d.ts.map +1 -0
- package/dest/private/pick_notes.js +51 -0
- package/dest/private/private_execution.d.ts +25 -0
- package/dest/private/private_execution.d.ts.map +1 -0
- package/dest/private/private_execution.js +92 -0
- package/dest/private/private_execution_oracle.d.ts +215 -0
- package/dest/private/private_execution_oracle.d.ts.map +1 -0
- package/dest/private/private_execution_oracle.js +382 -0
- package/dest/private/providers/acvm_native.d.ts +40 -0
- package/dest/private/providers/acvm_native.d.ts.map +1 -0
- package/dest/private/providers/acvm_native.js +139 -0
- package/dest/private/providers/acvm_wasm.d.ts +15 -0
- package/dest/private/providers/acvm_wasm.d.ts.map +1 -0
- package/dest/private/providers/acvm_wasm.js +62 -0
- package/dest/private/providers/acvm_wasm_with_blobs.d.ts +19 -0
- package/dest/private/providers/acvm_wasm_with_blobs.d.ts.map +1 -0
- package/dest/private/providers/acvm_wasm_with_blobs.js +32 -0
- package/dest/private/providers/factory.d.ts +12 -0
- package/dest/private/providers/factory.d.ts.map +1 -0
- package/dest/private/providers/factory.js +27 -0
- package/dest/private/providers/simulation_provider.d.ts +19 -0
- package/dest/private/providers/simulation_provider.d.ts.map +1 -0
- package/dest/private/providers/simulation_provider.js +24 -0
- package/dest/private/simulator.d.ts +34 -0
- package/dest/private/simulator.d.ts.map +1 -0
- package/dest/private/simulator.js +76 -0
- package/dest/private/unconstrained_execution.d.ts +10 -0
- package/dest/private/unconstrained_execution.d.ts.map +1 -0
- package/dest/private/unconstrained_execution.js +27 -0
- package/dest/private/unconstrained_execution_oracle.d.ts +161 -0
- package/dest/private/unconstrained_execution_oracle.d.ts.map +1 -0
- package/dest/private/unconstrained_execution_oracle.js +258 -0
- package/dest/public/avm/avm_context.d.ts +41 -0
- package/dest/public/avm/avm_context.d.ts.map +1 -0
- package/dest/public/avm/avm_context.js +44 -0
- package/dest/public/avm/avm_contract_call_result.d.ts +30 -0
- package/dest/public/avm/avm_contract_call_result.d.ts.map +1 -0
- package/dest/public/avm/avm_contract_call_result.js +50 -0
- package/dest/public/avm/avm_execution_environment.d.ts +21 -0
- package/dest/public/avm/avm_execution_environment.d.ts.map +1 -0
- package/dest/public/avm/avm_execution_environment.js +31 -0
- package/dest/public/avm/avm_gas.d.ts +60 -0
- package/dest/public/avm/avm_gas.d.ts.map +1 -0
- package/dest/public/avm/avm_gas.js +203 -0
- package/dest/public/avm/avm_machine_state.d.ts +95 -0
- package/dest/public/avm/avm_machine_state.d.ts.map +1 -0
- package/dest/public/avm/avm_machine_state.js +107 -0
- package/dest/public/avm/avm_memory_types.d.ts +264 -0
- package/dest/public/avm/avm_memory_types.d.ts.map +1 -0
- package/dest/public/avm/avm_memory_types.js +340 -0
- package/dest/public/avm/avm_simulator.d.ts +40 -0
- package/dest/public/avm/avm_simulator.d.ts.map +1 -0
- package/dest/public/avm/avm_simulator.js +202 -0
- package/dest/public/avm/bytecode_utils.d.ts +5 -0
- package/dest/public/avm/bytecode_utils.d.ts.map +1 -0
- package/dest/public/avm/bytecode_utils.js +17 -0
- package/dest/public/avm/errors.d.ts +122 -0
- package/dest/public/avm/errors.d.ts.map +1 -0
- package/dest/public/avm/errors.js +179 -0
- package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +21 -0
- package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +1 -0
- package/dest/public/avm/fixtures/avm_simulation_tester.js +76 -0
- package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts +36 -0
- package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +1 -0
- package/dest/public/avm/fixtures/base_avm_simulation_tester.js +83 -0
- package/dest/public/avm/fixtures/index.d.ts +84 -0
- package/dest/public/avm/fixtures/index.d.ts.map +1 -0
- package/dest/public/avm/fixtures/index.js +175 -0
- package/dest/public/avm/fixtures/simple_contract_data_source.d.ts +35 -0
- package/dest/public/avm/fixtures/simple_contract_data_source.d.ts.map +1 -0
- package/dest/public/avm/fixtures/simple_contract_data_source.js +74 -0
- package/dest/public/avm/index.d.ts +4 -0
- package/dest/public/avm/index.d.ts.map +1 -0
- package/dest/public/avm/index.js +3 -0
- package/dest/public/avm/journal/index.d.ts +2 -0
- package/dest/public/avm/journal/index.d.ts.map +1 -0
- package/dest/public/avm/journal/index.js +1 -0
- package/dest/public/avm/journal/journal.d.ts +209 -0
- package/dest/public/avm/journal/journal.d.ts.map +1 -0
- package/dest/public/avm/journal/journal.js +486 -0
- package/dest/public/avm/journal/nullifiers.d.ts +64 -0
- package/dest/public/avm/journal/nullifiers.d.ts.map +1 -0
- package/dest/public/avm/journal/nullifiers.js +97 -0
- package/dest/public/avm/journal/public_storage.d.ts +66 -0
- package/dest/public/avm/journal/public_storage.d.ts.map +1 -0
- package/dest/public/avm/journal/public_storage.js +145 -0
- package/dest/public/avm/opcodes/accrued_substate.d.ts +75 -0
- package/dest/public/avm/opcodes/accrued_substate.d.ts.map +1 -0
- package/dest/public/avm/opcodes/accrued_substate.js +252 -0
- package/dest/public/avm/opcodes/addressing_mode.d.ts +27 -0
- package/dest/public/avm/opcodes/addressing_mode.d.ts.map +1 -0
- package/dest/public/avm/opcodes/addressing_mode.js +74 -0
- package/dest/public/avm/opcodes/arithmetic.d.ts +37 -0
- package/dest/public/avm/opcodes/arithmetic.d.ts.map +1 -0
- package/dest/public/avm/opcodes/arithmetic.js +73 -0
- package/dest/public/avm/opcodes/bitwise.d.ts +50 -0
- package/dest/public/avm/opcodes/bitwise.d.ts.map +1 -0
- package/dest/public/avm/opcodes/bitwise.js +106 -0
- package/dest/public/avm/opcodes/comparators.d.ts +25 -0
- package/dest/public/avm/opcodes/comparators.d.ts.map +1 -0
- package/dest/public/avm/opcodes/comparators.js +43 -0
- package/dest/public/avm/opcodes/contract.d.ts +21 -0
- package/dest/public/avm/opcodes/contract.d.ts.map +1 -0
- package/dest/public/avm/opcodes/contract.js +66 -0
- package/dest/public/avm/opcodes/control_flow.d.ts +41 -0
- package/dest/public/avm/opcodes/control_flow.d.ts.map +1 -0
- package/dest/public/avm/opcodes/control_flow.js +105 -0
- package/dest/public/avm/opcodes/conversion.d.ts +17 -0
- package/dest/public/avm/opcodes/conversion.d.ts.map +1 -0
- package/dest/public/avm/opcodes/conversion.js +69 -0
- package/dest/public/avm/opcodes/ec_add.d.ts +19 -0
- package/dest/public/avm/opcodes/ec_add.d.ts.map +1 -0
- package/dest/public/avm/opcodes/ec_add.js +84 -0
- package/dest/public/avm/opcodes/environment_getters.d.ts +28 -0
- package/dest/public/avm/opcodes/environment_getters.d.ts.map +1 -0
- package/dest/public/avm/opcodes/environment_getters.js +79 -0
- package/dest/public/avm/opcodes/external_calls.d.ts +58 -0
- package/dest/public/avm/opcodes/external_calls.d.ts.map +1 -0
- package/dest/public/avm/opcodes/external_calls.js +204 -0
- package/dest/public/avm/opcodes/hashing.d.ts +36 -0
- package/dest/public/avm/opcodes/hashing.d.ts.map +1 -0
- package/dest/public/avm/opcodes/hashing.js +114 -0
- package/dest/public/avm/opcodes/index.d.ts +16 -0
- package/dest/public/avm/opcodes/index.d.ts.map +1 -0
- package/dest/public/avm/opcodes/index.js +15 -0
- package/dest/public/avm/opcodes/instruction.d.ts +70 -0
- package/dest/public/avm/opcodes/instruction.d.ts.map +1 -0
- package/dest/public/avm/opcodes/instruction.js +91 -0
- package/dest/public/avm/opcodes/instruction_impl.d.ts +19 -0
- package/dest/public/avm/opcodes/instruction_impl.d.ts.map +1 -0
- package/dest/public/avm/opcodes/instruction_impl.js +30 -0
- package/dest/public/avm/opcodes/memory.d.ts +74 -0
- package/dest/public/avm/opcodes/memory.d.ts.map +1 -0
- package/dest/public/avm/opcodes/memory.js +253 -0
- package/dest/public/avm/opcodes/misc.d.ts +17 -0
- package/dest/public/avm/opcodes/misc.d.ts.map +1 -0
- package/dest/public/avm/opcodes/misc.js +48 -0
- package/dest/public/avm/opcodes/storage.d.ts +24 -0
- package/dest/public/avm/opcodes/storage.d.ts.map +1 -0
- package/dest/public/avm/opcodes/storage.js +66 -0
- package/dest/public/avm/serialization/buffer_cursor.d.ts +28 -0
- package/dest/public/avm/serialization/buffer_cursor.d.ts.map +1 -0
- package/dest/public/avm/serialization/buffer_cursor.js +99 -0
- package/dest/public/avm/serialization/bytecode_serialization.d.ts +21 -0
- package/dest/public/avm/serialization/bytecode_serialization.d.ts.map +1 -0
- package/dest/public/avm/serialization/bytecode_serialization.js +332 -0
- package/dest/public/avm/serialization/instruction_serialization.d.ts +105 -0
- package/dest/public/avm/serialization/instruction_serialization.d.ts.map +1 -0
- package/dest/public/avm/serialization/instruction_serialization.js +226 -0
- package/dest/public/avm/test_utils.d.ts +18 -0
- package/dest/public/avm/test_utils.d.ts.map +1 -0
- package/dest/public/avm/test_utils.js +52 -0
- package/dest/public/bytecode_errors.d.ts +4 -0
- package/dest/public/bytecode_errors.d.ts.map +1 -0
- package/dest/public/bytecode_errors.js +6 -0
- package/dest/public/execution.d.ts +108 -0
- package/dest/public/execution.d.ts.map +1 -0
- package/dest/public/execution.js +9 -0
- package/dest/public/executor_metrics.d.ts +13 -0
- package/dest/public/executor_metrics.d.ts.map +1 -0
- package/dest/public/executor_metrics.js +54 -0
- package/dest/public/fixtures/index.d.ts +3 -0
- package/dest/public/fixtures/index.d.ts.map +1 -0
- package/dest/public/fixtures/index.js +2 -0
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts +32 -0
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -0
- package/dest/public/fixtures/public_tx_simulation_tester.js +93 -0
- package/dest/public/fixtures/utils.d.ts +13 -0
- package/dest/public/fixtures/utils.d.ts.map +1 -0
- package/dest/public/fixtures/utils.js +126 -0
- package/dest/public/index.d.ts +10 -0
- package/dest/public/index.d.ts.map +1 -0
- package/dest/public/index.js +8 -0
- package/dest/public/public_db_sources.d.ts +129 -0
- package/dest/public/public_db_sources.d.ts.map +1 -0
- package/dest/public/public_db_sources.js +264 -0
- package/dest/public/public_processor/public_processor.d.ts +74 -0
- package/dest/public/public_processor/public_processor.d.ts.map +1 -0
- package/dest/public/public_processor/public_processor.js +379 -0
- package/dest/public/public_processor/public_processor_metrics.d.ts +27 -0
- package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -0
- package/dest/public/public_processor/public_processor_metrics.js +125 -0
- package/dest/public/public_tx_simulator/public_tx_context.d.ts +137 -0
- package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/public_tx_context.js +320 -0
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +102 -0
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/public_tx_simulator.js +334 -0
- package/dest/public/side_effect_errors.d.ts +4 -0
- package/dest/public/side_effect_errors.d.ts.map +1 -0
- package/dest/public/side_effect_errors.js +6 -0
- package/dest/public/side_effect_trace.d.ts +132 -0
- package/dest/public/side_effect_trace.d.ts.map +1 -0
- package/dest/public/side_effect_trace.js +249 -0
- package/dest/public/side_effect_trace_interface.d.ts +34 -0
- package/dest/public/side_effect_trace_interface.d.ts.map +1 -0
- package/dest/public/side_effect_trace_interface.js +1 -0
- package/dest/public/tx_contract_cache.d.ts +41 -0
- package/dest/public/tx_contract_cache.d.ts.map +1 -0
- package/dest/public/tx_contract_cache.js +49 -0
- package/dest/public/unique_class_ids.d.ts +37 -0
- package/dest/public/unique_class_ids.d.ts.map +1 -0
- package/dest/public/unique_class_ids.js +61 -0
- package/dest/public/utils.d.ts +5 -0
- package/dest/public/utils.d.ts.map +1 -0
- package/dest/public/utils.js +35 -0
- package/dest/server.d.ts +6 -0
- package/dest/server.d.ts.map +1 -0
- package/dest/server.js +4 -0
- package/dest/test/utils.d.ts +13 -0
- package/dest/test/utils.d.ts.map +1 -0
- package/dest/test/utils.js +22 -0
- package/package.json +104 -0
- package/src/client.ts +4 -0
- package/src/common/db_interfaces.ts +94 -0
- package/src/common/debug_fn_name.ts +18 -0
- package/src/common/errors.ts +183 -0
- package/src/common/index.ts +3 -0
- package/src/common/message_load_oracle_inputs.ts +15 -0
- package/src/common/stats/index.ts +1 -0
- package/src/common/stats/stats.ts +20 -0
- package/src/private/acvm/acvm.ts +127 -0
- package/src/private/acvm/acvm_types.ts +11 -0
- package/src/private/acvm/deserialize.ts +52 -0
- package/src/private/acvm/index.ts +5 -0
- package/src/private/acvm/oracle/index.ts +16 -0
- package/src/private/acvm/oracle/oracle.ts +455 -0
- package/src/private/acvm/oracle/typed_oracle.ts +259 -0
- package/src/private/acvm/serialize.ts +60 -0
- package/src/private/execution_data_provider.ts +323 -0
- package/src/private/execution_note_cache.ts +217 -0
- package/src/private/hashed_values_cache.ts +55 -0
- package/src/private/index.ts +16 -0
- package/src/private/pick_notes.ts +141 -0
- package/src/private/private_execution.ts +151 -0
- package/src/private/private_execution_oracle.ts +614 -0
- package/src/private/providers/acvm_native.ts +171 -0
- package/src/private/providers/acvm_wasm.ts +63 -0
- package/src/private/providers/acvm_wasm_with_blobs.ts +50 -0
- package/src/private/providers/factory.ts +38 -0
- package/src/private/providers/simulation_provider.ts +45 -0
- package/src/private/simulator.ts +147 -0
- package/src/private/unconstrained_execution.ts +50 -0
- package/src/private/unconstrained_execution_oracle.ts +373 -0
- package/src/public/avm/avm_context.ts +61 -0
- package/src/public/avm/avm_contract_call_result.ts +55 -0
- package/src/public/avm/avm_execution_environment.ts +39 -0
- package/src/public/avm/avm_gas.ts +195 -0
- package/src/public/avm/avm_machine_state.ts +164 -0
- package/src/public/avm/avm_memory_types.ts +423 -0
- package/src/public/avm/avm_simulator.ts +284 -0
- package/src/public/avm/bytecode_utils.ts +17 -0
- package/src/public/avm/errors.ts +232 -0
- package/src/public/avm/fixtures/avm_simulation_tester.ts +105 -0
- package/src/public/avm/fixtures/base_avm_simulation_tester.ts +109 -0
- package/src/public/avm/fixtures/index.ts +296 -0
- package/src/public/avm/fixtures/simple_contract_data_source.ts +105 -0
- package/src/public/avm/index.ts +3 -0
- package/src/public/avm/journal/index.ts +1 -0
- package/src/public/avm/journal/journal.ts +742 -0
- package/src/public/avm/journal/nullifiers.ts +109 -0
- package/src/public/avm/journal/public_storage.ts +174 -0
- package/src/public/avm/opcodes/.eslintrc.cjs +8 -0
- package/src/public/avm/opcodes/accrued_substate.ts +253 -0
- package/src/public/avm/opcodes/addressing_mode.ts +87 -0
- package/src/public/avm/opcodes/arithmetic.ts +95 -0
- package/src/public/avm/opcodes/bitwise.ts +109 -0
- package/src/public/avm/opcodes/comparators.ts +52 -0
- package/src/public/avm/opcodes/contract.ts +72 -0
- package/src/public/avm/opcodes/control_flow.ts +114 -0
- package/src/public/avm/opcodes/conversion.ts +80 -0
- package/src/public/avm/opcodes/ec_add.ts +93 -0
- package/src/public/avm/opcodes/environment_getters.ts +82 -0
- package/src/public/avm/opcodes/external_calls.ts +228 -0
- package/src/public/avm/opcodes/hashing.ts +125 -0
- package/src/public/avm/opcodes/index.ts +15 -0
- package/src/public/avm/opcodes/instruction.ts +126 -0
- package/src/public/avm/opcodes/instruction_impl.ts +36 -0
- package/src/public/avm/opcodes/memory.ts +254 -0
- package/src/public/avm/opcodes/misc.ts +60 -0
- package/src/public/avm/opcodes/storage.ts +71 -0
- package/src/public/avm/serialization/buffer_cursor.ts +115 -0
- package/src/public/avm/serialization/bytecode_serialization.ts +206 -0
- package/src/public/avm/serialization/instruction_serialization.ts +208 -0
- package/src/public/avm/test_utils.ts +81 -0
- package/src/public/bytecode_errors.ts +6 -0
- package/src/public/execution.ts +140 -0
- package/src/public/executor_metrics.ts +71 -0
- package/src/public/fixtures/index.ts +2 -0
- package/src/public/fixtures/public_tx_simulation_tester.ts +179 -0
- package/src/public/fixtures/utils.ts +199 -0
- package/src/public/index.ts +9 -0
- package/src/public/public_db_sources.ts +369 -0
- package/src/public/public_processor/public_processor.ts +521 -0
- package/src/public/public_processor/public_processor_metrics.ts +154 -0
- package/src/public/public_tx_simulator/public_tx_context.ts +504 -0
- package/src/public/public_tx_simulator/public_tx_simulator.ts +474 -0
- package/src/public/side_effect_errors.ts +6 -0
- package/src/public/side_effect_trace.ts +516 -0
- package/src/public/side_effect_trace_interface.ts +76 -0
- package/src/public/tx_contract_cache.ts +69 -0
- package/src/public/unique_class_ids.ts +80 -0
- package/src/public/utils.ts +32 -0
- package/src/server.ts +5 -0
- package/src/test/utils.ts +36 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
2
|
+
import { computePublicBytecodeCommitment } from '@aztec/stdlib/contract';
|
|
3
|
+
import { mock } from 'jest-mock-extended';
|
|
4
|
+
export async function mockGetBytecode(worldStateDB, bytecode) {
|
|
5
|
+
const commitment = await computePublicBytecodeCommitment(bytecode);
|
|
6
|
+
worldStateDB.getBytecodeCommitment.mockResolvedValue(commitment);
|
|
7
|
+
}
|
|
8
|
+
export function mockTraceFork(trace, nestedTrace) {
|
|
9
|
+
trace.fork.mockReturnValue(nestedTrace ?? mock());
|
|
10
|
+
}
|
|
11
|
+
export function mockStorageRead(worldStateDB, value) {
|
|
12
|
+
worldStateDB.storageRead.mockResolvedValue(value);
|
|
13
|
+
}
|
|
14
|
+
export function mockNoteHashCount(mockedTrace, count) {
|
|
15
|
+
mockedTrace.getNoteHashCount.mockReturnValue(count);
|
|
16
|
+
}
|
|
17
|
+
export function mockStorageReadWithMap(worldStateDB, mockedStorage) {
|
|
18
|
+
worldStateDB.storageRead.mockImplementation((_address, slot)=>Promise.resolve(mockedStorage.get(slot.toBigInt()) ?? Fr.ZERO));
|
|
19
|
+
}
|
|
20
|
+
export function mockGetBytecodeCommitment(worldStateDB, commitment) {
|
|
21
|
+
worldStateDB.getBytecodeCommitment.mockResolvedValue(commitment);
|
|
22
|
+
}
|
|
23
|
+
export function mockNoteHashExists(worldStateDB, _leafIndex, value) {
|
|
24
|
+
worldStateDB.getCommitmentValue.mockImplementation((index)=>{
|
|
25
|
+
if (index == _leafIndex.toBigInt()) {
|
|
26
|
+
return Promise.resolve(value);
|
|
27
|
+
} else {
|
|
28
|
+
// This is ok for now since the traceing functions handle it
|
|
29
|
+
return Promise.resolve(undefined);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
export function mockGetNullifierIndex(worldStateDB, leafIndex, _ignoredValue) {
|
|
34
|
+
worldStateDB.getNullifierIndex.mockResolvedValue(leafIndex.toBigInt());
|
|
35
|
+
}
|
|
36
|
+
export function mockL1ToL2MessageExists(worldStateDB, leafIndex, value, valueAtOtherIndices) {
|
|
37
|
+
worldStateDB.getL1ToL2LeafValue.mockImplementation((index)=>{
|
|
38
|
+
if (index == leafIndex.toBigInt()) {
|
|
39
|
+
return Promise.resolve(value);
|
|
40
|
+
} else {
|
|
41
|
+
// any indices other than mockAtLeafIndex will return a different value
|
|
42
|
+
// (or undefined if no value is specified for other indices)
|
|
43
|
+
return Promise.resolve(valueAtOtherIndices);
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
export function mockGetContractInstance(worldStateDB, contractInstance) {
|
|
48
|
+
worldStateDB.getContractInstance.mockResolvedValue(contractInstance);
|
|
49
|
+
}
|
|
50
|
+
export function mockGetContractClass(worldStateDB, contractClass) {
|
|
51
|
+
worldStateDB.getContractClass.mockResolvedValue(contractClass);
|
|
52
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bytecode_errors.d.ts","sourceRoot":"","sources":["../../src/public/bytecode_errors.ts"],"names":[],"mappings":"AAAA,qBAAa,0BAA2B,SAAQ,KAAK;gBACvC,eAAe,EAAE,MAAM;CAIpC"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
3
|
+
import type { Fr } from '@aztec/foundation/fields';
|
|
4
|
+
import { type AvmExecutionHints, type ContractStorageRead, type ContractStorageUpdateRequest, type PublicDataUpdateRequest, PublicInnerCallRequest } from '@aztec/stdlib/avm';
|
|
5
|
+
import type { SimulationError } from '@aztec/stdlib/errors';
|
|
6
|
+
import { Gas } from '@aztec/stdlib/gas';
|
|
7
|
+
import type { NoteHash, Nullifier, ReadRequest, TreeLeafReadRequest } from '@aztec/stdlib/kernel';
|
|
8
|
+
import type { PublicLog } from '@aztec/stdlib/logs';
|
|
9
|
+
import type { L2ToL1Message, ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
|
|
10
|
+
import type { PublicExecutionRequest } from '@aztec/stdlib/tx';
|
|
11
|
+
export interface PublicSideEffects {
|
|
12
|
+
/** The contract storage update requests performed. */
|
|
13
|
+
publicDataWrites: PublicDataUpdateRequest[];
|
|
14
|
+
/** The new note hashes to be inserted into the note hashes tree. */
|
|
15
|
+
noteHashes: NoteHash[];
|
|
16
|
+
/** The new nullifiers to be inserted into the nullifier tree. */
|
|
17
|
+
nullifiers: Nullifier[];
|
|
18
|
+
/** The new l2 to l1 messages generated to be inserted into the messages tree. */
|
|
19
|
+
l2ToL1Messages: ScopedL2ToL1Message[];
|
|
20
|
+
/** Public logs emitted during execution. */
|
|
21
|
+
publicLogs: PublicLog[];
|
|
22
|
+
}
|
|
23
|
+
export interface EnqueuedPublicCallExecutionResult {
|
|
24
|
+
/** How much gas was left after this public execution. */
|
|
25
|
+
endGasLeft: Gas;
|
|
26
|
+
/** The side effect counter after execution */
|
|
27
|
+
endSideEffectCounter: Fr;
|
|
28
|
+
/** The return values of the function. */
|
|
29
|
+
returnValues: Fr[];
|
|
30
|
+
/** Whether the execution reverted. */
|
|
31
|
+
reverted: boolean;
|
|
32
|
+
/** The revert reason if the execution reverted. */
|
|
33
|
+
revertReason?: SimulationError;
|
|
34
|
+
}
|
|
35
|
+
export interface EnqueuedPublicCallExecutionResultWithSideEffects {
|
|
36
|
+
/** How much gas was left after this public execution. */
|
|
37
|
+
endGasLeft: Gas;
|
|
38
|
+
/** The side effect counter after execution */
|
|
39
|
+
endSideEffectCounter: Fr;
|
|
40
|
+
/** The return values of the function. */
|
|
41
|
+
returnValues: Fr[];
|
|
42
|
+
/** Whether the execution reverted. */
|
|
43
|
+
reverted: boolean;
|
|
44
|
+
/** The revert reason if the execution reverted. */
|
|
45
|
+
revertReason?: SimulationError;
|
|
46
|
+
/** The public side effects of the function. */
|
|
47
|
+
sideEffects: PublicSideEffects;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* The public function execution result.
|
|
51
|
+
*/
|
|
52
|
+
export interface PublicFunctionCallResult {
|
|
53
|
+
/** The execution request that triggered this result. */
|
|
54
|
+
executionRequest: PublicExecutionRequest;
|
|
55
|
+
/** The side effect counter at the start of the function call. */
|
|
56
|
+
startSideEffectCounter: Fr;
|
|
57
|
+
/** The side effect counter after executing this function call */
|
|
58
|
+
endSideEffectCounter: Fr;
|
|
59
|
+
/** How much gas was available for this public execution. */
|
|
60
|
+
startGasLeft: Gas;
|
|
61
|
+
/** How much gas was left after this public execution. */
|
|
62
|
+
endGasLeft: Gas;
|
|
63
|
+
/** Transaction fee set for this tx. */
|
|
64
|
+
transactionFee: Fr;
|
|
65
|
+
/** Bytecode used for this execution. */
|
|
66
|
+
bytecode?: Buffer;
|
|
67
|
+
/** Calldata used for this execution. */
|
|
68
|
+
calldata: Fr[];
|
|
69
|
+
/** The return values of the function. */
|
|
70
|
+
returnValues: Fr[];
|
|
71
|
+
/** Whether the execution reverted. */
|
|
72
|
+
reverted: boolean;
|
|
73
|
+
/** The revert reason if the execution reverted. */
|
|
74
|
+
revertReason?: SimulationError;
|
|
75
|
+
/** The contract storage reads performed by the function. */
|
|
76
|
+
contractStorageReads: ContractStorageRead[];
|
|
77
|
+
/** The contract storage update requests performed by the function. */
|
|
78
|
+
contractStorageUpdateRequests: ContractStorageUpdateRequest[];
|
|
79
|
+
/** The new note hashes to be inserted into the note hashes tree. */
|
|
80
|
+
noteHashes: NoteHash[];
|
|
81
|
+
/** The new l2 to l1 messages generated in this call. */
|
|
82
|
+
l2ToL1Messages: L2ToL1Message[];
|
|
83
|
+
/** The new nullifiers to be inserted into the nullifier tree. */
|
|
84
|
+
nullifiers: Nullifier[];
|
|
85
|
+
/** The note hash read requests emitted in this call. */
|
|
86
|
+
noteHashReadRequests: TreeLeafReadRequest[];
|
|
87
|
+
/** The nullifier read requests emitted in this call. */
|
|
88
|
+
nullifierReadRequests: ReadRequest[];
|
|
89
|
+
/** The nullifier non existent read requests emitted in this call. */
|
|
90
|
+
nullifierNonExistentReadRequests: ReadRequest[];
|
|
91
|
+
/** L1 to L2 message read requests emitted in this call. */
|
|
92
|
+
l1ToL2MsgReadRequests: TreeLeafReadRequest[];
|
|
93
|
+
/**
|
|
94
|
+
* The public logs emitted in this call.
|
|
95
|
+
* Note: PublicLog has no counter - unsure if this is needed bc this struct is unused
|
|
96
|
+
*/
|
|
97
|
+
publicLogs: PublicLog[];
|
|
98
|
+
/** The requests to call public functions made by this call. */
|
|
99
|
+
publicCallRequests: PublicInnerCallRequest[];
|
|
100
|
+
/** The results of nested calls. */
|
|
101
|
+
nestedExecutions: this[];
|
|
102
|
+
/** Hints for proving AVM execution. */
|
|
103
|
+
avmCircuitHints: AvmExecutionHints;
|
|
104
|
+
/** The name of the function that was executed. Only used for logging. */
|
|
105
|
+
functionName: string;
|
|
106
|
+
}
|
|
107
|
+
export declare function resultToPublicCallRequest(result: PublicFunctionCallResult): Promise<PublicInnerCallRequest>;
|
|
108
|
+
//# sourceMappingURL=execution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../src/public/execution.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { PublicCallStackItemCompressed, PublicInnerCallRequest, RevertCode } from '@aztec/stdlib/avm';
|
|
2
|
+
import { Gas } from '@aztec/stdlib/gas';
|
|
3
|
+
import { computeVarArgsHash } from '@aztec/stdlib/hash';
|
|
4
|
+
export async function resultToPublicCallRequest(result) {
|
|
5
|
+
const request = result.executionRequest;
|
|
6
|
+
const item = new PublicCallStackItemCompressed(request.callContext.contractAddress, request.callContext, await computeVarArgsHash(request.args), await computeVarArgsHash(result.returnValues), // TODO(@just-mitch): need better mapping from simulator to revert code.
|
|
7
|
+
result.reverted ? RevertCode.APP_LOGIC_REVERTED : RevertCode.OK, Gas.from(result.startGasLeft), Gas.from(result.endGasLeft));
|
|
8
|
+
return new PublicInnerCallRequest(item, result.startSideEffectCounter.toNumber());
|
|
9
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type TelemetryClient, type Tracer } from '@aztec/telemetry-client';
|
|
2
|
+
export declare class ExecutorMetrics {
|
|
3
|
+
readonly tracer: Tracer;
|
|
4
|
+
private fnCount;
|
|
5
|
+
private fnDuration;
|
|
6
|
+
private manaPerSecond;
|
|
7
|
+
private privateEffectsInsertions;
|
|
8
|
+
constructor(client: TelemetryClient, name?: string);
|
|
9
|
+
recordFunctionSimulation(durationMs: number, manaUsed: number, fnName: string): void;
|
|
10
|
+
recordFunctionSimulationFailure(): void;
|
|
11
|
+
recordPrivateEffectsInsertion(durationUs: number, type: 'revertible' | 'non-revertible'): void;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=executor_metrics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor_metrics.d.ts","sourceRoot":"","sources":["../../src/public/executor_metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,eAAe,EACpB,KAAK,MAAM,EAGZ,MAAM,yBAAyB,CAAC;AAEjC,qBAAa,eAAe;IAC1B,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,aAAa,CAAY;IACjC,OAAO,CAAC,wBAAwB,CAAY;gBAEhC,MAAM,EAAE,eAAe,EAAE,IAAI,SAAmB;IA2B5D,wBAAwB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAe7E,+BAA+B;IAM/B,6BAA6B,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,gBAAgB;CAKxF"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { Attributes, Metrics, ValueType } from '@aztec/telemetry-client';
|
|
2
|
+
export class ExecutorMetrics {
|
|
3
|
+
tracer;
|
|
4
|
+
fnCount;
|
|
5
|
+
fnDuration;
|
|
6
|
+
manaPerSecond;
|
|
7
|
+
privateEffectsInsertions;
|
|
8
|
+
constructor(client, name = 'PublicExecutor'){
|
|
9
|
+
this.tracer = client.getTracer(name);
|
|
10
|
+
const meter = client.getMeter(name);
|
|
11
|
+
this.fnCount = meter.createUpDownCounter(Metrics.PUBLIC_EXECUTOR_SIMULATION_COUNT, {
|
|
12
|
+
description: 'Number of functions executed'
|
|
13
|
+
});
|
|
14
|
+
this.fnDuration = meter.createHistogram(Metrics.PUBLIC_EXECUTOR_SIMULATION_DURATION, {
|
|
15
|
+
description: 'How long it takes to execute a function',
|
|
16
|
+
unit: 'ms',
|
|
17
|
+
valueType: ValueType.INT
|
|
18
|
+
});
|
|
19
|
+
this.manaPerSecond = meter.createHistogram(Metrics.PUBLIC_EXECUTOR_SIMULATION_MANA_PER_SECOND, {
|
|
20
|
+
description: 'Mana used per second',
|
|
21
|
+
unit: 'mana/s',
|
|
22
|
+
valueType: ValueType.INT
|
|
23
|
+
});
|
|
24
|
+
this.privateEffectsInsertions = meter.createHistogram(Metrics.PUBLIC_EXECUTION_PRIVATE_EFFECTS_INSERTION, {
|
|
25
|
+
description: 'Private effects insertion time',
|
|
26
|
+
unit: 'us',
|
|
27
|
+
valueType: ValueType.INT
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
recordFunctionSimulation(durationMs, manaUsed, fnName) {
|
|
31
|
+
this.fnCount.add(1, {
|
|
32
|
+
[Attributes.OK]: true,
|
|
33
|
+
[Attributes.APP_CIRCUIT_NAME]: fnName,
|
|
34
|
+
[Attributes.MANA_USED]: manaUsed
|
|
35
|
+
});
|
|
36
|
+
this.fnDuration.record(Math.ceil(durationMs));
|
|
37
|
+
if (durationMs > 0 && manaUsed > 0) {
|
|
38
|
+
const manaPerSecond = Math.round(manaUsed * 1000 / durationMs);
|
|
39
|
+
this.manaPerSecond.record(manaPerSecond, {
|
|
40
|
+
[Attributes.APP_CIRCUIT_NAME]: fnName
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
recordFunctionSimulationFailure() {
|
|
45
|
+
this.fnCount.add(1, {
|
|
46
|
+
[Attributes.OK]: false
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
recordPrivateEffectsInsertion(durationUs, type) {
|
|
50
|
+
this.privateEffectsInsertions.record(Math.ceil(durationUs), {
|
|
51
|
+
[Attributes.REVERTIBILITY]: type
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/public/fixtures/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC;AACjD,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
2
|
+
import { type ContractArtifact } from '@aztec/stdlib/abi';
|
|
3
|
+
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
4
|
+
import type { MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
|
|
5
|
+
import { type Tx } from '@aztec/stdlib/tx';
|
|
6
|
+
import { GlobalVariables } from '@aztec/stdlib/tx';
|
|
7
|
+
import { BaseAvmSimulationTester } from '../avm/fixtures/base_avm_simulation_tester.js';
|
|
8
|
+
import { SimpleContractDataSource } from '../avm/fixtures/simple_contract_data_source.js';
|
|
9
|
+
import { WorldStateDB } from '../public_db_sources.js';
|
|
10
|
+
import { type PublicTxResult } from '../public_tx_simulator/public_tx_simulator.js';
|
|
11
|
+
export declare const DEFAULT_BLOCK_NUMBER = 42;
|
|
12
|
+
export type TestEnqueuedCall = {
|
|
13
|
+
address: AztecAddress;
|
|
14
|
+
fnName: string;
|
|
15
|
+
args: any[];
|
|
16
|
+
isStaticCall?: boolean;
|
|
17
|
+
contractArtifact?: ContractArtifact;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* A test class that extends the BaseAvmSimulationTester to enable real-app testing of the PublicTxSimulator.
|
|
21
|
+
* It provides an interface for simulating one transaction at a time and maintains state between subsequent
|
|
22
|
+
* transactions.
|
|
23
|
+
*/
|
|
24
|
+
export declare class PublicTxSimulationTester extends BaseAvmSimulationTester {
|
|
25
|
+
private worldStateDB;
|
|
26
|
+
private txCount;
|
|
27
|
+
constructor(worldStateDB: WorldStateDB, contractDataSource: SimpleContractDataSource, merkleTrees: MerkleTreeWriteOperations);
|
|
28
|
+
static create(): Promise<PublicTxSimulationTester>;
|
|
29
|
+
createTx(sender: AztecAddress, setupCalls?: TestEnqueuedCall[], appCalls?: TestEnqueuedCall[], teardownCall?: TestEnqueuedCall, feePayer?: AztecAddress, firstNullifier?: Fr): Promise<Tx>;
|
|
30
|
+
simulateTx(sender: AztecAddress, setupCalls?: TestEnqueuedCall[], appCalls?: TestEnqueuedCall[], teardownCall?: TestEnqueuedCall, feePayer?: AztecAddress, firstNullifier?: Fr, globals?: GlobalVariables): Promise<PublicTxResult>;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=public_tx_simulation_tester.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public_tx_simulation_tester.d.ts","sourceRoot":"","sources":["../../../src/public/fixtures/public_tx_simulation_tester.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,KAAK,gBAAgB,EAAqC,MAAM,mBAAmB,CAAC;AAC7F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AACjF,OAAO,EAA0B,KAAK,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAe,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGhE,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AAExF,OAAO,EAAE,wBAAwB,EAAE,MAAM,gDAAgD,CAAC;AAC1F,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,KAAK,cAAc,EAAqB,MAAM,+CAA+C,CAAC;AAKvG,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC,CAAC;AAEF;;;;GAIG;AACH,qBAAa,wBAAyB,SAAQ,uBAAuB;IAIjE,OAAO,CAAC,YAAY;IAHtB,OAAO,CAAC,OAAO,CAAK;gBAGV,YAAY,EAAE,YAAY,EAClC,kBAAkB,EAAE,wBAAwB,EAC5C,WAAW,EAAE,yBAAyB;WAKpB,MAAM,IAAI,OAAO,CAAC,wBAAwB,CAAC;IAOlD,QAAQ,CACnB,MAAM,EAAE,YAAY,EACpB,UAAU,GAAE,gBAAgB,EAAO,EACnC,QAAQ,GAAE,gBAAgB,EAAO,EACjC,YAAY,CAAC,EAAE,gBAAgB,EAC/B,QAAQ,GAAE,YAAqB,EAE/B,cAAc,KAAkC,GAC/C,OAAO,CAAC,EAAE,CAAC;IAiED,UAAU,CACrB,MAAM,EAAE,YAAY,EACpB,UAAU,GAAE,gBAAgB,EAAO,EACnC,QAAQ,GAAE,gBAAgB,EAAO,EACjC,YAAY,CAAC,EAAE,gBAAgB,EAC/B,QAAQ,GAAE,YAAqB,EAE/B,cAAc,KAAkC,EAChD,OAAO,kBAAmB,GACzB,OAAO,CAAC,cAAc,CAAC;CAc3B"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { PUBLIC_DISPATCH_SELECTOR } from '@aztec/constants';
|
|
2
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
3
|
+
import { FunctionSelector, encodeArguments } from '@aztec/stdlib/abi';
|
|
4
|
+
import { GasFees } from '@aztec/stdlib/gas';
|
|
5
|
+
import { PublicExecutionRequest } from '@aztec/stdlib/tx';
|
|
6
|
+
import { CallContext, GlobalVariables } from '@aztec/stdlib/tx';
|
|
7
|
+
import { NativeWorldStateService } from '@aztec/world-state';
|
|
8
|
+
import { BaseAvmSimulationTester } from '../avm/fixtures/base_avm_simulation_tester.js';
|
|
9
|
+
import { getContractFunctionArtifact, getFunctionSelector } from '../avm/fixtures/index.js';
|
|
10
|
+
import { SimpleContractDataSource } from '../avm/fixtures/simple_contract_data_source.js';
|
|
11
|
+
import { WorldStateDB } from '../public_db_sources.js';
|
|
12
|
+
import { PublicTxSimulator } from '../public_tx_simulator/public_tx_simulator.js';
|
|
13
|
+
import { createTxForPublicCalls } from './index.js';
|
|
14
|
+
const TIMESTAMP = new Fr(99833);
|
|
15
|
+
const DEFAULT_GAS_FEES = new GasFees(2, 3);
|
|
16
|
+
export const DEFAULT_BLOCK_NUMBER = 42;
|
|
17
|
+
/**
|
|
18
|
+
* A test class that extends the BaseAvmSimulationTester to enable real-app testing of the PublicTxSimulator.
|
|
19
|
+
* It provides an interface for simulating one transaction at a time and maintains state between subsequent
|
|
20
|
+
* transactions.
|
|
21
|
+
*/ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
|
|
22
|
+
worldStateDB;
|
|
23
|
+
txCount;
|
|
24
|
+
constructor(worldStateDB, contractDataSource, merkleTrees){
|
|
25
|
+
super(contractDataSource, merkleTrees), this.worldStateDB = worldStateDB, this.txCount = 0;
|
|
26
|
+
}
|
|
27
|
+
static async create() {
|
|
28
|
+
const contractDataSource = new SimpleContractDataSource();
|
|
29
|
+
const merkleTrees = await (await NativeWorldStateService.tmp()).fork();
|
|
30
|
+
const worldStateDB = new WorldStateDB(merkleTrees, contractDataSource);
|
|
31
|
+
return new PublicTxSimulationTester(worldStateDB, contractDataSource, merkleTrees);
|
|
32
|
+
}
|
|
33
|
+
async createTx(sender, setupCalls = [], appCalls = [], teardownCall, feePayer = sender, /* need some unique first nullifier for note-nonce computations */ firstNullifier = new Fr(420000 + this.txCount++)) {
|
|
34
|
+
const setupExecutionRequests = [];
|
|
35
|
+
for(let i = 0; i < setupCalls.length; i++){
|
|
36
|
+
const address = setupCalls[i].address;
|
|
37
|
+
const contractArtifact = setupCalls[i].contractArtifact || await this.contractDataSource.getContractArtifact(address);
|
|
38
|
+
if (!contractArtifact) {
|
|
39
|
+
throw new Error(`Contract artifact not found for address: ${address}`);
|
|
40
|
+
}
|
|
41
|
+
const req = await executionRequestForCall(contractArtifact, sender, address, setupCalls[i].fnName, setupCalls[i].args, setupCalls[i].isStaticCall);
|
|
42
|
+
setupExecutionRequests.push(req);
|
|
43
|
+
}
|
|
44
|
+
const appExecutionRequests = [];
|
|
45
|
+
for(let i = 0; i < appCalls.length; i++){
|
|
46
|
+
const address = appCalls[i].address;
|
|
47
|
+
const contractArtifact = appCalls[i].contractArtifact || await this.contractDataSource.getContractArtifact(address);
|
|
48
|
+
if (!contractArtifact) {
|
|
49
|
+
throw new Error(`Contract artifact not found for address: ${address}`);
|
|
50
|
+
}
|
|
51
|
+
const req = await executionRequestForCall(contractArtifact, sender, address, appCalls[i].fnName, appCalls[i].args, appCalls[i].isStaticCall);
|
|
52
|
+
appExecutionRequests.push(req);
|
|
53
|
+
}
|
|
54
|
+
let teardownExecutionRequest = undefined;
|
|
55
|
+
if (teardownCall) {
|
|
56
|
+
const address = teardownCall.address;
|
|
57
|
+
const contractArtifact = teardownCall.contractArtifact || await this.contractDataSource.getContractArtifact(address);
|
|
58
|
+
if (!contractArtifact) {
|
|
59
|
+
throw new Error(`Contract artifact not found for address: ${address}`);
|
|
60
|
+
}
|
|
61
|
+
teardownExecutionRequest = await executionRequestForCall(contractArtifact, sender, address, teardownCall.fnName, teardownCall.args, teardownCall.isStaticCall);
|
|
62
|
+
}
|
|
63
|
+
return await createTxForPublicCalls(firstNullifier, setupExecutionRequests, appExecutionRequests, teardownExecutionRequest, feePayer);
|
|
64
|
+
}
|
|
65
|
+
async simulateTx(sender, setupCalls = [], appCalls = [], teardownCall, feePayer = sender, /* need some unique first nullifier for note-nonce computations */ firstNullifier = new Fr(420000 + this.txCount++), globals = defaultGlobals()) {
|
|
66
|
+
const tx = await this.createTx(sender, setupCalls, appCalls, teardownCall, feePayer, firstNullifier);
|
|
67
|
+
await this.setFeePayerBalance(feePayer);
|
|
68
|
+
const simulator = new PublicTxSimulator(this.merkleTrees, this.worldStateDB, globals, /*doMerkleOperations=*/ true);
|
|
69
|
+
const startTime = performance.now();
|
|
70
|
+
const avmResult = await simulator.simulate(tx);
|
|
71
|
+
const endTime = performance.now();
|
|
72
|
+
this.logger.debug(`Public transaction simulation took ${endTime - startTime}ms`);
|
|
73
|
+
return avmResult;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
async function executionRequestForCall(contractArtifact, sender, address, fnName, args = [], isStaticCall = false) {
|
|
77
|
+
const fnSelector = await getFunctionSelector(fnName, contractArtifact);
|
|
78
|
+
const fnAbi = getContractFunctionArtifact(fnName, contractArtifact);
|
|
79
|
+
const encodedArgs = encodeArguments(fnAbi, args);
|
|
80
|
+
const calldata = [
|
|
81
|
+
fnSelector.toField(),
|
|
82
|
+
...encodedArgs
|
|
83
|
+
];
|
|
84
|
+
const callContext = new CallContext(sender, address, /*selector=*/ new FunctionSelector(PUBLIC_DISPATCH_SELECTOR), isStaticCall);
|
|
85
|
+
return new PublicExecutionRequest(callContext, calldata);
|
|
86
|
+
}
|
|
87
|
+
function defaultGlobals() {
|
|
88
|
+
const globals = GlobalVariables.empty();
|
|
89
|
+
globals.timestamp = TIMESTAMP;
|
|
90
|
+
globals.gasFees = DEFAULT_GAS_FEES; // apply some nonzero default gas fees
|
|
91
|
+
globals.blockNumber = new Fr(DEFAULT_BLOCK_NUMBER);
|
|
92
|
+
return globals;
|
|
93
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
2
|
+
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
3
|
+
import type { ContractClassPublic, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
4
|
+
import { Gas } from '@aztec/stdlib/gas';
|
|
5
|
+
import { type PublicExecutionRequest, Tx } from '@aztec/stdlib/tx';
|
|
6
|
+
/**
|
|
7
|
+
* Craft a carrier transaction for some public calls for simulation by PublicTxSimulator.
|
|
8
|
+
*/
|
|
9
|
+
export declare function createTxForPublicCalls(firstNullifier: Fr, setupExecutionRequests: PublicExecutionRequest[], appExecutionRequests: PublicExecutionRequest[], teardownExecutionRequest?: PublicExecutionRequest, feePayer?: AztecAddress, gasUsedByPrivate?: Gas): Promise<Tx>;
|
|
10
|
+
export declare function createTxForPrivateOnly(feePayer?: AztecAddress, gasUsedByPrivate?: Gas): Tx;
|
|
11
|
+
export declare function addNewContractClassToTx(tx: Tx, contractClass: ContractClassPublic, skipNullifierInsertion?: boolean): Promise<void>;
|
|
12
|
+
export declare function addNewContractInstanceToTx(tx: Tx, contractInstance: ContractInstanceWithAddress, skipNullifierInsertion?: boolean): Promise<void>;
|
|
13
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/public/fixtures/utils.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAI9C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC/F,OAAO,EAAE,GAAG,EAAwB,MAAM,mBAAmB,CAAC;AAW9D,OAAO,EAAE,KAAK,sBAAsB,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAKnE;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,cAAc,EAAE,EAAE,EAClB,sBAAsB,EAAE,sBAAsB,EAAE,EAChD,oBAAoB,EAAE,sBAAsB,EAAE,EAC9C,wBAAwB,CAAC,EAAE,sBAAsB,EACjD,QAAQ,eAAsB,EAC9B,gBAAgB,GAAE,GAAiB,GAClC,OAAO,CAAC,EAAE,CAAC,CAkDb;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,eAAsB,EAAE,gBAAgB,GAAE,GAAqB,GAAG,EAAE,CAoBlH;AAED,wBAAsB,uBAAuB,CAC3C,EAAE,EAAE,EAAE,EACN,aAAa,EAAE,mBAAmB,EAClC,sBAAsB,UAAQ,iBAiC/B;AAED,wBAAsB,0BAA0B,CAC9C,EAAE,EAAE,EAAE,EACN,gBAAgB,EAAE,2BAA2B,EAC7C,sBAAsB,UAAQ,iBA0C/B"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { CONTRACT_CLASS_LOG_DATA_SIZE_IN_FIELDS, DEFAULT_GAS_LIMIT, DEPLOYER_CONTRACT_ADDRESS, MAX_L2_GAS_PER_TX_PUBLIC_PORTION, PRIVATE_LOG_SIZE_IN_FIELDS, REGISTERER_CONTRACT_ADDRESS, REGISTERER_CONTRACT_CLASS_REGISTERED_MAGIC_VALUE } from '@aztec/constants';
|
|
2
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
3
|
+
import { assertLength } from '@aztec/foundation/serialize';
|
|
4
|
+
import { DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_TAG } from '@aztec/protocol-contracts';
|
|
5
|
+
import { bufferAsFields } from '@aztec/stdlib/abi';
|
|
6
|
+
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
7
|
+
import { Gas, GasFees, GasSettings } from '@aztec/stdlib/gas';
|
|
8
|
+
import { siloNullifier } from '@aztec/stdlib/hash';
|
|
9
|
+
import { PartialPrivateTailPublicInputsForPublic, PartialPrivateTailPublicInputsForRollup, PrivateKernelTailCircuitPublicInputs, RollupValidationRequests, ScopedLogHash, countAccumulatedItems } from '@aztec/stdlib/kernel';
|
|
10
|
+
import { ContractClassLog, PrivateLog } from '@aztec/stdlib/logs';
|
|
11
|
+
import { Tx } from '@aztec/stdlib/tx';
|
|
12
|
+
import { BlockHeader, TxConstantData, TxContext } from '@aztec/stdlib/tx';
|
|
13
|
+
import { strict as assert } from 'assert';
|
|
14
|
+
/**
|
|
15
|
+
* Craft a carrier transaction for some public calls for simulation by PublicTxSimulator.
|
|
16
|
+
*/ export async function createTxForPublicCalls(firstNullifier, setupExecutionRequests, appExecutionRequests, teardownExecutionRequest, feePayer = AztecAddress.zero(), gasUsedByPrivate = Gas.empty()) {
|
|
17
|
+
assert(setupExecutionRequests.length > 0 || appExecutionRequests.length > 0 || teardownExecutionRequest !== undefined, "Can't create public tx with no enqueued calls");
|
|
18
|
+
const setupCallRequests = await Promise.all(setupExecutionRequests.map((er)=>er.toCallRequest()));
|
|
19
|
+
const appCallRequests = await Promise.all(appExecutionRequests.map((er)=>er.toCallRequest()));
|
|
20
|
+
// use max limits
|
|
21
|
+
const gasLimits = new Gas(DEFAULT_GAS_LIMIT, MAX_L2_GAS_PER_TX_PUBLIC_PORTION);
|
|
22
|
+
const forPublic = PartialPrivateTailPublicInputsForPublic.empty();
|
|
23
|
+
// TODO(#9269): Remove this fake nullifier method as we move away from 1st nullifier as hash.
|
|
24
|
+
forPublic.nonRevertibleAccumulatedData.nullifiers[0] = firstNullifier;
|
|
25
|
+
// We reverse order because the simulator expects it to be like a "stack" of calls to pop from
|
|
26
|
+
for(let i = setupCallRequests.length - 1; i >= 0; i--){
|
|
27
|
+
forPublic.nonRevertibleAccumulatedData.publicCallRequests[i] = setupCallRequests[i];
|
|
28
|
+
}
|
|
29
|
+
for(let i = appCallRequests.length - 1; i >= 0; i--){
|
|
30
|
+
forPublic.revertibleAccumulatedData.publicCallRequests[i] = appCallRequests[i];
|
|
31
|
+
}
|
|
32
|
+
if (teardownExecutionRequest) {
|
|
33
|
+
forPublic.publicTeardownCallRequest = await teardownExecutionRequest.toCallRequest();
|
|
34
|
+
}
|
|
35
|
+
const maxFeesPerGas = feePayer.isZero() ? GasFees.empty() : new GasFees(10, 10);
|
|
36
|
+
const teardownGasLimits = teardownExecutionRequest ? gasLimits : Gas.empty();
|
|
37
|
+
const gasSettings = new GasSettings(gasLimits, teardownGasLimits, maxFeesPerGas, GasFees.empty());
|
|
38
|
+
const txContext = new TxContext(Fr.zero(), Fr.zero(), gasSettings);
|
|
39
|
+
const constantData = new TxConstantData(BlockHeader.empty(), txContext, Fr.zero(), Fr.zero());
|
|
40
|
+
const txData = new PrivateKernelTailCircuitPublicInputs(constantData, RollupValidationRequests.empty(), /*gasUsed=*/ gasUsedByPrivate, feePayer, forPublic);
|
|
41
|
+
const tx = Tx.newWithTxData(txData, teardownExecutionRequest);
|
|
42
|
+
// Reverse order because the simulator expects it to be like a "stack" of calls to pop from.
|
|
43
|
+
// Also push app calls before setup calls for this reason.
|
|
44
|
+
for(let i = appExecutionRequests.length - 1; i >= 0; i--){
|
|
45
|
+
tx.enqueuedPublicFunctionCalls.push(appExecutionRequests[i]);
|
|
46
|
+
}
|
|
47
|
+
for(let i = setupExecutionRequests.length - 1; i >= 0; i--){
|
|
48
|
+
tx.enqueuedPublicFunctionCalls.push(setupExecutionRequests[i]);
|
|
49
|
+
}
|
|
50
|
+
return tx;
|
|
51
|
+
}
|
|
52
|
+
export function createTxForPrivateOnly(feePayer = AztecAddress.zero(), gasUsedByPrivate = new Gas(10, 10)) {
|
|
53
|
+
// use max limits
|
|
54
|
+
const gasLimits = new Gas(DEFAULT_GAS_LIMIT, MAX_L2_GAS_PER_TX_PUBLIC_PORTION);
|
|
55
|
+
const forRollup = PartialPrivateTailPublicInputsForRollup.empty();
|
|
56
|
+
const maxFeesPerGas = feePayer.isZero() ? GasFees.empty() : new GasFees(10, 10);
|
|
57
|
+
const gasSettings = new GasSettings(gasLimits, Gas.empty(), maxFeesPerGas, GasFees.empty());
|
|
58
|
+
const txContext = new TxContext(Fr.zero(), Fr.zero(), gasSettings);
|
|
59
|
+
const constantData = new TxConstantData(BlockHeader.empty(), txContext, Fr.zero(), Fr.zero());
|
|
60
|
+
const txData = new PrivateKernelTailCircuitPublicInputs(constantData, RollupValidationRequests.empty(), /*gasUsed=*/ gasUsedByPrivate, feePayer, /*forPublic=*/ undefined, forRollup);
|
|
61
|
+
return Tx.newWithTxData(txData);
|
|
62
|
+
}
|
|
63
|
+
export async function addNewContractClassToTx(tx, contractClass, skipNullifierInsertion = false) {
|
|
64
|
+
const contractClassLogFields = [
|
|
65
|
+
new Fr(REGISTERER_CONTRACT_CLASS_REGISTERED_MAGIC_VALUE),
|
|
66
|
+
contractClass.id,
|
|
67
|
+
new Fr(contractClass.version),
|
|
68
|
+
new Fr(contractClass.artifactHash),
|
|
69
|
+
new Fr(contractClass.privateFunctionsRoot),
|
|
70
|
+
...bufferAsFields(contractClass.packedBytecode, Math.ceil(contractClass.packedBytecode.length / 31) + 1)
|
|
71
|
+
];
|
|
72
|
+
const contractClassLog = ContractClassLog.fromFields([
|
|
73
|
+
new Fr(REGISTERER_CONTRACT_ADDRESS),
|
|
74
|
+
...contractClassLogFields.concat(new Array(CONTRACT_CLASS_LOG_DATA_SIZE_IN_FIELDS - contractClassLogFields.length).fill(Fr.ZERO))
|
|
75
|
+
]);
|
|
76
|
+
const contractClassLogHash = ScopedLogHash.fromFields([
|
|
77
|
+
await contractClassLog.hash(),
|
|
78
|
+
new Fr(7),
|
|
79
|
+
new Fr(contractClassLog.getEmittedLength()),
|
|
80
|
+
new Fr(REGISTERER_CONTRACT_ADDRESS)
|
|
81
|
+
]);
|
|
82
|
+
const accumulatedData = tx.data.forPublic ? tx.data.forPublic.revertibleAccumulatedData : tx.data.forRollup.end;
|
|
83
|
+
if (!skipNullifierInsertion) {
|
|
84
|
+
const nextNullifierIndex = countAccumulatedItems(accumulatedData.nullifiers);
|
|
85
|
+
accumulatedData.nullifiers[nextNullifierIndex] = contractClass.id;
|
|
86
|
+
}
|
|
87
|
+
const nextLogIndex = countAccumulatedItems(accumulatedData.contractClassLogsHashes);
|
|
88
|
+
accumulatedData.contractClassLogsHashes[nextLogIndex] = contractClassLogHash;
|
|
89
|
+
tx.contractClassLogs.push(contractClassLog);
|
|
90
|
+
}
|
|
91
|
+
export async function addNewContractInstanceToTx(tx, contractInstance, skipNullifierInsertion = false) {
|
|
92
|
+
// can't use publicKeys.toFields() because it includes isInfinite which
|
|
93
|
+
// is not broadcast in such private logs
|
|
94
|
+
const publicKeysAsFields = [
|
|
95
|
+
contractInstance.publicKeys.masterNullifierPublicKey.x,
|
|
96
|
+
contractInstance.publicKeys.masterNullifierPublicKey.y,
|
|
97
|
+
contractInstance.publicKeys.masterIncomingViewingPublicKey.x,
|
|
98
|
+
contractInstance.publicKeys.masterIncomingViewingPublicKey.y,
|
|
99
|
+
contractInstance.publicKeys.masterOutgoingViewingPublicKey.x,
|
|
100
|
+
contractInstance.publicKeys.masterOutgoingViewingPublicKey.y,
|
|
101
|
+
contractInstance.publicKeys.masterTaggingPublicKey.x,
|
|
102
|
+
contractInstance.publicKeys.masterTaggingPublicKey.y
|
|
103
|
+
];
|
|
104
|
+
const fields = [
|
|
105
|
+
DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_TAG,
|
|
106
|
+
contractInstance.address.toField(),
|
|
107
|
+
new Fr(contractInstance.version),
|
|
108
|
+
new Fr(contractInstance.salt),
|
|
109
|
+
contractInstance.currentContractClassId,
|
|
110
|
+
contractInstance.initializationHash,
|
|
111
|
+
...publicKeysAsFields,
|
|
112
|
+
contractInstance.deployer.toField(),
|
|
113
|
+
new Fr(0),
|
|
114
|
+
new Fr(0),
|
|
115
|
+
new Fr(0)
|
|
116
|
+
];
|
|
117
|
+
const contractInstanceLog = new PrivateLog(assertLength(fields, PRIVATE_LOG_SIZE_IN_FIELDS));
|
|
118
|
+
const contractAddressNullifier = await siloNullifier(AztecAddress.fromNumber(DEPLOYER_CONTRACT_ADDRESS), contractInstance.address.toField());
|
|
119
|
+
const accumulatedData = tx.data.forPublic ? tx.data.forPublic.revertibleAccumulatedData : tx.data.forRollup.end;
|
|
120
|
+
if (!skipNullifierInsertion) {
|
|
121
|
+
const nextNullifierIndex = countAccumulatedItems(accumulatedData.nullifiers);
|
|
122
|
+
accumulatedData.nullifiers[nextNullifierIndex] = contractAddressNullifier;
|
|
123
|
+
}
|
|
124
|
+
const nextLogIndex = countAccumulatedItems(accumulatedData.privateLogs);
|
|
125
|
+
accumulatedData.privateLogs[nextLogIndex] = contractInstanceLog;
|
|
126
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * from '../common/db_interfaces.js';
|
|
2
|
+
export * from './public_tx_simulator/public_tx_simulator.js';
|
|
3
|
+
export { type EnqueuedPublicCallExecutionResult, type PublicFunctionCallResult } from './execution.js';
|
|
4
|
+
export * from './public_db_sources.js';
|
|
5
|
+
export { PublicProcessor, PublicProcessorFactory } from './public_processor/public_processor.js';
|
|
6
|
+
export { SideEffectTrace } from './side_effect_trace.js';
|
|
7
|
+
export { getExecutionRequestsByPhase } from './utils.js';
|
|
8
|
+
export { PublicTxSimulationTester } from './fixtures/index.js';
|
|
9
|
+
export * from './avm/index.js';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/public/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8CAA8C,CAAC;AAC7D,OAAO,EAAE,KAAK,iCAAiC,EAAE,KAAK,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AACvG,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AACjG,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from '../common/db_interfaces.js';
|
|
2
|
+
export * from './public_tx_simulator/public_tx_simulator.js';
|
|
3
|
+
export * from './public_db_sources.js';
|
|
4
|
+
export { PublicProcessor, PublicProcessorFactory } from './public_processor/public_processor.js';
|
|
5
|
+
export { SideEffectTrace } from './side_effect_trace.js';
|
|
6
|
+
export { getExecutionRequestsByPhase } from './utils.js';
|
|
7
|
+
export { PublicTxSimulationTester } from './fixtures/index.js';
|
|
8
|
+
export * from './avm/index.js';
|