@aztec/pxe 0.0.1-commit.c2eed6949 → 0.0.1-commit.c52d6e7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/bin/check_oracle_version.js +11 -118
- package/dest/bin/index.d.ts +2 -0
- package/dest/bin/index.d.ts.map +1 -0
- package/dest/bin/index.js +1 -0
- package/dest/bin/oracle_version_helpers.d.ts +20 -0
- package/dest/bin/oracle_version_helpers.d.ts.map +1 -0
- package/dest/bin/oracle_version_helpers.js +25 -0
- package/dest/block_synchronizer/block_stream_source.d.ts +10 -0
- package/dest/block_synchronizer/block_stream_source.d.ts.map +1 -0
- package/dest/block_synchronizer/block_stream_source.js +37 -0
- package/dest/block_synchronizer/block_synchronizer.d.ts +22 -16
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
- package/dest/block_synchronizer/block_synchronizer.js +71 -28
- package/dest/config/index.d.ts +8 -1
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +13 -14
- package/dest/config/package_info.js +1 -1
- package/dest/contract/contract_class_service.d.ts +24 -0
- package/dest/contract/contract_class_service.d.ts.map +1 -0
- package/dest/contract/contract_class_service.js +36 -0
- package/dest/contract/contract_sync_service.d.ts +48 -0
- package/dest/contract/contract_sync_service.d.ts.map +1 -0
- package/dest/contract/contract_sync_service.js +116 -0
- package/dest/contract/helpers.d.ts +7 -0
- package/dest/contract/helpers.d.ts.map +1 -0
- package/dest/contract/helpers.js +20 -0
- package/dest/contract/skip_sync_contracts.d.ts +11 -0
- package/dest/contract/skip_sync_contracts.d.ts.map +1 -0
- package/dest/contract/skip_sync_contracts.js +18 -0
- package/dest/contract_function_simulator/anchored_contract_data.d.ts +36 -0
- package/dest/contract_function_simulator/anchored_contract_data.d.ts.map +1 -0
- package/dest/contract_function_simulator/anchored_contract_data.js +54 -0
- package/dest/contract_function_simulator/contract_function_simulator.d.ts +27 -28
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +86 -59
- package/dest/contract_function_simulator/ephemeral_array_service.d.ts +28 -0
- package/dest/contract_function_simulator/ephemeral_array_service.d.ts.map +1 -0
- package/dest/contract_function_simulator/ephemeral_array_service.js +78 -0
- package/dest/contract_function_simulator/execution_note_cache.d.ts +4 -10
- package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/execution_note_cache.js +8 -28
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +5 -9
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/execution_tagging_index_cache.js +3 -7
- package/dest/contract_function_simulator/index.d.ts +26 -6
- package/dest/contract_function_simulator/index.d.ts.map +1 -1
- package/dest/contract_function_simulator/index.js +11 -4
- package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts +29 -0
- package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/bounded_vec.js +30 -0
- package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts +9 -0
- package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/contract_class_log_data.js +1 -0
- package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts +7 -0
- package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/embedded_curve_point.js +1 -0
- package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts +37 -0
- package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/ephemeral_array.js +59 -0
- package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +5 -5
- package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/event_validation_request.js +7 -9
- package/dest/contract_function_simulator/noir-structs/fact.d.ts +16 -0
- package/dest/contract_function_simulator/noir-structs/fact.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/fact.js +6 -0
- package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts +27 -0
- package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/fact_collection.js +31 -0
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +19 -10
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +12 -24
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +11 -9
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +2 -61
- package/dest/contract_function_simulator/noir-structs/note_data.d.ts +27 -0
- package/dest/contract_function_simulator/noir-structs/note_data.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/note_data.js +3 -0
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +5 -5
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/note_validation_request.js +8 -10
- package/dest/contract_function_simulator/noir-structs/option.d.ts +59 -0
- package/dest/contract_function_simulator/noir-structs/option.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/option.js +67 -0
- package/dest/contract_function_simulator/noir-structs/origin_block.d.ts +11 -0
- package/dest/contract_function_simulator/noir-structs/origin_block.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/origin_block.js +5 -0
- package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts +11 -0
- package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/pending_tagged_log.js +4 -0
- package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts +8 -0
- package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/provided_secret.js +1 -0
- package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts +28 -0
- package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.js +50 -0
- package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts +19 -0
- package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/resolved_tx.js +9 -0
- package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts +15 -0
- package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/tx_effect_data.js +5 -0
- package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +6 -11
- package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
- package/dest/contract_function_simulator/noir-structs/utility_context.js +1 -20
- package/dest/contract_function_simulator/oracle/acir_callback.d.ts +21 -0
- package/dest/contract_function_simulator/oracle/acir_callback.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/acir_callback.js +115 -0
- package/dest/contract_function_simulator/oracle/index.d.ts +2 -13
- package/dest/contract_function_simulator/oracle/index.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/index.js +1 -1
- package/dest/contract_function_simulator/oracle/interfaces.d.ts +15 -103
- package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/interfaces.js +2 -2
- package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts +39 -0
- package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/legacy_oracle_registry.js +107 -0
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +3 -14
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +1 -24
- package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +2 -2
- package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/note_packing_utils.js +2 -2
- package/dest/contract_function_simulator/oracle/oracle_registry.d.ts +139 -0
- package/dest/contract_function_simulator/oracle/oracle_registry.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/oracle_registry.js +1016 -0
- package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts +274 -0
- package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/oracle_type_mappings.js +1253 -0
- package/dest/contract_function_simulator/oracle/private_execution.d.ts +1 -1
- package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution.js +3 -4
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +52 -42
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +197 -65
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +164 -77
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +607 -193
- package/dest/contract_function_simulator/pick_notes.d.ts +1 -1
- package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
- package/dest/contract_function_simulator/pick_notes.js +20 -3
- package/dest/contract_function_simulator/transient_array_service.d.ts +31 -0
- package/dest/contract_function_simulator/transient_array_service.d.ts.map +1 -0
- package/dest/contract_function_simulator/transient_array_service.js +62 -0
- package/dest/contract_logging.d.ts +9 -4
- package/dest/contract_logging.d.ts.map +1 -1
- package/dest/contract_logging.js +21 -6
- package/dest/debug/pxe_debug_utils.d.ts +4 -9
- package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
- package/dest/debug/pxe_debug_utils.js +0 -6
- package/dest/entrypoints/client/bundle/index.d.ts +2 -2
- package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/index.js +1 -1
- package/dest/entrypoints/client/bundle/utils.d.ts +2 -2
- package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/utils.js +27 -8
- package/dest/entrypoints/client/lazy/index.d.ts +2 -2
- package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/index.js +1 -1
- package/dest/entrypoints/client/lazy/utils.d.ts +2 -2
- package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/utils.js +27 -8
- package/dest/entrypoints/client/store.d.ts +14 -0
- package/dest/entrypoints/client/store.d.ts.map +1 -0
- package/dest/entrypoints/client/store.js +42 -0
- package/dest/entrypoints/pxe_creation_options.d.ts +16 -2
- package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
- package/dest/entrypoints/pxe_creation_options.js +3 -1
- package/dest/entrypoints/server/index.d.ts +7 -4
- package/dest/entrypoints/server/index.d.ts.map +1 -1
- package/dest/entrypoints/server/index.js +5 -3
- package/dest/entrypoints/server/store.d.ts +18 -0
- package/dest/entrypoints/server/store.d.ts.map +1 -0
- package/dest/entrypoints/server/store.js +28 -0
- package/dest/entrypoints/server/utils.d.ts +4 -3
- package/dest/entrypoints/server/utils.d.ts.map +1 -1
- package/dest/entrypoints/server/utils.js +28 -8
- package/dest/error_enriching.d.ts +5 -3
- package/dest/error_enriching.d.ts.map +1 -1
- package/dest/error_enriching.js +13 -11
- package/dest/events/event_service.d.ts +21 -5
- package/dest/events/event_service.d.ts.map +1 -1
- package/dest/events/event_service.js +50 -17
- package/dest/events/private_event_filter_validator.d.ts +3 -2
- package/dest/events/private_event_filter_validator.d.ts.map +1 -1
- package/dest/events/private_event_filter_validator.js +15 -0
- package/dest/hooks/authorize_utility_call.d.ts +41 -0
- package/dest/hooks/authorize_utility_call.d.ts.map +1 -0
- package/dest/hooks/authorize_utility_call.js +4 -0
- package/dest/hooks/execution_hooks.d.ts +62 -0
- package/dest/hooks/execution_hooks.d.ts.map +1 -0
- package/dest/hooks/execution_hooks.js +9 -0
- package/dest/hooks/index.d.ts +5 -0
- package/dest/hooks/index.d.ts.map +1 -0
- package/dest/hooks/index.js +2 -0
- package/dest/hooks/resolve_custom_request.d.ts +23 -0
- package/dest/hooks/resolve_custom_request.d.ts.map +1 -0
- package/dest/hooks/resolve_custom_request.js +3 -0
- package/dest/hooks/resolve_tagging_secret_strategy.d.ts +50 -0
- package/dest/hooks/resolve_tagging_secret_strategy.d.ts.map +1 -0
- package/dest/hooks/resolve_tagging_secret_strategy.js +3 -0
- package/dest/logs/log_service.d.ts +21 -11
- package/dest/logs/log_service.d.ts.map +1 -1
- package/dest/logs/log_service.js +180 -82
- package/dest/messages/tx_resolver_service.d.ts +28 -0
- package/dest/messages/tx_resolver_service.d.ts.map +1 -0
- package/dest/messages/tx_resolver_service.js +61 -0
- package/dest/node/benchmarked_node.d.ts +20 -0
- package/dest/node/benchmarked_node.d.ts.map +1 -0
- package/dest/node/benchmarked_node.js +94 -0
- package/dest/node/caching_aztec_node.d.ts +24 -0
- package/dest/node/caching_aztec_node.d.ts.map +1 -0
- package/dest/node/caching_aztec_node.js +267 -0
- package/dest/notes/note_service.d.ts +34 -7
- package/dest/notes/note_service.d.ts.map +1 -1
- package/dest/notes/note_service.js +81 -57
- package/dest/notes_filter.d.ts +2 -3
- package/dest/notes_filter.d.ts.map +1 -1
- package/dest/oracle_version.d.ts +4 -3
- package/dest/oracle_version.d.ts.map +1 -1
- package/dest/oracle_version.js +20 -10
- package/dest/private_kernel/batch_planner.d.ts +47 -0
- package/dest/private_kernel/batch_planner.d.ts.map +1 -0
- package/dest/private_kernel/batch_planner.js +104 -0
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +1 -1
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -1
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +7 -3
- package/dest/private_kernel/hints/test_utils.d.ts +1 -1
- package/dest/private_kernel/hints/test_utils.d.ts.map +1 -1
- package/dest/private_kernel/hints/test_utils.js +3 -4
- package/dest/private_kernel/private_kernel_execution_prover.d.ts +6 -2
- package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.js +203 -89
- package/dest/private_kernel/private_kernel_oracle.d.ts +12 -10
- package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_oracle.js +40 -26
- package/dest/pxe.d.ts +167 -55
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +366 -216
- package/dest/storage/allowed_scopes.d.ts +6 -0
- package/dest/storage/allowed_scopes.d.ts.map +1 -0
- package/dest/storage/allowed_scopes.js +7 -0
- package/dest/storage/anchor_block_store/anchor_block_store.d.ts +9 -6
- package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -1
- package/dest/storage/anchor_block_store/anchor_block_store.js +9 -7
- package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts +42 -0
- package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts.map +1 -0
- package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.js +93 -0
- package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts +15 -0
- package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts.map +1 -0
- package/dest/storage/backwards_compatibility_tests/schema_tests.js +671 -0
- package/dest/storage/backwards_compatibility_tests/store_spy.d.ts +19 -0
- package/dest/storage/backwards_compatibility_tests/store_spy.d.ts.map +1 -0
- package/dest/storage/backwards_compatibility_tests/store_spy.js +63 -0
- package/dest/storage/capsule_store/capsule_service.d.ts +21 -0
- package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -0
- package/dest/storage/capsule_store/capsule_service.js +47 -0
- package/dest/storage/capsule_store/capsule_store.d.ts +9 -9
- package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -1
- package/dest/storage/capsule_store/capsule_store.js +36 -28
- package/dest/storage/capsule_store/index.d.ts +2 -1
- package/dest/storage/capsule_store/index.d.ts.map +1 -1
- package/dest/storage/capsule_store/index.js +1 -0
- package/dest/storage/contract_store/contract_store.d.ts +27 -24
- package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
- package/dest/storage/contract_store/contract_store.js +71 -99
- package/dest/storage/fact_store/fact_service.d.ts +22 -0
- package/dest/storage/fact_store/fact_service.d.ts.map +1 -0
- package/dest/storage/fact_store/fact_service.js +45 -0
- package/dest/storage/fact_store/fact_store.d.ts +95 -0
- package/dest/storage/fact_store/fact_store.d.ts.map +1 -0
- package/dest/storage/fact_store/fact_store.js +408 -0
- package/dest/storage/fact_store/fact_store_keys.d.ts +34 -0
- package/dest/storage/fact_store/fact_store_keys.d.ts.map +1 -0
- package/dest/storage/fact_store/fact_store_keys.js +50 -0
- package/dest/storage/fact_store/index.d.ts +6 -0
- package/dest/storage/fact_store/index.d.ts.map +1 -0
- package/dest/storage/fact_store/index.js +4 -0
- package/dest/storage/fact_store/origin_state.d.ts +59 -0
- package/dest/storage/fact_store/origin_state.d.ts.map +1 -0
- package/dest/storage/fact_store/origin_state.js +60 -0
- package/dest/storage/fact_store/stored_fact.d.ts +32 -0
- package/dest/storage/fact_store/stored_fact.d.ts.map +1 -0
- package/dest/storage/fact_store/stored_fact.js +64 -0
- package/dest/storage/index.d.ts +3 -2
- package/dest/storage/index.d.ts.map +1 -1
- package/dest/storage/index.js +2 -1
- package/dest/storage/metadata.d.ts +2 -2
- package/dest/storage/metadata.d.ts.map +1 -1
- package/dest/storage/metadata.js +1 -1
- package/dest/storage/note_store/note_store.d.ts +42 -33
- package/dest/storage/note_store/note_store.d.ts.map +1 -1
- package/dest/storage/note_store/note_store.js +199 -170
- package/dest/storage/note_store/stored_note.d.ts +3 -8
- package/dest/storage/note_store/stored_note.d.ts.map +1 -1
- package/dest/storage/note_store/stored_note.js +4 -20
- package/dest/storage/open_pxe_stores.d.ts +35 -0
- package/dest/storage/open_pxe_stores.d.ts.map +1 -0
- package/dest/storage/open_pxe_stores.js +29 -0
- package/dest/storage/private_event_store/private_event_store.d.ts +13 -16
- package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
- package/dest/storage/private_event_store/private_event_store.js +43 -43
- package/dest/storage/private_event_store/stored_private_event.js +1 -1
- package/dest/storage/store_identity.d.ts +35 -0
- package/dest/storage/store_identity.d.ts.map +1 -0
- package/dest/storage/store_identity.js +44 -0
- package/dest/storage/tagging_store/index.d.ts +2 -2
- package/dest/storage/tagging_store/index.d.ts.map +1 -1
- package/dest/storage/tagging_store/index.js +1 -1
- package/dest/storage/tagging_store/recipient_tagging_store.d.ts +6 -6
- package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -1
- package/dest/storage/tagging_store/sender_tagging_store.d.ts +44 -13
- package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
- package/dest/storage/tagging_store/sender_tagging_store.js +84 -32
- package/dest/storage/tagging_store/tagging_secret_sources_store.d.ts +51 -0
- package/dest/storage/tagging_store/tagging_secret_sources_store.d.ts.map +1 -0
- package/dest/storage/tagging_store/tagging_secret_sources_store.js +105 -0
- package/dest/tagging/constants.d.ts +11 -2
- package/dest/tagging/constants.d.ts.map +1 -1
- package/dest/tagging/constants.js +38 -10
- package/dest/tagging/get_all_logs_by_tags.d.ts +55 -10
- package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -1
- package/dest/tagging/get_all_logs_by_tags.js +53 -35
- package/dest/tagging/index.d.ts +7 -6
- package/dest/tagging/index.d.ts.map +1 -1
- package/dest/tagging/index.js +6 -5
- package/dest/tagging/persist_sender_tagging_index_ranges.d.ts +29 -0
- package/dest/tagging/persist_sender_tagging_index_ranges.d.ts.map +1 -0
- package/dest/tagging/persist_sender_tagging_index_ranges.js +42 -0
- package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts +74 -0
- package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts.map +1 -0
- package/dest/tagging/recipient_sync/sync_tagged_private_logs.js +234 -0
- package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts +3 -3
- package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts.map +1 -1
- package/dest/tagging/reconcile_tagging_index_ranges.d.ts +36 -0
- package/dest/tagging/reconcile_tagging_index_ranges.d.ts.map +1 -0
- package/dest/tagging/reconcile_tagging_index_ranges.js +74 -0
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +8 -6
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +24 -27
- package/dest/tagging/sender_sync/utils/classify_pending_txs.d.ts +22 -0
- package/dest/tagging/sender_sync/utils/classify_pending_txs.d.ts.map +1 -0
- package/dest/tagging/sender_sync/utils/classify_pending_txs.js +61 -0
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +17 -7
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +37 -36
- package/dest/tagging/sender_sync/utils/resolve_pending_txs.d.ts +29 -0
- package/dest/tagging/sender_sync/utils/resolve_pending_txs.d.ts.map +1 -0
- package/dest/tagging/sender_sync/utils/resolve_pending_txs.js +41 -0
- package/dest/tagging/sender_sync/utils/test_utils.d.ts +16 -0
- package/dest/tagging/sender_sync/utils/test_utils.d.ts.map +1 -0
- package/dest/tagging/sender_sync/utils/test_utils.js +24 -0
- package/dest/tagging/testing/tag_query_test_utils.d.ts +6 -0
- package/dest/tagging/testing/tag_query_test_utils.d.ts.map +1 -0
- package/dest/tagging/testing/tag_query_test_utils.js +10 -0
- package/package.json +20 -17
- package/src/bin/check_oracle_version.ts +10 -143
- package/src/bin/index.ts +1 -0
- package/src/bin/oracle_version_helpers.ts +30 -0
- package/src/block_synchronizer/block_stream_source.ts +42 -0
- package/src/block_synchronizer/block_synchronizer.ts +86 -40
- package/src/config/index.ts +15 -8
- package/src/config/package_info.ts +1 -1
- package/src/contract/contract_class_service.ts +45 -0
- package/src/contract/contract_sync_service.ts +176 -0
- package/src/contract/helpers.ts +35 -0
- package/src/contract/skip_sync_contracts.ts +23 -0
- package/src/contract_function_simulator/anchored_contract_data.ts +74 -0
- package/src/contract_function_simulator/contract_function_simulator.ts +140 -75
- package/src/contract_function_simulator/ephemeral_array_service.ts +110 -0
- package/src/contract_function_simulator/execution_note_cache.ts +8 -29
- package/src/contract_function_simulator/execution_tagging_index_cache.ts +5 -9
- package/src/contract_function_simulator/index.ts +89 -5
- package/src/contract_function_simulator/noir-structs/bounded_vec.ts +43 -0
- package/src/contract_function_simulator/noir-structs/contract_class_log_data.ts +9 -0
- package/src/contract_function_simulator/noir-structs/embedded_curve_point.ts +4 -0
- package/src/contract_function_simulator/noir-structs/ephemeral_array.ts +66 -0
- package/src/contract_function_simulator/noir-structs/event_validation_request.ts +5 -7
- package/src/contract_function_simulator/noir-structs/fact.ts +13 -0
- package/src/contract_function_simulator/noir-structs/fact_collection.ts +64 -0
- package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +27 -20
- package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +14 -61
- package/src/contract_function_simulator/noir-structs/note_data.ts +27 -0
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +6 -8
- package/src/contract_function_simulator/noir-structs/option.ts +75 -0
- package/src/contract_function_simulator/noir-structs/origin_block.ts +8 -0
- package/src/contract_function_simulator/noir-structs/pending_tagged_log.ts +12 -0
- package/src/contract_function_simulator/noir-structs/provided_secret.ts +5 -0
- package/src/contract_function_simulator/noir-structs/resolved_tagging_strategy.ts +66 -0
- package/src/contract_function_simulator/noir-structs/resolved_tx.ts +19 -0
- package/src/contract_function_simulator/noir-structs/tx_effect_data.ts +16 -0
- package/src/contract_function_simulator/noir-structs/utility_context.ts +5 -17
- package/src/contract_function_simulator/oracle/acir_callback.ts +154 -0
- package/src/contract_function_simulator/oracle/index.ts +1 -15
- package/src/contract_function_simulator/oracle/interfaces.ts +11 -176
- package/src/contract_function_simulator/oracle/legacy_oracle_registry.ts +147 -0
- package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +6 -21
- package/src/contract_function_simulator/oracle/note_packing_utils.ts +3 -3
- package/src/contract_function_simulator/oracle/oracle_registry.ts +710 -0
- package/src/contract_function_simulator/oracle/oracle_type_mappings.ts +1067 -0
- package/src/contract_function_simulator/oracle/private_execution.ts +3 -4
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +247 -83
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +890 -305
- package/src/contract_function_simulator/pick_notes.ts +22 -3
- package/src/contract_function_simulator/transient_array_service.ts +91 -0
- package/src/contract_logging.ts +18 -5
- package/src/debug/pxe_debug_utils.ts +4 -12
- package/src/entrypoints/client/bundle/index.ts +1 -1
- package/src/entrypoints/client/bundle/utils.ts +32 -8
- package/src/entrypoints/client/lazy/index.ts +1 -1
- package/src/entrypoints/client/lazy/utils.ts +32 -8
- package/src/entrypoints/client/store.ts +54 -0
- package/src/entrypoints/pxe_creation_options.ts +21 -1
- package/src/entrypoints/server/index.ts +7 -3
- package/src/entrypoints/server/store.ts +47 -0
- package/src/entrypoints/server/utils.ts +45 -14
- package/src/error_enriching.ts +27 -11
- package/src/events/event_service.ts +84 -26
- package/src/events/private_event_filter_validator.ts +21 -1
- package/src/hooks/authorize_utility_call.ts +44 -0
- package/src/hooks/execution_hooks.ts +68 -0
- package/src/hooks/index.ts +13 -0
- package/src/hooks/resolve_custom_request.ts +24 -0
- package/src/hooks/resolve_tagging_secret_strategy.ts +60 -0
- package/src/logs/log_service.ts +225 -145
- package/src/messages/tx_resolver_service.ts +80 -0
- package/src/node/benchmarked_node.ts +140 -0
- package/src/node/caching_aztec_node.ts +406 -0
- package/src/notes/note_service.ts +126 -86
- package/src/notes_filter.ts +1 -3
- package/src/oracle_version.ts +20 -10
- package/src/private_kernel/batch_planner.ts +168 -0
- package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +12 -2
- package/src/private_kernel/hints/test_utils.ts +3 -10
- package/src/private_kernel/private_kernel_execution_prover.ts +335 -121
- package/src/private_kernel/private_kernel_oracle.ts +58 -29
- package/src/pxe.ts +565 -249
- package/src/storage/allowed_scopes.ts +14 -0
- package/src/storage/anchor_block_store/anchor_block_store.ts +9 -7
- package/src/storage/backwards_compatibility_tests/__snapshots__/AddressStore.json +22 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/AnchorBlockStore.json +3 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/CapsuleStore.json +16 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/ContractStore.json +28 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/FactStore.json +40 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/KeyStore.json +52 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/L2TipsKVStore.json +40 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/NoteStore.json +56 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/PrivateEventStore.json +44 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/RecipientTaggingStore.json +26 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/SenderTaggingStore.json +30 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/TaggingSecretSourcesStore.json +30 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/opened_stores.json +117 -0
- package/src/storage/backwards_compatibility_tests/kv_store_snapshot.ts +122 -0
- package/src/storage/backwards_compatibility_tests/schema_tests.ts +803 -0
- package/src/storage/backwards_compatibility_tests/store_spy.ts +73 -0
- package/src/storage/capsule_store/capsule_service.ts +85 -0
- package/src/storage/capsule_store/capsule_store.ts +44 -26
- package/src/storage/capsule_store/index.ts +1 -0
- package/src/storage/contract_store/contract_store.ts +98 -125
- package/src/storage/fact_store/fact_service.ts +69 -0
- package/src/storage/fact_store/fact_store.ts +487 -0
- package/src/storage/fact_store/fact_store_keys.ts +75 -0
- package/src/storage/fact_store/index.ts +15 -0
- package/src/storage/fact_store/origin_state.ts +84 -0
- package/src/storage/fact_store/stored_fact.ts +80 -0
- package/src/storage/index.ts +2 -1
- package/src/storage/metadata.ts +1 -1
- package/src/storage/note_store/note_store.ts +228 -192
- package/src/storage/note_store/stored_note.ts +5 -27
- package/src/storage/open_pxe_stores.ts +52 -0
- package/src/storage/private_event_store/private_event_store.ts +52 -54
- package/src/storage/private_event_store/stored_private_event.ts +1 -1
- package/src/storage/store_identity.ts +72 -0
- package/src/storage/tagging_store/index.ts +1 -1
- package/src/storage/tagging_store/recipient_tagging_store.ts +5 -9
- package/src/storage/tagging_store/sender_tagging_store.ts +118 -46
- package/src/storage/tagging_store/tagging_secret_sources_store.ts +138 -0
- package/src/tagging/constants.ts +42 -10
- package/src/tagging/get_all_logs_by_tags.ts +113 -49
- package/src/tagging/index.ts +11 -5
- package/src/tagging/persist_sender_tagging_index_ranges.ts +57 -0
- package/src/tagging/recipient_sync/sync_tagged_private_logs.ts +355 -0
- package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +2 -2
- package/src/tagging/reconcile_tagging_index_ranges.ts +102 -0
- package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +30 -38
- package/src/tagging/sender_sync/utils/classify_pending_txs.ts +91 -0
- package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +48 -43
- package/src/tagging/sender_sync/utils/resolve_pending_txs.ts +64 -0
- package/src/tagging/sender_sync/utils/test_utils.ts +46 -0
- package/src/tagging/testing/tag_query_test_utils.ts +11 -0
- package/dest/access_scopes.d.ts +0 -9
- package/dest/access_scopes.d.ts.map +0 -1
- package/dest/access_scopes.js +0 -6
- package/dest/contract_function_simulator/benchmarked_node.d.ts +0 -9
- package/dest/contract_function_simulator/benchmarked_node.d.ts.map +0 -1
- package/dest/contract_function_simulator/benchmarked_node.js +0 -77
- package/dest/contract_function_simulator/noir-structs/message_tx_context.d.ts +0 -16
- package/dest/contract_function_simulator/noir-structs/message_tx_context.d.ts.map +0 -1
- package/dest/contract_function_simulator/noir-structs/message_tx_context.js +0 -57
- package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts +0 -9
- package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts.map +0 -1
- package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.js +0 -42
- package/dest/contract_function_simulator/oracle/oracle.d.ts +0 -61
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +0 -1
- package/dest/contract_function_simulator/oracle/oracle.js +0 -437
- package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +0 -6
- package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +0 -1
- package/dest/contract_function_simulator/proxied_contract_data_source.js +0 -80
- package/dest/contract_sync/contract_sync_service.d.ts +0 -45
- package/dest/contract_sync/contract_sync_service.d.ts.map +0 -1
- package/dest/contract_sync/contract_sync_service.js +0 -114
- package/dest/contract_sync/helpers.d.ts +0 -29
- package/dest/contract_sync/helpers.d.ts.map +0 -1
- package/dest/contract_sync/helpers.js +0 -55
- package/dest/messages/message_context_service.d.ts +0 -17
- package/dest/messages/message_context_service.d.ts.map +0 -1
- package/dest/messages/message_context_service.js +0 -36
- package/dest/storage/tagging_store/sender_address_book_store.d.ts +0 -14
- package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +0 -1
- package/dest/storage/tagging_store/sender_address_book_store.js +0 -36
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +0 -14
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +0 -1
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +0 -99
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +0 -14
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +0 -1
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +0 -33
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +0 -12
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +0 -1
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +0 -39
- package/src/access_scopes.ts +0 -9
- package/src/contract_function_simulator/benchmarked_node.ts +0 -103
- package/src/contract_function_simulator/noir-structs/message_tx_context.ts +0 -55
- package/src/contract_function_simulator/oracle/legacy_oracle_mappings.ts +0 -135
- package/src/contract_function_simulator/oracle/oracle.ts +0 -675
- package/src/contract_function_simulator/proxied_contract_data_source.ts +0 -83
- package/src/contract_sync/contract_sync_service.ts +0 -181
- package/src/contract_sync/helpers.ts +0 -98
- package/src/messages/message_context_service.ts +0 -45
- package/src/storage/tagging_store/sender_address_book_store.ts +0 -48
- package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +0 -140
- package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +0 -44
- package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +0 -51
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { CircuitKind } from '@aztec/bb.js';
|
|
1
2
|
import {
|
|
2
3
|
AVM_EMITNOTEHASH_BASE_L2_GAS,
|
|
3
4
|
AVM_EMITNULLIFIER_BASE_L2_GAS,
|
|
@@ -19,6 +20,7 @@ import {
|
|
|
19
20
|
MAX_PRIVATE_LOGS_PER_TX,
|
|
20
21
|
MAX_TX_LIFETIME,
|
|
21
22
|
PRIVATE_TX_L2_GAS_OVERHEAD,
|
|
23
|
+
PUBLIC_DATA_WRITE_LENGTH,
|
|
22
24
|
PUBLIC_TX_L2_GAS_OVERHEAD,
|
|
23
25
|
TX_DA_GAS_OVERHEAD,
|
|
24
26
|
} from '@aztec/constants';
|
|
@@ -42,7 +44,7 @@ import type { FunctionCall } from '@aztec/stdlib/abi';
|
|
|
42
44
|
import { FunctionSelector, FunctionType } from '@aztec/stdlib/abi';
|
|
43
45
|
import type { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
44
46
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
45
|
-
import type { BlockParameter } from '@aztec/stdlib/block';
|
|
47
|
+
import type { BlockParameter, L2TipsProvider } from '@aztec/stdlib/block';
|
|
46
48
|
import { Gas } from '@aztec/stdlib/gas';
|
|
47
49
|
import {
|
|
48
50
|
computeNoteHashNonce,
|
|
@@ -76,9 +78,11 @@ import {
|
|
|
76
78
|
import { PrivateLog } from '@aztec/stdlib/logs';
|
|
77
79
|
import { ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
|
|
78
80
|
import { ChonkProof } from '@aztec/stdlib/proofs';
|
|
81
|
+
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
79
82
|
import {
|
|
80
83
|
BlockHeader,
|
|
81
84
|
CallContext,
|
|
85
|
+
type ContractOverrides,
|
|
82
86
|
HashedValues,
|
|
83
87
|
type OffchainEffect,
|
|
84
88
|
PrivateExecutionResult,
|
|
@@ -89,32 +93,33 @@ import {
|
|
|
89
93
|
getFinalMinRevertibleSideEffectCounter,
|
|
90
94
|
} from '@aztec/stdlib/tx';
|
|
91
95
|
|
|
92
|
-
import type {
|
|
93
|
-
import type { ContractSyncService } from '../
|
|
94
|
-
import type {
|
|
96
|
+
import type { ContractClassService } from '../contract/contract_class_service.js';
|
|
97
|
+
import type { ContractSyncService } from '../contract/contract_sync_service.js';
|
|
98
|
+
import type { ExecutionHooks } from '../hooks/index.js';
|
|
99
|
+
import type { TxResolverService } from '../messages/tx_resolver_service.js';
|
|
95
100
|
import type { AddressStore } from '../storage/address_store/address_store.js';
|
|
101
|
+
import { CapsuleService } from '../storage/capsule_store/capsule_service.js';
|
|
96
102
|
import type { CapsuleStore } from '../storage/capsule_store/capsule_store.js';
|
|
97
103
|
import type { ContractStore } from '../storage/contract_store/contract_store.js';
|
|
104
|
+
import { FactService } from '../storage/fact_store/index.js';
|
|
105
|
+
import type { FactStore } from '../storage/fact_store/index.js';
|
|
98
106
|
import type { NoteStore } from '../storage/note_store/note_store.js';
|
|
99
107
|
import type { PrivateEventStore } from '../storage/private_event_store/private_event_store.js';
|
|
100
108
|
import type { RecipientTaggingStore } from '../storage/tagging_store/recipient_tagging_store.js';
|
|
101
|
-
import type { SenderAddressBookStore } from '../storage/tagging_store/sender_address_book_store.js';
|
|
102
109
|
import type { SenderTaggingStore } from '../storage/tagging_store/sender_tagging_store.js';
|
|
103
|
-
import type {
|
|
110
|
+
import type { TaggingSecretSourcesStore } from '../storage/tagging_store/tagging_secret_sources_store.js';
|
|
111
|
+
import { AnchoredContractData } from './anchored_contract_data.js';
|
|
104
112
|
import { ExecutionNoteCache } from './execution_note_cache.js';
|
|
105
113
|
import { ExecutionTaggingIndexCache } from './execution_tagging_index_cache.js';
|
|
106
114
|
import { HashedValuesCache } from './hashed_values_cache.js';
|
|
107
|
-
import {
|
|
115
|
+
import { buildACIRCallback } from './oracle/acir_callback.js';
|
|
108
116
|
import { executePrivateFunction } from './oracle/private_execution.js';
|
|
109
117
|
import { PrivateExecutionOracle } from './oracle/private_execution_oracle.js';
|
|
110
118
|
import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
|
|
119
|
+
import { TransientArrayService } from './transient_array_service.js';
|
|
111
120
|
|
|
112
121
|
/** Options for ContractFunctionSimulator.run. */
|
|
113
122
|
export type ContractSimulatorRunOpts = {
|
|
114
|
-
/** The address of the contract (should match request.origin). */
|
|
115
|
-
contractAddress: AztecAddress;
|
|
116
|
-
/** The function selector of the entry point. */
|
|
117
|
-
selector: FunctionSelector;
|
|
118
123
|
/** The address calling the function. Can be replaced to simulate a call from another contract or account. */
|
|
119
124
|
msgSender?: AztecAddress;
|
|
120
125
|
/** The block header to use as base state for this run. */
|
|
@@ -122,7 +127,7 @@ export type ContractSimulatorRunOpts = {
|
|
|
122
127
|
/** The address used as a tagging sender when emitting private logs. */
|
|
123
128
|
senderForTags?: AztecAddress;
|
|
124
129
|
/** The accounts whose notes we can access in this call. */
|
|
125
|
-
scopes:
|
|
130
|
+
scopes: AztecAddress[];
|
|
126
131
|
/** The job ID for staged writes. */
|
|
127
132
|
jobId: string;
|
|
128
133
|
};
|
|
@@ -130,18 +135,24 @@ export type ContractSimulatorRunOpts = {
|
|
|
130
135
|
/** Args for ContractFunctionSimulator constructor. */
|
|
131
136
|
export type ContractFunctionSimulatorArgs = {
|
|
132
137
|
contractStore: ContractStore;
|
|
138
|
+
contractClassService: ContractClassService;
|
|
139
|
+
/** Per-simulation contract overrides. */
|
|
140
|
+
overrides?: ContractOverrides;
|
|
133
141
|
noteStore: NoteStore;
|
|
134
142
|
keyStore: KeyStore;
|
|
135
143
|
addressStore: AddressStore;
|
|
136
144
|
aztecNode: AztecNode;
|
|
145
|
+
l2TipsStore: L2TipsProvider;
|
|
137
146
|
senderTaggingStore: SenderTaggingStore;
|
|
138
147
|
recipientTaggingStore: RecipientTaggingStore;
|
|
139
|
-
|
|
148
|
+
taggingSecretSourcesStore: TaggingSecretSourcesStore;
|
|
140
149
|
capsuleStore: CapsuleStore;
|
|
150
|
+
factStore: FactStore;
|
|
141
151
|
privateEventStore: PrivateEventStore;
|
|
142
152
|
simulator: CircuitSimulator;
|
|
143
153
|
contractSyncService: ContractSyncService;
|
|
144
|
-
|
|
154
|
+
txResolver: TxResolverService;
|
|
155
|
+
hooks?: ExecutionHooks;
|
|
145
156
|
};
|
|
146
157
|
|
|
147
158
|
/**
|
|
@@ -150,33 +161,43 @@ export type ContractFunctionSimulatorArgs = {
|
|
|
150
161
|
export class ContractFunctionSimulator {
|
|
151
162
|
private readonly log: Logger;
|
|
152
163
|
private readonly contractStore: ContractStore;
|
|
164
|
+
private readonly contractClassService: ContractClassService;
|
|
165
|
+
private readonly overrides: ContractOverrides | undefined;
|
|
153
166
|
private readonly noteStore: NoteStore;
|
|
154
167
|
private readonly keyStore: KeyStore;
|
|
155
168
|
private readonly addressStore: AddressStore;
|
|
156
169
|
private readonly aztecNode: AztecNode;
|
|
170
|
+
private readonly l2TipsStore: L2TipsProvider;
|
|
157
171
|
private readonly senderTaggingStore: SenderTaggingStore;
|
|
158
172
|
private readonly recipientTaggingStore: RecipientTaggingStore;
|
|
159
|
-
private readonly
|
|
173
|
+
private readonly taggingSecretSourcesStore: TaggingSecretSourcesStore;
|
|
160
174
|
private readonly capsuleStore: CapsuleStore;
|
|
175
|
+
private readonly factStore: FactStore;
|
|
161
176
|
private readonly privateEventStore: PrivateEventStore;
|
|
162
177
|
private readonly simulator: CircuitSimulator;
|
|
163
178
|
private readonly contractSyncService: ContractSyncService;
|
|
164
|
-
private readonly
|
|
179
|
+
private readonly txResolver: TxResolverService;
|
|
180
|
+
private readonly hooks: ExecutionHooks | undefined;
|
|
165
181
|
|
|
166
182
|
constructor(args: ContractFunctionSimulatorArgs) {
|
|
167
183
|
this.contractStore = args.contractStore;
|
|
184
|
+
this.contractClassService = args.contractClassService;
|
|
185
|
+
this.overrides = args.overrides;
|
|
168
186
|
this.noteStore = args.noteStore;
|
|
169
187
|
this.keyStore = args.keyStore;
|
|
170
188
|
this.addressStore = args.addressStore;
|
|
171
189
|
this.aztecNode = args.aztecNode;
|
|
190
|
+
this.l2TipsStore = args.l2TipsStore;
|
|
172
191
|
this.senderTaggingStore = args.senderTaggingStore;
|
|
173
192
|
this.recipientTaggingStore = args.recipientTaggingStore;
|
|
174
|
-
this.
|
|
193
|
+
this.taggingSecretSourcesStore = args.taggingSecretSourcesStore;
|
|
175
194
|
this.capsuleStore = args.capsuleStore;
|
|
195
|
+
this.factStore = args.factStore;
|
|
176
196
|
this.privateEventStore = args.privateEventStore;
|
|
177
197
|
this.simulator = args.simulator;
|
|
178
198
|
this.contractSyncService = args.contractSyncService;
|
|
179
|
-
this.
|
|
199
|
+
this.txResolver = args.txResolver;
|
|
200
|
+
this.hooks = args.hooks;
|
|
180
201
|
this.log = createLogger('simulator');
|
|
181
202
|
}
|
|
182
203
|
|
|
@@ -187,9 +208,7 @@ export class ContractFunctionSimulator {
|
|
|
187
208
|
public async run(
|
|
188
209
|
request: TxExecutionRequest,
|
|
189
210
|
{
|
|
190
|
-
|
|
191
|
-
selector,
|
|
192
|
-
msgSender = AztecAddress.fromField(Fr.MAX_FIELD_VALUE),
|
|
211
|
+
msgSender = AztecAddress.NULL_MSG_SENDER,
|
|
193
212
|
anchorBlockHeader,
|
|
194
213
|
senderForTags,
|
|
195
214
|
scopes,
|
|
@@ -198,18 +217,30 @@ export class ContractFunctionSimulator {
|
|
|
198
217
|
): Promise<PrivateExecutionResult> {
|
|
199
218
|
const simulatorSetupTimer = new Timer();
|
|
200
219
|
|
|
201
|
-
const
|
|
220
|
+
const contractAddress = request.origin;
|
|
202
221
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
222
|
+
const anchoredContractData = new AnchoredContractData(
|
|
223
|
+
this.contractStore,
|
|
224
|
+
this.contractClassService,
|
|
225
|
+
anchorBlockHeader,
|
|
226
|
+
this.overrides,
|
|
227
|
+
);
|
|
206
228
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
229
|
+
const entryPointArtifact = await anchoredContractData.getFunctionArtifactWithDebugMetadata(
|
|
230
|
+
contractAddress,
|
|
231
|
+
request.functionSelector,
|
|
232
|
+
);
|
|
233
|
+
if (!entryPointArtifact) {
|
|
234
|
+
throw new Error(
|
|
235
|
+
`Cannot run function ${request.functionSelector} on ${contractAddress}: the contract is not registered. ` +
|
|
236
|
+
`Register it via wallet.registerContract(...).`,
|
|
210
237
|
);
|
|
211
238
|
}
|
|
212
239
|
|
|
240
|
+
if (entryPointArtifact.functionType !== FunctionType.PRIVATE) {
|
|
241
|
+
throw new Error(`Cannot run ${entryPointArtifact.functionType} function as private`);
|
|
242
|
+
}
|
|
243
|
+
|
|
213
244
|
// reserve the first side effect for the tx hash (inserted by the private kernel)
|
|
214
245
|
const startSideEffectCounter = 2;
|
|
215
246
|
|
|
@@ -224,9 +255,15 @@ export class ContractFunctionSimulator {
|
|
|
224
255
|
const noteCache = new ExecutionNoteCache(protocolNullifier);
|
|
225
256
|
const taggingIndexCache = new ExecutionTaggingIndexCache();
|
|
226
257
|
|
|
258
|
+
// One shared transient store for the whole execution tree rooted at this transaction. Threaded into every child
|
|
259
|
+
// private oracle and inherited by nested utility frames, so that frames of the same contract see each other's
|
|
260
|
+
// transient arrays, then discarded when run() returns.
|
|
261
|
+
const transientArrayService = new TransientArrayService();
|
|
262
|
+
|
|
227
263
|
const privateExecutionOracle = new PrivateExecutionOracle({
|
|
228
264
|
argsHash: request.firstCallArgsHash,
|
|
229
265
|
txContext: request.txContext,
|
|
266
|
+
txRequestSalt: request.salt,
|
|
230
267
|
callContext,
|
|
231
268
|
anchorBlockHeader,
|
|
232
269
|
utilityExecutor: async (call, execScopes) => {
|
|
@@ -237,17 +274,18 @@ export class ContractFunctionSimulator {
|
|
|
237
274
|
executionCache: HashedValuesCache.create(request.argsOfCalls),
|
|
238
275
|
noteCache,
|
|
239
276
|
taggingIndexCache,
|
|
240
|
-
|
|
277
|
+
anchoredContractData,
|
|
241
278
|
noteStore: this.noteStore,
|
|
242
279
|
keyStore: this.keyStore,
|
|
243
280
|
addressStore: this.addressStore,
|
|
244
281
|
aztecNode: this.aztecNode,
|
|
245
282
|
senderTaggingStore: this.senderTaggingStore,
|
|
246
283
|
recipientTaggingStore: this.recipientTaggingStore,
|
|
247
|
-
|
|
248
|
-
|
|
284
|
+
taggingSecretSourcesStore: this.taggingSecretSourcesStore,
|
|
285
|
+
capsuleService: new CapsuleService(this.capsuleStore, scopes),
|
|
286
|
+
factService: new FactService(this.factStore, scopes),
|
|
249
287
|
privateEventStore: this.privateEventStore,
|
|
250
|
-
|
|
288
|
+
txResolver: this.txResolver,
|
|
251
289
|
contractSyncService: this.contractSyncService,
|
|
252
290
|
jobId,
|
|
253
291
|
totalPublicCalldataCount: 0,
|
|
@@ -255,6 +293,9 @@ export class ContractFunctionSimulator {
|
|
|
255
293
|
scopes,
|
|
256
294
|
senderForTags,
|
|
257
295
|
simulator: this.simulator,
|
|
296
|
+
l2TipsStore: this.l2TipsStore,
|
|
297
|
+
hooks: this.hooks,
|
|
298
|
+
transientArrayService,
|
|
258
299
|
});
|
|
259
300
|
|
|
260
301
|
const setupTime = simulatorSetupTimer.ms();
|
|
@@ -273,7 +314,6 @@ export class ContractFunctionSimulator {
|
|
|
273
314
|
);
|
|
274
315
|
const simulatorTeardownTimer = new Timer();
|
|
275
316
|
|
|
276
|
-
noteCache.finish();
|
|
277
317
|
const firstNullifierHint = noteCache.getNonceGenerator();
|
|
278
318
|
|
|
279
319
|
const publicCallRequests = collectNested([executionResult], r =>
|
|
@@ -284,7 +324,7 @@ export class ContractFunctionSimulator {
|
|
|
284
324
|
);
|
|
285
325
|
const publicFunctionsCalldata = await Promise.all(
|
|
286
326
|
publicCallRequests.map(async r => {
|
|
287
|
-
const calldata = await privateExecutionOracle.
|
|
327
|
+
const calldata = await privateExecutionOracle.getHashPreimage(r.calldataHash);
|
|
288
328
|
return new HashedValues(calldata, r.calldataHash);
|
|
289
329
|
}),
|
|
290
330
|
);
|
|
@@ -305,47 +345,71 @@ export class ContractFunctionSimulator {
|
|
|
305
345
|
}
|
|
306
346
|
}
|
|
307
347
|
|
|
308
|
-
// docs:start:execute_utility_function
|
|
309
348
|
/**
|
|
310
349
|
* Runs a utility function.
|
|
311
350
|
* @param call - The function call to execute.
|
|
312
|
-
* @param authwits - Authentication witnesses required for the function call.
|
|
313
|
-
* @param anchorBlockHeader - The block header to use as base state for this run.
|
|
314
|
-
* @param scopes - Optional array of account addresses whose notes can be accessed in this call. Defaults to all
|
|
315
|
-
* accounts if not specified.
|
|
316
351
|
* @returns A return value of the utility function in a form as returned by the simulator (Noir fields)
|
|
317
352
|
*/
|
|
318
353
|
public async runUtility(
|
|
319
354
|
call: FunctionCall,
|
|
320
355
|
authwits: AuthWitness[],
|
|
321
356
|
anchorBlockHeader: BlockHeader,
|
|
322
|
-
scopes:
|
|
357
|
+
scopes: AztecAddress[],
|
|
323
358
|
jobId: string,
|
|
324
359
|
): Promise<{ result: Fr[]; offchainEffects: OffchainEffect[] }> {
|
|
325
|
-
const
|
|
360
|
+
const anchoredContractData = new AnchoredContractData(
|
|
361
|
+
this.contractStore,
|
|
362
|
+
this.contractClassService,
|
|
363
|
+
anchorBlockHeader,
|
|
364
|
+
this.overrides,
|
|
365
|
+
);
|
|
366
|
+
|
|
367
|
+
const entryPointArtifact = await anchoredContractData.getFunctionArtifactWithDebugMetadata(call.to, call.selector);
|
|
368
|
+
if (!entryPointArtifact) {
|
|
369
|
+
throw new Error(
|
|
370
|
+
`Cannot run function ${call.selector} on ${call.to}: the contract is not registered. ` +
|
|
371
|
+
`Register it via wallet.registerContract(...).`,
|
|
372
|
+
);
|
|
373
|
+
}
|
|
326
374
|
|
|
327
375
|
if (entryPointArtifact.functionType !== FunctionType.UTILITY) {
|
|
328
376
|
throw new Error(`Cannot run ${entryPointArtifact.functionType} function as utility`);
|
|
329
377
|
}
|
|
330
378
|
|
|
379
|
+
const utilityExecutor = async (syncCall: FunctionCall, execScopes: AztecAddress[]) => {
|
|
380
|
+
await this.runUtility(syncCall, [], anchorBlockHeader, execScopes, jobId);
|
|
381
|
+
};
|
|
382
|
+
|
|
331
383
|
const oracle = new UtilityExecutionOracle({
|
|
332
|
-
|
|
384
|
+
callContext: CallContext.from({
|
|
385
|
+
msgSender: AztecAddress.NULL_MSG_SENDER,
|
|
386
|
+
contractAddress: call.to,
|
|
387
|
+
functionSelector: call.selector,
|
|
388
|
+
isStaticCall: true,
|
|
389
|
+
}),
|
|
333
390
|
authWitnesses: authwits,
|
|
334
391
|
capsules: [],
|
|
335
392
|
anchorBlockHeader,
|
|
336
|
-
|
|
393
|
+
anchoredContractData,
|
|
337
394
|
noteStore: this.noteStore,
|
|
338
395
|
keyStore: this.keyStore,
|
|
339
396
|
addressStore: this.addressStore,
|
|
340
397
|
aztecNode: this.aztecNode,
|
|
341
398
|
recipientTaggingStore: this.recipientTaggingStore,
|
|
342
|
-
|
|
343
|
-
|
|
399
|
+
taggingSecretSourcesStore: this.taggingSecretSourcesStore,
|
|
400
|
+
capsuleService: new CapsuleService(this.capsuleStore, scopes),
|
|
401
|
+
factService: new FactService(this.factStore, scopes),
|
|
344
402
|
privateEventStore: this.privateEventStore,
|
|
345
|
-
|
|
403
|
+
txResolver: this.txResolver,
|
|
346
404
|
contractSyncService: this.contractSyncService,
|
|
405
|
+
l2TipsStore: this.l2TipsStore,
|
|
347
406
|
jobId,
|
|
348
407
|
scopes,
|
|
408
|
+
simulator: this.simulator,
|
|
409
|
+
hooks: this.hooks,
|
|
410
|
+
utilityExecutor,
|
|
411
|
+
// Execution-tree root (top-level utility run or contract sync): own store; nested frames inherit it.
|
|
412
|
+
transientArrayService: new TransientArrayService(),
|
|
349
413
|
});
|
|
350
414
|
|
|
351
415
|
try {
|
|
@@ -356,7 +420,7 @@ export class ContractFunctionSimulator {
|
|
|
356
420
|
|
|
357
421
|
const initialWitness = toACVMWitness(0, call.args);
|
|
358
422
|
const acirExecutionResult = await this.simulator
|
|
359
|
-
.executeUserCircuit(initialWitness, entryPointArtifact,
|
|
423
|
+
.executeUserCircuit(initialWitness, entryPointArtifact, buildACIRCallback(oracle))
|
|
360
424
|
.catch((err: Error) => {
|
|
361
425
|
err.message = resolveAssertionMessageFromError(err, entryPointArtifact);
|
|
362
426
|
throw new ExecutionError(
|
|
@@ -379,23 +443,6 @@ export class ContractFunctionSimulator {
|
|
|
379
443
|
throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during private execution'));
|
|
380
444
|
}
|
|
381
445
|
}
|
|
382
|
-
// docs:end:execute_utility_function
|
|
383
|
-
|
|
384
|
-
/**
|
|
385
|
-
* Returns the execution statistics collected during the simulator run.
|
|
386
|
-
* @returns The execution statistics.
|
|
387
|
-
*/
|
|
388
|
-
getStats() {
|
|
389
|
-
const nodeRPCCalls =
|
|
390
|
-
typeof (this.aztecNode as BenchmarkedNode).getStats === 'function'
|
|
391
|
-
? (this.aztecNode as BenchmarkedNode).getStats()
|
|
392
|
-
: {
|
|
393
|
-
perMethod: {},
|
|
394
|
-
roundTrips: { roundTrips: 0, totalBlockingTime: 0, roundTripDurations: [], roundTripMethods: [] },
|
|
395
|
-
};
|
|
396
|
-
|
|
397
|
-
return { nodeRPCCalls };
|
|
398
|
-
}
|
|
399
446
|
}
|
|
400
447
|
|
|
401
448
|
class OrderedSideEffect<T> {
|
|
@@ -524,6 +571,7 @@ export async function generateSimulatedProvingResult(
|
|
|
524
571
|
execution.publicInputs.callContext.functionSelector,
|
|
525
572
|
),
|
|
526
573
|
timings: execution.profileResult?.timings ?? { witgen: 0, oracles: {} },
|
|
574
|
+
kind: CircuitKind.App,
|
|
527
575
|
bytecode: execution.acir,
|
|
528
576
|
vk: execution.vk,
|
|
529
577
|
witness: execution.partialWitness,
|
|
@@ -592,12 +640,12 @@ export async function generateSimulatedProvingResult(
|
|
|
592
640
|
siloedNullifiers,
|
|
593
641
|
minRevertibleSideEffectCounter,
|
|
594
642
|
);
|
|
643
|
+
// The protocol nullifier is the nonce generator and the tx's first nullifier. It is injected by the
|
|
644
|
+
// init kernel (at counter 1, index 0) rather than emitted by any private call, so it is absent from
|
|
645
|
+
// the executed nullifiers above. Mirror the kernel here by prepending it as the first non-revertible
|
|
646
|
+
// nullifier.
|
|
595
647
|
const nonceGenerator = privateExecutionResult.firstNullifier;
|
|
596
|
-
|
|
597
|
-
nonRevertibleNullifiers.push(nonceGenerator);
|
|
598
|
-
} else if (!nonRevertibleNullifiers[0].equals(nonceGenerator)) {
|
|
599
|
-
throw new Error('The first non revertible nullifier should be equal to the nonce generator. This is a bug!');
|
|
600
|
-
}
|
|
648
|
+
nonRevertibleNullifiers.unshift(nonceGenerator);
|
|
601
649
|
|
|
602
650
|
if (isPrivateOnlyTx) {
|
|
603
651
|
// We must make the note hashes unique by using the
|
|
@@ -748,7 +796,7 @@ function squashTransientSideEffects(
|
|
|
748
796
|
* at the tx's anchor block, mimicking the behavior of the kernels
|
|
749
797
|
*/
|
|
750
798
|
async function verifyReadRequests(
|
|
751
|
-
node: Pick<AztecNode, '
|
|
799
|
+
node: Pick<AztecNode, 'findLeavesIndexes'>,
|
|
752
800
|
anchorBlockHash: BlockParameter,
|
|
753
801
|
noteHashReadRequests: ScopedReadRequest[],
|
|
754
802
|
nullifierReadRequests: ScopedReadRequest[],
|
|
@@ -781,13 +829,25 @@ async function verifyReadRequests(
|
|
|
781
829
|
}
|
|
782
830
|
}
|
|
783
831
|
|
|
784
|
-
const [
|
|
785
|
-
|
|
786
|
-
|
|
832
|
+
const [noteHashResults, nullifierResults] = await Promise.all([
|
|
833
|
+
settledNoteHashReads.length > 0
|
|
834
|
+
? node.findLeavesIndexes(
|
|
835
|
+
anchorBlockHash,
|
|
836
|
+
MerkleTreeId.NOTE_HASH_TREE,
|
|
837
|
+
settledNoteHashReads.map(({ value }) => value),
|
|
838
|
+
)
|
|
839
|
+
: [],
|
|
840
|
+
settledNullifierReads.length > 0
|
|
841
|
+
? node.findLeavesIndexes(
|
|
842
|
+
anchorBlockHash,
|
|
843
|
+
MerkleTreeId.NULLIFIER_TREE,
|
|
844
|
+
settledNullifierReads.map(({ value }) => value),
|
|
845
|
+
)
|
|
846
|
+
: [],
|
|
787
847
|
]);
|
|
788
848
|
|
|
789
849
|
for (let i = 0; i < settledNoteHashReads.length; i++) {
|
|
790
|
-
if (!
|
|
850
|
+
if (!noteHashResults[i]) {
|
|
791
851
|
throw new Error(
|
|
792
852
|
`Note hash read request at index ${settledNoteHashReads[i].index} is reading an unknown note hash: ${settledNoteHashReads[i].value}`,
|
|
793
853
|
);
|
|
@@ -795,7 +855,7 @@ async function verifyReadRequests(
|
|
|
795
855
|
}
|
|
796
856
|
|
|
797
857
|
for (let i = 0; i < settledNullifierReads.length; i++) {
|
|
798
|
-
if (!
|
|
858
|
+
if (!nullifierResults[i]) {
|
|
799
859
|
throw new Error(
|
|
800
860
|
`Nullifier read request at index ${settledNullifierReads[i].index} is reading an unknown nullifier: ${settledNullifierReads[i].value}`,
|
|
801
861
|
);
|
|
@@ -848,6 +908,11 @@ function meterGasUsed(data: PrivateToRollupAccumulatedData | PrivateToPublicAccu
|
|
|
848
908
|
);
|
|
849
909
|
meteredL2Gas += numContractClassLogs * L2_GAS_PER_CONTRACT_CLASS_LOG;
|
|
850
910
|
|
|
911
|
+
if (isPrivateOnlyTx) {
|
|
912
|
+
// The public data write that the private tx base rollup always performs to update the fee payer's balance.
|
|
913
|
+
meteredDAFields += PUBLIC_DATA_WRITE_LENGTH;
|
|
914
|
+
}
|
|
915
|
+
|
|
851
916
|
const meteredDAGas = meteredDAFields * DA_GAS_PER_FIELD;
|
|
852
917
|
|
|
853
918
|
if ((data as PrivateToPublicAccumulatedData).publicCallRequests) {
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
+
|
|
3
|
+
/** In-memory store for ephemeral arrays scoped to a single contract call frame. */
|
|
4
|
+
export class EphemeralArrayService {
|
|
5
|
+
/**
|
|
6
|
+
* Maps a slot to the elements of the array stored at that slot. Each element is a serialized representation of
|
|
7
|
+
* the original type.
|
|
8
|
+
*/
|
|
9
|
+
#arrays: Map<string, Fr[][]> = new Map();
|
|
10
|
+
|
|
11
|
+
/** Returns all elements in the array, or an empty array if uninitialized. */
|
|
12
|
+
readArrayAt(slot: Fr): Fr[][] {
|
|
13
|
+
return this.#arrays.get(slot.toString()) ?? [];
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
#setArray(slot: Fr, array: Fr[][]): void {
|
|
17
|
+
this.#arrays.set(slot.toString(), array);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/** Returns the number of elements in the array at the given slot. */
|
|
21
|
+
len(slot: Fr): number {
|
|
22
|
+
return this.readArrayAt(slot).length;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/** Appends an element to the array and returns the new length. */
|
|
26
|
+
push(slot: Fr, elements: Fr[]): number {
|
|
27
|
+
const array = this.readArrayAt(slot);
|
|
28
|
+
array.push(elements);
|
|
29
|
+
this.#setArray(slot, array);
|
|
30
|
+
return array.length;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/** Removes and returns the last element. Throws if empty. */
|
|
34
|
+
pop(slot: Fr): Fr[] {
|
|
35
|
+
const array = this.readArrayAt(slot);
|
|
36
|
+
if (array.length === 0) {
|
|
37
|
+
throw new Error(`Ephemeral array at slot ${slot} is empty`);
|
|
38
|
+
}
|
|
39
|
+
const element = array.pop()!;
|
|
40
|
+
this.#setArray(slot, array);
|
|
41
|
+
return element;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/** Returns the element at the given index. Throws if out of bounds. */
|
|
45
|
+
get(slot: Fr, index: number): Fr[] {
|
|
46
|
+
const array = this.readArrayAt(slot);
|
|
47
|
+
if (index < 0 || index >= array.length) {
|
|
48
|
+
throw new Error(
|
|
49
|
+
`Ephemeral array index ${index} out of bounds for array of length ${array.length} at slot ${slot}`,
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
return array[index];
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/** Overwrites the element at the given index. Throws if out of bounds. */
|
|
56
|
+
set(slot: Fr, index: number, value: Fr[]): void {
|
|
57
|
+
const array = this.readArrayAt(slot);
|
|
58
|
+
if (index < 0 || index >= array.length) {
|
|
59
|
+
throw new Error(
|
|
60
|
+
`Ephemeral array index ${index} out of bounds for array of length ${array.length} at slot ${slot}`,
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
array[index] = value;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/** Removes the element at the given index, shifting subsequent elements backward. Throws if out of bounds. */
|
|
67
|
+
remove(slot: Fr, index: number): void {
|
|
68
|
+
const array = this.readArrayAt(slot);
|
|
69
|
+
if (index < 0 || index >= array.length) {
|
|
70
|
+
throw new Error(
|
|
71
|
+
`Ephemeral array index ${index} out of bounds for array of length ${array.length} at slot ${slot}`,
|
|
72
|
+
);
|
|
73
|
+
}
|
|
74
|
+
array.splice(index, 1);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/** Removes all elements from the array. */
|
|
78
|
+
clear(slot: Fr): void {
|
|
79
|
+
this.#arrays.delete(slot.toString());
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/** Allocates a fresh, unused slot for a new ephemeral array. */
|
|
83
|
+
allocateSlot(): Fr {
|
|
84
|
+
let slot: Fr;
|
|
85
|
+
do {
|
|
86
|
+
slot = Fr.random();
|
|
87
|
+
} while (this.#arrays.has(slot.toString()));
|
|
88
|
+
return slot;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/** Creates a new ephemeral array pre-populated with the given elements and returns its slot. */
|
|
92
|
+
newArray(elements: Fr[][]): Fr {
|
|
93
|
+
const slot = this.allocateSlot();
|
|
94
|
+
this.#setArray(slot, elements);
|
|
95
|
+
return slot;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/** Copies `count` elements from the source array to the destination array (overwrites destination). */
|
|
99
|
+
copy(srcSlot: Fr, dstSlot: Fr, count: number): void {
|
|
100
|
+
const srcArray = this.readArrayAt(srcSlot);
|
|
101
|
+
if (count > srcArray.length) {
|
|
102
|
+
throw new Error(
|
|
103
|
+
`Cannot copy ${count} elements from ephemeral array of length ${srcArray.length} at slot ${srcSlot}`,
|
|
104
|
+
);
|
|
105
|
+
}
|
|
106
|
+
// Deep copy the elements to avoid aliasing
|
|
107
|
+
const copied = srcArray.slice(0, count).map(el => [...el]);
|
|
108
|
+
this.#setArray(dstSlot, copied);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
@@ -2,7 +2,7 @@ import { Fr } from '@aztec/foundation/curves/bn254';
|
|
|
2
2
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
3
3
|
import { computeNoteHashNonce, computeUniqueNoteHash, siloNoteHash, siloNullifier } from '@aztec/stdlib/hash';
|
|
4
4
|
|
|
5
|
-
import type { NoteData } from './
|
|
5
|
+
import type { NoteData } from './noir-structs/note_data.js';
|
|
6
6
|
|
|
7
7
|
interface PendingNote {
|
|
8
8
|
note: NoteData;
|
|
@@ -43,12 +43,6 @@ export class ExecutionNoteCache {
|
|
|
43
43
|
|
|
44
44
|
private inRevertiblePhase = false;
|
|
45
45
|
|
|
46
|
-
/**
|
|
47
|
-
* Whether the protocol nullifier was used for nonce generation.
|
|
48
|
-
* We don't need to use the protocol nullifier if a non-revertible nullifier is emitted.
|
|
49
|
-
*/
|
|
50
|
-
private usedProtocolNullifierForNonces: boolean | undefined;
|
|
51
|
-
|
|
52
46
|
constructor(private readonly protocolNullifier: Fr) {}
|
|
53
47
|
|
|
54
48
|
/**
|
|
@@ -64,12 +58,9 @@ export class ExecutionNoteCache {
|
|
|
64
58
|
this.inRevertiblePhase = true;
|
|
65
59
|
this.minRevertibleSideEffectCounter = minRevertibleSideEffectCounter;
|
|
66
60
|
|
|
67
|
-
|
|
68
|
-
//
|
|
69
|
-
|
|
70
|
-
// we don't want to use them as the nonce generator.
|
|
71
|
-
this.usedProtocolNullifierForNonces = nullifiers.length === 0;
|
|
72
|
-
const nonceGenerator = this.usedProtocolNullifierForNonces ? this.protocolNullifier : new Fr(nullifiers[0]);
|
|
61
|
+
// The protocol nullifier is always the tx's first nullifier (injected by the kernel init), so it is the
|
|
62
|
+
// nonce generator for every note hash.
|
|
63
|
+
const nonceGenerator = this.protocolNullifier;
|
|
73
64
|
|
|
74
65
|
// The existing pending notes are all non-revertible.
|
|
75
66
|
// They cannot be squashed by nullifiers emitted after minRevertibleSideEffectCounter is set.
|
|
@@ -102,14 +93,6 @@ export class ExecutionNoteCache {
|
|
|
102
93
|
return sideEffectCounter >= this.minRevertibleSideEffectCounter;
|
|
103
94
|
}
|
|
104
95
|
|
|
105
|
-
public finish() {
|
|
106
|
-
// If we never entered the revertible phase, and there are no nullifiers emitted, we need to use the protocol
|
|
107
|
-
// nullifier as the nonce generator.
|
|
108
|
-
if (!this.inRevertiblePhase) {
|
|
109
|
-
this.usedProtocolNullifierForNonces = this.getEmittedNullifiers().length === 0;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
|
|
113
96
|
/**
|
|
114
97
|
* Add a new note to cache.
|
|
115
98
|
* @param note - New note created during execution.
|
|
@@ -223,19 +206,15 @@ export class ExecutionNoteCache {
|
|
|
223
206
|
}
|
|
224
207
|
|
|
225
208
|
/**
|
|
226
|
-
* @returns All nullifiers
|
|
227
|
-
*
|
|
209
|
+
* @returns All nullifiers of the transaction: the protocol nullifier (the kernel-injected first nullifier),
|
|
210
|
+
* followed by those emitted by private calls.
|
|
228
211
|
*/
|
|
229
212
|
getAllNullifiers(): Fr[] {
|
|
230
|
-
|
|
231
|
-
throw new Error('usedProtocolNullifierForNonces is not set yet. Call finish() to complete the transaction.');
|
|
232
|
-
}
|
|
233
|
-
const allNullifiers = this.getEmittedNullifiers();
|
|
234
|
-
return [...(this.usedProtocolNullifierForNonces ? [this.protocolNullifier] : []), ...allNullifiers];
|
|
213
|
+
return [this.protocolNullifier, ...this.getEmittedNullifiers()];
|
|
235
214
|
}
|
|
236
215
|
|
|
237
216
|
getNonceGenerator(): Fr {
|
|
238
|
-
return this.
|
|
217
|
+
return this.protocolNullifier;
|
|
239
218
|
}
|
|
240
219
|
|
|
241
220
|
#recordNullifier(contractAddress: AztecAddress, siloedNullifier: bigint) {
|