@aztec/pxe 0.0.1-commit.fffb133c → 0.0.1-dev
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 +5 -5
- package/dest/block_synchronizer/block_synchronizer.d.ts +10 -4
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
- package/dest/block_synchronizer/block_synchronizer.js +30 -6
- package/dest/config/package_info.js +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.d.ts +66 -31
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +214 -75
- 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_tagging_index_cache.d.ts +7 -7
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/execution_tagging_index_cache.js +19 -11
- package/dest/contract_function_simulator/index.d.ts +2 -1
- package/dest/contract_function_simulator/index.d.ts.map +1 -1
- package/dest/contract_function_simulator/index.js +1 -0
- package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +4 -6
- 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 +8 -10
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +1 -1
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +1 -1
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +2 -2
- 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 -4
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +4 -7
- 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 +6 -11
- package/dest/contract_function_simulator/oracle/interfaces.d.ts +66 -47
- package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts +9 -0
- package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.js +47 -0
- package/dest/contract_function_simulator/oracle/oracle.d.ts +78 -44
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle.js +363 -114
- package/dest/contract_function_simulator/oracle/private_execution.js +5 -3
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +56 -86
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +123 -98
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +145 -70
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +435 -145
- 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/proxied_contract_data_source.d.ts +1 -1
- package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -1
- package/dest/contract_function_simulator/proxied_contract_data_source.js +3 -0
- package/dest/contract_logging.d.ts +27 -0
- package/dest/contract_logging.d.ts.map +1 -0
- package/dest/contract_logging.js +38 -0
- package/dest/contract_sync/contract_sync_service.d.ts +45 -0
- package/dest/contract_sync/contract_sync_service.d.ts.map +1 -0
- package/dest/contract_sync/contract_sync_service.js +150 -0
- package/dest/contract_sync/helpers.d.ts +27 -0
- package/dest/contract_sync/helpers.d.ts.map +1 -0
- package/dest/contract_sync/{index.js → helpers.js} +16 -17
- package/dest/debug/pxe_debug_utils.d.ts +24 -10
- package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
- package/dest/debug/pxe_debug_utils.js +28 -18
- package/dest/entrypoints/client/bundle/index.d.ts +3 -1
- package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/index.js +2 -0
- 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 +24 -9
- package/dest/entrypoints/client/lazy/index.d.ts +3 -1
- package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/index.js +2 -0
- package/dest/entrypoints/client/lazy/utils.d.ts +3 -3
- package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/utils.js +25 -10
- package/dest/entrypoints/pxe_creation_options.d.ts +8 -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 +5 -3
- package/dest/entrypoints/server/index.d.ts.map +1 -1
- package/dest/entrypoints/server/index.js +4 -2
- package/dest/entrypoints/server/utils.d.ts +2 -2
- package/dest/entrypoints/server/utils.d.ts.map +1 -1
- package/dest/entrypoints/server/utils.js +31 -11
- package/dest/events/event_service.d.ts +16 -8
- package/dest/events/event_service.d.ts.map +1 -1
- package/dest/events/event_service.js +46 -14
- 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 +37 -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 +42 -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 +4 -0
- package/dest/hooks/index.d.ts.map +1 -0
- package/dest/hooks/index.js +1 -0
- package/dest/job_coordinator/job_coordinator.d.ts +3 -2
- package/dest/job_coordinator/job_coordinator.d.ts.map +1 -1
- package/dest/job_coordinator/job_coordinator.js +3 -2
- package/dest/logs/log_service.d.ts +10 -9
- package/dest/logs/log_service.d.ts.map +1 -1
- package/dest/logs/log_service.js +50 -85
- package/dest/messages/message_context_service.d.ts +17 -0
- package/dest/messages/message_context_service.d.ts.map +1 -0
- package/dest/messages/message_context_service.js +38 -0
- package/dest/notes/note_service.d.ts +29 -8
- package/dest/notes/note_service.d.ts.map +1 -1
- package/dest/notes/note_service.js +89 -65
- package/dest/notes_filter.d.ts +24 -0
- package/dest/notes_filter.d.ts.map +1 -0
- package/dest/notes_filter.js +4 -0
- 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/hints/compute_tx_expiration_timestamp.d.ts +4 -0
- package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts.map +1 -0
- package/dest/private_kernel/hints/{compute_tx_include_by_timestamp.js → compute_tx_expiration_timestamp.js} +12 -12
- package/dest/private_kernel/hints/index.d.ts +1 -1
- package/dest/private_kernel/hints/index.js +1 -1
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +4 -3
- 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 +129 -68
- package/dest/private_kernel/hints/test_utils.d.ts +122 -0
- package/dest/private_kernel/hints/test_utils.d.ts.map +1 -0
- package/dest/private_kernel/hints/test_utils.js +203 -0
- package/dest/private_kernel/private_kernel_execution_prover.d.ts +4 -2
- package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.js +38 -19
- package/dest/private_kernel/private_kernel_oracle.d.ts +10 -6
- package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_oracle.js +26 -20
- package/dest/pxe.d.ts +87 -23
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +178 -119
- package/dest/storage/address_store/address_store.d.ts +1 -1
- package/dest/storage/address_store/address_store.d.ts.map +1 -1
- package/dest/storage/address_store/address_store.js +12 -11
- package/dest/storage/anchor_block_store/anchor_block_store.d.ts +9 -1
- 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 -2
- 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 +588 -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 +50 -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 +42 -36
- 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 +42 -15
- package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
- package/dest/storage/contract_store/contract_store.js +160 -73
- package/dest/storage/metadata.d.ts +1 -1
- package/dest/storage/metadata.js +1 -1
- package/dest/storage/note_store/note_store.d.ts +13 -3
- package/dest/storage/note_store/note_store.d.ts.map +1 -1
- package/dest/storage/note_store/note_store.js +147 -107
- package/dest/storage/open_pxe_stores.d.ts +31 -0
- package/dest/storage/open_pxe_stores.d.ts.map +1 -0
- package/dest/storage/open_pxe_stores.js +26 -0
- package/dest/storage/private_event_store/private_event_store.d.ts +1 -1
- package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
- package/dest/storage/private_event_store/private_event_store.js +87 -61
- package/dest/storage/private_event_store/stored_private_event.d.ts +4 -4
- package/dest/storage/private_event_store/stored_private_event.d.ts.map +1 -1
- package/dest/storage/private_event_store/stored_private_event.js +2 -2
- 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/recipient_tagging_store.js +31 -19
- package/dest/storage/tagging_store/sender_address_book_store.d.ts +1 -1
- package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +1 -1
- package/dest/storage/tagging_store/sender_address_book_store.js +20 -14
- package/dest/storage/tagging_store/sender_tagging_store.d.ts +29 -28
- package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
- package/dest/storage/tagging_store/sender_tagging_store.js +233 -137
- package/dest/tagging/get_all_logs_by_tags.d.ts +4 -4
- package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -1
- package/dest/tagging/get_all_logs_by_tags.js +20 -3
- package/dest/tagging/index.d.ts +6 -5
- package/dest/tagging/index.d.ts.map +1 -1
- package/dest/tagging/index.js +4 -3
- 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 +56 -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 +158 -0
- package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +2 -2
- 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 +5 -9
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +30 -13
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +13 -7
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -1
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +41 -10
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +6 -8
- 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 +36 -24
- package/package.json +26 -16
- package/src/bin/check_oracle_version.ts +5 -5
- package/src/block_synchronizer/block_synchronizer.ts +45 -21
- package/src/config/package_info.ts +1 -1
- package/src/contract_function_simulator/contract_function_simulator.ts +389 -134
- package/src/contract_function_simulator/ephemeral_array_service.ts +110 -0
- package/src/contract_function_simulator/execution_tagging_index_cache.ts +19 -14
- package/src/contract_function_simulator/index.ts +1 -0
- package/src/contract_function_simulator/noir-structs/event_validation_request.ts +9 -9
- package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +1 -1
- package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +2 -5
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +4 -10
- package/src/contract_function_simulator/oracle/interfaces.ts +101 -62
- package/src/contract_function_simulator/oracle/legacy_oracle_mappings.ts +104 -0
- package/src/contract_function_simulator/oracle/oracle.ts +464 -151
- package/src/contract_function_simulator/oracle/private_execution.ts +4 -4
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +152 -191
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +709 -200
- package/src/contract_function_simulator/pick_notes.ts +22 -3
- package/src/contract_function_simulator/proxied_contract_data_source.ts +8 -1
- package/src/contract_logging.ts +52 -0
- package/src/contract_sync/contract_sync_service.ts +208 -0
- package/src/contract_sync/{index.ts → helpers.ts} +17 -29
- package/src/debug/pxe_debug_utils.ts +63 -19
- package/src/entrypoints/client/bundle/index.ts +2 -0
- package/src/entrypoints/client/bundle/utils.ts +19 -18
- package/src/entrypoints/client/lazy/index.ts +2 -0
- package/src/entrypoints/client/lazy/utils.ts +20 -18
- package/src/entrypoints/pxe_creation_options.ts +13 -1
- package/src/entrypoints/server/index.ts +4 -2
- package/src/entrypoints/server/utils.ts +25 -29
- package/src/events/event_service.ts +70 -24
- package/src/events/private_event_filter_validator.ts +21 -1
- package/src/hooks/authorize_utility_call.ts +40 -0
- package/src/hooks/execution_hooks.ts +48 -0
- package/src/hooks/index.ts +7 -0
- package/src/job_coordinator/job_coordinator.ts +4 -3
- package/src/logs/log_service.ts +88 -141
- package/src/messages/message_context_service.ts +45 -0
- package/src/notes/note_service.ts +124 -91
- package/src/notes_filter.ts +24 -0
- package/src/oracle_version.ts +20 -10
- package/src/private_kernel/hints/{compute_tx_include_by_timestamp.ts → compute_tx_expiration_timestamp.ts} +13 -13
- package/src/private_kernel/hints/index.ts +1 -1
- package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +164 -117
- package/src/private_kernel/hints/test_utils.ts +325 -0
- package/src/private_kernel/private_kernel_execution_prover.ts +53 -22
- package/src/private_kernel/private_kernel_oracle.ts +36 -26
- package/src/pxe.ts +351 -168
- package/src/storage/address_store/address_store.ts +15 -15
- package/src/storage/anchor_block_store/anchor_block_store.ts +9 -1
- 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__/KeyStore.json +52 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/L2TipsKVStore.json +42 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/NoteStore.json +36 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/PrivateEventStore.json +44 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/RecipientTaggingStore.json +18 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/SenderAddressBookStore.json +16 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/SenderTaggingStore.json +22 -0
- package/src/storage/backwards_compatibility_tests/__snapshots__/opened_stores.json +97 -0
- package/src/storage/backwards_compatibility_tests/kv_store_snapshot.ts +122 -0
- package/src/storage/backwards_compatibility_tests/schema_tests.ts +707 -0
- package/src/storage/backwards_compatibility_tests/store_spy.ts +73 -0
- package/src/storage/capsule_store/capsule_service.ts +90 -0
- package/src/storage/capsule_store/capsule_store.ts +52 -34
- package/src/storage/capsule_store/index.ts +1 -0
- package/src/storage/contract_store/contract_store.ts +193 -81
- package/src/storage/metadata.ts +1 -1
- package/src/storage/note_store/note_store.ts +166 -132
- package/src/storage/open_pxe_stores.ts +47 -0
- package/src/storage/private_event_store/private_event_store.ts +106 -81
- package/src/storage/private_event_store/stored_private_event.ts +3 -3
- package/src/storage/tagging_store/recipient_tagging_store.ts +38 -24
- package/src/storage/tagging_store/sender_address_book_store.ts +20 -14
- package/src/storage/tagging_store/sender_tagging_store.ts +287 -156
- package/src/tagging/get_all_logs_by_tags.ts +35 -7
- package/src/tagging/index.ts +5 -4
- package/src/tagging/persist_sender_tagging_index_ranges.ts +57 -0
- package/src/tagging/recipient_sync/sync_tagged_private_logs.ts +236 -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 +54 -18
- package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +44 -14
- package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +30 -29
- package/dest/contract_sync/index.d.ts +0 -23
- package/dest/contract_sync/index.d.ts.map +0 -1
- package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts +0 -4
- package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts.map +0 -1
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +0 -15
- 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 -15
- 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 -32
- package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +0 -143
- package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +0 -49
|
@@ -76,12 +76,12 @@ export async function executePrivateFunction(
|
|
|
76
76
|
|
|
77
77
|
const contractClassLogs = privateExecutionOracle.getContractClassLogs();
|
|
78
78
|
|
|
79
|
-
const rawReturnValues = await privateExecutionOracle.
|
|
79
|
+
const rawReturnValues = await privateExecutionOracle.getHashPreimage(publicInputs.returnsHash);
|
|
80
80
|
|
|
81
81
|
const newNotes = privateExecutionOracle.getNewNotes();
|
|
82
82
|
const noteHashNullifierCounterMap = privateExecutionOracle.getNoteHashNullifierCounterMap();
|
|
83
83
|
const offchainEffects = privateExecutionOracle.getOffchainEffects();
|
|
84
|
-
const
|
|
84
|
+
const taggingIndexRanges = privateExecutionOracle.getUsedTaggingIndexRanges();
|
|
85
85
|
const nestedExecutionResults = privateExecutionOracle.getNestedExecutionResults();
|
|
86
86
|
|
|
87
87
|
let timerSubtractionList = nestedExecutionResults;
|
|
@@ -103,8 +103,8 @@ export async function executePrivateFunction(
|
|
|
103
103
|
newNotes,
|
|
104
104
|
noteHashNullifierCounterMap,
|
|
105
105
|
rawReturnValues,
|
|
106
|
-
offchainEffects,
|
|
107
|
-
|
|
106
|
+
offchainEffects.map(e => ({ data: e.data })),
|
|
107
|
+
taggingIndexRanges,
|
|
108
108
|
nestedExecutionResults,
|
|
109
109
|
contractClassLogs,
|
|
110
110
|
{
|
|
@@ -2,44 +2,29 @@ import { MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS, PRIVATE_CONTEXT_INPUTS_LENGTH }
|
|
|
2
2
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
3
|
import { createLogger } from '@aztec/foundation/log';
|
|
4
4
|
import { Timer } from '@aztec/foundation/timer';
|
|
5
|
-
import
|
|
6
|
-
import { type CircuitSimulator, toACVMWitness } from '@aztec/simulator/client';
|
|
5
|
+
import { toACVMWitness } from '@aztec/simulator/client';
|
|
7
6
|
import {
|
|
8
7
|
type FunctionAbi,
|
|
9
8
|
type FunctionArtifact,
|
|
10
|
-
type FunctionCall,
|
|
11
9
|
FunctionSelector,
|
|
12
10
|
type NoteSelector,
|
|
13
11
|
countArgumentsSize,
|
|
14
12
|
} from '@aztec/stdlib/abi';
|
|
15
|
-
import type { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
16
13
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
17
14
|
import { siloNullifier } from '@aztec/stdlib/hash';
|
|
18
|
-
import type { AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
19
15
|
import { PrivateContextInputs } from '@aztec/stdlib/kernel';
|
|
20
|
-
import { type ContractClassLog,
|
|
16
|
+
import { type ContractClassLog, ExtendedDirectionalAppTaggingSecret, type TaggingIndexRange } from '@aztec/stdlib/logs';
|
|
21
17
|
import { Tag } from '@aztec/stdlib/logs';
|
|
22
18
|
import { Note, type NoteStatus } from '@aztec/stdlib/note';
|
|
23
19
|
import {
|
|
24
|
-
type BlockHeader,
|
|
25
20
|
CallContext,
|
|
26
|
-
Capsule,
|
|
27
21
|
CountedContractClassLog,
|
|
28
22
|
NoteAndSlot,
|
|
29
23
|
PrivateCallExecutionResult,
|
|
30
24
|
type TxContext,
|
|
31
25
|
} from '@aztec/stdlib/tx';
|
|
32
26
|
|
|
33
|
-
import { ensureContractSynced } from '../../contract_sync/index.js';
|
|
34
27
|
import { NoteService } from '../../notes/note_service.js';
|
|
35
|
-
import type { AddressStore } from '../../storage/address_store/address_store.js';
|
|
36
|
-
import type { AnchorBlockStore } from '../../storage/anchor_block_store/anchor_block_store.js';
|
|
37
|
-
import type { CapsuleStore } from '../../storage/capsule_store/capsule_store.js';
|
|
38
|
-
import type { ContractStore } from '../../storage/contract_store/contract_store.js';
|
|
39
|
-
import type { NoteStore } from '../../storage/note_store/note_store.js';
|
|
40
|
-
import type { PrivateEventStore } from '../../storage/private_event_store/private_event_store.js';
|
|
41
|
-
import type { RecipientTaggingStore } from '../../storage/tagging_store/recipient_tagging_store.js';
|
|
42
|
-
import type { SenderAddressBookStore } from '../../storage/tagging_store/sender_address_book_store.js';
|
|
43
28
|
import type { SenderTaggingStore } from '../../storage/tagging_store/sender_tagging_store.js';
|
|
44
29
|
import { syncSenderTaggingIndexes } from '../../tagging/index.js';
|
|
45
30
|
import type { ExecutionNoteCache } from '../execution_note_cache.js';
|
|
@@ -48,7 +33,21 @@ import type { HashedValuesCache } from '../hashed_values_cache.js';
|
|
|
48
33
|
import { pickNotes } from '../pick_notes.js';
|
|
49
34
|
import type { IPrivateExecutionOracle, NoteData } from './interfaces.js';
|
|
50
35
|
import { executePrivateFunction } from './private_execution.js';
|
|
51
|
-
import { UtilityExecutionOracle } from './utility_execution_oracle.js';
|
|
36
|
+
import { UtilityExecutionOracle, type UtilityExecutionOracleArgs } from './utility_execution_oracle.js';
|
|
37
|
+
|
|
38
|
+
/** Args for PrivateExecutionOracle constructor. */
|
|
39
|
+
export type PrivateExecutionOracleArgs = Omit<UtilityExecutionOracleArgs, 'contractAddress'> & {
|
|
40
|
+
argsHash: Fr;
|
|
41
|
+
txContext: TxContext;
|
|
42
|
+
callContext: CallContext;
|
|
43
|
+
executionCache: HashedValuesCache;
|
|
44
|
+
noteCache: ExecutionNoteCache;
|
|
45
|
+
taggingIndexCache: ExecutionTaggingIndexCache;
|
|
46
|
+
senderTaggingStore: SenderTaggingStore;
|
|
47
|
+
totalPublicCalldataCount?: number;
|
|
48
|
+
sideEffectCounter?: number;
|
|
49
|
+
senderForTags?: AztecAddress;
|
|
50
|
+
};
|
|
52
51
|
|
|
53
52
|
/**
|
|
54
53
|
* The execution oracle for the private part of a transaction.
|
|
@@ -67,65 +66,47 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
67
66
|
private newNotes: NoteAndSlot[] = [];
|
|
68
67
|
private noteHashNullifierCounterMap: Map<number, number> = new Map();
|
|
69
68
|
private contractClassLogs: CountedContractClassLog[] = [];
|
|
70
|
-
private offchainEffects: { data: Fr[] }[] = [];
|
|
71
69
|
private nestedExecutionResults: PrivateCallExecutionResult[] = [];
|
|
72
70
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
private senderForTags?: AztecAddress,
|
|
104
|
-
private simulator?: CircuitSimulator,
|
|
105
|
-
) {
|
|
106
|
-
super(
|
|
107
|
-
callContext.contractAddress,
|
|
108
|
-
authWitnesses,
|
|
109
|
-
capsules,
|
|
110
|
-
anchorBlockHeader,
|
|
111
|
-
contractStore,
|
|
112
|
-
noteStore,
|
|
113
|
-
keyStore,
|
|
114
|
-
addressStore,
|
|
115
|
-
aztecNode,
|
|
116
|
-
anchorBlockStore,
|
|
117
|
-
recipientTaggingStore,
|
|
118
|
-
senderAddressBookStore,
|
|
119
|
-
capsuleStore,
|
|
120
|
-
privateEventStore,
|
|
121
|
-
jobId,
|
|
122
|
-
log,
|
|
123
|
-
scopes,
|
|
124
|
-
);
|
|
71
|
+
private readonly argsHash: Fr;
|
|
72
|
+
private readonly txContext: TxContext;
|
|
73
|
+
private readonly callContext: CallContext;
|
|
74
|
+
private readonly executionCache: HashedValuesCache;
|
|
75
|
+
private readonly noteCache: ExecutionNoteCache;
|
|
76
|
+
private readonly taggingIndexCache: ExecutionTaggingIndexCache;
|
|
77
|
+
private readonly senderTaggingStore: SenderTaggingStore;
|
|
78
|
+
private totalPublicCalldataCount: number;
|
|
79
|
+
private readonly initialSideEffectCounter: number;
|
|
80
|
+
/** Sender for tags passed in at oracle construction time. Returned by `getSenderForTags` unless overridden. */
|
|
81
|
+
private readonly defaultSenderForTags: AztecAddress | undefined;
|
|
82
|
+
/** Per-call sender-for-tags override, set by `setSenderForTags`. Takes precedence over `defaultSenderForTags`. */
|
|
83
|
+
private currentSenderForTags: AztecAddress | undefined;
|
|
84
|
+
|
|
85
|
+
constructor(args: PrivateExecutionOracleArgs) {
|
|
86
|
+
super({
|
|
87
|
+
...args,
|
|
88
|
+
contractAddress: args.callContext.contractAddress,
|
|
89
|
+
log: args.log ?? createLogger('simulator:client_execution_context'),
|
|
90
|
+
});
|
|
91
|
+
this.argsHash = args.argsHash;
|
|
92
|
+
this.txContext = args.txContext;
|
|
93
|
+
this.callContext = args.callContext;
|
|
94
|
+
this.executionCache = args.executionCache;
|
|
95
|
+
this.noteCache = args.noteCache;
|
|
96
|
+
this.taggingIndexCache = args.taggingIndexCache;
|
|
97
|
+
this.senderTaggingStore = args.senderTaggingStore;
|
|
98
|
+
this.totalPublicCalldataCount = args.totalPublicCalldataCount ?? 0;
|
|
99
|
+
this.initialSideEffectCounter = args.sideEffectCounter ?? 0;
|
|
100
|
+
this.defaultSenderForTags = args.senderForTags;
|
|
125
101
|
}
|
|
126
102
|
|
|
127
103
|
public getPrivateContextInputs(): PrivateContextInputs {
|
|
128
|
-
return new PrivateContextInputs(
|
|
104
|
+
return new PrivateContextInputs(
|
|
105
|
+
this.callContext,
|
|
106
|
+
this.anchorBlockHeader,
|
|
107
|
+
this.txContext,
|
|
108
|
+
this.initialSideEffectCounter,
|
|
109
|
+
);
|
|
129
110
|
}
|
|
130
111
|
|
|
131
112
|
// We still need this function until we can get user-defined ordering of structs for fn arguments
|
|
@@ -172,17 +153,10 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
172
153
|
}
|
|
173
154
|
|
|
174
155
|
/**
|
|
175
|
-
*
|
|
156
|
+
* Returns the tagging index ranges that were used in this execution (and that need to be stored in the db).
|
|
176
157
|
*/
|
|
177
|
-
public
|
|
178
|
-
return this.
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
/**
|
|
182
|
-
* Returns the pre-tags that were used in this execution (and that need to be stored in the db).
|
|
183
|
-
*/
|
|
184
|
-
public getUsedPreTags(): PreTag[] {
|
|
185
|
-
return this.taggingIndexCache.getUsedPreTags();
|
|
158
|
+
public getUsedTaggingIndexRanges(): TaggingIndexRange[] {
|
|
159
|
+
return this.taggingIndexCache.getUsedTaggingIndexRanges();
|
|
186
160
|
}
|
|
187
161
|
|
|
188
162
|
/**
|
|
@@ -199,11 +173,10 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
199
173
|
* for a tag in order to emit a log. Constrained tagging should not use this as there is no
|
|
200
174
|
* guarantee that the recipient knows about the sender, and hence about the shared secret.
|
|
201
175
|
*
|
|
202
|
-
*
|
|
203
|
-
* 'senderForTags' value (unless it is replaced).
|
|
176
|
+
* Returns `currentSenderForTags` if set (via `setSenderForTags`), otherwise `defaultSenderForTags`.
|
|
204
177
|
*/
|
|
205
|
-
public
|
|
206
|
-
return Promise.resolve(this.
|
|
178
|
+
public getSenderForTags(): Promise<AztecAddress | undefined> {
|
|
179
|
+
return Promise.resolve(this.currentSenderForTags ?? this.defaultSenderForTags);
|
|
207
180
|
}
|
|
208
181
|
|
|
209
182
|
/**
|
|
@@ -213,12 +186,14 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
213
186
|
* for a tag in order to emit a log. Constrained tagging should not use this as there is no
|
|
214
187
|
* guarantee that the recipient knows about the sender, and hence about the shared secret.
|
|
215
188
|
*
|
|
216
|
-
*
|
|
217
|
-
*
|
|
218
|
-
* value (unless it is replaced by another call to this setter).
|
|
189
|
+
* Overrides `defaultSenderForTags` for the remainder of this call. Each oracle instance is
|
|
190
|
+
* independent, so this has no effect on any other call in the execution.
|
|
219
191
|
*/
|
|
220
|
-
public
|
|
221
|
-
this.
|
|
192
|
+
public setSenderForTags(senderForTags: AztecAddress): Promise<void> {
|
|
193
|
+
this.logger.debug(
|
|
194
|
+
`Sender for tags switched to ${senderForTags} by contract ${this.contractAddress} (default was ${this.defaultSenderForTags})`,
|
|
195
|
+
);
|
|
196
|
+
this.currentSenderForTags = senderForTags;
|
|
222
197
|
return Promise.resolve();
|
|
223
198
|
}
|
|
224
199
|
|
|
@@ -228,26 +203,40 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
228
203
|
* @param recipient - The address receiving the log
|
|
229
204
|
* @returns An app tag to be used in a log.
|
|
230
205
|
*/
|
|
231
|
-
public async
|
|
232
|
-
const
|
|
206
|
+
public async getNextAppTagAsSender(sender: AztecAddress, recipient: AztecAddress): Promise<Tag> {
|
|
207
|
+
const extendedSecret = await this.#calculateExtendedDirectionalAppTaggingSecret(
|
|
208
|
+
this.contractAddress,
|
|
209
|
+
sender,
|
|
210
|
+
recipient,
|
|
211
|
+
);
|
|
212
|
+
|
|
213
|
+
if (!extendedSecret) {
|
|
214
|
+
// We'd only fail to compute an extended secret if the recipient is an invalid address. To prevent
|
|
215
|
+
// king-of-the-hill attacks, instead of failing we use a random tag. By including a correct-looking tag in the
|
|
216
|
+
// log, the transaction shape is preserved and no privacy is leaked, even if the tag is bogus.
|
|
217
|
+
this.logger.warn(`Computing a tag for invalid recipient ${recipient} - returning a random tag instead`, {
|
|
218
|
+
contractAddress: this.contractAddress,
|
|
219
|
+
});
|
|
220
|
+
return new Tag(Fr.random());
|
|
221
|
+
}
|
|
233
222
|
|
|
234
|
-
const index = await this.#getIndexToUseForSecret(
|
|
235
|
-
this.
|
|
223
|
+
const index = await this.#getIndexToUseForSecret(extendedSecret);
|
|
224
|
+
this.logger.debug(
|
|
236
225
|
`Incrementing tagging index for sender: ${sender}, recipient: ${recipient}, contract: ${this.contractAddress} to ${index}`,
|
|
237
226
|
);
|
|
238
|
-
this.taggingIndexCache.setLastUsedIndex(
|
|
227
|
+
this.taggingIndexCache.setLastUsedIndex(extendedSecret, index);
|
|
239
228
|
|
|
240
|
-
return Tag.compute({
|
|
229
|
+
return Tag.compute({ extendedSecret, index });
|
|
241
230
|
}
|
|
242
231
|
|
|
243
|
-
async #
|
|
232
|
+
async #calculateExtendedDirectionalAppTaggingSecret(
|
|
244
233
|
contractAddress: AztecAddress,
|
|
245
234
|
sender: AztecAddress,
|
|
246
235
|
recipient: AztecAddress,
|
|
247
236
|
) {
|
|
248
|
-
const senderCompleteAddress = await this.
|
|
237
|
+
const senderCompleteAddress = await this.getCompleteAddressOrFail(sender);
|
|
249
238
|
const senderIvsk = await this.keyStore.getMasterIncomingViewingSecretKey(sender);
|
|
250
|
-
return
|
|
239
|
+
return ExtendedDirectionalAppTaggingSecret.compute(
|
|
251
240
|
senderCompleteAddress,
|
|
252
241
|
senderIvsk,
|
|
253
242
|
recipient,
|
|
@@ -256,7 +245,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
256
245
|
);
|
|
257
246
|
}
|
|
258
247
|
|
|
259
|
-
async #getIndexToUseForSecret(secret:
|
|
248
|
+
async #getIndexToUseForSecret(secret: ExtendedDirectionalAppTaggingSecret): Promise<number> {
|
|
260
249
|
// If we have the tagging index in the cache, we use it. If not we obtain it from the execution data provider.
|
|
261
250
|
const lastUsedIndexInTx = this.taggingIndexCache.getLastUsedIndex(secret);
|
|
262
251
|
|
|
@@ -268,7 +257,6 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
268
257
|
// that'd be wasteful as most tagging secrets are not used in each tx.
|
|
269
258
|
await syncSenderTaggingIndexes(
|
|
270
259
|
secret,
|
|
271
|
-
this.contractAddress,
|
|
272
260
|
this.aztecNode,
|
|
273
261
|
this.senderTaggingStore,
|
|
274
262
|
await this.anchorBlockHeader.hash(),
|
|
@@ -287,7 +275,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
287
275
|
* @param values - Values to store.
|
|
288
276
|
* @returns The hash of the values.
|
|
289
277
|
*/
|
|
290
|
-
public
|
|
278
|
+
public setHashPreimage(values: Fr[], hash: Fr) {
|
|
291
279
|
return this.executionCache.store(values, hash);
|
|
292
280
|
}
|
|
293
281
|
|
|
@@ -296,7 +284,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
296
284
|
* @param hash - Hash of the values.
|
|
297
285
|
* @returns The values.
|
|
298
286
|
*/
|
|
299
|
-
public
|
|
287
|
+
public getHashPreimage(hash: Fr): Promise<Fr[]> {
|
|
300
288
|
const preimage = this.executionCache.getPreimage(hash);
|
|
301
289
|
if (!preimage) {
|
|
302
290
|
throw new Error(`Preimage for hash ${hash.toString()} not found in cache`);
|
|
@@ -304,12 +292,12 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
304
292
|
return Promise.resolve(preimage);
|
|
305
293
|
}
|
|
306
294
|
|
|
307
|
-
override async
|
|
295
|
+
override async doesNullifierExist(innerNullifier: Fr): Promise<boolean> {
|
|
308
296
|
// This oracle must be overridden because while utility execution can only meaningfully check if a nullifier exists
|
|
309
297
|
// in the synched block, during private execution there's also the possibility of it being pending, i.e. created
|
|
310
298
|
// in the current transaction.
|
|
311
299
|
|
|
312
|
-
this.
|
|
300
|
+
this.logger.debug(`Checking existence of inner nullifier ${innerNullifier}`, {
|
|
313
301
|
contractAddress: this.contractAddress,
|
|
314
302
|
});
|
|
315
303
|
|
|
@@ -317,7 +305,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
317
305
|
|
|
318
306
|
return (
|
|
319
307
|
this.noteCache.getNullifiers(this.contractAddress).has(nullifier) ||
|
|
320
|
-
(await super.
|
|
308
|
+
(await super.doesNullifierExist(innerNullifier))
|
|
321
309
|
);
|
|
322
310
|
}
|
|
323
311
|
|
|
@@ -342,7 +330,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
342
330
|
* @param status - The status of notes to fetch.
|
|
343
331
|
* @returns Array of note data.
|
|
344
332
|
*/
|
|
345
|
-
public override async
|
|
333
|
+
public override async getNotes(
|
|
346
334
|
owner: AztecAddress | undefined,
|
|
347
335
|
storageSlot: Fr,
|
|
348
336
|
numSelects: number,
|
|
@@ -364,7 +352,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
364
352
|
|
|
365
353
|
const pendingNullifiers = this.noteCache.getNullifiers(this.callContext.contractAddress);
|
|
366
354
|
|
|
367
|
-
const noteService = new NoteService(this.noteStore, this.aztecNode, this.
|
|
355
|
+
const noteService = new NoteService(this.noteStore, this.aztecNode, this.anchorBlockHeader, this.jobId);
|
|
368
356
|
const dbNotes = await noteService.getNotes(
|
|
369
357
|
this.callContext.contractAddress,
|
|
370
358
|
owner,
|
|
@@ -388,7 +376,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
388
376
|
offset,
|
|
389
377
|
});
|
|
390
378
|
|
|
391
|
-
this.
|
|
379
|
+
this.logger.debug(
|
|
392
380
|
`Returning ${notes.length} notes for ${this.callContext.contractAddress} at ${storageSlot}: ${notes
|
|
393
381
|
.map(n => `${n.noteNonce.toString()}:[${n.note.items.map(i => i.toString()).join(',')}]`)
|
|
394
382
|
.join(', ')}`,
|
|
@@ -408,7 +396,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
408
396
|
* @param noteHash - A hash of the new note.
|
|
409
397
|
* @returns
|
|
410
398
|
*/
|
|
411
|
-
public
|
|
399
|
+
public notifyCreatedNote(
|
|
412
400
|
owner: AztecAddress,
|
|
413
401
|
storageSlot: Fr,
|
|
414
402
|
randomness: Fr,
|
|
@@ -417,7 +405,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
417
405
|
noteHash: Fr,
|
|
418
406
|
counter: number,
|
|
419
407
|
) {
|
|
420
|
-
this.
|
|
408
|
+
this.logger.debug(`Notified of new note with inner hash ${noteHash}`, {
|
|
421
409
|
contractAddress: this.callContext.contractAddress,
|
|
422
410
|
storageSlot,
|
|
423
411
|
randomness,
|
|
@@ -449,7 +437,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
449
437
|
* @param innerNullifier - The pending nullifier to add in the list (not yet siloed by contract address).
|
|
450
438
|
* @param noteHash - A hash of the new note.
|
|
451
439
|
*/
|
|
452
|
-
public async
|
|
440
|
+
public async notifyNullifiedNote(innerNullifier: Fr, noteHash: Fr, counter: number) {
|
|
453
441
|
const nullifiedNoteHashCounter = await this.noteCache.nullifyNote(
|
|
454
442
|
this.callContext.contractAddress,
|
|
455
443
|
innerNullifier,
|
|
@@ -466,19 +454,19 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
466
454
|
* @param innerNullifier - The pending nullifier to add in the list (not yet siloed by contract address).
|
|
467
455
|
* @param noteHash - A hash of the new note.
|
|
468
456
|
*/
|
|
469
|
-
public
|
|
470
|
-
this.
|
|
457
|
+
public notifyCreatedNullifier(innerNullifier: Fr) {
|
|
458
|
+
this.logger.debug(`Notified of new inner nullifier ${innerNullifier}`, { contractAddress: this.contractAddress });
|
|
471
459
|
return this.noteCache.nullifierCreated(this.callContext.contractAddress, innerNullifier);
|
|
472
460
|
}
|
|
473
461
|
|
|
474
462
|
/**
|
|
475
|
-
* Check if a nullifier has been emitted in the same transaction, i.e. if
|
|
463
|
+
* Check if a nullifier has been emitted in the same transaction, i.e. if notifyCreatedNullifier has been
|
|
476
464
|
* called for this inner nullifier from the contract with the specified address.
|
|
477
465
|
* @param innerNullifier - The inner nullifier to check.
|
|
478
466
|
* @param contractAddress - Address of the contract that emitted the nullifier.
|
|
479
467
|
* @returns A boolean indicating whether the nullifier is pending or not.
|
|
480
468
|
*/
|
|
481
|
-
public async
|
|
469
|
+
public async isNullifierPending(innerNullifier: Fr, contractAddress: AztecAddress): Promise<boolean> {
|
|
482
470
|
const siloedNullifier = await siloNullifier(contractAddress, innerNullifier);
|
|
483
471
|
const isNullifierPending = this.noteCache.getNullifiers(contractAddress).has(siloedNullifier.toBigInt());
|
|
484
472
|
return Promise.resolve(isNullifierPending);
|
|
@@ -491,10 +479,10 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
491
479
|
* @param log - The contract class log to be emitted.
|
|
492
480
|
* @param counter - The contract class log's counter.
|
|
493
481
|
*/
|
|
494
|
-
public
|
|
482
|
+
public notifyCreatedContractClassLog(log: ContractClassLog, counter: number) {
|
|
495
483
|
this.contractClassLogs.push(new CountedContractClassLog(log, counter));
|
|
496
484
|
const text = log.toBuffer().toString('hex');
|
|
497
|
-
this.
|
|
485
|
+
this.logger.verbose(
|
|
498
486
|
`Emitted log from ContractClassRegistry: "${text.length > 100 ? text.slice(0, 100) + '...' : text}"`,
|
|
499
487
|
);
|
|
500
488
|
}
|
|
@@ -520,7 +508,7 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
520
508
|
* @param isStaticCall - Whether the call is a static call.
|
|
521
509
|
* @returns The execution result.
|
|
522
510
|
*/
|
|
523
|
-
async
|
|
511
|
+
async callPrivateFunction(
|
|
524
512
|
targetContractAddress: AztecAddress,
|
|
525
513
|
functionSelector: FunctionSelector,
|
|
526
514
|
argsHash: Fr,
|
|
@@ -534,19 +522,19 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
534
522
|
}
|
|
535
523
|
|
|
536
524
|
const simulatorSetupTimer = new Timer();
|
|
537
|
-
this.
|
|
525
|
+
this.logger.debug(
|
|
538
526
|
`Calling private function ${targetContractAddress}:${functionSelector} from ${this.callContext.contractAddress}`,
|
|
539
527
|
);
|
|
540
528
|
|
|
541
529
|
isStaticCall = isStaticCall || this.callContext.isStaticCall;
|
|
542
530
|
|
|
543
|
-
await ensureContractSynced(
|
|
531
|
+
await this.contractSyncService.ensureContractSynced(
|
|
544
532
|
targetContractAddress,
|
|
545
533
|
functionSelector,
|
|
546
534
|
this.utilityExecutor,
|
|
547
|
-
this.aztecNode,
|
|
548
|
-
this.contractStore,
|
|
549
535
|
this.anchorBlockHeader,
|
|
536
|
+
this.jobId,
|
|
537
|
+
this.scopes,
|
|
550
538
|
);
|
|
551
539
|
|
|
552
540
|
const targetArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(
|
|
@@ -558,36 +546,39 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
558
546
|
|
|
559
547
|
const derivedCallContext = await this.deriveCallContext(targetContractAddress, targetArtifact, isStaticCall);
|
|
560
548
|
|
|
561
|
-
const privateExecutionOracle = new PrivateExecutionOracle(
|
|
549
|
+
const privateExecutionOracle = new PrivateExecutionOracle({
|
|
562
550
|
argsHash,
|
|
563
|
-
derivedTxContext,
|
|
564
|
-
derivedCallContext,
|
|
565
|
-
this.anchorBlockHeader,
|
|
566
|
-
this.utilityExecutor,
|
|
567
|
-
this.authWitnesses,
|
|
568
|
-
this.capsules,
|
|
569
|
-
this.executionCache,
|
|
570
|
-
this.noteCache,
|
|
571
|
-
this.taggingIndexCache,
|
|
572
|
-
this.contractStore,
|
|
573
|
-
this.noteStore,
|
|
574
|
-
this.keyStore,
|
|
575
|
-
this.addressStore,
|
|
576
|
-
this.aztecNode,
|
|
577
|
-
this.
|
|
578
|
-
this.
|
|
579
|
-
this.
|
|
580
|
-
this.
|
|
581
|
-
this.
|
|
582
|
-
this.
|
|
583
|
-
this.
|
|
584
|
-
this.
|
|
551
|
+
txContext: derivedTxContext,
|
|
552
|
+
callContext: derivedCallContext,
|
|
553
|
+
anchorBlockHeader: this.anchorBlockHeader,
|
|
554
|
+
utilityExecutor: this.utilityExecutor,
|
|
555
|
+
authWitnesses: this.authWitnesses,
|
|
556
|
+
capsules: this.capsules,
|
|
557
|
+
executionCache: this.executionCache,
|
|
558
|
+
noteCache: this.noteCache,
|
|
559
|
+
taggingIndexCache: this.taggingIndexCache,
|
|
560
|
+
contractStore: this.contractStore,
|
|
561
|
+
noteStore: this.noteStore,
|
|
562
|
+
keyStore: this.keyStore,
|
|
563
|
+
addressStore: this.addressStore,
|
|
564
|
+
aztecNode: this.aztecNode,
|
|
565
|
+
senderTaggingStore: this.senderTaggingStore,
|
|
566
|
+
recipientTaggingStore: this.recipientTaggingStore,
|
|
567
|
+
senderAddressBookStore: this.senderAddressBookStore,
|
|
568
|
+
capsuleService: this.capsuleService,
|
|
569
|
+
privateEventStore: this.privateEventStore,
|
|
570
|
+
messageContextService: this.messageContextService,
|
|
571
|
+
contractSyncService: this.contractSyncService,
|
|
572
|
+
jobId: this.jobId,
|
|
573
|
+
totalPublicCalldataCount: this.totalPublicCalldataCount,
|
|
585
574
|
sideEffectCounter,
|
|
586
|
-
this.
|
|
587
|
-
this.
|
|
588
|
-
this.
|
|
589
|
-
this.simulator,
|
|
590
|
-
|
|
575
|
+
scopes: this.scopes,
|
|
576
|
+
log: this.logger,
|
|
577
|
+
senderForTags: this.defaultSenderForTags,
|
|
578
|
+
simulator: this.simulator,
|
|
579
|
+
hooks: this.hooks,
|
|
580
|
+
l2TipsStore: this.l2TipsStore,
|
|
581
|
+
});
|
|
591
582
|
|
|
592
583
|
const setupTime = simulatorSetupTimer.ms();
|
|
593
584
|
|
|
@@ -599,6 +590,9 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
599
590
|
functionSelector,
|
|
600
591
|
);
|
|
601
592
|
|
|
593
|
+
// Propagate the nested call's calldata count so the parent sees its increments on subsequent enqueues.
|
|
594
|
+
this.totalPublicCalldataCount = privateExecutionOracle.getTotalPublicCalldataCount();
|
|
595
|
+
|
|
602
596
|
if (isStaticCall) {
|
|
603
597
|
this.#checkValidStaticCall(childExecutionResult);
|
|
604
598
|
}
|
|
@@ -618,7 +612,8 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
618
612
|
};
|
|
619
613
|
}
|
|
620
614
|
|
|
621
|
-
|
|
615
|
+
/** Validates the calldata preimage exists in the cache and checks cumulative calldata size is within limits. */
|
|
616
|
+
public assertValidPublicCalldata(calldataHash: Fr) {
|
|
622
617
|
const calldata = this.executionCache.getPreimage(calldataHash);
|
|
623
618
|
if (!calldata) {
|
|
624
619
|
throw new Error('Calldata for public call not found in cache');
|
|
@@ -628,47 +623,18 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
628
623
|
if (this.totalPublicCalldataCount > MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS) {
|
|
629
624
|
throw new Error(`Too many total args to all enqueued public calls! (> ${MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS})`);
|
|
630
625
|
}
|
|
631
|
-
}
|
|
632
|
-
|
|
633
|
-
/**
|
|
634
|
-
* Verify relevant information when a public function is enqueued.
|
|
635
|
-
* @param targetContractAddress - The address of the contract to call.
|
|
636
|
-
* @param calldataHash - The hash of the function selector and arguments.
|
|
637
|
-
* @param sideEffectCounter - The side effect counter at the start of the call.
|
|
638
|
-
* @param isStaticCall - Whether the call is a static call.
|
|
639
|
-
*/
|
|
640
|
-
public privateNotifyEnqueuedPublicFunctionCall(
|
|
641
|
-
_targetContractAddress: AztecAddress,
|
|
642
|
-
calldataHash: Fr,
|
|
643
|
-
_sideEffectCounter: number,
|
|
644
|
-
_isStaticCall: boolean,
|
|
645
|
-
) {
|
|
646
|
-
this.#onNewPublicFunctionCall(calldataHash);
|
|
647
626
|
return Promise.resolve();
|
|
648
627
|
}
|
|
649
628
|
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
* @param targetContractAddress - The address of the contract to call.
|
|
653
|
-
* @param argsHash - The arguments hash to pass to the function.
|
|
654
|
-
* @param sideEffectCounter - The side effect counter at the start of the call.
|
|
655
|
-
* @param isStaticCall - Whether the call is a static call.
|
|
656
|
-
*/
|
|
657
|
-
public privateNotifySetPublicTeardownFunctionCall(
|
|
658
|
-
_targetContractAddress: AztecAddress,
|
|
659
|
-
calldataHash: Fr,
|
|
660
|
-
_sideEffectCounter: number,
|
|
661
|
-
_isStaticCall: boolean,
|
|
662
|
-
) {
|
|
663
|
-
this.#onNewPublicFunctionCall(calldataHash);
|
|
664
|
-
return Promise.resolve();
|
|
629
|
+
public getTotalPublicCalldataCount(): number {
|
|
630
|
+
return this.totalPublicCalldataCount;
|
|
665
631
|
}
|
|
666
632
|
|
|
667
|
-
public
|
|
633
|
+
public notifyRevertiblePhaseStart(minRevertibleSideEffectCounter: number): Promise<void> {
|
|
668
634
|
return this.noteCache.setMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter);
|
|
669
635
|
}
|
|
670
636
|
|
|
671
|
-
public
|
|
637
|
+
public isExecutionInRevertiblePhase(sideEffectCounter: number): Promise<boolean> {
|
|
672
638
|
return Promise.resolve(this.noteCache.isSideEffectCounterRevertible(sideEffectCounter));
|
|
673
639
|
}
|
|
674
640
|
|
|
@@ -695,9 +661,4 @@ export class PrivateExecutionOracle extends UtilityExecutionOracle implements IP
|
|
|
695
661
|
public getDebugFunctionName() {
|
|
696
662
|
return this.contractStore.getDebugFunctionName(this.contractAddress, this.callContext.functionSelector);
|
|
697
663
|
}
|
|
698
|
-
|
|
699
|
-
public utilityEmitOffchainEffect(data: Fr[]): Promise<void> {
|
|
700
|
-
this.offchainEffects.push({ data });
|
|
701
|
-
return Promise.resolve();
|
|
702
|
-
}
|
|
703
664
|
}
|