@aztec/simulator 0.0.0-test.1 → 0.0.1-commit.017a351
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 +12 -4
- package/dest/client.d.ts +6 -4
- package/dest/client.d.ts.map +1 -1
- package/dest/client.js +4 -2
- package/dest/common/errors.d.ts +6 -9
- package/dest/common/errors.d.ts.map +1 -1
- package/dest/common/errors.js +51 -32
- package/dest/common/index.d.ts +1 -2
- package/dest/common/index.d.ts.map +1 -1
- package/dest/common/index.js +0 -1
- package/dest/common/stats/index.d.ts +1 -1
- package/dest/common/stats/stats.d.ts +1 -1
- package/dest/private/acvm/acvm.d.ts +15 -7
- package/dest/private/acvm/acvm.d.ts.map +1 -1
- package/dest/private/acvm/acvm.js +14 -19
- package/dest/private/acvm/acvm_types.d.ts +2 -2
- package/dest/private/acvm/acvm_types.d.ts.map +1 -1
- package/dest/private/acvm/deserialize.d.ts +19 -20
- package/dest/private/acvm/deserialize.d.ts.map +1 -1
- package/dest/private/acvm/deserialize.js +32 -24
- package/dest/private/acvm/index.d.ts +1 -2
- package/dest/private/acvm/index.d.ts.map +1 -1
- package/dest/private/acvm/index.js +0 -1
- package/dest/private/acvm/serialize.d.ts +21 -4
- package/dest/private/acvm/serialize.d.ts.map +1 -1
- package/dest/private/acvm/serialize.js +54 -1
- package/dest/private/acvm_native.d.ts +41 -0
- package/dest/private/acvm_native.d.ts.map +1 -0
- package/dest/private/{providers/acvm_native.js → acvm_native.js} +34 -26
- package/dest/private/acvm_wasm.d.ts +16 -0
- package/dest/private/acvm_wasm.d.ts.map +1 -0
- package/dest/private/acvm_wasm.js +67 -0
- package/dest/private/acvm_wasm_with_blobs.d.ts +20 -0
- package/dest/private/acvm_wasm_with_blobs.d.ts.map +1 -0
- package/dest/private/acvm_wasm_with_blobs.js +35 -0
- package/dest/private/circuit_recording/circuit_recorder.d.ts +109 -0
- package/dest/private/circuit_recording/circuit_recorder.d.ts.map +1 -0
- package/dest/private/circuit_recording/circuit_recorder.js +212 -0
- package/dest/private/circuit_recording/file_circuit_recorder.d.ts +32 -0
- package/dest/private/circuit_recording/file_circuit_recorder.d.ts.map +1 -0
- package/dest/private/circuit_recording/file_circuit_recorder.js +135 -0
- package/dest/private/circuit_recording/memory_circuit_recorder.d.ts +10 -0
- package/dest/private/circuit_recording/memory_circuit_recorder.d.ts.map +1 -0
- package/dest/private/circuit_recording/memory_circuit_recorder.js +9 -0
- package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts +21 -0
- package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts.map +1 -0
- package/dest/private/circuit_recording/simulator_recorder_wrapper.js +44 -0
- package/dest/private/circuit_simulator.d.ts +35 -0
- package/dest/private/circuit_simulator.d.ts.map +1 -0
- package/dest/private/circuit_simulator.js +43 -0
- package/dest/private/factory.d.ts +12 -0
- package/dest/private/factory.d.ts.map +1 -0
- package/dest/private/{providers/factory.js → factory.js} +8 -5
- package/dest/public/avm/avm_context.d.ts +8 -8
- package/dest/public/avm/avm_context.d.ts.map +1 -1
- package/dest/public/avm/avm_contract_call_result.d.ts +8 -6
- package/dest/public/avm/avm_contract_call_result.d.ts.map +1 -1
- package/dest/public/avm/avm_contract_call_result.js +12 -8
- package/dest/public/avm/avm_execution_environment.d.ts +9 -6
- package/dest/public/avm/avm_execution_environment.d.ts.map +1 -1
- package/dest/public/avm/avm_execution_environment.js +5 -3
- package/dest/public/avm/avm_gas.d.ts +5 -21
- package/dest/public/avm/avm_gas.d.ts.map +1 -1
- package/dest/public/avm/avm_gas.js +29 -37
- package/dest/public/avm/avm_machine_state.d.ts +9 -6
- package/dest/public/avm/avm_machine_state.d.ts.map +1 -1
- package/dest/public/avm/avm_machine_state.js +5 -2
- package/dest/public/avm/avm_memory_types.d.ts +100 -89
- package/dest/public/avm/avm_memory_types.d.ts.map +1 -1
- package/dest/public/avm/avm_memory_types.js +21 -7
- package/dest/public/avm/avm_simulator.d.ts +8 -7
- package/dest/public/avm/avm_simulator.d.ts.map +1 -1
- package/dest/public/avm/avm_simulator.js +33 -43
- package/dest/public/avm/avm_simulator_interface.d.ts +9 -0
- package/dest/public/avm/avm_simulator_interface.d.ts.map +1 -0
- package/dest/public/avm/avm_simulator_interface.js +3 -0
- package/dest/public/avm/calldata.d.ts +51 -0
- package/dest/public/avm/calldata.d.ts.map +1 -0
- package/dest/public/avm/calldata.js +64 -0
- package/dest/public/avm/errors.d.ts +11 -29
- package/dest/public/avm/errors.d.ts.map +1 -1
- package/dest/public/avm/errors.js +19 -57
- package/dest/public/avm/fixtures/account_proof_fetcher.d.ts +2 -0
- package/dest/public/avm/fixtures/account_proof_fetcher.d.ts.map +1 -0
- package/dest/public/avm/fixtures/account_proof_fetcher.js +152 -0
- package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +6 -5
- package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +1 -1
- package/dest/public/avm/fixtures/avm_simulation_tester.js +26 -18
- package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts +9 -6
- package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +1 -1
- package/dest/public/avm/fixtures/base_avm_simulation_tester.js +53 -15
- package/dest/public/avm/fixtures/initializers.d.ts +42 -0
- package/dest/public/avm/fixtures/initializers.d.ts.map +1 -0
- package/dest/public/avm/fixtures/initializers.js +45 -0
- package/dest/public/avm/fixtures/utils.d.ts +39 -0
- package/dest/public/avm/fixtures/utils.d.ts.map +1 -0
- package/dest/public/avm/fixtures/utils.js +99 -0
- package/dest/public/avm/index.d.ts +1 -3
- package/dest/public/avm/index.d.ts.map +1 -1
- package/dest/public/avm/index.js +0 -2
- package/dest/public/avm/opcodes/accrued_substate.d.ts +18 -19
- package/dest/public/avm/opcodes/accrued_substate.d.ts.map +1 -1
- package/dest/public/avm/opcodes/accrued_substate.js +61 -59
- package/dest/public/avm/opcodes/addressing_mode.d.ts +12 -8
- package/dest/public/avm/opcodes/addressing_mode.d.ts.map +1 -1
- package/dest/public/avm/opcodes/addressing_mode.js +46 -26
- package/dest/public/avm/opcodes/arithmetic.d.ts +14 -2
- package/dest/public/avm/opcodes/arithmetic.d.ts.map +1 -1
- package/dest/public/avm/opcodes/arithmetic.js +27 -3
- package/dest/public/avm/opcodes/bitwise.d.ts +8 -16
- package/dest/public/avm/opcodes/bitwise.d.ts.map +1 -1
- package/dest/public/avm/opcodes/bitwise.js +22 -29
- package/dest/public/avm/opcodes/comparators.d.ts +1 -1
- package/dest/public/avm/opcodes/comparators.d.ts.map +1 -1
- package/dest/public/avm/opcodes/comparators.js +3 -3
- package/dest/public/avm/opcodes/contract.d.ts +5 -5
- package/dest/public/avm/opcodes/contract.d.ts.map +1 -1
- package/dest/public/avm/opcodes/contract.js +16 -13
- package/dest/public/avm/opcodes/control_flow.d.ts +3 -3
- package/dest/public/avm/opcodes/control_flow.d.ts.map +1 -1
- package/dest/public/avm/opcodes/control_flow.js +13 -11
- package/dest/public/avm/opcodes/conversion.d.ts +4 -3
- package/dest/public/avm/opcodes/conversion.d.ts.map +1 -1
- package/dest/public/avm/opcodes/conversion.js +270 -6
- package/dest/public/avm/opcodes/ec_add.d.ts +3 -5
- package/dest/public/avm/opcodes/ec_add.d.ts.map +1 -1
- package/dest/public/avm/opcodes/ec_add.js +28 -33
- package/dest/public/avm/opcodes/environment_getters.d.ts +5 -5
- package/dest/public/avm/opcodes/environment_getters.d.ts.map +1 -1
- package/dest/public/avm/opcodes/environment_getters.js +20 -22
- package/dest/public/avm/opcodes/external_calls.d.ts +14 -13
- package/dest/public/avm/opcodes/external_calls.d.ts.map +1 -1
- package/dest/public/avm/opcodes/external_calls.js +52 -46
- package/dest/public/avm/opcodes/hashing.d.ts +7 -7
- package/dest/public/avm/opcodes/hashing.d.ts.map +1 -1
- package/dest/public/avm/opcodes/hashing.js +24 -19
- package/dest/public/avm/opcodes/index.d.ts +1 -1
- package/dest/public/avm/opcodes/instruction.d.ts +15 -11
- package/dest/public/avm/opcodes/instruction.d.ts.map +1 -1
- package/dest/public/avm/opcodes/instruction.js +23 -19
- package/dest/public/avm/opcodes/instruction_impl.d.ts +4 -4
- package/dest/public/avm/opcodes/instruction_impl.d.ts.map +1 -1
- package/dest/public/avm/opcodes/instruction_impl.js +4 -4
- package/dest/public/avm/opcodes/memory.d.ts +15 -15
- package/dest/public/avm/opcodes/memory.d.ts.map +1 -1
- package/dest/public/avm/opcodes/memory.js +52 -48
- package/dest/public/avm/opcodes/misc.d.ts +4 -3
- package/dest/public/avm/opcodes/misc.d.ts.map +1 -1
- package/dest/public/avm/opcodes/misc.js +42 -17
- package/dest/public/avm/opcodes/storage.d.ts +14 -13
- package/dest/public/avm/opcodes/storage.d.ts.map +1 -1
- package/dest/public/avm/opcodes/storage.js +39 -27
- package/dest/public/avm/revert_reason.d.ts +18 -0
- package/dest/public/avm/revert_reason.d.ts.map +1 -0
- package/dest/public/avm/revert_reason.js +39 -0
- package/dest/public/avm/serialization/buffer_cursor.d.ts +1 -3
- package/dest/public/avm/serialization/buffer_cursor.d.ts.map +1 -1
- package/dest/public/avm/serialization/bytecode_serialization.d.ts +3 -7
- package/dest/public/avm/serialization/bytecode_serialization.d.ts.map +1 -1
- package/dest/public/avm/serialization/bytecode_serialization.js +81 -77
- package/dest/public/avm/serialization/instruction_serialization.d.ts +15 -6
- package/dest/public/avm/serialization/instruction_serialization.d.ts.map +1 -1
- package/dest/public/avm/serialization/instruction_serialization.js +71 -36
- package/dest/public/avm/test_utils.d.ts +12 -15
- package/dest/public/avm/test_utils.d.ts.map +1 -1
- package/dest/public/avm/test_utils.js +17 -25
- package/dest/public/contracts_db_checkpoint.d.ts +16 -0
- package/dest/public/contracts_db_checkpoint.d.ts.map +1 -0
- package/dest/public/contracts_db_checkpoint.js +30 -0
- package/dest/public/db_interfaces.d.ts +68 -0
- package/dest/public/db_interfaces.d.ts.map +1 -0
- package/dest/public/db_interfaces.js +3 -0
- package/dest/public/debug_fn_name.d.ts +18 -0
- package/dest/public/debug_fn_name.d.ts.map +1 -0
- package/dest/public/debug_fn_name.js +37 -0
- package/dest/public/executor_metrics.d.ts +12 -4
- package/dest/public/executor_metrics.d.ts.map +1 -1
- package/dest/public/executor_metrics.js +33 -23
- package/dest/public/executor_metrics_interface.d.ts +10 -0
- package/dest/public/executor_metrics_interface.d.ts.map +1 -0
- package/dest/public/executor_metrics_interface.js +1 -0
- package/dest/public/fixtures/amm_test.d.ts +10 -0
- package/dest/public/fixtures/amm_test.d.ts.map +1 -0
- package/dest/public/fixtures/amm_test.js +213 -0
- package/dest/public/fixtures/bulk_test.d.ts +6 -0
- package/dest/public/fixtures/bulk_test.d.ts.map +1 -0
- package/dest/public/fixtures/bulk_test.js +289 -0
- package/dest/public/fixtures/custom_bytecode_tester.d.ts +34 -0
- package/dest/public/fixtures/custom_bytecode_tester.d.ts.map +1 -0
- package/dest/public/fixtures/custom_bytecode_tester.js +53 -0
- package/dest/public/fixtures/custom_bytecode_tests.d.ts +14 -0
- package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +1 -0
- package/dest/public/fixtures/custom_bytecode_tests.js +234 -0
- package/dest/public/fixtures/index.d.ts +10 -1
- package/dest/public/fixtures/index.d.ts.map +1 -1
- package/dest/public/fixtures/index.js +9 -0
- package/dest/public/fixtures/minimal_public_tx.d.ts +4 -0
- package/dest/public/fixtures/minimal_public_tx.d.ts.map +1 -0
- package/dest/public/fixtures/minimal_public_tx.js +19 -0
- package/dest/public/fixtures/opcode_spammer.d.ts +122 -0
- package/dest/public/fixtures/opcode_spammer.d.ts.map +1 -0
- package/dest/public/fixtures/opcode_spammer.js +1645 -0
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts +56 -15
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
- package/dest/public/fixtures/public_tx_simulation_tester.js +164 -71
- package/dest/public/fixtures/simple_contract_data_source.d.ts +36 -0
- package/dest/public/fixtures/simple_contract_data_source.d.ts.map +1 -0
- package/dest/public/{avm/fixtures → fixtures}/simple_contract_data_source.js +31 -10
- package/dest/public/fixtures/token_test.d.ts +12 -0
- package/dest/public/fixtures/token_test.d.ts.map +1 -0
- package/dest/public/fixtures/token_test.js +96 -0
- package/dest/public/fixtures/utils.d.ts +18 -5
- package/dest/public/fixtures/utils.d.ts.map +1 -1
- package/dest/public/fixtures/utils.js +112 -70
- package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts +60 -0
- package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts.map +1 -0
- package/dest/public/fuzzing/avm_fuzzer_simulator.js +171 -0
- package/dest/public/fuzzing/avm_simulator_bin.d.ts +2 -0
- package/dest/public/fuzzing/avm_simulator_bin.d.ts.map +1 -0
- package/dest/public/fuzzing/avm_simulator_bin.js +118 -0
- package/dest/public/hinting_db_sources.d.ts +81 -0
- package/dest/public/hinting_db_sources.d.ts.map +1 -0
- package/dest/public/hinting_db_sources.js +359 -0
- package/dest/public/index.d.ts +6 -9
- package/dest/public/index.d.ts.map +1 -1
- package/dest/public/index.js +4 -7
- package/dest/public/public_db_sources.d.ts +58 -104
- package/dest/public/public_db_sources.d.ts.map +1 -1
- package/dest/public/public_db_sources.js +227 -194
- package/dest/public/public_errors.d.ts +12 -0
- package/dest/public/public_errors.d.ts.map +1 -0
- package/dest/public/public_errors.js +13 -0
- package/dest/public/public_processor/guarded_merkle_tree.d.ts +52 -0
- package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -0
- package/dest/public/public_processor/guarded_merkle_tree.js +116 -0
- package/dest/public/public_processor/public_processor.d.ts +32 -39
- package/dest/public/public_processor/public_processor.d.ts.map +1 -1
- package/dest/public/public_processor/public_processor.js +642 -167
- package/dest/public/public_processor/public_processor_metrics.d.ts +7 -4
- package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
- package/dest/public/public_processor/public_processor_metrics.js +37 -46
- package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts +19 -0
- package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/contract_provider_for_cpp.js +99 -0
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +53 -0
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +126 -0
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts +42 -0
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.js +86 -0
- package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts +30 -0
- package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.js +167 -0
- package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts +23 -0
- package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.js +52 -0
- package/dest/public/public_tx_simulator/factories.d.ts +14 -0
- package/dest/public/public_tx_simulator/factories.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/factories.js +28 -0
- package/dest/public/public_tx_simulator/index.d.ts +8 -0
- package/dest/public/public_tx_simulator/index.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/index.js +5 -0
- package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +31 -0
- package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/measured_public_tx_simulator.js +51 -0
- package/dest/public/public_tx_simulator/public_tx_context.d.ts +31 -33
- package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/public_tx_context.js +83 -105
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +42 -58
- package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
- package/dest/public/public_tx_simulator/public_tx_simulator.js +225 -207
- package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts +32 -0
- package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/public_tx_simulator_interface.js +1 -0
- package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts +21 -0
- package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts.map +1 -0
- package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.js +415 -0
- package/dest/public/side_effect_errors.d.ts +42 -2
- package/dest/public/side_effect_errors.d.ts.map +1 -1
- package/dest/public/side_effect_errors.js +70 -1
- package/dest/public/side_effect_trace.d.ts +24 -69
- package/dest/public/side_effect_trace.d.ts.map +1 -1
- package/dest/public/side_effect_trace.js +74 -124
- package/dest/public/side_effect_trace_interface.d.ts +13 -25
- package/dest/public/side_effect_trace_interface.d.ts.map +1 -1
- package/dest/public/state_manager/index.d.ts +2 -0
- package/dest/public/state_manager/index.d.ts.map +1 -0
- package/dest/public/state_manager/index.js +1 -0
- package/dest/public/{avm/journal → state_manager}/nullifiers.d.ts +4 -7
- package/dest/public/state_manager/nullifiers.d.ts.map +1 -0
- package/dest/public/{avm/journal → state_manager}/nullifiers.js +3 -8
- package/dest/public/{avm/journal → state_manager}/public_storage.d.ts +4 -4
- package/dest/public/state_manager/public_storage.d.ts.map +1 -0
- package/dest/public/{avm/journal → state_manager}/public_storage.js +1 -1
- package/dest/public/state_manager/state_manager.d.ts +170 -0
- package/dest/public/state_manager/state_manager.d.ts.map +1 -0
- package/dest/public/state_manager/state_manager.js +402 -0
- package/dest/public/test_executor_metrics.d.ts +61 -0
- package/dest/public/test_executor_metrics.d.ts.map +1 -0
- package/dest/public/test_executor_metrics.js +329 -0
- package/dest/public/unique_class_ids.d.ts +1 -1
- package/dest/public/unique_class_ids.d.ts.map +1 -1
- package/dest/public/utils.d.ts +3 -5
- package/dest/public/utils.d.ts.map +1 -1
- package/dest/public/utils.js +4 -21
- package/dest/server.d.ts +7 -4
- package/dest/server.d.ts.map +1 -1
- package/dest/server.js +5 -2
- package/dest/testing.d.ts +2 -0
- package/dest/testing.d.ts.map +1 -0
- package/dest/testing.js +1 -0
- package/package.json +39 -33
- package/src/client.ts +5 -3
- package/src/common/errors.ts +80 -45
- package/src/common/index.ts +0 -1
- package/src/private/acvm/acvm.ts +21 -35
- package/src/private/acvm/acvm_types.ts +1 -1
- package/src/private/acvm/deserialize.ts +36 -30
- package/src/private/acvm/index.ts +0 -1
- package/src/private/acvm/serialize.ts +64 -1
- package/src/private/{providers/acvm_native.ts → acvm_native.ts} +57 -28
- package/src/private/acvm_wasm.ts +79 -0
- package/src/private/acvm_wasm_with_blobs.ts +54 -0
- package/src/private/circuit_recording/circuit_recorder.ts +263 -0
- package/src/private/circuit_recording/file_circuit_recorder.ts +163 -0
- package/src/private/circuit_recording/memory_circuit_recorder.ts +13 -0
- package/src/private/circuit_recording/simulator_recorder_wrapper.ts +91 -0
- package/src/private/circuit_simulator.ts +90 -0
- package/src/private/{providers/factory.ts → factory.ts} +13 -10
- package/src/public/avm/avm_context.ts +6 -6
- package/src/public/avm/avm_contract_call_result.ts +23 -9
- package/src/public/avm/avm_execution_environment.ts +17 -5
- package/src/public/avm/avm_gas.ts +27 -39
- package/src/public/avm/avm_machine_state.ts +12 -6
- package/src/public/avm/avm_memory_types.ts +24 -7
- package/src/public/avm/avm_simulator.ts +58 -63
- package/src/public/avm/avm_simulator_interface.ts +8 -0
- package/src/public/avm/calldata.ts +101 -0
- package/src/public/avm/errors.ts +20 -75
- package/src/public/avm/fixtures/account_proof.json +553 -0
- package/src/public/avm/fixtures/account_proof_fetcher.ts +166 -0
- package/src/public/avm/fixtures/avm_simulation_tester.ts +41 -24
- package/src/public/avm/fixtures/base_avm_simulation_tester.ts +66 -13
- package/src/public/avm/fixtures/initializers.ts +103 -0
- package/src/public/avm/fixtures/utils.ts +154 -0
- package/src/public/avm/index.ts +0 -2
- package/src/public/avm/opcodes/accrued_substate.ts +84 -52
- package/src/public/avm/opcodes/addressing_mode.ts +56 -32
- package/src/public/avm/opcodes/arithmetic.ts +37 -3
- package/src/public/avm/opcodes/bitwise.ts +33 -29
- package/src/public/avm/opcodes/comparators.ts +6 -3
- package/src/public/avm/opcodes/contract.ts +15 -11
- package/src/public/avm/opcodes/control_flow.ts +19 -10
- package/src/public/avm/opcodes/conversion.ts +29 -5
- package/src/public/avm/opcodes/ec_add.ts +30 -37
- package/src/public/avm/opcodes/environment_getters.ts +28 -23
- package/src/public/avm/opcodes/external_calls.ts +70 -36
- package/src/public/avm/opcodes/hashing.ts +39 -13
- package/src/public/avm/opcodes/instruction.ts +31 -21
- package/src/public/avm/opcodes/instruction_impl.ts +2 -2
- package/src/public/avm/opcodes/memory.ts +81 -42
- package/src/public/avm/opcodes/misc.ts +61 -19
- package/src/public/avm/opcodes/storage.ts +47 -23
- package/src/public/avm/revert_reason.ts +58 -0
- package/src/public/avm/serialization/buffer_cursor.ts +4 -1
- package/src/public/avm/serialization/bytecode_serialization.ts +90 -81
- package/src/public/avm/serialization/instruction_serialization.ts +76 -35
- package/src/public/avm/test_utils.ts +25 -42
- package/src/public/contracts_db_checkpoint.ts +41 -0
- package/src/public/db_interfaces.ts +76 -0
- package/src/public/debug_fn_name.ts +52 -0
- package/src/public/executor_metrics.ts +49 -23
- package/src/public/executor_metrics_interface.ts +15 -0
- package/src/public/fixtures/amm_test.ts +331 -0
- package/src/public/fixtures/bulk_test.ts +194 -0
- package/src/public/fixtures/custom_bytecode_tester.ts +83 -0
- package/src/public/fixtures/custom_bytecode_tests.ts +366 -0
- package/src/public/fixtures/index.ts +13 -0
- package/src/public/fixtures/minimal_public_tx.ts +26 -0
- package/src/public/fixtures/opcode_spammer.ts +1713 -0
- package/src/public/fixtures/public_tx_simulation_tester.ts +264 -114
- package/src/public/{avm/fixtures → fixtures}/simple_contract_data_source.ts +37 -20
- package/src/public/fixtures/token_test.ts +148 -0
- package/src/public/fixtures/utils.ts +156 -80
- package/src/public/fuzzing/avm_fuzzer_simulator.ts +288 -0
- package/src/public/fuzzing/avm_simulator_bin.ts +175 -0
- package/src/public/hinting_db_sources.ts +614 -0
- package/src/public/index.ts +11 -8
- package/src/public/public_db_sources.ts +295 -258
- package/src/public/public_errors.ts +14 -0
- package/src/public/public_processor/guarded_merkle_tree.ts +161 -0
- package/src/public/public_processor/public_processor.ts +354 -227
- package/src/public/public_processor/public_processor_metrics.ts +30 -46
- package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +125 -0
- package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +201 -0
- package/src/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.ts +134 -0
- package/src/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.ts +232 -0
- package/src/public/public_tx_simulator/dumping_cpp_public_tx_simulator.ts +83 -0
- package/src/public/public_tx_simulator/factories.ts +44 -0
- package/src/public/public_tx_simulator/index.ts +7 -0
- package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +105 -0
- package/src/public/public_tx_simulator/public_tx_context.ts +187 -209
- package/src/public/public_tx_simulator/public_tx_simulator.ts +320 -263
- package/src/public/public_tx_simulator/public_tx_simulator_interface.ts +33 -0
- package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +63 -0
- package/src/public/side_effect_errors.ts +91 -1
- package/src/public/side_effect_trace.ts +99 -322
- package/src/public/side_effect_trace_interface.ts +11 -59
- package/src/public/state_manager/index.ts +1 -0
- package/src/public/{avm/journal → state_manager}/nullifiers.ts +6 -12
- package/src/public/{avm/journal → state_manager}/public_storage.ts +3 -3
- package/src/public/state_manager/state_manager.ts +569 -0
- package/src/public/test_executor_metrics.ts +421 -0
- package/src/public/utils.ts +5 -21
- package/src/server.ts +6 -3
- package/src/testing.ts +1 -0
- package/dest/common/db_interfaces.d.ts +0 -80
- package/dest/common/db_interfaces.d.ts.map +0 -1
- package/dest/common/db_interfaces.js +0 -1
- package/dest/common/debug_fn_name.d.ts +0 -5
- package/dest/common/debug_fn_name.d.ts.map +0 -1
- package/dest/common/debug_fn_name.js +0 -6
- package/dest/common/message_load_oracle_inputs.d.ts +0 -15
- package/dest/common/message_load_oracle_inputs.d.ts.map +0 -1
- package/dest/common/message_load_oracle_inputs.js +0 -15
- package/dest/private/acvm/oracle/index.d.ts +0 -14
- package/dest/private/acvm/oracle/index.d.ts.map +0 -1
- package/dest/private/acvm/oracle/index.js +0 -2
- package/dest/private/acvm/oracle/oracle.d.ts +0 -49
- package/dest/private/acvm/oracle/oracle.d.ts.map +0 -1
- package/dest/private/acvm/oracle/oracle.js +0 -263
- package/dest/private/acvm/oracle/typed_oracle.d.ts +0 -83
- package/dest/private/acvm/oracle/typed_oracle.d.ts.map +0 -1
- package/dest/private/acvm/oracle/typed_oracle.js +0 -132
- package/dest/private/execution_data_provider.d.ts +0 -261
- package/dest/private/execution_data_provider.d.ts.map +0 -1
- package/dest/private/execution_data_provider.js +0 -14
- package/dest/private/execution_note_cache.d.ts +0 -93
- package/dest/private/execution_note_cache.d.ts.map +0 -1
- package/dest/private/execution_note_cache.js +0 -180
- package/dest/private/hashed_values_cache.d.ts +0 -28
- package/dest/private/hashed_values_cache.d.ts.map +0 -1
- package/dest/private/hashed_values_cache.js +0 -46
- package/dest/private/index.d.ts +0 -13
- package/dest/private/index.d.ts.map +0 -1
- package/dest/private/index.js +0 -12
- package/dest/private/pick_notes.d.ts +0 -85
- package/dest/private/pick_notes.d.ts.map +0 -1
- package/dest/private/pick_notes.js +0 -51
- package/dest/private/private_execution.d.ts +0 -25
- package/dest/private/private_execution.d.ts.map +0 -1
- package/dest/private/private_execution.js +0 -92
- package/dest/private/private_execution_oracle.d.ts +0 -215
- package/dest/private/private_execution_oracle.d.ts.map +0 -1
- package/dest/private/private_execution_oracle.js +0 -382
- package/dest/private/providers/acvm_native.d.ts +0 -40
- package/dest/private/providers/acvm_native.d.ts.map +0 -1
- package/dest/private/providers/acvm_wasm.d.ts +0 -15
- package/dest/private/providers/acvm_wasm.d.ts.map +0 -1
- package/dest/private/providers/acvm_wasm.js +0 -62
- package/dest/private/providers/acvm_wasm_with_blobs.d.ts +0 -19
- package/dest/private/providers/acvm_wasm_with_blobs.d.ts.map +0 -1
- package/dest/private/providers/acvm_wasm_with_blobs.js +0 -32
- package/dest/private/providers/factory.d.ts +0 -12
- package/dest/private/providers/factory.d.ts.map +0 -1
- package/dest/private/providers/simulation_provider.d.ts +0 -19
- package/dest/private/providers/simulation_provider.d.ts.map +0 -1
- package/dest/private/providers/simulation_provider.js +0 -24
- package/dest/private/simulator.d.ts +0 -34
- package/dest/private/simulator.d.ts.map +0 -1
- package/dest/private/simulator.js +0 -76
- package/dest/private/unconstrained_execution.d.ts +0 -10
- package/dest/private/unconstrained_execution.d.ts.map +0 -1
- package/dest/private/unconstrained_execution.js +0 -27
- package/dest/private/unconstrained_execution_oracle.d.ts +0 -161
- package/dest/private/unconstrained_execution_oracle.d.ts.map +0 -1
- package/dest/private/unconstrained_execution_oracle.js +0 -258
- package/dest/public/avm/bytecode_utils.d.ts +0 -5
- package/dest/public/avm/bytecode_utils.d.ts.map +0 -1
- package/dest/public/avm/bytecode_utils.js +0 -17
- package/dest/public/avm/fixtures/index.d.ts +0 -84
- package/dest/public/avm/fixtures/index.d.ts.map +0 -1
- package/dest/public/avm/fixtures/index.js +0 -175
- package/dest/public/avm/fixtures/simple_contract_data_source.d.ts +0 -35
- package/dest/public/avm/fixtures/simple_contract_data_source.d.ts.map +0 -1
- package/dest/public/avm/journal/index.d.ts +0 -2
- package/dest/public/avm/journal/index.d.ts.map +0 -1
- package/dest/public/avm/journal/index.js +0 -1
- package/dest/public/avm/journal/journal.d.ts +0 -209
- package/dest/public/avm/journal/journal.d.ts.map +0 -1
- package/dest/public/avm/journal/journal.js +0 -486
- package/dest/public/avm/journal/nullifiers.d.ts.map +0 -1
- package/dest/public/avm/journal/public_storage.d.ts.map +0 -1
- package/dest/public/bytecode_errors.d.ts +0 -4
- package/dest/public/bytecode_errors.d.ts.map +0 -1
- package/dest/public/bytecode_errors.js +0 -6
- package/dest/public/execution.d.ts +0 -108
- package/dest/public/execution.d.ts.map +0 -1
- package/dest/public/execution.js +0 -9
- package/dest/public/tx_contract_cache.d.ts +0 -41
- package/dest/public/tx_contract_cache.d.ts.map +0 -1
- package/dest/public/tx_contract_cache.js +0 -49
- package/dest/test/utils.d.ts +0 -13
- package/dest/test/utils.d.ts.map +0 -1
- package/dest/test/utils.js +0 -22
- package/src/common/db_interfaces.ts +0 -94
- package/src/common/debug_fn_name.ts +0 -18
- package/src/common/message_load_oracle_inputs.ts +0 -15
- package/src/private/acvm/oracle/index.ts +0 -16
- package/src/private/acvm/oracle/oracle.ts +0 -455
- package/src/private/acvm/oracle/typed_oracle.ts +0 -259
- package/src/private/execution_data_provider.ts +0 -323
- package/src/private/execution_note_cache.ts +0 -217
- package/src/private/hashed_values_cache.ts +0 -55
- package/src/private/index.ts +0 -16
- package/src/private/pick_notes.ts +0 -141
- package/src/private/private_execution.ts +0 -151
- package/src/private/private_execution_oracle.ts +0 -614
- package/src/private/providers/acvm_wasm.ts +0 -63
- package/src/private/providers/acvm_wasm_with_blobs.ts +0 -50
- package/src/private/providers/simulation_provider.ts +0 -45
- package/src/private/simulator.ts +0 -147
- package/src/private/unconstrained_execution.ts +0 -50
- package/src/private/unconstrained_execution_oracle.ts +0 -373
- package/src/public/avm/bytecode_utils.ts +0 -17
- package/src/public/avm/fixtures/index.ts +0 -296
- package/src/public/avm/journal/index.ts +0 -1
- package/src/public/avm/journal/journal.ts +0 -742
- package/src/public/avm/opcodes/.eslintrc.cjs +0 -8
- package/src/public/bytecode_errors.ts +0 -6
- package/src/public/execution.ts +0 -140
- package/src/public/tx_contract_cache.ts +0 -69
- package/src/test/utils.ts +0 -36
|
@@ -1,41 +1,40 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
2
|
+
MAX_ENQUEUED_CALLS_PER_TX,
|
|
3
3
|
MAX_L2_TO_L1_MSGS_PER_TX,
|
|
4
4
|
MAX_NOTE_HASHES_PER_TX,
|
|
5
5
|
MAX_NULLIFIERS_PER_TX,
|
|
6
6
|
MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
|
|
7
|
-
NULLIFIER_SUBTREE_HEIGHT,
|
|
8
7
|
} from '@aztec/constants';
|
|
9
8
|
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
10
|
-
import { Fr } from '@aztec/foundation/
|
|
11
|
-
import { type Logger, createLogger } from '@aztec/foundation/log';
|
|
12
|
-
import { assertLength } from '@aztec/foundation/serialize';
|
|
9
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
10
|
+
import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
|
|
13
11
|
import {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
AvmAccumulatedData,
|
|
13
|
+
AvmAccumulatedDataArrayLengths,
|
|
14
|
+
AvmCircuitPublicInputs,
|
|
17
15
|
PublicDataWrite,
|
|
18
16
|
RevertCode,
|
|
19
17
|
} from '@aztec/stdlib/avm';
|
|
20
18
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
19
|
+
import { AllContractDeploymentData, type ContractDeploymentData } from '@aztec/stdlib/contract';
|
|
21
20
|
import type { SimulationError } from '@aztec/stdlib/errors';
|
|
22
|
-
import { computeTransactionFee } from '@aztec/stdlib/fees';
|
|
21
|
+
import { computeEffectiveGasFees, computeTransactionFee } from '@aztec/stdlib/fees';
|
|
23
22
|
import { Gas, GasSettings } from '@aztec/stdlib/gas';
|
|
24
|
-
import type { MerkleTreeReadOperations } from '@aztec/stdlib/interfaces/server';
|
|
25
23
|
import {
|
|
26
24
|
PrivateToAvmAccumulatedData,
|
|
27
25
|
PrivateToAvmAccumulatedDataArrayLengths,
|
|
28
|
-
|
|
26
|
+
PrivateToPublicAccumulatedData,
|
|
29
27
|
PublicCallRequest,
|
|
28
|
+
PublicCallRequestArrayLengths,
|
|
30
29
|
countAccumulatedItems,
|
|
31
|
-
mergeAccumulatedData,
|
|
32
30
|
} from '@aztec/stdlib/kernel';
|
|
33
|
-
import {
|
|
31
|
+
import { FlatPublicLogs } from '@aztec/stdlib/logs';
|
|
32
|
+
import { ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
|
|
34
33
|
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
35
34
|
import {
|
|
36
35
|
type GlobalVariables,
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
ProtocolContracts,
|
|
37
|
+
PublicCallRequestWithCalldata,
|
|
39
38
|
TreeSnapshots,
|
|
40
39
|
type Tx,
|
|
41
40
|
TxExecutionPhase,
|
|
@@ -45,10 +44,11 @@ import {
|
|
|
45
44
|
import { strict as assert } from 'assert';
|
|
46
45
|
import { inspect } from 'util';
|
|
47
46
|
|
|
48
|
-
import {
|
|
49
|
-
import type {
|
|
50
|
-
import {
|
|
51
|
-
import {
|
|
47
|
+
import type { PublicContractsDBInterface } from '../db_interfaces.js';
|
|
48
|
+
import type { PublicTreesDB } from '../public_db_sources.js';
|
|
49
|
+
import { SideEffectTrace } from '../side_effect_trace.js';
|
|
50
|
+
import { PublicPersistableStateManager } from '../state_manager/state_manager.js';
|
|
51
|
+
import { getCallRequestsWithCalldataByPhase } from '../utils.js';
|
|
52
52
|
|
|
53
53
|
/**
|
|
54
54
|
* The transaction-level context for public execution.
|
|
@@ -67,79 +67,85 @@ export class PublicTxContext {
|
|
|
67
67
|
private revertCode: RevertCode = RevertCode.OK;
|
|
68
68
|
/* What caused a revert (if one occurred)? */
|
|
69
69
|
public revertReason: SimulationError | undefined;
|
|
70
|
-
|
|
71
|
-
public avmProvingRequest: AvmProvingRequest | undefined; // FIXME(dbanks12): remove
|
|
72
|
-
|
|
73
|
-
constructor(
|
|
70
|
+
private constructor(
|
|
74
71
|
public readonly txHash: TxHash,
|
|
75
72
|
public readonly state: PhaseStateManager,
|
|
73
|
+
private readonly startTreeSnapshots: TreeSnapshots,
|
|
76
74
|
private readonly globalVariables: GlobalVariables,
|
|
77
|
-
private readonly
|
|
75
|
+
private readonly protocolContracts: ProtocolContracts,
|
|
76
|
+
private readonly proverId: Fr,
|
|
78
77
|
private readonly gasSettings: GasSettings,
|
|
79
78
|
private readonly gasUsedByPrivate: Gas,
|
|
80
79
|
private readonly gasAllocatedToPublic: Gas,
|
|
81
|
-
private readonly
|
|
82
|
-
private readonly
|
|
83
|
-
private readonly
|
|
84
|
-
private readonly
|
|
85
|
-
|
|
86
|
-
|
|
80
|
+
private readonly gasAllocatedToPublicTeardown: Gas,
|
|
81
|
+
private readonly setupCallRequests: PublicCallRequestWithCalldata[],
|
|
82
|
+
private readonly appLogicCallRequests: PublicCallRequestWithCalldata[],
|
|
83
|
+
private readonly teardownCallRequests: PublicCallRequestWithCalldata[],
|
|
84
|
+
public readonly nonRevertibleContractDeploymentData: ContractDeploymentData,
|
|
85
|
+
public readonly revertibleContractDeploymentData: ContractDeploymentData,
|
|
87
86
|
public readonly nonRevertibleAccumulatedDataFromPrivate: PrivateToPublicAccumulatedData,
|
|
88
87
|
public readonly revertibleAccumulatedDataFromPrivate: PrivateToPublicAccumulatedData,
|
|
89
88
|
public readonly feePayer: AztecAddress,
|
|
90
|
-
|
|
89
|
+
private readonly trace: SideEffectTrace,
|
|
90
|
+
bindings?: LoggerBindings,
|
|
91
91
|
) {
|
|
92
|
-
this.log = createLogger(`simulator:public_tx_context
|
|
92
|
+
this.log = createLogger(`simulator:public_tx_context`, bindings);
|
|
93
93
|
}
|
|
94
94
|
|
|
95
95
|
public static async create(
|
|
96
|
-
|
|
97
|
-
|
|
96
|
+
treesDB: PublicTreesDB,
|
|
97
|
+
contractsDB: PublicContractsDBInterface,
|
|
98
98
|
tx: Tx,
|
|
99
99
|
globalVariables: GlobalVariables,
|
|
100
|
-
|
|
100
|
+
protocolContracts: ProtocolContracts,
|
|
101
|
+
proverId: Fr,
|
|
102
|
+
bindings?: LoggerBindings,
|
|
101
103
|
) {
|
|
104
|
+
const contractDeploymentData = AllContractDeploymentData.fromTx(tx);
|
|
105
|
+
const nonRevertibleContractDeploymentData = contractDeploymentData.getNonRevertibleContractDeploymentData();
|
|
106
|
+
const revertibleContractDeploymentData = contractDeploymentData.getRevertibleContractDeploymentData();
|
|
102
107
|
const nonRevertibleAccumulatedDataFromPrivate = tx.data.forPublic!.nonRevertibleAccumulatedData;
|
|
103
108
|
|
|
104
|
-
const
|
|
105
|
-
/*publicDataWrites*/ 0,
|
|
106
|
-
/*protocolPublicDataWrites*/ 0,
|
|
107
|
-
/*noteHashes*/ 0,
|
|
108
|
-
/*nullifiers=*/ 0,
|
|
109
|
-
countAccumulatedItems(nonRevertibleAccumulatedDataFromPrivate.l2ToL1Msgs),
|
|
110
|
-
/*publicLogs*/ 0,
|
|
111
|
-
);
|
|
112
|
-
|
|
113
|
-
const trace = new SideEffectTrace(/*startSideEffectCounter=*/ 0, previousAccumulatedDataArrayLengths);
|
|
109
|
+
const trace = new SideEffectTrace(0, bindings);
|
|
114
110
|
|
|
115
111
|
const firstNullifier = nonRevertibleAccumulatedDataFromPrivate.nullifiers[0];
|
|
116
112
|
|
|
117
113
|
// Transaction level state manager that will be forked for revertible phases.
|
|
118
|
-
const txStateManager =
|
|
114
|
+
const txStateManager = PublicPersistableStateManager.create(
|
|
115
|
+
treesDB,
|
|
116
|
+
contractsDB,
|
|
117
|
+
trace,
|
|
118
|
+
firstNullifier,
|
|
119
|
+
globalVariables.timestamp,
|
|
120
|
+
bindings,
|
|
121
|
+
);
|
|
119
122
|
|
|
120
123
|
const gasSettings = tx.data.constants.txContext.gasSettings;
|
|
121
124
|
const gasUsedByPrivate = tx.data.gasUsed;
|
|
122
|
-
|
|
123
|
-
const
|
|
125
|
+
const gasAllocatedToPublic = gasSettings.gasLimits.sub(gasUsedByPrivate);
|
|
126
|
+
const gasAllocatedToPublicTeardown = gasSettings.teardownGasLimits;
|
|
124
127
|
|
|
125
128
|
return new PublicTxContext(
|
|
126
|
-
|
|
127
|
-
new PhaseStateManager(txStateManager),
|
|
129
|
+
tx.getTxHash(),
|
|
130
|
+
new PhaseStateManager(txStateManager, bindings),
|
|
131
|
+
await txStateManager.getTreeSnapshots(),
|
|
128
132
|
globalVariables,
|
|
129
|
-
|
|
133
|
+
protocolContracts,
|
|
134
|
+
proverId,
|
|
130
135
|
gasSettings,
|
|
131
136
|
gasUsedByPrivate,
|
|
132
137
|
gasAllocatedToPublic,
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
138
|
+
gasAllocatedToPublicTeardown,
|
|
139
|
+
getCallRequestsWithCalldataByPhase(tx, TxExecutionPhase.SETUP),
|
|
140
|
+
getCallRequestsWithCalldataByPhase(tx, TxExecutionPhase.APP_LOGIC),
|
|
141
|
+
getCallRequestsWithCalldataByPhase(tx, TxExecutionPhase.TEARDOWN),
|
|
142
|
+
nonRevertibleContractDeploymentData,
|
|
143
|
+
revertibleContractDeploymentData,
|
|
139
144
|
tx.data.forPublic!.nonRevertibleAccumulatedData,
|
|
140
145
|
tx.data.forPublic!.revertibleAccumulatedData,
|
|
141
146
|
tx.data.feePayer,
|
|
142
147
|
trace,
|
|
148
|
+
bindings,
|
|
143
149
|
);
|
|
144
150
|
}
|
|
145
151
|
|
|
@@ -148,10 +154,8 @@ export class PublicTxContext {
|
|
|
148
154
|
* All phases have been processed.
|
|
149
155
|
* Actual transaction fee and actual total consumed gas can now be queried.
|
|
150
156
|
*/
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
await this.state.mergeForkedState();
|
|
154
|
-
}
|
|
157
|
+
halt() {
|
|
158
|
+
assert(!this.state.isForked(), 'Cannot halt when state is forked');
|
|
155
159
|
this.halted = true;
|
|
156
160
|
}
|
|
157
161
|
|
|
@@ -161,7 +165,7 @@ export class PublicTxContext {
|
|
|
161
165
|
* NOTE: this does not "halt" the entire transaction execution.
|
|
162
166
|
*/
|
|
163
167
|
revert(phase: TxExecutionPhase, revertReason: SimulationError | undefined = undefined, culprit = '') {
|
|
164
|
-
this.log.warn(`${TxExecutionPhase[phase]} phase reverted! ${culprit} failed with reason: ${revertReason}`);
|
|
168
|
+
this.log.warn(`${TxExecutionPhase[phase]} phase reverted! ${culprit} failed with reason: ${revertReason?.message}`);
|
|
165
169
|
|
|
166
170
|
if (revertReason && !this.revertReason) {
|
|
167
171
|
// don't override revertReason
|
|
@@ -170,19 +174,8 @@ export class PublicTxContext {
|
|
|
170
174
|
}
|
|
171
175
|
if (phase === TxExecutionPhase.SETUP) {
|
|
172
176
|
this.log.warn(`Setup phase reverted! The transaction will be thrown out.`);
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
} else {
|
|
176
|
-
throw new Error(`Setup phase reverted! The transaction will be thrown out. ${culprit} failed`);
|
|
177
|
-
}
|
|
178
|
-
} else if (phase === TxExecutionPhase.APP_LOGIC) {
|
|
179
|
-
this.revertCode = RevertCode.APP_LOGIC_REVERTED;
|
|
180
|
-
} else if (phase === TxExecutionPhase.TEARDOWN) {
|
|
181
|
-
if (this.revertCode.equals(RevertCode.APP_LOGIC_REVERTED)) {
|
|
182
|
-
this.revertCode = RevertCode.BOTH_REVERTED;
|
|
183
|
-
} else {
|
|
184
|
-
this.revertCode = RevertCode.TEARDOWN_REVERTED;
|
|
185
|
-
}
|
|
177
|
+
} else if (phase === TxExecutionPhase.APP_LOGIC || phase === TxExecutionPhase.TEARDOWN) {
|
|
178
|
+
this.revertCode = RevertCode.REVERTED;
|
|
186
179
|
}
|
|
187
180
|
}
|
|
188
181
|
|
|
@@ -212,7 +205,7 @@ export class PublicTxContext {
|
|
|
212
205
|
/**
|
|
213
206
|
* Get the call requests for the specified phase (including args hashes).
|
|
214
207
|
*/
|
|
215
|
-
getCallRequestsForPhase(phase: TxExecutionPhase):
|
|
208
|
+
getCallRequestsForPhase(phase: TxExecutionPhase): PublicCallRequestWithCalldata[] {
|
|
216
209
|
switch (phase) {
|
|
217
210
|
case TxExecutionPhase.SETUP:
|
|
218
211
|
return this.setupCallRequests;
|
|
@@ -223,26 +216,13 @@ export class PublicTxContext {
|
|
|
223
216
|
}
|
|
224
217
|
}
|
|
225
218
|
|
|
226
|
-
/**
|
|
227
|
-
* Get the call requests for the specified phase (including actual args).
|
|
228
|
-
*/
|
|
229
|
-
getExecutionRequestsForPhase(phase: TxExecutionPhase): PublicExecutionRequest[] {
|
|
230
|
-
switch (phase) {
|
|
231
|
-
case TxExecutionPhase.SETUP:
|
|
232
|
-
return this.setupExecutionRequests;
|
|
233
|
-
case TxExecutionPhase.APP_LOGIC:
|
|
234
|
-
return this.appLogicExecutionRequests;
|
|
235
|
-
case TxExecutionPhase.TEARDOWN:
|
|
236
|
-
return this.teardownExecutionRequests;
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
|
|
240
219
|
/**
|
|
241
220
|
* How much gas is left as of the specified phase?
|
|
242
221
|
*/
|
|
243
222
|
getGasLeftAtPhase(phase: TxExecutionPhase): Gas {
|
|
244
223
|
if (phase === TxExecutionPhase.TEARDOWN) {
|
|
245
|
-
|
|
224
|
+
const gasLeftForPublicTeardown = this.gasAllocatedToPublicTeardown.sub(this.teardownGasUsed);
|
|
225
|
+
return gasLeftForPublicTeardown;
|
|
246
226
|
} else {
|
|
247
227
|
const gasLeftForPublic = this.gasAllocatedToPublic.sub(this.gasUsedByPublic);
|
|
248
228
|
return gasLeftForPublic;
|
|
@@ -261,8 +241,12 @@ export class PublicTxContext {
|
|
|
261
241
|
}
|
|
262
242
|
|
|
263
243
|
/**
|
|
264
|
-
* The gasUsed by public and private,
|
|
265
|
-
*
|
|
244
|
+
* The gasUsed by public and private, as if the entire teardown gas limit was consumed.
|
|
245
|
+
*
|
|
246
|
+
* This is intentional: teardown is used for gas accounting and refunds, so the transaction
|
|
247
|
+
* fee must be deterministic _before_ teardown executes. If fees depended on teardown's actual
|
|
248
|
+
* consumption there would be a circular dependency. Billing the full teardown gas limit
|
|
249
|
+
* (set by the user) makes the fee known in advance and available to the teardown function.
|
|
266
250
|
*/
|
|
267
251
|
getTotalGasUsed(): Gas {
|
|
268
252
|
return this.gasUsedByPrivate.add(this.gasUsedByPublic);
|
|
@@ -322,124 +306,125 @@ export class PublicTxContext {
|
|
|
322
306
|
/**
|
|
323
307
|
* Generate the public inputs for the AVM circuit.
|
|
324
308
|
*/
|
|
325
|
-
|
|
309
|
+
public async generateAvmCircuitPublicInputs(): Promise<AvmCircuitPublicInputs> {
|
|
326
310
|
assert(this.halted, 'Can only get AvmCircuitPublicInputs after tx execution ends');
|
|
327
311
|
const stateManager = this.state.getActiveStateManager();
|
|
328
312
|
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
313
|
+
// We get the side effects from the AVM.
|
|
314
|
+
// The AVM will already have handled the conditional insertion of most private side-effects.
|
|
315
|
+
// (depending on the revert code of each stage). Only l2ToL1Msgs and publicLogs still need to be "merged".
|
|
316
|
+
const {
|
|
317
|
+
publicDataWrites: avmPublicDataWrites,
|
|
318
|
+
noteHashes: avmNoteHashes,
|
|
319
|
+
nullifiers: avmNullifiers,
|
|
320
|
+
l2ToL1Msgs: avmL2ToL1Msgs,
|
|
321
|
+
publicLogs: avmPublicLogs,
|
|
322
|
+
} = this.trace.getSideEffects();
|
|
323
|
+
|
|
324
|
+
// Private generates PrivateLogs, and public execution generates PublicLogs.
|
|
325
|
+
// Since these are two different categories, they should not be merged.
|
|
326
|
+
const finalPublicLogs = avmPublicLogs;
|
|
327
|
+
|
|
328
|
+
// We squash public data writes.
|
|
329
|
+
// Maps slot to value. Maps in TS are iterable in insertion order, which is exactly what we want for
|
|
330
|
+
// squashing "to the left", where the first occurrence of a slot uses the value of the last write to it,
|
|
331
|
+
// and the rest occurrences are omitted.
|
|
332
|
+
// Note: you can't write public state from private, so we only squash what we got from the AVM.
|
|
333
|
+
const finalPublicDataWrites = (() => {
|
|
334
|
+
const squashedPublicDataWrites: Map<bigint, Fr> = new Map();
|
|
335
|
+
for (const publicDataWrite of avmPublicDataWrites) {
|
|
336
|
+
squashedPublicDataWrites.set(publicDataWrite.leafSlot.toBigInt(), publicDataWrite.newValue);
|
|
337
|
+
}
|
|
338
|
+
return Array.from(squashedPublicDataWrites.entries()).map(
|
|
339
|
+
([slot, value]) => new PublicDataWrite(new Fr(slot), value),
|
|
340
|
+
);
|
|
341
|
+
})();
|
|
342
|
+
|
|
343
|
+
// Count before padding.
|
|
344
|
+
const accumulatedDataArrayLengths = new AvmAccumulatedDataArrayLengths(
|
|
345
|
+
avmNoteHashes.length,
|
|
346
|
+
avmNullifiers.length,
|
|
347
|
+
avmL2ToL1Msgs.length,
|
|
348
|
+
finalPublicDataWrites.length,
|
|
334
349
|
);
|
|
335
350
|
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
351
|
+
const accumulatedData = new AvmAccumulatedData(
|
|
352
|
+
/*noteHashes=*/ padArrayEnd(
|
|
353
|
+
avmNoteHashes.map(n => n.value),
|
|
354
|
+
Fr.zero(),
|
|
355
|
+
MAX_NOTE_HASHES_PER_TX,
|
|
356
|
+
),
|
|
357
|
+
/*nullifiers=*/ padArrayEnd(
|
|
358
|
+
avmNullifiers.map(n => n.value),
|
|
359
|
+
Fr.zero(),
|
|
360
|
+
MAX_NULLIFIERS_PER_TX,
|
|
361
|
+
),
|
|
362
|
+
/*l2ToL1Msgs=*/ padArrayEnd(avmL2ToL1Msgs, ScopedL2ToL1Message.empty(), MAX_L2_TO_L1_MSGS_PER_TX),
|
|
363
|
+
/*publicLogs=*/ FlatPublicLogs.fromLogs(finalPublicLogs),
|
|
364
|
+
/*publicDataWrites=*/ padArrayEnd(
|
|
365
|
+
finalPublicDataWrites,
|
|
366
|
+
PublicDataWrite.empty(),
|
|
367
|
+
MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
|
|
368
|
+
),
|
|
342
369
|
);
|
|
343
370
|
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
/*teardownCallRequest=*/ this.teardownCallRequests.length
|
|
353
|
-
? this.teardownCallRequests[0]
|
|
354
|
-
: PublicCallRequest.empty(),
|
|
355
|
-
endTreeSnapshots,
|
|
356
|
-
/*endGasUsed=*/ this.getTotalGasUsed(),
|
|
357
|
-
/*transactionFee=*/ this.getTransactionFeeUnsafe(),
|
|
358
|
-
/*reverted=*/ !this.revertCode.isOK(),
|
|
359
|
-
);
|
|
371
|
+
// Now we finally have enough information to pad the trees.
|
|
372
|
+
// NOTE(fcarreiro): a bit weird that a method that generates the PIs does this,
|
|
373
|
+
// but we do need the end tree snapshots. We can consider moving things to the caller.
|
|
374
|
+
const numNoteHashesToPad = MAX_NOTE_HASHES_PER_TX - avmNoteHashes.length;
|
|
375
|
+
const numNullifiersToPad = MAX_NULLIFIERS_PER_TX - avmNullifiers.length;
|
|
376
|
+
await stateManager.padTree(MerkleTreeId.NOTE_HASH_TREE, numNoteHashesToPad);
|
|
377
|
+
await stateManager.padTree(MerkleTreeId.NULLIFIER_TREE, numNullifiersToPad);
|
|
378
|
+
const endTreeSnapshots = await stateManager.getTreeSnapshots();
|
|
360
379
|
|
|
361
|
-
|
|
380
|
+
// This converts the private accumulated data to the avm accumulated data format.
|
|
381
|
+
const convertAccumulatedData = (from: PrivateToPublicAccumulatedData) =>
|
|
382
|
+
new PrivateToAvmAccumulatedData(from.noteHashes, from.nullifiers, from.l2ToL1Msgs);
|
|
383
|
+
const getPreviousAccumulatedDataArrayLengths = (from: PrivateToPublicAccumulatedData) =>
|
|
362
384
|
new PrivateToAvmAccumulatedDataArrayLengths(
|
|
363
385
|
countAccumulatedItems(from.noteHashes),
|
|
364
386
|
countAccumulatedItems(from.nullifiers),
|
|
365
387
|
countAccumulatedItems(from.l2ToL1Msgs),
|
|
366
388
|
);
|
|
367
|
-
const convertAccumulatedData = (from: PrivateToPublicAccumulatedData) =>
|
|
368
|
-
new PrivateToAvmAccumulatedData(from.noteHashes, from.nullifiers, from.l2ToL1Msgs);
|
|
369
|
-
// Temporary overrides as these entries aren't yet populated in trace
|
|
370
|
-
avmCircuitPublicInputs.previousNonRevertibleAccumulatedDataArrayLengths = getArrayLengths(
|
|
371
|
-
this.nonRevertibleAccumulatedDataFromPrivate,
|
|
372
|
-
);
|
|
373
|
-
avmCircuitPublicInputs.previousRevertibleAccumulatedDataArrayLengths = getArrayLengths(
|
|
374
|
-
this.revertibleAccumulatedDataFromPrivate,
|
|
375
|
-
);
|
|
376
|
-
avmCircuitPublicInputs.previousNonRevertibleAccumulatedData = convertAccumulatedData(
|
|
377
|
-
this.nonRevertibleAccumulatedDataFromPrivate,
|
|
378
|
-
);
|
|
379
|
-
avmCircuitPublicInputs.previousRevertibleAccumulatedData = convertAccumulatedData(
|
|
380
|
-
this.revertibleAccumulatedDataFromPrivate,
|
|
381
|
-
);
|
|
382
|
-
|
|
383
|
-
const msgsFromPrivate = this.revertCode.isOK()
|
|
384
|
-
? mergeAccumulatedData(
|
|
385
|
-
avmCircuitPublicInputs.previousNonRevertibleAccumulatedData.l2ToL1Msgs,
|
|
386
|
-
avmCircuitPublicInputs.previousRevertibleAccumulatedData.l2ToL1Msgs,
|
|
387
|
-
)
|
|
388
|
-
: avmCircuitPublicInputs.previousNonRevertibleAccumulatedData.l2ToL1Msgs;
|
|
389
|
-
avmCircuitPublicInputs.accumulatedData.l2ToL1Msgs = assertLength(
|
|
390
|
-
mergeAccumulatedData(msgsFromPrivate, avmCircuitPublicInputs.accumulatedData.l2ToL1Msgs),
|
|
391
|
-
MAX_L2_TO_L1_MSGS_PER_TX,
|
|
392
|
-
);
|
|
393
|
-
|
|
394
|
-
// Maps slot to value. Maps in TS are iterable in insertion order, which is exactly what we want for
|
|
395
|
-
// squashing "to the left", where the first occurrence of a slot uses the value of the last write to it,
|
|
396
|
-
// and the rest occurrences are omitted
|
|
397
|
-
const squashedPublicDataWrites: Map<bigint, Fr> = new Map();
|
|
398
|
-
for (const publicDataWrite of avmCircuitPublicInputs.accumulatedData.publicDataWrites) {
|
|
399
|
-
squashedPublicDataWrites.set(publicDataWrite.leafSlot.toBigInt(), publicDataWrite.value);
|
|
400
|
-
}
|
|
401
|
-
|
|
402
|
-
avmCircuitPublicInputs.accumulatedData.publicDataWrites = padArrayEnd(
|
|
403
|
-
Array.from(squashedPublicDataWrites.entries()).map(([slot, value]) => new PublicDataWrite(new Fr(slot), value)),
|
|
404
|
-
PublicDataWrite.empty(),
|
|
405
|
-
MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
|
|
406
|
-
);
|
|
407
|
-
const numNoteHashesToPad =
|
|
408
|
-
MAX_NOTE_HASHES_PER_TX - countAccumulatedItems(avmCircuitPublicInputs.accumulatedData.noteHashes);
|
|
409
|
-
await stateManager.db.appendLeaves(MerkleTreeId.NOTE_HASH_TREE, padArrayEnd([], Fr.ZERO, numNoteHashesToPad));
|
|
410
|
-
const numNullifiersToPad =
|
|
411
|
-
MAX_NULLIFIERS_PER_TX - countAccumulatedItems(avmCircuitPublicInputs.accumulatedData.nullifiers);
|
|
412
|
-
await stateManager.db.batchInsert(
|
|
413
|
-
MerkleTreeId.NULLIFIER_TREE,
|
|
414
|
-
padArrayEnd([], Fr.ZERO, numNullifiersToPad).map(nullifier => nullifier.toBuffer()),
|
|
415
|
-
NULLIFIER_SUBTREE_HEIGHT,
|
|
416
|
-
);
|
|
417
|
-
|
|
418
|
-
const paddedState = await stateManager.db.getStateReference();
|
|
419
|
-
avmCircuitPublicInputs.endTreeSnapshots = new TreeSnapshots(
|
|
420
|
-
paddedState.l1ToL2MessageTree,
|
|
421
|
-
paddedState.partial.noteHashTree,
|
|
422
|
-
paddedState.partial.nullifierTree,
|
|
423
|
-
paddedState.partial.publicDataTree,
|
|
424
|
-
);
|
|
425
|
-
|
|
426
|
-
return avmCircuitPublicInputs;
|
|
427
|
-
}
|
|
428
389
|
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
390
|
+
return new AvmCircuitPublicInputs(
|
|
391
|
+
this.globalVariables,
|
|
392
|
+
this.protocolContracts,
|
|
393
|
+
this.startTreeSnapshots,
|
|
394
|
+
/*startGasUsed=*/ this.gasUsedByPrivate,
|
|
395
|
+
this.gasSettings,
|
|
396
|
+
computeEffectiveGasFees(this.globalVariables.gasFees, this.gasSettings),
|
|
397
|
+
this.feePayer,
|
|
398
|
+
this.proverId,
|
|
399
|
+
/*publicCallRequestArrayLengths=*/ new PublicCallRequestArrayLengths(
|
|
400
|
+
this.setupCallRequests.length,
|
|
401
|
+
this.appLogicCallRequests.length,
|
|
402
|
+
this.teardownCallRequests.length > 0,
|
|
403
|
+
),
|
|
404
|
+
/*publicSetupCallRequests=*/ padArrayEnd(
|
|
405
|
+
this.setupCallRequests.map(r => r.request),
|
|
406
|
+
PublicCallRequest.empty(),
|
|
407
|
+
MAX_ENQUEUED_CALLS_PER_TX,
|
|
441
408
|
),
|
|
442
|
-
|
|
409
|
+
/*publicAppLogicCallRequests=*/ padArrayEnd(
|
|
410
|
+
this.appLogicCallRequests.map(r => r.request),
|
|
411
|
+
PublicCallRequest.empty(),
|
|
412
|
+
MAX_ENQUEUED_CALLS_PER_TX,
|
|
413
|
+
),
|
|
414
|
+
/*publicTeardownCallRequests=*/ this.teardownCallRequests.length > 0
|
|
415
|
+
? this.teardownCallRequests[0].request
|
|
416
|
+
: PublicCallRequest.empty(),
|
|
417
|
+
getPreviousAccumulatedDataArrayLengths(this.nonRevertibleAccumulatedDataFromPrivate),
|
|
418
|
+
getPreviousAccumulatedDataArrayLengths(this.revertibleAccumulatedDataFromPrivate),
|
|
419
|
+
convertAccumulatedData(this.nonRevertibleAccumulatedDataFromPrivate),
|
|
420
|
+
convertAccumulatedData(this.revertibleAccumulatedDataFromPrivate),
|
|
421
|
+
endTreeSnapshots,
|
|
422
|
+
this.getTotalGasUsed(),
|
|
423
|
+
accumulatedDataArrayLengths,
|
|
424
|
+
accumulatedData,
|
|
425
|
+
/*transactionFee=*/ this.getTransactionFeeUnsafe(),
|
|
426
|
+
/*isReverted=*/ !this.revertCode.isOK(),
|
|
427
|
+
);
|
|
443
428
|
}
|
|
444
429
|
}
|
|
445
430
|
|
|
@@ -456,10 +441,13 @@ export class PublicTxContext {
|
|
|
456
441
|
class PhaseStateManager {
|
|
457
442
|
private log: Logger;
|
|
458
443
|
|
|
459
|
-
private currentlyActiveStateManager:
|
|
444
|
+
private currentlyActiveStateManager: PublicPersistableStateManager | undefined;
|
|
460
445
|
|
|
461
|
-
constructor(
|
|
462
|
-
|
|
446
|
+
constructor(
|
|
447
|
+
private readonly txStateManager: PublicPersistableStateManager,
|
|
448
|
+
bindings?: LoggerBindings,
|
|
449
|
+
) {
|
|
450
|
+
this.log = createLogger(`simulator:public_phase_state_manager`, bindings);
|
|
463
451
|
}
|
|
464
452
|
|
|
465
453
|
async fork() {
|
|
@@ -492,13 +480,3 @@ class PhaseStateManager {
|
|
|
492
480
|
this.currentlyActiveStateManager = undefined;
|
|
493
481
|
}
|
|
494
482
|
}
|
|
495
|
-
|
|
496
|
-
/**
|
|
497
|
-
* Apply L2 gas maximum.
|
|
498
|
-
*/
|
|
499
|
-
function applyMaxToAvailableGas(availableGas: Gas) {
|
|
500
|
-
return new Gas(
|
|
501
|
-
/*daGas=*/ availableGas.daGas,
|
|
502
|
-
/*l2Gas=*/ Math.min(availableGas.l2Gas, MAX_L2_GAS_PER_TX_PUBLIC_PORTION),
|
|
503
|
-
);
|
|
504
|
-
}
|