@aztec/pxe 0.0.1-commit.e3c1de76 → 0.0.1-commit.e57c76e
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 +43 -99
- 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 +26 -0
- package/dest/bin/oracle_version_helpers.d.ts.map +1 -0
- package/dest/bin/oracle_version_helpers.js +93 -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 +62 -0
- package/dest/block_synchronizer/block_synchronizer.d.ts +9 -3
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
- package/dest/block_synchronizer/block_synchronizer.js +37 -11
- package/dest/config/index.d.ts +8 -2
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +13 -15
- package/dest/config/package_info.js +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.d.ts +66 -29
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +216 -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_note_cache.d.ts +2 -2
- package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +7 -11
- 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 -15
- package/dest/contract_function_simulator/index.d.ts +14 -2
- package/dest/contract_function_simulator/index.d.ts.map +1 -1
- package/dest/contract_function_simulator/index.js +11 -0
- package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts +48 -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 +45 -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 +3 -4
- 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 -9
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +13 -3
- 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 +35 -4
- 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_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 +3 -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 +6 -10
- package/dest/contract_function_simulator/noir-structs/option.d.ts +61 -0
- package/dest/contract_function_simulator/noir-structs/option.d.ts.map +1 -0
- package/dest/contract_function_simulator/noir-structs/option.js +62 -0
- package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts +11 -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 +24 -0
- package/dest/contract_function_simulator/oracle/interfaces.d.ts +16 -98
- 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/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.d.ts +75 -46
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle.js +471 -275
- package/dest/contract_function_simulator/oracle/oracle_registry.d.ts +127 -0
- package/dest/contract_function_simulator/oracle/oracle_registry.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/oracle_registry.js +786 -0
- package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts +139 -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 +560 -0
- package/dest/contract_function_simulator/oracle/private_execution.js +5 -3
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +68 -95
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +141 -110
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +156 -76
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +450 -166
- 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 +35 -64
- 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 +42 -0
- package/dest/contract_sync/contract_sync_service.d.ts.map +1 -0
- package/dest/contract_sync/contract_sync_service.js +135 -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 +14 -15
- package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
- package/dest/debug/pxe_debug_utils.js +16 -21
- 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 +21 -5
- 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 +2 -2
- package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/utils.js +21 -5
- package/dest/entrypoints/pxe_creation_options.d.ts +9 -1
- 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 +4 -3
- package/dest/entrypoints/server/utils.d.ts.map +1 -1
- package/dest/entrypoints/server/utils.js +21 -5
- package/dest/events/event_service.d.ts +15 -6
- package/dest/events/event_service.d.ts.map +1 -1
- package/dest/events/event_service.js +44 -11
- 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 +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/logs/log_service.d.ts +9 -8
- package/dest/logs/log_service.d.ts.map +1 -1
- package/dest/logs/log_service.js +131 -84
- 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 +55 -0
- package/dest/notes/note_service.d.ts +27 -5
- package/dest/notes/note_service.d.ts.map +1 -1
- package/dest/notes/note_service.js +83 -58
- 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/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/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 +130 -69
- 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 +202 -0
- 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 +166 -65
- package/dest/private_kernel/private_kernel_oracle.d.ts +15 -11
- package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_oracle.js +31 -25
- package/dest/pxe.d.ts +120 -24
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +231 -134
- package/dest/storage/anchor_block_store/anchor_block_store.js +1 -1
- 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 +591 -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 +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 +42 -15
- package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
- package/dest/storage/contract_store/contract_store.js +146 -87
- package/dest/storage/metadata.d.ts +1 -1
- package/dest/storage/metadata.js +1 -1
- package/dest/storage/note_store/note_store.d.ts +3 -3
- package/dest/storage/note_store/note_store.d.ts.map +1 -1
- package/dest/storage/note_store/note_store.js +6 -4
- package/dest/storage/open_pxe_stores.d.ts +33 -0
- package/dest/storage/open_pxe_stores.d.ts.map +1 -0
- package/dest/storage/open_pxe_stores.js +27 -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 +3 -0
- package/dest/storage/private_event_store/stored_private_event.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 +29 -28
- package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
- package/dest/storage/tagging_store/sender_tagging_store.js +141 -115
- package/dest/tagging/get_all_logs_by_tags.d.ts +34 -10
- package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -1
- package/dest/tagging/get_all_logs_by_tags.js +45 -32
- 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 +163 -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/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 +4 -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 +32 -14
- 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 +5 -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 -25
- package/package.json +29 -17
- package/src/bin/check_oracle_version.ts +49 -122
- package/src/bin/index.ts +1 -0
- package/src/bin/oracle_version_helpers.ts +121 -0
- package/src/block_synchronizer/block_stream_source.ts +81 -0
- package/src/block_synchronizer/block_synchronizer.ts +39 -11
- package/src/config/index.ts +15 -9
- package/src/config/package_info.ts +1 -1
- package/src/contract_function_simulator/contract_function_simulator.ts +391 -136
- package/src/contract_function_simulator/ephemeral_array_service.ts +110 -0
- package/src/contract_function_simulator/execution_note_cache.ts +1 -1
- package/src/contract_function_simulator/execution_tagging_index_cache.ts +19 -18
- package/src/contract_function_simulator/index.ts +51 -1
- package/src/contract_function_simulator/noir-structs/bounded_vec.ts +55 -0
- package/src/contract_function_simulator/noir-structs/ephemeral_array.ts +66 -0
- package/src/contract_function_simulator/noir-structs/event_validation_request.ts +9 -8
- package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +36 -3
- package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +2 -5
- package/src/contract_function_simulator/noir-structs/note_data.ts +27 -0
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +4 -9
- package/src/contract_function_simulator/noir-structs/option.ts +69 -0
- package/src/contract_function_simulator/noir-structs/provided_secret.ts +27 -0
- package/src/contract_function_simulator/oracle/interfaces.ts +12 -176
- package/src/contract_function_simulator/oracle/note_packing_utils.ts +3 -3
- package/src/contract_function_simulator/oracle/oracle.ts +564 -473
- package/src/contract_function_simulator/oracle/oracle_registry.ts +585 -0
- package/src/contract_function_simulator/oracle/oracle_type_mappings.ts +553 -0
- package/src/contract_function_simulator/oracle/private_execution.ts +4 -4
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +173 -205
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +664 -245
- package/src/contract_function_simulator/pick_notes.ts +22 -3
- package/src/contract_function_simulator/proxied_contract_data_source.ts +41 -64
- package/src/contract_logging.ts +52 -0
- package/src/contract_sync/contract_sync_service.ts +189 -0
- package/src/contract_sync/{index.ts → helpers.ts} +17 -29
- package/src/debug/pxe_debug_utils.ts +47 -25
- package/src/entrypoints/client/bundle/index.ts +2 -0
- package/src/entrypoints/client/bundle/utils.ts +19 -6
- package/src/entrypoints/client/lazy/index.ts +2 -0
- package/src/entrypoints/client/lazy/utils.ts +19 -6
- package/src/entrypoints/pxe_creation_options.ts +14 -0
- package/src/entrypoints/server/index.ts +4 -2
- package/src/entrypoints/server/utils.ts +22 -13
- package/src/events/event_service.ts +69 -21
- 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 +48 -0
- package/src/hooks/index.ts +7 -0
- package/src/logs/log_service.ts +162 -145
- package/src/messages/message_context_service.ts +62 -0
- package/src/notes/note_service.ts +120 -85
- package/src/notes_filter.ts +24 -0
- package/src/oracle_version.ts +20 -10
- package/src/private_kernel/batch_planner.ts +169 -0
- 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 +165 -118
- package/src/private_kernel/hints/test_utils.ts +318 -0
- package/src/private_kernel/private_kernel_execution_prover.ts +254 -89
- package/src/private_kernel/private_kernel_oracle.ts +42 -32
- package/src/pxe.ts +416 -181
- package/src/storage/anchor_block_store/anchor_block_store.ts +1 -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 +46 -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 +712 -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 +44 -26
- package/src/storage/capsule_store/index.ts +1 -0
- package/src/storage/contract_store/contract_store.ts +182 -104
- package/src/storage/metadata.ts +1 -1
- package/src/storage/note_store/note_store.ts +9 -5
- package/src/storage/open_pxe_stores.ts +49 -0
- package/src/storage/private_event_store/private_event_store.ts +4 -0
- package/src/storage/private_event_store/stored_private_event.ts +1 -1
- package/src/storage/tagging_store/recipient_tagging_store.ts +5 -5
- package/src/storage/tagging_store/sender_tagging_store.ts +185 -138
- package/src/tagging/get_all_logs_by_tags.ts +87 -35
- 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 +240 -0
- package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +4 -4
- package/src/tagging/reconcile_tagging_index_ranges.ts +102 -0
- package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +52 -17
- 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 +27 -27
- 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
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type { FUNCTION_TREE_HEIGHT } from '@aztec/constants';
|
|
2
|
-
import
|
|
2
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
3
|
import { toArray } from '@aztec/foundation/iterable';
|
|
4
|
+
import { BufferReader, numToUInt8, serializeToBuffer } from '@aztec/foundation/serialize';
|
|
4
5
|
import type { MembershipWitness } from '@aztec/foundation/trees';
|
|
5
6
|
import type { AztecAsyncKVStore, AztecAsyncMap } from '@aztec/kv-store';
|
|
6
7
|
import {
|
|
7
8
|
type ContractArtifact,
|
|
8
9
|
type FunctionAbi,
|
|
9
|
-
type FunctionArtifact,
|
|
10
10
|
type FunctionArtifactWithContractName,
|
|
11
11
|
FunctionCall,
|
|
12
12
|
type FunctionDebugMetadata,
|
|
@@ -15,11 +15,14 @@ import {
|
|
|
15
15
|
contractArtifactFromBuffer,
|
|
16
16
|
contractArtifactToBuffer,
|
|
17
17
|
encodeArguments,
|
|
18
|
+
findFunctionAbiBySelector,
|
|
19
|
+
findFunctionArtifactBySelector,
|
|
18
20
|
getFunctionDebugMetadata,
|
|
19
21
|
} from '@aztec/stdlib/abi';
|
|
20
22
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
21
23
|
import {
|
|
22
|
-
type
|
|
24
|
+
type ContractClassIdPreimage,
|
|
25
|
+
type ContractClassWithId,
|
|
23
26
|
type ContractInstanceWithAddress,
|
|
24
27
|
SerializableContractInstance,
|
|
25
28
|
getContractClassFromArtifact,
|
|
@@ -27,6 +30,68 @@ import {
|
|
|
27
30
|
|
|
28
31
|
import { PrivateFunctionsTree } from './private_functions_tree.js';
|
|
29
32
|
|
|
33
|
+
const VERSION = 1 as const;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* All contract class data except the large packedBytecode.
|
|
37
|
+
* The expensive data from the ContractClass is precomputed and stored in this format to avoid redundant hashing.
|
|
38
|
+
* Since we have to store the artifacts anyway, the final ContractClass is reconstructed by combining this data
|
|
39
|
+
* with the packedBytecode obtained from the former. That way we can have quick class lookups without wasted storage.
|
|
40
|
+
*/
|
|
41
|
+
export class SerializableContractClassData {
|
|
42
|
+
public readonly version = VERSION;
|
|
43
|
+
public readonly id: Fr;
|
|
44
|
+
public readonly artifactHash: Fr;
|
|
45
|
+
public readonly privateFunctionsRoot: Fr;
|
|
46
|
+
public readonly publicBytecodeCommitment: Fr;
|
|
47
|
+
public readonly privateFunctions: { selector: FunctionSelector; vkHash: Fr }[];
|
|
48
|
+
|
|
49
|
+
constructor(
|
|
50
|
+
data: ContractClassIdPreimage & {
|
|
51
|
+
id: Fr;
|
|
52
|
+
privateFunctions: { selector: FunctionSelector; vkHash: Fr }[];
|
|
53
|
+
},
|
|
54
|
+
) {
|
|
55
|
+
this.id = data.id;
|
|
56
|
+
this.artifactHash = data.artifactHash;
|
|
57
|
+
this.privateFunctionsRoot = data.privateFunctionsRoot;
|
|
58
|
+
this.publicBytecodeCommitment = data.publicBytecodeCommitment;
|
|
59
|
+
this.privateFunctions = data.privateFunctions;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
toBuffer(): Buffer {
|
|
63
|
+
return serializeToBuffer(
|
|
64
|
+
numToUInt8(this.version),
|
|
65
|
+
this.id,
|
|
66
|
+
this.artifactHash,
|
|
67
|
+
this.privateFunctionsRoot,
|
|
68
|
+
this.publicBytecodeCommitment,
|
|
69
|
+
this.privateFunctions.length,
|
|
70
|
+
...this.privateFunctions.map(fn => serializeToBuffer(fn.selector, fn.vkHash)),
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
static fromBuffer(bufferOrReader: Buffer | BufferReader): SerializableContractClassData {
|
|
75
|
+
const reader = BufferReader.asReader(bufferOrReader);
|
|
76
|
+
const version = reader.readUInt8();
|
|
77
|
+
if (version !== VERSION) {
|
|
78
|
+
throw new Error(`Unexpected contract class data version ${version}`);
|
|
79
|
+
}
|
|
80
|
+
return new SerializableContractClassData({
|
|
81
|
+
id: reader.readObject(Fr),
|
|
82
|
+
artifactHash: reader.readObject(Fr),
|
|
83
|
+
privateFunctionsRoot: reader.readObject(Fr),
|
|
84
|
+
publicBytecodeCommitment: reader.readObject(Fr),
|
|
85
|
+
privateFunctions: reader.readVector({
|
|
86
|
+
fromBuffer: (r: BufferReader) => ({
|
|
87
|
+
selector: r.readObject(FunctionSelector),
|
|
88
|
+
vkHash: r.readObject(Fr),
|
|
89
|
+
}),
|
|
90
|
+
}),
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
30
95
|
/**
|
|
31
96
|
* ContractStore serves as a data manager and retriever for Aztec.nr contracts.
|
|
32
97
|
* It provides methods to obtain contract addresses, function ABI, bytecode, and membership witnesses
|
|
@@ -39,76 +104,95 @@ export class ContractStore {
|
|
|
39
104
|
// TODO: Update it to be LRU cache so that it doesn't keep all the data all the time.
|
|
40
105
|
#privateFunctionTrees: Map<string, PrivateFunctionsTree> = new Map();
|
|
41
106
|
|
|
42
|
-
/**
|
|
107
|
+
/**
|
|
108
|
+
* In-memory cache of deserialized ContractArtifact objects, keyed by class id string.
|
|
109
|
+
* Avoids repeated LMDB reads + JSON.parse + Zod validation on every oracle call.
|
|
110
|
+
* Artifacts are large but immutable after registration — safe to cache for the lifetime of the store.
|
|
111
|
+
*/
|
|
112
|
+
// TODO: Update it to be LRU cache so that it doesn't keep all the data all the time.
|
|
113
|
+
#contractArtifactCache: Map<string, ContractArtifact> = new Map();
|
|
114
|
+
|
|
115
|
+
/** Map from contract address to contract class id (avoids KV round-trip on hot path). */
|
|
43
116
|
#contractClassIdMap: Map<string, Fr> = new Map();
|
|
44
117
|
|
|
45
118
|
#store: AztecAsyncKVStore;
|
|
46
119
|
#contractArtifacts: AztecAsyncMap<string, Buffer>;
|
|
120
|
+
#contractClassData: AztecAsyncMap<string, Buffer>;
|
|
47
121
|
#contractInstances: AztecAsyncMap<string, Buffer>;
|
|
48
122
|
|
|
49
123
|
constructor(store: AztecAsyncKVStore) {
|
|
50
124
|
this.#store = store;
|
|
51
125
|
this.#contractArtifacts = store.openMap('contract_artifacts');
|
|
126
|
+
this.#contractClassData = store.openMap('contract_classes');
|
|
52
127
|
this.#contractInstances = store.openMap('contracts_instances');
|
|
53
128
|
}
|
|
54
129
|
|
|
55
130
|
// Setters
|
|
56
131
|
|
|
57
|
-
|
|
58
|
-
|
|
132
|
+
/**
|
|
133
|
+
* Registers a new contract artifact and its corresponding class data.
|
|
134
|
+
* IMPORTANT: This method does not verify that the provided artifact matches the class data or that the class id matches the artifact.
|
|
135
|
+
* It is the caller's responsibility to ensure the consistency and correctness of the provided data.
|
|
136
|
+
* This is done to avoid redundant, expensive contract class computations
|
|
137
|
+
*/
|
|
138
|
+
public async addContractArtifact(
|
|
139
|
+
contract: ContractArtifact,
|
|
140
|
+
contractClassWithIdAndPreimage?: ContractClassWithId & ContractClassIdPreimage,
|
|
141
|
+
): Promise<Fr> {
|
|
142
|
+
const contractClass = contractClassWithIdAndPreimage ?? (await getContractClassFromArtifact(contract));
|
|
143
|
+
const key = contractClass.id.toString();
|
|
144
|
+
|
|
145
|
+
if (this.#contractArtifactCache.has(key)) {
|
|
146
|
+
return contractClass.id;
|
|
147
|
+
}
|
|
148
|
+
|
|
59
149
|
const privateFunctions = contract.functions.filter(
|
|
60
150
|
functionArtifact => functionArtifact.functionType === FunctionType.PRIVATE,
|
|
61
151
|
);
|
|
62
|
-
|
|
63
152
|
const privateSelectors = await Promise.all(
|
|
64
|
-
privateFunctions.map(async
|
|
65
|
-
(
|
|
66
|
-
await FunctionSelector.fromNameAndParameters(privateFunctionArtifact.name, privateFunctionArtifact.parameters)
|
|
67
|
-
).toString(),
|
|
153
|
+
privateFunctions.map(async fn =>
|
|
154
|
+
(await FunctionSelector.fromNameAndParameters(fn.name, fn.parameters)).toString(),
|
|
68
155
|
),
|
|
69
156
|
);
|
|
70
|
-
|
|
71
157
|
if (privateSelectors.length !== new Set(privateSelectors).size) {
|
|
72
158
|
throw new Error('Repeated function selectors of private functions');
|
|
73
159
|
}
|
|
74
160
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
)
|
|
161
|
+
this.#contractArtifactCache.set(key, contract);
|
|
162
|
+
|
|
163
|
+
await this.#store.transactionAsync(async () => {
|
|
164
|
+
await this.#contractArtifacts.set(key, contractArtifactToBuffer(contract));
|
|
165
|
+
await this.#contractClassData.set(key, new SerializableContractClassData(contractClass).toBuffer());
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
return contractClass.id;
|
|
78
169
|
}
|
|
79
170
|
|
|
80
171
|
async addContractInstance(contract: ContractInstanceWithAddress): Promise<void> {
|
|
81
|
-
this.#
|
|
172
|
+
await this.#store.transactionAsync(async () => {
|
|
173
|
+
await this.#contractInstances.set(
|
|
174
|
+
contract.address.toString(),
|
|
175
|
+
new SerializableContractInstance(contract).toBuffer(),
|
|
176
|
+
);
|
|
177
|
+
});
|
|
82
178
|
|
|
83
|
-
|
|
84
|
-
contract.address.toString(),
|
|
85
|
-
new SerializableContractInstance(contract).toBuffer(),
|
|
86
|
-
);
|
|
179
|
+
this.#contractClassIdMap.set(contract.address.toString(), contract.currentContractClassId);
|
|
87
180
|
}
|
|
88
181
|
|
|
89
182
|
// Private getters
|
|
90
183
|
|
|
91
184
|
async #getContractClassId(contractAddress: AztecAddress): Promise<Fr | undefined> {
|
|
92
|
-
|
|
185
|
+
const key = contractAddress.toString();
|
|
186
|
+
if (!this.#contractClassIdMap.has(key)) {
|
|
93
187
|
const instance = await this.getContractInstance(contractAddress);
|
|
94
188
|
if (!instance) {
|
|
95
189
|
return;
|
|
96
190
|
}
|
|
97
|
-
this.#contractClassIdMap.set(
|
|
191
|
+
this.#contractClassIdMap.set(key, instance.currentContractClassId);
|
|
98
192
|
}
|
|
99
|
-
return this.#contractClassIdMap.get(
|
|
193
|
+
return this.#contractClassIdMap.get(key);
|
|
100
194
|
}
|
|
101
195
|
|
|
102
|
-
/**
|
|
103
|
-
* Retrieve or create a ContractTree instance based on the provided class id.
|
|
104
|
-
* If an existing tree with the same class id is found in the cache, it will be returned.
|
|
105
|
-
* Otherwise, a new ContractTree instance will be created using the contract data from the database
|
|
106
|
-
* and added to the cache before returning.
|
|
107
|
-
*
|
|
108
|
-
* @param classId - The class id of the contract for which the ContractTree is required.
|
|
109
|
-
* @returns A ContractTree instance associated with the specified contract address.
|
|
110
|
-
* @throws An Error if the contract is not found in the ContractDatabase.
|
|
111
|
-
*/
|
|
112
196
|
async #getPrivateFunctionTreeForClassId(classId: Fr): Promise<PrivateFunctionsTree | undefined> {
|
|
113
197
|
if (!this.#privateFunctionTrees.has(classId.toString())) {
|
|
114
198
|
const artifact = await this.getContractArtifact(classId);
|
|
@@ -121,9 +205,9 @@ export class ContractStore {
|
|
|
121
205
|
return this.#privateFunctionTrees.get(classId.toString())!;
|
|
122
206
|
}
|
|
123
207
|
|
|
124
|
-
async #
|
|
125
|
-
const
|
|
126
|
-
return
|
|
208
|
+
async #getArtifactByAddress(contractAddress: AztecAddress): Promise<ContractArtifact | undefined> {
|
|
209
|
+
const classId = await this.#getContractClassId(contractAddress);
|
|
210
|
+
return classId && this.getContractArtifact(classId);
|
|
127
211
|
}
|
|
128
212
|
|
|
129
213
|
// Public getters
|
|
@@ -135,7 +219,7 @@ export class ContractStore {
|
|
|
135
219
|
});
|
|
136
220
|
}
|
|
137
221
|
|
|
138
|
-
/** Returns a contract instance for a given address.
|
|
222
|
+
/** Returns a contract instance for a given address. */
|
|
139
223
|
public getContractInstance(contractAddress: AztecAddress): Promise<ContractInstanceWithAddress | undefined> {
|
|
140
224
|
return this.#store.transactionAsync(async () => {
|
|
141
225
|
const contract = await this.#contractInstances.getAsync(contractAddress.toString());
|
|
@@ -143,18 +227,39 @@ export class ContractStore {
|
|
|
143
227
|
});
|
|
144
228
|
}
|
|
145
229
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
230
|
+
/** Returns the raw contract artifact for a given class id. */
|
|
231
|
+
public async getContractArtifact(contractClassId: Fr): Promise<ContractArtifact | undefined> {
|
|
232
|
+
const key = contractClassId.toString();
|
|
233
|
+
const cached = this.#contractArtifactCache.get(key);
|
|
234
|
+
if (cached) {
|
|
235
|
+
return cached;
|
|
236
|
+
}
|
|
237
|
+
const artifact = await this.#store.transactionAsync(async () => {
|
|
238
|
+
const buf = await this.#contractArtifacts.getAsync(key);
|
|
239
|
+
return buf && contractArtifactFromBuffer(buf);
|
|
151
240
|
});
|
|
241
|
+
if (artifact) {
|
|
242
|
+
this.#contractArtifactCache.set(key, artifact);
|
|
243
|
+
}
|
|
244
|
+
return artifact;
|
|
152
245
|
}
|
|
153
246
|
|
|
154
|
-
/** Returns a contract class for a given class id.
|
|
155
|
-
public async
|
|
247
|
+
/** Returns a contract class for a given class id. */
|
|
248
|
+
public async getContractClassWithPreimage(
|
|
249
|
+
contractClassId: Fr,
|
|
250
|
+
): Promise<(ContractClassWithId & ContractClassIdPreimage) | undefined> {
|
|
251
|
+
const key = contractClassId.toString();
|
|
252
|
+
const buf = await this.#store.transactionAsync(() => this.#contractClassData.getAsync(key));
|
|
253
|
+
if (!buf) {
|
|
254
|
+
return undefined;
|
|
255
|
+
}
|
|
256
|
+
const classData = SerializableContractClassData.fromBuffer(buf);
|
|
156
257
|
const artifact = await this.getContractArtifact(contractClassId);
|
|
157
|
-
|
|
258
|
+
if (!artifact) {
|
|
259
|
+
return undefined;
|
|
260
|
+
}
|
|
261
|
+
const packedBytecode = artifact.functions.find(f => f.name === 'public_dispatch')?.bytecode ?? Buffer.alloc(0);
|
|
262
|
+
return { ...classData, packedBytecode };
|
|
158
263
|
}
|
|
159
264
|
|
|
160
265
|
public async getContract(
|
|
@@ -173,8 +278,6 @@ export class ContractStore {
|
|
|
173
278
|
|
|
174
279
|
/**
|
|
175
280
|
* Retrieves the artifact of a specified function within a given contract.
|
|
176
|
-
* The function is identified by its selector, which is a unique code generated from the function's signature.
|
|
177
|
-
* Throws an error if the contract address or function selector are invalid or not found.
|
|
178
281
|
*
|
|
179
282
|
* @param contractAddress - The AztecAddress representing the contract containing the function.
|
|
180
283
|
* @param selector - The function selector.
|
|
@@ -184,9 +287,12 @@ export class ContractStore {
|
|
|
184
287
|
contractAddress: AztecAddress,
|
|
185
288
|
selector: FunctionSelector,
|
|
186
289
|
): Promise<FunctionArtifactWithContractName | undefined> {
|
|
187
|
-
const artifact = await this.#
|
|
188
|
-
|
|
189
|
-
|
|
290
|
+
const artifact = await this.#getArtifactByAddress(contractAddress);
|
|
291
|
+
if (!artifact) {
|
|
292
|
+
return undefined;
|
|
293
|
+
}
|
|
294
|
+
const fn = await findFunctionArtifactBySelector(artifact, selector);
|
|
295
|
+
return fn && { ...fn, contractName: artifact.name };
|
|
190
296
|
}
|
|
191
297
|
|
|
192
298
|
public async getFunctionArtifactWithDebugMetadata(
|
|
@@ -207,50 +313,48 @@ export class ContractStore {
|
|
|
207
313
|
public async getPublicFunctionArtifact(
|
|
208
314
|
contractAddress: AztecAddress,
|
|
209
315
|
): Promise<FunctionArtifactWithContractName | undefined> {
|
|
210
|
-
const artifact = await this.#
|
|
211
|
-
const
|
|
212
|
-
return
|
|
316
|
+
const artifact = await this.#getArtifactByAddress(contractAddress);
|
|
317
|
+
const fn = artifact && artifact.functions.find(f => f.functionType === FunctionType.PUBLIC);
|
|
318
|
+
return fn && { ...fn, contractName: artifact.name };
|
|
213
319
|
}
|
|
214
320
|
|
|
215
321
|
public async getFunctionAbi(
|
|
216
322
|
contractAddress: AztecAddress,
|
|
217
323
|
selector: FunctionSelector,
|
|
218
324
|
): Promise<FunctionAbi | undefined> {
|
|
219
|
-
const artifact = await this.#
|
|
220
|
-
return artifact && (await
|
|
325
|
+
const artifact = await this.#getArtifactByAddress(contractAddress);
|
|
326
|
+
return artifact && (await findFunctionAbiBySelector(artifact, selector));
|
|
221
327
|
}
|
|
222
328
|
|
|
223
329
|
/**
|
|
224
330
|
* Retrieves the debug metadata of a specified function within a given contract.
|
|
225
|
-
* The function is identified by its selector, which is a unique code generated from the function's signature.
|
|
226
|
-
* Returns undefined if the debug metadata for the given function is not found.
|
|
227
|
-
* Throws if the contract has not been added to the database.
|
|
228
331
|
*
|
|
229
332
|
* @param contractAddress - The AztecAddress representing the contract containing the function.
|
|
230
333
|
* @param selector - The function selector.
|
|
231
|
-
* @returns The corresponding function's
|
|
334
|
+
* @returns The corresponding function's debug metadata, or undefined.
|
|
232
335
|
*/
|
|
233
336
|
public async getFunctionDebugMetadata(
|
|
234
337
|
contractAddress: AztecAddress,
|
|
235
338
|
selector: FunctionSelector,
|
|
236
339
|
): Promise<FunctionDebugMetadata | undefined> {
|
|
237
|
-
const artifact = await this.#
|
|
238
|
-
|
|
239
|
-
|
|
340
|
+
const artifact = await this.#getArtifactByAddress(contractAddress);
|
|
341
|
+
if (!artifact) {
|
|
342
|
+
return undefined;
|
|
343
|
+
}
|
|
344
|
+
const fn = await findFunctionArtifactBySelector(artifact, selector);
|
|
345
|
+
return fn && getFunctionDebugMetadata(artifact, fn);
|
|
240
346
|
}
|
|
241
347
|
|
|
242
348
|
public async getPublicFunctionDebugMetadata(
|
|
243
349
|
contractAddress: AztecAddress,
|
|
244
350
|
): Promise<FunctionDebugMetadata | undefined> {
|
|
245
|
-
const artifact = await this.#
|
|
246
|
-
const
|
|
247
|
-
return
|
|
351
|
+
const artifact = await this.#getArtifactByAddress(contractAddress);
|
|
352
|
+
const fn = artifact && artifact.functions.find(f => f.functionType === FunctionType.PUBLIC);
|
|
353
|
+
return fn && getFunctionDebugMetadata(artifact, fn);
|
|
248
354
|
}
|
|
249
355
|
|
|
250
356
|
/**
|
|
251
357
|
* Retrieve the function membership witness for the given contract class and function selector.
|
|
252
|
-
* The function membership witness represents a proof that the function belongs to the specified contract.
|
|
253
|
-
* Throws an error if the contract address or function selector is unknown.
|
|
254
358
|
*
|
|
255
359
|
* @param contractClassId - The id of the class.
|
|
256
360
|
* @param selector - The function selector.
|
|
@@ -265,42 +369,14 @@ export class ContractStore {
|
|
|
265
369
|
}
|
|
266
370
|
|
|
267
371
|
public async getDebugContractName(contractAddress: AztecAddress) {
|
|
268
|
-
const artifact = await this.#
|
|
372
|
+
const artifact = await this.#getArtifactByAddress(contractAddress);
|
|
269
373
|
return artifact?.name;
|
|
270
374
|
}
|
|
271
375
|
|
|
272
376
|
public async getDebugFunctionName(contractAddress: AztecAddress, selector: FunctionSelector) {
|
|
273
|
-
const artifact = await this.#
|
|
274
|
-
const
|
|
275
|
-
return `${artifact?.name ?? contractAddress}:${
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
async #findFunctionArtifactBySelector(
|
|
279
|
-
artifact: ContractArtifact,
|
|
280
|
-
selector: FunctionSelector,
|
|
281
|
-
): Promise<FunctionArtifact | undefined> {
|
|
282
|
-
const functions = artifact.functions;
|
|
283
|
-
for (let i = 0; i < functions.length; i++) {
|
|
284
|
-
const fn = functions[i];
|
|
285
|
-
const fnSelector = await FunctionSelector.fromNameAndParameters(fn.name, fn.parameters);
|
|
286
|
-
if (fnSelector.equals(selector)) {
|
|
287
|
-
return fn;
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
async #findFunctionAbiBySelector(
|
|
293
|
-
artifact: ContractArtifact,
|
|
294
|
-
selector: FunctionSelector,
|
|
295
|
-
): Promise<FunctionAbi | undefined> {
|
|
296
|
-
const functions = [...artifact.functions, ...(artifact.nonDispatchPublicFunctions ?? [])];
|
|
297
|
-
for (let i = 0; i < functions.length; i++) {
|
|
298
|
-
const fn = functions[i];
|
|
299
|
-
const fnSelector = await FunctionSelector.fromNameAndParameters(fn.name, fn.parameters);
|
|
300
|
-
if (fnSelector.equals(selector)) {
|
|
301
|
-
return fn;
|
|
302
|
-
}
|
|
303
|
-
}
|
|
377
|
+
const artifact = await this.#getArtifactByAddress(contractAddress);
|
|
378
|
+
const fn = artifact && (await findFunctionAbiBySelector(artifact, selector));
|
|
379
|
+
return `${artifact?.name ?? contractAddress}:${fn?.name ?? selector}`;
|
|
304
380
|
}
|
|
305
381
|
|
|
306
382
|
public async getFunctionCall(functionName: string, args: any[], to: AztecAddress): Promise<FunctionCall> {
|
|
@@ -316,15 +392,17 @@ export class ContractStore {
|
|
|
316
392
|
throw new Error(`Unknown function ${functionName} in contract ${contract.name}.`);
|
|
317
393
|
}
|
|
318
394
|
|
|
319
|
-
|
|
395
|
+
const selector = await FunctionSelector.fromNameAndParameters(functionDao.name, functionDao.parameters);
|
|
396
|
+
|
|
397
|
+
return FunctionCall.from({
|
|
320
398
|
name: functionDao.name,
|
|
321
|
-
args: encodeArguments(functionDao, args),
|
|
322
|
-
selector: await FunctionSelector.fromNameAndParameters(functionDao.name, functionDao.parameters),
|
|
323
|
-
type: functionDao.functionType,
|
|
324
399
|
to,
|
|
400
|
+
selector,
|
|
401
|
+
type: functionDao.functionType,
|
|
325
402
|
hideMsgSender: false,
|
|
326
403
|
isStatic: functionDao.isStatic,
|
|
404
|
+
args: encodeArguments(functionDao, args),
|
|
327
405
|
returnTypes: functionDao.returnTypes,
|
|
328
|
-
};
|
|
406
|
+
});
|
|
329
407
|
}
|
|
330
408
|
}
|
package/src/storage/metadata.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const PXE_DATA_SCHEMA_VERSION =
|
|
1
|
+
export const PXE_DATA_SCHEMA_VERSION = 6;
|
|
@@ -3,9 +3,10 @@ import type { Fr } from '@aztec/foundation/schemas';
|
|
|
3
3
|
import type { AztecAsyncKVStore, AztecAsyncMap, AztecAsyncMultiMap } from '@aztec/kv-store';
|
|
4
4
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
5
5
|
import type { DataInBlock } from '@aztec/stdlib/block';
|
|
6
|
-
import { NoteDao, NoteStatus
|
|
6
|
+
import { NoteDao, NoteStatus } from '@aztec/stdlib/note';
|
|
7
7
|
|
|
8
8
|
import type { StagedStore } from '../../job_coordinator/job_coordinator.js';
|
|
9
|
+
import type { NotesFilter } from '../../notes_filter.js';
|
|
9
10
|
import { StoredNote } from './stored_note.js';
|
|
10
11
|
|
|
11
12
|
/**
|
|
@@ -103,11 +104,10 @@ export class NoteStore implements StagedStore {
|
|
|
103
104
|
* @params jobId - the job context to read from.
|
|
104
105
|
* @returns Filtered and deduplicated notes (a note might be present in multiple scopes - we ensure it is only
|
|
105
106
|
* returned once if this is the case)
|
|
106
|
-
* @throws If filtering by an empty scopes array. Scopes have to be set to undefined or to a non-empty array.
|
|
107
107
|
*/
|
|
108
108
|
getNotes(filter: NotesFilter, jobId: string): Promise<NoteDao[]> {
|
|
109
|
-
if (filter.scopes
|
|
110
|
-
return Promise.
|
|
109
|
+
if (filter.scopes.length === 0) {
|
|
110
|
+
return Promise.resolve([]);
|
|
111
111
|
}
|
|
112
112
|
|
|
113
113
|
return this.#store.transactionAsync(async () => {
|
|
@@ -180,7 +180,7 @@ export class NoteStore implements StagedStore {
|
|
|
180
180
|
continue;
|
|
181
181
|
}
|
|
182
182
|
|
|
183
|
-
if (
|
|
183
|
+
if (note.scopes.intersection(new Set(filter.scopes.map(s => s.toString()))).size === 0) {
|
|
184
184
|
continue;
|
|
185
185
|
}
|
|
186
186
|
|
|
@@ -220,6 +220,10 @@ export class NoteStore implements StagedStore {
|
|
|
220
220
|
return Promise.resolve([]);
|
|
221
221
|
}
|
|
222
222
|
|
|
223
|
+
if (nullifiers.some(n => n.l2BlockNumber === 0)) {
|
|
224
|
+
return Promise.reject(new Error('applyNullifiers: nullifiers cannot have been emitted at block 0'));
|
|
225
|
+
}
|
|
226
|
+
|
|
223
227
|
return this.#withJobLock(jobId, () =>
|
|
224
228
|
this.#store.transactionAsync(async () => {
|
|
225
229
|
const notesToNullify = await Promise.all(
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { KeyStore } from '@aztec/key-store';
|
|
2
|
+
import type { AztecAsyncKVStore } from '@aztec/kv-store';
|
|
3
|
+
import { L2TipsKVStore } from '@aztec/kv-store/stores';
|
|
4
|
+
import type { BlockHash } from '@aztec/stdlib/block';
|
|
5
|
+
|
|
6
|
+
import { AddressStore } from './address_store/address_store.js';
|
|
7
|
+
import { AnchorBlockStore } from './anchor_block_store/anchor_block_store.js';
|
|
8
|
+
import { CapsuleStore } from './capsule_store/capsule_store.js';
|
|
9
|
+
import { ContractStore } from './contract_store/contract_store.js';
|
|
10
|
+
import { NoteStore } from './note_store/note_store.js';
|
|
11
|
+
import { PrivateEventStore } from './private_event_store/private_event_store.js';
|
|
12
|
+
import { RecipientTaggingStore, SenderAddressBookStore, SenderTaggingStore } from './tagging_store/index.js';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* The set of sub-stores opened against a single `AztecAsyncKVStore` to back PXE state.
|
|
16
|
+
*/
|
|
17
|
+
export type PxeStores = {
|
|
18
|
+
addressStore: AddressStore;
|
|
19
|
+
privateEventStore: PrivateEventStore;
|
|
20
|
+
contractStore: ContractStore;
|
|
21
|
+
noteStore: NoteStore;
|
|
22
|
+
anchorBlockStore: AnchorBlockStore;
|
|
23
|
+
senderTaggingStore: SenderTaggingStore;
|
|
24
|
+
senderAddressBookStore: SenderAddressBookStore;
|
|
25
|
+
recipientTaggingStore: RecipientTaggingStore;
|
|
26
|
+
capsuleStore: CapsuleStore;
|
|
27
|
+
keyStore: KeyStore;
|
|
28
|
+
l2TipsStore: L2TipsKVStore;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Opens every PXE sub-store against the given backing store. The `initialBlockHash` seeds the
|
|
33
|
+
* `L2TipsKVStore` so it agrees with the node's archiver on the dynamic genesis header hash.
|
|
34
|
+
*/
|
|
35
|
+
export function openPxeStores(store: AztecAsyncKVStore, initialBlockHash: BlockHash): PxeStores {
|
|
36
|
+
return {
|
|
37
|
+
addressStore: new AddressStore(store),
|
|
38
|
+
privateEventStore: new PrivateEventStore(store),
|
|
39
|
+
contractStore: new ContractStore(store),
|
|
40
|
+
noteStore: new NoteStore(store),
|
|
41
|
+
anchorBlockStore: new AnchorBlockStore(store),
|
|
42
|
+
senderTaggingStore: new SenderTaggingStore(store),
|
|
43
|
+
senderAddressBookStore: new SenderAddressBookStore(store),
|
|
44
|
+
recipientTaggingStore: new RecipientTaggingStore(store),
|
|
45
|
+
capsuleStore: new CapsuleStore(store),
|
|
46
|
+
keyStore: new KeyStore(store),
|
|
47
|
+
l2TipsStore: new L2TipsKVStore(store, 'pxe', initialBlockHash),
|
|
48
|
+
};
|
|
49
|
+
}
|
|
@@ -234,6 +234,10 @@ export class PrivateEventStore implements StagedStore {
|
|
|
234
234
|
* IMPORTANT: This method must be called within a transaction to ensure atomicity.
|
|
235
235
|
*/
|
|
236
236
|
public async rollback(blockNumber: number, synchedBlockNumber: number): Promise<void> {
|
|
237
|
+
if (this.#eventsForJob.size > 0) {
|
|
238
|
+
throw new Error('PXE private event store rollback is not allowed while jobs are running');
|
|
239
|
+
}
|
|
240
|
+
|
|
237
241
|
// First pass: collect all event IDs for all blocks, starting reads during iteration to keep tx alive.
|
|
238
242
|
const eventsByBlock: Map<number, { eventId: string; eventReadPromise: Promise<Buffer | undefined> }[]> = new Map();
|
|
239
243
|
|
|
@@ -49,7 +49,7 @@ export class StoredPrivateEvent {
|
|
|
49
49
|
const msgContentLength = reader.readNumber();
|
|
50
50
|
const msgContent = reader.readArray(msgContentLength, Fr);
|
|
51
51
|
const l2BlockNumber = reader.readNumber();
|
|
52
|
-
const l2BlockHash =
|
|
52
|
+
const l2BlockHash = BlockHash.fromBuffer(reader);
|
|
53
53
|
const txHash = TxHash.fromBuffer(reader);
|
|
54
54
|
const txIndexInBlock = reader.readNumber();
|
|
55
55
|
const eventIndexInTx = reader.readNumber();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { AztecAsyncKVStore, AztecAsyncMap } from '@aztec/kv-store';
|
|
2
|
-
import type {
|
|
2
|
+
import type { AppTaggingSecret } from '@aztec/stdlib/logs';
|
|
3
3
|
|
|
4
4
|
import type { StagedStore } from '../../job_coordinator/job_coordinator.js';
|
|
5
5
|
|
|
@@ -106,11 +106,11 @@ export class RecipientTaggingStore implements StagedStore {
|
|
|
106
106
|
return Promise.resolve();
|
|
107
107
|
}
|
|
108
108
|
|
|
109
|
-
getHighestAgedIndex(secret:
|
|
109
|
+
getHighestAgedIndex(secret: AppTaggingSecret, jobId: string): Promise<number | undefined> {
|
|
110
110
|
return this.#store.transactionAsync(() => this.#readHighestAgedIndex(jobId, secret.toString()));
|
|
111
111
|
}
|
|
112
112
|
|
|
113
|
-
updateHighestAgedIndex(secret:
|
|
113
|
+
updateHighestAgedIndex(secret: AppTaggingSecret, index: number, jobId: string): Promise<void> {
|
|
114
114
|
return this.#store.transactionAsync(async () => {
|
|
115
115
|
const currentIndex = await this.#readHighestAgedIndex(jobId, secret.toString());
|
|
116
116
|
if (currentIndex !== undefined && index <= currentIndex) {
|
|
@@ -121,11 +121,11 @@ export class RecipientTaggingStore implements StagedStore {
|
|
|
121
121
|
});
|
|
122
122
|
}
|
|
123
123
|
|
|
124
|
-
getHighestFinalizedIndex(secret:
|
|
124
|
+
getHighestFinalizedIndex(secret: AppTaggingSecret, jobId: string): Promise<number | undefined> {
|
|
125
125
|
return this.#store.transactionAsync(() => this.#readHighestFinalizedIndex(jobId, secret.toString()));
|
|
126
126
|
}
|
|
127
127
|
|
|
128
|
-
updateHighestFinalizedIndex(secret:
|
|
128
|
+
updateHighestFinalizedIndex(secret: AppTaggingSecret, index: number, jobId: string): Promise<void> {
|
|
129
129
|
return this.#store.transactionAsync(async () => {
|
|
130
130
|
const currentIndex = await this.#readHighestFinalizedIndex(jobId, secret.toString());
|
|
131
131
|
if (currentIndex !== undefined && index < currentIndex) {
|