@aztec/pxe 0.0.1-commit.2448fdb → 0.0.1-commit.2606882
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 +40 -96
- 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 +5 -3
- package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
- package/dest/block_synchronizer/block_synchronizer.js +21 -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 +4 -1
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +20 -12
- 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 +5 -9
- package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
- package/dest/contract_function_simulator/execution_tagging_index_cache.js +3 -7
- package/dest/contract_function_simulator/index.d.ts +13 -2
- package/dest/contract_function_simulator/index.d.ts.map +1 -1
- package/dest/contract_function_simulator/index.js +10 -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 -2
- 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 +3 -2
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +12 -2
- 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 +34 -3
- 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 -2
- 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 +3 -2
- 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 -114
- 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 +55 -57
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle.js +343 -344
- 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_oracle.d.ts +27 -29
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +55 -47
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +59 -39
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +244 -149
- 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 -67
- package/dest/contract_sync/contract_sync_service.d.ts +4 -6
- package/dest/contract_sync/contract_sync_service.d.ts.map +1 -1
- package/dest/contract_sync/contract_sync_service.js +43 -24
- package/dest/contract_sync/helpers.d.ts +2 -3
- package/dest/contract_sync/helpers.d.ts.map +1 -1
- package/dest/contract_sync/helpers.js +12 -19
- package/dest/debug/pxe_debug_utils.d.ts +1 -6
- package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
- package/dest/debug/pxe_debug_utils.js +0 -6
- package/dest/entrypoints/client/bundle/utils.d.ts +1 -1
- package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/bundle/utils.js +11 -3
- package/dest/entrypoints/client/lazy/utils.d.ts +1 -1
- package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
- package/dest/entrypoints/client/lazy/utils.js +11 -3
- package/dest/entrypoints/pxe_creation_options.d.ts +7 -1
- package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
- package/dest/entrypoints/server/index.d.ts +2 -1
- package/dest/entrypoints/server/index.d.ts.map +1 -1
- package/dest/entrypoints/server/index.js +1 -0
- package/dest/entrypoints/server/utils.d.ts +3 -2
- package/dest/entrypoints/server/utils.d.ts.map +1 -1
- package/dest/entrypoints/server/utils.js +11 -3
- package/dest/events/event_service.d.ts +13 -5
- package/dest/events/event_service.d.ts.map +1 -1
- package/dest/events/event_service.js +30 -9
- 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 +6 -5
- package/dest/logs/log_service.d.ts.map +1 -1
- package/dest/logs/log_service.js +112 -48
- package/dest/messages/message_context_service.d.ts +1 -1
- package/dest/messages/message_context_service.d.ts.map +1 -1
- package/dest/messages/message_context_service.js +28 -9
- package/dest/notes/note_service.d.ts +25 -3
- package/dest/notes/note_service.d.ts.map +1 -1
- package/dest/notes/note_service.js +80 -65
- package/dest/oracle_version.d.ts +3 -3
- package/dest/oracle_version.js +4 -4
- package/dest/private_kernel/batch_planner.d.ts +47 -0
- package/dest/private_kernel/batch_planner.d.ts.map +1 -0
- package/dest/private_kernel/batch_planner.js +104 -0
- package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +1 -1
- package/dest/private_kernel/hints/test_utils.d.ts +1 -1
- package/dest/private_kernel/hints/test_utils.d.ts.map +1 -1
- package/dest/private_kernel/hints/test_utils.js +2 -3
- 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 +148 -52
- package/dest/private_kernel/private_kernel_oracle.d.ts +6 -6
- package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_oracle.js +12 -7
- package/dest/pxe.d.ts +54 -7
- package/dest/pxe.d.ts.map +1 -1
- package/dest/pxe.js +126 -84
- 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/contract_store/contract_store.d.ts +1 -1
- package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
- package/dest/storage/contract_store/contract_store.js +5 -24
- package/dest/storage/metadata.d.ts +1 -1
- package/dest/storage/metadata.js +1 -1
- 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/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 +5 -5
- package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
- package/dest/storage/tagging_store/sender_tagging_store.js +3 -3
- 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 +36 -37
- package/dest/tagging/index.d.ts +5 -4
- 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/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 -5
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
- package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +26 -14
- package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +11 -6
- 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 +21 -0
- package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +4 -4
- 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 +2 -2
- package/package.json +20 -17
- package/src/bin/check_oracle_version.ts +46 -119
- 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 +22 -12
- package/src/config/index.ts +15 -9
- package/src/config/package_info.ts +1 -1
- package/src/contract_function_simulator/contract_function_simulator.ts +34 -11
- package/src/contract_function_simulator/execution_note_cache.ts +1 -1
- package/src/contract_function_simulator/execution_tagging_index_cache.ts +5 -9
- package/src/contract_function_simulator/index.ts +50 -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 +3 -2
- package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +35 -2
- package/src/contract_function_simulator/noir-structs/note_data.ts +27 -0
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +3 -2
- 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 -204
- package/src/contract_function_simulator/oracle/note_packing_utils.ts +3 -3
- package/src/contract_function_simulator/oracle/oracle.ts +406 -556
- 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_oracle.ts +74 -67
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +350 -304
- package/src/contract_function_simulator/proxied_contract_data_source.ts +40 -70
- package/src/contract_sync/contract_sync_service.ts +56 -43
- package/src/contract_sync/helpers.ts +11 -23
- package/src/debug/pxe_debug_utils.ts +0 -8
- package/src/entrypoints/client/bundle/utils.ts +8 -2
- package/src/entrypoints/client/lazy/utils.ts +8 -2
- package/src/entrypoints/pxe_creation_options.ts +7 -0
- package/src/entrypoints/server/index.ts +1 -0
- package/src/entrypoints/server/utils.ts +13 -3
- package/src/events/event_service.ts +54 -19
- 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 +137 -92
- package/src/messages/message_context_service.ts +42 -24
- package/src/notes/note_service.ts +115 -91
- package/src/oracle_version.ts +4 -4
- package/src/private_kernel/batch_planner.ts +169 -0
- package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +1 -1
- package/src/private_kernel/hints/test_utils.ts +2 -9
- package/src/private_kernel/private_kernel_execution_prover.ts +236 -73
- package/src/private_kernel/private_kernel_oracle.ts +21 -11
- package/src/pxe.ts +208 -85
- 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/contract_store/contract_store.ts +6 -29
- package/src/storage/metadata.ts +1 -1
- package/src/storage/open_pxe_stores.ts +49 -0
- package/src/storage/private_event_store/stored_private_event.ts +1 -1
- package/src/storage/tagging_store/recipient_tagging_store.ts +5 -9
- package/src/storage/tagging_store/sender_tagging_store.ts +6 -6
- package/src/tagging/get_all_logs_by_tags.ts +78 -50
- package/src/tagging/index.ts +4 -3
- 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 +2 -2
- package/src/tagging/reconcile_tagging_index_ranges.ts +102 -0
- package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +41 -19
- package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +23 -8
- package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +4 -5
- package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts +0 -9
- package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts.map +0 -1
- package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.js +0 -47
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +0 -14
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +0 -1
- package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +0 -85
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +0 -14
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +0 -1
- package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +0 -33
- package/src/contract_function_simulator/oracle/legacy_oracle_mappings.ts +0 -104
- package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +0 -130
- package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +0 -44
|
@@ -10,6 +10,7 @@ import type { AztecNode } from '@aztec/stdlib/interfaces/server';
|
|
|
10
10
|
import { type PrivateKernelExecutionProofOutput, PrivateKernelTailCircuitPublicInputs } from '@aztec/stdlib/kernel';
|
|
11
11
|
import { BlockHeader, type OffchainEffect, PrivateExecutionResult, TxExecutionRequest } from '@aztec/stdlib/tx';
|
|
12
12
|
import type { ContractSyncService } from '../contract_sync/contract_sync_service.js';
|
|
13
|
+
import type { ExecutionHooks } from '../hooks/index.js';
|
|
13
14
|
import type { MessageContextService } from '../messages/message_context_service.js';
|
|
14
15
|
import type { AddressStore } from '../storage/address_store/address_store.js';
|
|
15
16
|
import type { CapsuleStore } from '../storage/capsule_store/capsule_store.js';
|
|
@@ -52,6 +53,7 @@ export type ContractFunctionSimulatorArgs = {
|
|
|
52
53
|
simulator: CircuitSimulator;
|
|
53
54
|
contractSyncService: ContractSyncService;
|
|
54
55
|
messageContextService: MessageContextService;
|
|
56
|
+
hooks?: ExecutionHooks;
|
|
55
57
|
};
|
|
56
58
|
/**
|
|
57
59
|
* The contract function simulator.
|
|
@@ -72,6 +74,7 @@ export declare class ContractFunctionSimulator {
|
|
|
72
74
|
private readonly simulator;
|
|
73
75
|
private readonly contractSyncService;
|
|
74
76
|
private readonly messageContextService;
|
|
77
|
+
private readonly hooks;
|
|
75
78
|
constructor(args: ContractFunctionSimulatorArgs);
|
|
76
79
|
/**
|
|
77
80
|
* Runs a private function.
|
|
@@ -113,4 +116,4 @@ export declare class ContractFunctionSimulator {
|
|
|
113
116
|
* @returns The simulated proving result.
|
|
114
117
|
*/
|
|
115
118
|
export declare function generateSimulatedProvingResult(privateExecutionResult: PrivateExecutionResult, debugFunctionNameGetter: (contractAddress: AztecAddress, functionSelector: FunctionSelector) => Promise<string>, node: AztecNode, minRevertibleSideEffectCounterOverride?: number): Promise<PrivateKernelExecutionProofOutput<PrivateKernelTailCircuitPublicInputs>>;
|
|
116
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RfZnVuY3Rpb25fc2ltdWxhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3RfZnVuY3Rpb25fc2ltdWxhdG9yL2NvbnRyYWN0X2Z1bmN0aW9uX3NpbXVsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF5QkEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBR3BELE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR2pELE9BQU8sRUFDTCxLQUFLLGdCQUFnQixFQU90QixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBZ0IsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxLQUFLLEVBQWtCLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBVTFFLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sRUFLTCxLQUFLLGlDQUFpQyxFQUN0QyxvQ0FBb0MsRUFhckMsTUFBTSxzQkFBc0IsQ0FBQztBQUs5QixPQUFPLEVBQ0wsV0FBVyxFQUdYLEtBQUssY0FBYyxFQUNuQixzQkFBc0IsRUFFdEIsa0JBQWtCLEVBSW5CLE1BQU0sa0JBQWtCLENBQUM7QUFFMUIsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNyRixPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN4RCxPQUFPLEtBQUssRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract_function_simulator.d.ts","sourceRoot":"","sources":["../../src/contract_function_simulator/contract_function_simulator.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAGpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGjD,OAAO,EACL,KAAK,gBAAgB,EAOtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAgB,MAAM,mBAAmB,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAkB,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAU1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAKL,KAAK,iCAAiC,EACtC,oCAAoC,EAarC,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"contract_function_simulator.d.ts","sourceRoot":"","sources":["../../src/contract_function_simulator/contract_function_simulator.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,7 @@ import { ClaimedLengthArray, PartialPrivateTailPublicInputsForPublic, PartialPri
|
|
|
14
14
|
import { PrivateLog } from '@aztec/stdlib/logs';
|
|
15
15
|
import { ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
|
|
16
16
|
import { ChonkProof } from '@aztec/stdlib/proofs';
|
|
17
|
+
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
17
18
|
import { CallContext, HashedValues, PrivateExecutionResult, TxConstantData, collectNested, collectNoteHashNullifierCounterMap, getFinalMinRevertibleSideEffectCounter } from '@aztec/stdlib/tx';
|
|
18
19
|
import { CapsuleService } from '../storage/capsule_store/capsule_service.js';
|
|
19
20
|
import { ExecutionNoteCache } from './execution_note_cache.js';
|
|
@@ -41,6 +42,7 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
|
|
|
41
42
|
simulator;
|
|
42
43
|
contractSyncService;
|
|
43
44
|
messageContextService;
|
|
45
|
+
hooks;
|
|
44
46
|
constructor(args){
|
|
45
47
|
this.contractStore = args.contractStore;
|
|
46
48
|
this.noteStore = args.noteStore;
|
|
@@ -56,6 +58,7 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
|
|
|
56
58
|
this.simulator = args.simulator;
|
|
57
59
|
this.contractSyncService = args.contractSyncService;
|
|
58
60
|
this.messageContextService = args.messageContextService;
|
|
61
|
+
this.hooks = args.hooks;
|
|
59
62
|
this.log = createLogger('simulator');
|
|
60
63
|
}
|
|
61
64
|
/**
|
|
@@ -68,7 +71,7 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
|
|
|
68
71
|
throw new Error(`Cannot run ${entryPointArtifact.functionType} function as private`);
|
|
69
72
|
}
|
|
70
73
|
if (request.origin !== contractAddress) {
|
|
71
|
-
|
|
74
|
+
throw new Error(`Request origin does not match contract address in simulation. Request origin: ${request.origin}, contract address: ${contractAddress}`);
|
|
72
75
|
}
|
|
73
76
|
// reserve the first side effect for the tx hash (inserted by the private kernel)
|
|
74
77
|
const startSideEffectCounter = 2;
|
|
@@ -107,7 +110,8 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
|
|
|
107
110
|
scopes,
|
|
108
111
|
senderForTags,
|
|
109
112
|
simulator: this.simulator,
|
|
110
|
-
l2TipsStore: this.l2TipsStore
|
|
113
|
+
l2TipsStore: this.l2TipsStore,
|
|
114
|
+
hooks: this.hooks
|
|
111
115
|
});
|
|
112
116
|
const setupTime = simulatorSetupTimer.ms();
|
|
113
117
|
try {
|
|
@@ -141,7 +145,6 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
|
|
|
141
145
|
throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during private execution'));
|
|
142
146
|
}
|
|
143
147
|
}
|
|
144
|
-
// docs:start:execute_utility_function
|
|
145
148
|
/**
|
|
146
149
|
* Runs a utility function.
|
|
147
150
|
* @param call - The function call to execute.
|
|
@@ -155,6 +158,9 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
|
|
|
155
158
|
if (entryPointArtifact.functionType !== FunctionType.UTILITY) {
|
|
156
159
|
throw new Error(`Cannot run ${entryPointArtifact.functionType} function as utility`);
|
|
157
160
|
}
|
|
161
|
+
const utilityExecutor = async (syncCall, execScopes)=>{
|
|
162
|
+
await this.runUtility(syncCall, [], anchorBlockHeader, execScopes, jobId);
|
|
163
|
+
};
|
|
158
164
|
const oracle = new UtilityExecutionOracle({
|
|
159
165
|
contractAddress: call.to,
|
|
160
166
|
authWitnesses: authwits,
|
|
@@ -173,7 +179,10 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
|
|
|
173
179
|
contractSyncService: this.contractSyncService,
|
|
174
180
|
l2TipsStore: this.l2TipsStore,
|
|
175
181
|
jobId,
|
|
176
|
-
scopes
|
|
182
|
+
scopes,
|
|
183
|
+
simulator: this.simulator,
|
|
184
|
+
hooks: this.hooks,
|
|
185
|
+
utilityExecutor
|
|
177
186
|
});
|
|
178
187
|
try {
|
|
179
188
|
this.log.verbose(`Executing utility function ${entryPointArtifact.name}`, {
|
|
@@ -199,7 +208,6 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
|
|
|
199
208
|
throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during private execution'));
|
|
200
209
|
}
|
|
201
210
|
}
|
|
202
|
-
// docs:end:execute_utility_function
|
|
203
211
|
/**
|
|
204
212
|
* Returns the execution statistics collected during the simulator run.
|
|
205
213
|
* @returns The execution statistics.
|
|
@@ -406,17 +414,17 @@ class OrderedSideEffect {
|
|
|
406
414
|
});
|
|
407
415
|
}
|
|
408
416
|
}
|
|
409
|
-
const [
|
|
410
|
-
|
|
411
|
-
|
|
417
|
+
const [noteHashResults, nullifierResults] = await Promise.all([
|
|
418
|
+
settledNoteHashReads.length > 0 ? node.findLeavesIndexes(anchorBlockHash, MerkleTreeId.NOTE_HASH_TREE, settledNoteHashReads.map(({ value })=>value)) : [],
|
|
419
|
+
settledNullifierReads.length > 0 ? node.findLeavesIndexes(anchorBlockHash, MerkleTreeId.NULLIFIER_TREE, settledNullifierReads.map(({ value })=>value)) : []
|
|
412
420
|
]);
|
|
413
421
|
for(let i = 0; i < settledNoteHashReads.length; i++){
|
|
414
|
-
if (!
|
|
422
|
+
if (!noteHashResults[i]) {
|
|
415
423
|
throw new Error(`Note hash read request at index ${settledNoteHashReads[i].index} is reading an unknown note hash: ${settledNoteHashReads[i].value}`);
|
|
416
424
|
}
|
|
417
425
|
}
|
|
418
426
|
for(let i = 0; i < settledNullifierReads.length; i++){
|
|
419
|
-
if (!
|
|
427
|
+
if (!nullifierResults[i]) {
|
|
420
428
|
throw new Error(`Nullifier read request at index ${settledNullifierReads[i].index} is reading an unknown nullifier: ${settledNullifierReads[i].value}`);
|
|
421
429
|
}
|
|
422
430
|
}
|
|
@@ -456,8 +464,8 @@ function meterGasUsed(data, isPrivateOnlyTx) {
|
|
|
456
464
|
meteredDAFields += data.privateLogs.reduce((acc, log)=>!log.isEmpty() ? acc + log.emittedLength + 1 : acc, 0);
|
|
457
465
|
meteredL2Gas += numPrivatelogs * L2_GAS_PER_PRIVATE_LOG;
|
|
458
466
|
const numContractClassLogs = arrayNonEmptyLength(data.contractClassLogsHashes, (log)=>log.isEmpty());
|
|
459
|
-
// Every contract class log emits its
|
|
460
|
-
meteredDAFields += data.contractClassLogsHashes.reduce((acc, log)=>!log.isEmpty() ? acc + log.logHash.length +
|
|
467
|
+
// Every contract class log emits its contract address as an additional field
|
|
468
|
+
meteredDAFields += data.contractClassLogsHashes.reduce((acc, log)=>!log.isEmpty() ? acc + log.logHash.length + 1 : acc, 0);
|
|
461
469
|
meteredL2Gas += numContractClassLogs * L2_GAS_PER_CONTRACT_CLASS_LOG;
|
|
462
470
|
const meteredDAGas = meteredDAFields * DA_GAS_PER_FIELD;
|
|
463
471
|
if (data.publicCallRequests) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
2
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
3
|
-
import type { NoteData } from './
|
|
3
|
+
import type { NoteData } from './noir-structs/note_data.js';
|
|
4
4
|
interface PendingNote {
|
|
5
5
|
note: NoteData;
|
|
6
6
|
counter: number;
|
|
@@ -101,4 +101,4 @@ export declare class ExecutionNoteCache {
|
|
|
101
101
|
getNonceGenerator(): Fr;
|
|
102
102
|
}
|
|
103
103
|
export {};
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uX25vdGVfY2FjaGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdF9mdW5jdGlvbl9zaW11bGF0b3IvZXhlY3V0aW9uX25vdGVfY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBR2hFLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTVELFVBQVUsV0FBVztJQUNuQixJQUFJLEVBQUUsUUFBUSxDQUFDO0lBQ2YsT0FBTyxFQUFFLE1BQU0sQ0FBQztJQUNoQixzQkFBc0IsRUFBRSxFQUFFLENBQUM7Q0FDNUI7QUFFRDs7R0FFRztBQUNILHFCQUFhLGtCQUFrQjs7SUFvQ2pCLE9BQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCO0lBbkM5Qzs7O09BR0c7SUFDSCxPQUFPLENBQUMsS0FBSyxDQUFxQjtJQUNsQzs7T0FFRztJQUNILE9BQU8sQ0FBQyxPQUFPLENBQXlDO0lBRXhEOzs7O09BSUc7SUFDSCxPQUFPLENBQUMsWUFBWSxDQUF1QztJQUUzRDs7T0FFRztJQUNILE9BQU8sQ0FBQyxpQkFBaUIsQ0FBMEI7SUFFbkQ7O09BRUc7SUFDSCxPQUFPLENBQUMsOEJBQThCLENBQUs7SUFFM0MsT0FBTyxDQUFDLGlCQUFpQixDQUFTO0lBRWxDOzs7T0FHRztJQUNILE9BQU8sQ0FBQyw4QkFBOEIsQ0FBc0I7SUFFNUQsWUFBNkIsaUJBQWlCLEVBQUUsRUFBRSxFQUFJO0lBRXREOzs7T0FHRztJQUNVLGlDQUFpQyxDQUFDLDhCQUE4QixFQUFFLE1BQU0saUJBc0NwRjtJQUVNLDZCQUE2QixDQUFDLGlCQUFpQixFQUFFLE1BQU0sR0FBRyxPQUFPLENBS3ZFO0lBRU0sTUFBTSxTQU1aO0lBRUQ7OztPQUdHO0lBQ0ksVUFBVSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFTaEQ7SUFFRDs7Ozs7O09BTUc7SUFDVSxXQUFXLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLCtCQXlCdkY7SUFFRDs7OztPQUlHO0lBQ1UsZ0JBQWdCLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsRUFBRSxpQkFHOUU7SUFFRDs7Ozs7O1FBTUk7SUFDRyxRQUFRLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsWUFBWSxHQUFHLFNBQVMsRUFBRSxXQUFXLEVBQUUsRUFBRSxjQU05RjtJQUVEOzs7OztRQUtJO0lBQ0csZUFBZSxDQUFDLGVBQWUsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEVBQUUsV0FHakU7SUFFRDs7O09BR0c7SUFDSSxhQUFhLENBQUMsZUFBZSxFQUFFLFlBQVksR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLENBRS9EO0lBVUQsV0FBVyxJQUFJLFdBQVcsRUFBRSxDQUUzQjtJQUVEOztPQUVHO0lBQ0gsb0JBQW9CLElBQUksRUFBRSxFQUFFLENBRTNCO0lBRUQ7OztPQUdHO0lBQ0gsZ0JBQWdCLElBQUksRUFBRSxFQUFFLENBTXZCO0lBRUQsaUJBQWlCLElBQUksRUFBRSxDQUV0QjtDQWFGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution_note_cache.d.ts","sourceRoot":"","sources":["../../src/contract_function_simulator/execution_note_cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAGhE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"execution_note_cache.d.ts","sourceRoot":"","sources":["../../src/contract_function_simulator/execution_note_cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAGhE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAE5D,UAAU,WAAW;IACnB,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,sBAAsB,EAAE,EAAE,CAAC;CAC5B;AAED;;GAEG;AACH,qBAAa,kBAAkB;;IAoCjB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAnC9C;;;OAGG;IACH,OAAO,CAAC,KAAK,CAAqB;IAClC;;OAEG;IACH,OAAO,CAAC,OAAO,CAAyC;IAExD;;;;OAIG;IACH,OAAO,CAAC,YAAY,CAAuC;IAE3D;;OAEG;IACH,OAAO,CAAC,iBAAiB,CAA0B;IAEnD;;OAEG;IACH,OAAO,CAAC,8BAA8B,CAAK;IAE3C,OAAO,CAAC,iBAAiB,CAAS;IAElC;;;OAGG;IACH,OAAO,CAAC,8BAA8B,CAAsB;IAE5D,YAA6B,iBAAiB,EAAE,EAAE,EAAI;IAEtD;;;OAGG;IACU,iCAAiC,CAAC,8BAA8B,EAAE,MAAM,iBAsCpF;IAEM,6BAA6B,CAAC,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAKvE;IAEM,MAAM,SAMZ;IAED;;;OAGG;IACI,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,QAShD;IAED;;;;;;OAMG;IACU,WAAW,CAAC,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,+BAyBvF;IAED;;;;OAIG;IACU,gBAAgB,CAAC,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,EAAE,iBAG9E;IAED;;;;;;QAMI;IACG,QAAQ,CAAC,eAAe,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,GAAG,SAAS,EAAE,WAAW,EAAE,EAAE,cAM9F;IAED;;;;;QAKI;IACG,eAAe,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,WAGjE;IAED;;;OAGG;IACI,aAAa,CAAC,eAAe,EAAE,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,CAE/D;IAUD,WAAW,IAAI,WAAW,EAAE,CAE3B;IAED;;OAEG;IACH,oBAAoB,IAAI,EAAE,EAAE,CAE3B;IAED;;;OAGG;IACH,gBAAgB,IAAI,EAAE,EAAE,CAMvB;IAED,iBAAiB,IAAI,EAAE,CAEtB;CAaF"}
|
|
@@ -1,16 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
/**
|
|
3
|
-
* A map that stores the tagging index range for a given extended directional app tagging secret.
|
|
4
|
-
* Note: The directional app tagging secret is unique for a (sender, recipient, contract) tuple while the direction
|
|
5
|
-
* of sender -> recipient matters.
|
|
6
|
-
*/
|
|
1
|
+
import { AppTaggingSecret, type TaggingIndexRange } from '@aztec/stdlib/logs';
|
|
2
|
+
/** A map that stores the tagging index range for a given app tagging secret. */
|
|
7
3
|
export declare class ExecutionTaggingIndexCache {
|
|
8
4
|
private taggingIndexMap;
|
|
9
|
-
getLastUsedIndex(secret:
|
|
10
|
-
setLastUsedIndex(secret:
|
|
5
|
+
getLastUsedIndex(secret: AppTaggingSecret): number | undefined;
|
|
6
|
+
setLastUsedIndex(secret: AppTaggingSecret, index: number): void;
|
|
11
7
|
/**
|
|
12
8
|
* Returns the tagging index ranges that were used in this execution (and that need to be stored in the db).
|
|
13
9
|
*/
|
|
14
10
|
getUsedTaggingIndexRanges(): TaggingIndexRange[];
|
|
15
11
|
}
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uX3RhZ2dpbmdfaW5kZXhfY2FjaGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdF9mdW5jdGlvbl9zaW11bGF0b3IvZXhlY3V0aW9uX3RhZ2dpbmdfaW5kZXhfY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLEtBQUssaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU5RSxnRkFBZ0Y7QUFDaEYscUJBQWEsMEJBQTBCO0lBQ3JDLE9BQU8sQ0FBQyxlQUFlLENBQXlFO0lBRXpGLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsR0FBRyxNQUFNLEdBQUcsU0FBUyxDQUVwRTtJQUVNLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxRQVU5RDtJQUVEOztPQUVHO0lBQ0kseUJBQXlCLElBQUksaUJBQWlCLEVBQUUsQ0FNdEQ7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution_tagging_index_cache.d.ts","sourceRoot":"","sources":["../../src/contract_function_simulator/execution_tagging_index_cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"execution_tagging_index_cache.d.ts","sourceRoot":"","sources":["../../src/contract_function_simulator/execution_tagging_index_cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE9E,gFAAgF;AAChF,qBAAa,0BAA0B;IACrC,OAAO,CAAC,eAAe,CAAyE;IAEzF,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,GAAG,SAAS,CAEpE;IAEM,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,QAU9D;IAED;;OAEG;IACI,yBAAyB,IAAI,iBAAiB,EAAE,CAMtD;CACF"}
|
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
/**
|
|
3
|
-
* A map that stores the tagging index range for a given extended directional app tagging secret.
|
|
4
|
-
* Note: The directional app tagging secret is unique for a (sender, recipient, contract) tuple while the direction
|
|
5
|
-
* of sender -> recipient matters.
|
|
6
|
-
*/ export class ExecutionTaggingIndexCache {
|
|
1
|
+
import { AppTaggingSecret } from '@aztec/stdlib/logs';
|
|
2
|
+
/** A map that stores the tagging index range for a given app tagging secret. */ export class ExecutionTaggingIndexCache {
|
|
7
3
|
taggingIndexMap = new Map();
|
|
8
4
|
getLastUsedIndex(secret) {
|
|
9
5
|
return this.taggingIndexMap.get(secret.toString())?.highestIndex;
|
|
@@ -26,7 +22,7 @@ import { ExtendedDirectionalAppTaggingSecret } from '@aztec/stdlib/logs';
|
|
|
26
22
|
* Returns the tagging index ranges that were used in this execution (and that need to be stored in the db).
|
|
27
23
|
*/ getUsedTaggingIndexRanges() {
|
|
28
24
|
return Array.from(this.taggingIndexMap.entries()).map(([secret, { lowestIndex, highestIndex }])=>({
|
|
29
|
-
extendedSecret:
|
|
25
|
+
extendedSecret: AppTaggingSecret.fromString(secret),
|
|
30
26
|
lowestIndex,
|
|
31
27
|
highestIndex
|
|
32
28
|
}));
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
export { ORACLE_REGISTRY, callHandler, makeEntry, type HandlersForPrefix, type NamedValue, type OracleRegistryEntry, type ParamTypes, type StripOraclePrefix, } from './oracle/oracle_registry.js';
|
|
2
|
+
export { ARRAY, AZTEC_ADDRESS, BIGINT, BLOCK_NUMBER, BOOL, BOUNDED_VEC, BUFFER, BYTE, DELIVERY_MODE, EPHEMERAL_ARRAY, EVENT_VALIDATION_REQUEST, FIELD, FUNCTION_SELECTOR, LOG_RETRIEVAL_REQUEST, LOG_RETRIEVAL_RESPONSE, MEMBERSHIP_WITNESS, MESSAGE_CONTEXT, NOTE_VALIDATION_REQUEST, OPTION, PENDING_TAGGED_LOG, POINT, PROVIDED_SECRET, STR, U32, type InputSlot, type MaybePromise, type OutputSlot, type TypeMapping, } from './oracle/oracle_type_mappings.js';
|
|
1
3
|
export { ExecutionNoteCache } from './execution_note_cache.js';
|
|
2
4
|
export { ExecutionTaggingIndexCache } from './execution_tagging_index_cache.js';
|
|
3
5
|
export { HashedValuesCache } from './hashed_values_cache.js';
|
|
4
6
|
export { pickNotes } from './pick_notes.js';
|
|
5
|
-
export type {
|
|
7
|
+
export type { IMiscOracle, IUtilityExecutionOracle, IPrivateExecutionOracle } from './oracle/interfaces.js';
|
|
8
|
+
export type { NoteData } from './noir-structs/note_data.js';
|
|
6
9
|
export { MessageLoadOracleInputs } from './oracle/message_load_oracle_inputs.js';
|
|
7
10
|
export { MessageContextService } from '../messages/message_context_service.js';
|
|
8
11
|
export { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
|
|
@@ -11,5 +14,13 @@ export { Oracle } from './oracle/oracle.js';
|
|
|
11
14
|
export { executePrivateFunction, extractPrivateCircuitPublicInputs } from './oracle/private_execution.js';
|
|
12
15
|
export { generateSimulatedProvingResult } from './contract_function_simulator.js';
|
|
13
16
|
export { packAsHintedNote } from './oracle/note_packing_utils.js';
|
|
17
|
+
export { BoundedVec } from './noir-structs/bounded_vec.js';
|
|
18
|
+
export { EphemeralArray } from './noir-structs/ephemeral_array.js';
|
|
19
|
+
export { Option } from './noir-structs/option.js';
|
|
14
20
|
export { UtilityContext } from './noir-structs/utility_context.js';
|
|
15
|
-
|
|
21
|
+
export { EventValidationRequest } from './noir-structs/event_validation_request.js';
|
|
22
|
+
export { LogRetrievalRequest } from './noir-structs/log_retrieval_request.js';
|
|
23
|
+
export { LogRetrievalResponse } from './noir-structs/log_retrieval_response.js';
|
|
24
|
+
export { NoteValidationRequest } from './noir-structs/note_validation_request.js';
|
|
25
|
+
export { ProvidedSecret } from './noir-structs/provided_secret.js';
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdF9mdW5jdGlvbl9zaW11bGF0b3IvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGVBQWUsRUFDZixXQUFXLEVBQ1gsU0FBUyxFQUNULEtBQUssaUJBQWlCLEVBQ3RCLEtBQUssVUFBVSxFQUNmLEtBQUssbUJBQW1CLEVBQ3hCLEtBQUssVUFBVSxFQUNmLEtBQUssaUJBQWlCLEdBQ3ZCLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUNMLEtBQUssRUFDTCxhQUFhLEVBQ2IsTUFBTSxFQUNOLFlBQVksRUFDWixJQUFJLEVBQ0osV0FBVyxFQUNYLE1BQU0sRUFDTixJQUFJLEVBQ0osYUFBYSxFQUNiLGVBQWUsRUFDZix3QkFBd0IsRUFDeEIsS0FBSyxFQUNMLGlCQUFpQixFQUNqQixxQkFBcUIsRUFDckIsc0JBQXNCLEVBQ3RCLGtCQUFrQixFQUNsQixlQUFlLEVBQ2YsdUJBQXVCLEVBQ3ZCLE1BQU0sRUFDTixrQkFBa0IsRUFDbEIsS0FBSyxFQUNMLGVBQWUsRUFDZixHQUFHLEVBQ0gsR0FBRyxFQUNILEtBQUssU0FBUyxFQUNkLEtBQUssWUFBWSxFQUNqQixLQUFLLFVBQVUsRUFDZixLQUFLLFdBQVcsR0FDakIsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsWUFBWSxFQUFFLFdBQVcsRUFBRSx1QkFBdUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVHLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNqRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDNUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGlDQUFpQyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDMUcsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQyJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contract_function_simulator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contract_function_simulator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,WAAW,EACX,SAAS,EACT,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,mBAAmB,EACxB,KAAK,UAAU,EACf,KAAK,iBAAiB,GACvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,KAAK,EACL,aAAa,EACb,MAAM,EACN,YAAY,EACZ,IAAI,EACJ,WAAW,EACX,MAAM,EACN,IAAI,EACJ,aAAa,EACb,eAAe,EACf,wBAAwB,EACxB,KAAK,EACL,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EAClB,eAAe,EACf,uBAAuB,EACvB,MAAM,EACN,kBAAkB,EAClB,KAAK,EACL,eAAe,EACf,GAAG,EACH,GAAG,EACH,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,WAAW,GACjB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EAAE,WAAW,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAC5G,YAAY,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,iCAAiC,EAAE,MAAM,+BAA+B,CAAC;AAC1G,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
export { ORACLE_REGISTRY, callHandler, makeEntry } from './oracle/oracle_registry.js';
|
|
2
|
+
export { ARRAY, AZTEC_ADDRESS, BIGINT, BLOCK_NUMBER, BOOL, BOUNDED_VEC, BUFFER, BYTE, DELIVERY_MODE, EPHEMERAL_ARRAY, EVENT_VALIDATION_REQUEST, FIELD, FUNCTION_SELECTOR, LOG_RETRIEVAL_REQUEST, LOG_RETRIEVAL_RESPONSE, MEMBERSHIP_WITNESS, MESSAGE_CONTEXT, NOTE_VALIDATION_REQUEST, OPTION, PENDING_TAGGED_LOG, POINT, PROVIDED_SECRET, STR, U32 } from './oracle/oracle_type_mappings.js';
|
|
1
3
|
export { ExecutionNoteCache } from './execution_note_cache.js';
|
|
2
4
|
export { ExecutionTaggingIndexCache } from './execution_tagging_index_cache.js';
|
|
3
5
|
export { HashedValuesCache } from './hashed_values_cache.js';
|
|
@@ -10,4 +12,12 @@ export { Oracle } from './oracle/oracle.js';
|
|
|
10
12
|
export { executePrivateFunction, extractPrivateCircuitPublicInputs } from './oracle/private_execution.js';
|
|
11
13
|
export { generateSimulatedProvingResult } from './contract_function_simulator.js';
|
|
12
14
|
export { packAsHintedNote } from './oracle/note_packing_utils.js';
|
|
15
|
+
export { BoundedVec } from './noir-structs/bounded_vec.js';
|
|
16
|
+
export { EphemeralArray } from './noir-structs/ephemeral_array.js';
|
|
17
|
+
export { Option } from './noir-structs/option.js';
|
|
13
18
|
export { UtilityContext } from './noir-structs/utility_context.js';
|
|
19
|
+
export { EventValidationRequest } from './noir-structs/event_validation_request.js';
|
|
20
|
+
export { LogRetrievalRequest } from './noir-structs/log_retrieval_request.js';
|
|
21
|
+
export { LogRetrievalResponse } from './noir-structs/log_retrieval_response.js';
|
|
22
|
+
export { NoteValidationRequest } from './noir-structs/note_validation_request.js';
|
|
23
|
+
export { ProvidedSecret } from './noir-structs/provided_secret.js';
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript counterpart of Noir's `BoundedVec<T, MaxLen>`.
|
|
3
|
+
*
|
|
4
|
+
* Carries the actual `data` plus wire-format metadata (`maxLength`, `elementSize`) so the ACVM
|
|
5
|
+
* serializer can pad the storage slot to exactly `maxLength * elementSize` fields.
|
|
6
|
+
*/
|
|
7
|
+
export declare class BoundedVec<T> {
|
|
8
|
+
readonly data: T[];
|
|
9
|
+
readonly maxLength: number;
|
|
10
|
+
readonly elementSize: number;
|
|
11
|
+
private constructor();
|
|
12
|
+
/**
|
|
13
|
+
* Construct a BoundedVec with data.
|
|
14
|
+
*
|
|
15
|
+
* @param data - Actual elements. Length must be `<= maxLength`.
|
|
16
|
+
* @param maxLength - Maximum capacity declared at the Noir call site.
|
|
17
|
+
* The storage slot is padded to this many elements.
|
|
18
|
+
* @param elementSize - Number of Fr fields each element contributes when serialized.
|
|
19
|
+
* `1` for scalar elements (u8, Field) — this is the default.
|
|
20
|
+
* `> 1` for compound elements (e.g. a packed note that spans multiple fields).
|
|
21
|
+
*
|
|
22
|
+
* @example A bounded vec of bytes (elementSize defaults to 1):
|
|
23
|
+
* ```ts
|
|
24
|
+
* BoundedVec.from({ data: plaintext, maxLength: ciphertext.maxLength })
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
* @example A bounded vec of packed notes, each spanning `packedHintedNoteLength` fields:
|
|
28
|
+
* ```ts
|
|
29
|
+
* BoundedVec.from({ data: notes, maxLength: maxNotes, elementSize: packedHintedNoteLength })
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
static from<T>({ data, maxLength, elementSize }: {
|
|
33
|
+
data: T[];
|
|
34
|
+
maxLength: number;
|
|
35
|
+
elementSize?: number;
|
|
36
|
+
}): BoundedVec<T>;
|
|
37
|
+
/**
|
|
38
|
+
* Construct an empty BoundedVec, typically used as a shape template for `Option.empty(...)`.
|
|
39
|
+
*
|
|
40
|
+
* @param maxLength - Maximum capacity declared at the Noir call site.
|
|
41
|
+
* @param elementSize - Number of Fr fields each element contributes when serialized (default 1).
|
|
42
|
+
*/
|
|
43
|
+
static empty<T>({ maxLength, elementSize }: {
|
|
44
|
+
maxLength: number;
|
|
45
|
+
elementSize?: number;
|
|
46
|
+
}): BoundedVec<T>;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm91bmRlZF92ZWMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250cmFjdF9mdW5jdGlvbl9zaW11bGF0b3Ivbm9pci1zdHJ1Y3RzL2JvdW5kZWRfdmVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBQ0gscUJBQWEsVUFBVSxDQUFDLENBQUM7YUFFTCxJQUFJLEVBQUUsQ0FBQyxFQUFFO2FBQ1QsU0FBUyxFQUFFLE1BQU07YUFDakIsV0FBVyxFQUFFLE1BQU07SUFIckMsT0FBTyxlQUlIO0lBRUo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FtQkc7SUFDSCxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUNiLElBQUksRUFDSixTQUFTLEVBQ1QsV0FBZSxFQUNoQixFQUFFO1FBQ0QsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ1YsU0FBUyxFQUFFLE1BQU0sQ0FBQztRQUNsQixXQUFXLENBQUMsRUFBRSxNQUFNLENBQUM7S0FDdEIsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBRWhCO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxXQUFlLEVBQUUsRUFBRTtRQUFFLFNBQVMsRUFBRSxNQUFNLENBQUM7UUFBQyxXQUFXLENBQUMsRUFBRSxNQUFNLENBQUE7S0FBRSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FFMUc7Q0FDRiJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bounded_vec.d.ts","sourceRoot":"","sources":["../../../src/contract_function_simulator/noir-structs/bounded_vec.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,qBAAa,UAAU,CAAC,CAAC;aAEL,IAAI,EAAE,CAAC,EAAE;aACT,SAAS,EAAE,MAAM;aACjB,WAAW,EAAE,MAAM;IAHrC,OAAO,eAIH;IAEJ;;;;;;;;;;;;;;;;;;;OAmBG;IACH,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EACb,IAAI,EACJ,SAAS,EACT,WAAe,EAChB,EAAE;QACD,IAAI,EAAE,CAAC,EAAE,CAAC;QACV,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,UAAU,CAAC,CAAC,CAAC,CAEhB;IAED;;;;;OAKG;IACH,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,WAAe,EAAE,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAE1G;CACF"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript counterpart of Noir's `BoundedVec<T, MaxLen>`.
|
|
3
|
+
*
|
|
4
|
+
* Carries the actual `data` plus wire-format metadata (`maxLength`, `elementSize`) so the ACVM
|
|
5
|
+
* serializer can pad the storage slot to exactly `maxLength * elementSize` fields.
|
|
6
|
+
*/ export class BoundedVec {
|
|
7
|
+
data;
|
|
8
|
+
maxLength;
|
|
9
|
+
elementSize;
|
|
10
|
+
constructor(data, maxLength, elementSize){
|
|
11
|
+
this.data = data;
|
|
12
|
+
this.maxLength = maxLength;
|
|
13
|
+
this.elementSize = elementSize;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Construct a BoundedVec with data.
|
|
17
|
+
*
|
|
18
|
+
* @param data - Actual elements. Length must be `<= maxLength`.
|
|
19
|
+
* @param maxLength - Maximum capacity declared at the Noir call site.
|
|
20
|
+
* The storage slot is padded to this many elements.
|
|
21
|
+
* @param elementSize - Number of Fr fields each element contributes when serialized.
|
|
22
|
+
* `1` for scalar elements (u8, Field) — this is the default.
|
|
23
|
+
* `> 1` for compound elements (e.g. a packed note that spans multiple fields).
|
|
24
|
+
*
|
|
25
|
+
* @example A bounded vec of bytes (elementSize defaults to 1):
|
|
26
|
+
* ```ts
|
|
27
|
+
* BoundedVec.from({ data: plaintext, maxLength: ciphertext.maxLength })
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* @example A bounded vec of packed notes, each spanning `packedHintedNoteLength` fields:
|
|
31
|
+
* ```ts
|
|
32
|
+
* BoundedVec.from({ data: notes, maxLength: maxNotes, elementSize: packedHintedNoteLength })
|
|
33
|
+
* ```
|
|
34
|
+
*/ static from({ data, maxLength, elementSize = 1 }) {
|
|
35
|
+
return new BoundedVec(data, maxLength, elementSize);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Construct an empty BoundedVec, typically used as a shape template for `Option.empty(...)`.
|
|
39
|
+
*
|
|
40
|
+
* @param maxLength - Maximum capacity declared at the Noir call site.
|
|
41
|
+
* @param elementSize - Number of Fr fields each element contributes when serialized (default 1).
|
|
42
|
+
*/ static empty({ maxLength, elementSize = 1 }) {
|
|
43
|
+
return new BoundedVec([], maxLength, elementSize);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
+
import type { EphemeralArrayService } from '../ephemeral_array_service.js';
|
|
3
|
+
import type { TypeMapping } from '../oracle/oracle_registry.js';
|
|
4
|
+
/**
|
|
5
|
+
* TypeScript counterpart of Noir's `EphemeralArray<T>`.
|
|
6
|
+
*
|
|
7
|
+
* An ephemeral array looks very different depending on whether it's being produced (as an oracle return value) or
|
|
8
|
+
* consumed (as an oracle parameter), so we use a discriminated state to model both without leaking those details to
|
|
9
|
+
* callers:
|
|
10
|
+
*
|
|
11
|
+
* - As a return value (`output` mode), what we have are the typed values the oracle just computed. The slot is just
|
|
12
|
+
* an implementation detail of how those values get handed back to ACVM, so we hold onto the values and the service
|
|
13
|
+
* they will eventually live in, and only materialize a slot when something actually asks for it.
|
|
14
|
+
*
|
|
15
|
+
* - As a parameter (`input` mode), what we have is a slot pointing at fields ACVM already wrote into the service,
|
|
16
|
+
* plus the TypeMapping that knows how to interpret those fields. We hold onto both so callers can later ask for
|
|
17
|
+
* the typed values without having to think about deserialization.
|
|
18
|
+
*
|
|
19
|
+
* In both modes the idea is the same: store everything we already know at construction time, so the rest of the
|
|
20
|
+
* code can work with typed values and never touch slots, services, or TypeMappings directly.
|
|
21
|
+
*/
|
|
22
|
+
export declare class EphemeralArray<T> {
|
|
23
|
+
private readonly state;
|
|
24
|
+
private constructor();
|
|
25
|
+
/** Create an output-mode array carrying typed values. The service is only used if/when the slot is materialized. */
|
|
26
|
+
static fromValues<T>(service: EphemeralArrayService, values: T[]): EphemeralArray<T>;
|
|
27
|
+
/** Wrap an existing slot. Intended for the EPHEMERAL_ARRAY combinator during ACVM deserialization. */
|
|
28
|
+
static fromSlot<T>(slot: Fr, mapping: TypeMapping<T>): EphemeralArray<T>;
|
|
29
|
+
/**
|
|
30
|
+
* Returns the slot, materializing values into the service on first call for output-mode arrays.
|
|
31
|
+
* Intended for the EPHEMERAL_ARRAY combinator during ACVM serialization.
|
|
32
|
+
*/
|
|
33
|
+
materializeSlot(serializeItem: (v: T) => Fr[]): Fr;
|
|
34
|
+
/** Read all elements: returns stored values for output-mode arrays, deserializes from the service for input-mode. */
|
|
35
|
+
readAll(service: EphemeralArrayService): T[];
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXBoZW1lcmFsX2FycmF5LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udHJhY3RfZnVuY3Rpb25fc2ltdWxhdG9yL25vaXItc3RydWN0cy9lcGhlbWVyYWxfYXJyYXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHekQsT0FBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUVoRTs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxxQkFBYSxjQUFjLENBQUMsQ0FBQztJQUNQLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSztJQUExQyxPQUFPLGVBQStEO0lBRXRFLG9IQUFvSDtJQUNwSCxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FFbkY7SUFFRCxzR0FBc0c7SUFDdEcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FFdkU7SUFFRDs7O09BR0c7SUFDSCxlQUFlLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBUWpEO0lBRUQscUhBQXFIO0lBQ3JILE9BQU8sQ0FBQyxPQUFPLEVBQUUscUJBQXFCLEdBQUcsQ0FBQyxFQUFFLENBUTNDO0NBQ0YifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ephemeral_array.d.ts","sourceRoot":"","sources":["../../../src/contract_function_simulator/noir-structs/ephemeral_array.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAGzD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAEhE;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,cAAc,CAAC,CAAC;IACP,OAAO,CAAC,QAAQ,CAAC,KAAK;IAA1C,OAAO,eAA+D;IAEtE,oHAAoH;IACpH,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,cAAc,CAAC,CAAC,CAAC,CAEnF;IAED,sGAAsG;IACtG,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAEvE;IAED;;;OAGG;IACH,eAAe,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAQjD;IAED,qHAAqH;IACrH,OAAO,CAAC,OAAO,EAAE,qBAAqB,GAAG,CAAC,EAAE,CAQ3C;CACF"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { FieldReader } from '@aztec/foundation/serialize';
|
|
2
|
+
/**
|
|
3
|
+
* TypeScript counterpart of Noir's `EphemeralArray<T>`.
|
|
4
|
+
*
|
|
5
|
+
* An ephemeral array looks very different depending on whether it's being produced (as an oracle return value) or
|
|
6
|
+
* consumed (as an oracle parameter), so we use a discriminated state to model both without leaking those details to
|
|
7
|
+
* callers:
|
|
8
|
+
*
|
|
9
|
+
* - As a return value (`output` mode), what we have are the typed values the oracle just computed. The slot is just
|
|
10
|
+
* an implementation detail of how those values get handed back to ACVM, so we hold onto the values and the service
|
|
11
|
+
* they will eventually live in, and only materialize a slot when something actually asks for it.
|
|
12
|
+
*
|
|
13
|
+
* - As a parameter (`input` mode), what we have is a slot pointing at fields ACVM already wrote into the service,
|
|
14
|
+
* plus the TypeMapping that knows how to interpret those fields. We hold onto both so callers can later ask for
|
|
15
|
+
* the typed values without having to think about deserialization.
|
|
16
|
+
*
|
|
17
|
+
* In both modes the idea is the same: store everything we already know at construction time, so the rest of the
|
|
18
|
+
* code can work with typed values and never touch slots, services, or TypeMappings directly.
|
|
19
|
+
*/ export class EphemeralArray {
|
|
20
|
+
state;
|
|
21
|
+
constructor(state){
|
|
22
|
+
this.state = state;
|
|
23
|
+
}
|
|
24
|
+
/** Create an output-mode array carrying typed values. The service is only used if/when the slot is materialized. */ static fromValues(service, values) {
|
|
25
|
+
return new EphemeralArray({
|
|
26
|
+
kind: 'output',
|
|
27
|
+
service,
|
|
28
|
+
values
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
/** Wrap an existing slot. Intended for the EPHEMERAL_ARRAY combinator during ACVM deserialization. */ static fromSlot(slot, mapping) {
|
|
32
|
+
return new EphemeralArray({
|
|
33
|
+
kind: 'input',
|
|
34
|
+
slot,
|
|
35
|
+
mapping
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Returns the slot, materializing values into the service on first call for output-mode arrays.
|
|
40
|
+
* Intended for the EPHEMERAL_ARRAY combinator during ACVM serialization.
|
|
41
|
+
*/ materializeSlot(serializeItem) {
|
|
42
|
+
if (this.state.kind === 'input') {
|
|
43
|
+
return this.state.slot;
|
|
44
|
+
}
|
|
45
|
+
if (this.state.cachedSlot === undefined) {
|
|
46
|
+
this.state.cachedSlot = this.state.service.newArray(this.state.values.map(serializeItem));
|
|
47
|
+
}
|
|
48
|
+
return this.state.cachedSlot;
|
|
49
|
+
}
|
|
50
|
+
/** Read all elements: returns stored values for output-mode arrays, deserializes from the service for input-mode. */ readAll(service) {
|
|
51
|
+
if (this.state.kind === 'output') {
|
|
52
|
+
return this.state.values;
|
|
53
|
+
}
|
|
54
|
+
const mapping = this.state.mapping;
|
|
55
|
+
return service.readArrayAt(this.state.slot).map((fields)=>mapping.deserialization.fn([
|
|
56
|
+
FieldReader.asReader(fields)
|
|
57
|
+
]));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
+
import { FieldReader } from '@aztec/foundation/serialize';
|
|
2
3
|
import { EventSelector } from '@aztec/stdlib/abi';
|
|
3
4
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
4
5
|
import { TxHash } from '@aztec/stdlib/tx';
|
|
@@ -14,6 +15,6 @@ export declare class EventValidationRequest {
|
|
|
14
15
|
eventCommitment: Fr;
|
|
15
16
|
txHash: TxHash;
|
|
16
17
|
constructor(contractAddress: AztecAddress, eventTypeId: EventSelector, randomness: Fr, serializedEvent: Fr[], eventCommitment: Fr, txHash: TxHash);
|
|
17
|
-
static fromFields(fields: Fr[]
|
|
18
|
+
static fromFields(fields: Fr[] | FieldReader): EventValidationRequest;
|
|
18
19
|
}
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRfdmFsaWRhdGlvbl9yZXF1ZXN0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udHJhY3RfZnVuY3Rpb25fc2ltdWxhdG9yL25vaXItc3RydWN0cy9ldmVudF92YWxpZGF0aW9uX3JlcXVlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUxQzs7O0dBR0c7QUFDSCxxQkFBYSxzQkFBc0I7SUFFeEIsZUFBZSxFQUFFLFlBQVk7SUFDN0IsV0FBVyxFQUFFLGFBQWE7SUFDMUIsVUFBVSxFQUFFLEVBQUU7SUFDZCxlQUFlLEVBQUUsRUFBRSxFQUFFO0lBQ3JCLGVBQWUsRUFBRSxFQUFFO0lBQ25CLE1BQU0sRUFBRSxNQUFNO0lBTnZCLFlBQ1MsZUFBZSxFQUFFLFlBQVksRUFDN0IsV0FBVyxFQUFFLGFBQWEsRUFDMUIsVUFBVSxFQUFFLEVBQUUsRUFDZCxlQUFlLEVBQUUsRUFBRSxFQUFFLEVBQ3JCLGVBQWUsRUFBRSxFQUFFLEVBQ25CLE1BQU0sRUFBRSxNQUFNLEVBQ25CO0lBRUosTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsV0FBVyxHQUFHLHNCQUFzQixDQThCcEU7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event_validation_request.d.ts","sourceRoot":"","sources":["../../../src/contract_function_simulator/noir-structs/event_validation_request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"event_validation_request.d.ts","sourceRoot":"","sources":["../../../src/contract_function_simulator/noir-structs/event_validation_request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C;;;GAGG;AACH,qBAAa,sBAAsB;IAExB,eAAe,EAAE,YAAY;IAC7B,WAAW,EAAE,aAAa;IAC1B,UAAU,EAAE,EAAE;IACd,eAAe,EAAE,EAAE,EAAE;IACrB,eAAe,EAAE,EAAE;IACnB,MAAM,EAAE,MAAM;IANvB,YACS,eAAe,EAAE,YAAY,EAC7B,WAAW,EAAE,aAAa,EAC1B,UAAU,EAAE,EAAE,EACd,eAAe,EAAE,EAAE,EAAE,EACrB,eAAe,EAAE,EAAE,EACnB,MAAM,EAAE,MAAM,EACnB;IAEJ,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,GAAG,sBAAsB,CA8BpE;CACF"}
|
|
@@ -20,18 +20,19 @@ import { TxHash } from '@aztec/stdlib/tx';
|
|
|
20
20
|
this.eventCommitment = eventCommitment;
|
|
21
21
|
this.txHash = txHash;
|
|
22
22
|
}
|
|
23
|
-
static fromFields(fields
|
|
23
|
+
static fromFields(fields) {
|
|
24
24
|
const reader = FieldReader.asReader(fields);
|
|
25
25
|
const contractAddress = AztecAddress.fromField(reader.readField());
|
|
26
26
|
const eventTypeId = EventSelector.fromField(reader.readField());
|
|
27
27
|
const randomness = reader.readField();
|
|
28
|
+
const maxEventSerializedLen = reader.readField().toNumber();
|
|
28
29
|
const eventStorage = reader.readFieldArray(maxEventSerializedLen);
|
|
29
30
|
const eventLen = reader.readField().toNumber();
|
|
30
31
|
const serializedEvent = eventStorage.slice(0, eventLen);
|
|
31
32
|
const eventCommitment = reader.readField();
|
|
32
33
|
const txHash = TxHash.fromField(reader.readField());
|
|
33
34
|
if (reader.remainingFields() !== 0) {
|
|
34
|
-
throw new Error(`Error converting array of fields to EventValidationRequest: expected ${reader.cursor} fields but received ${
|
|
35
|
+
throw new Error(`Error converting array of fields to EventValidationRequest: expected ${reader.cursor} fields but received ${reader.cursor + reader.remainingFields()} (maxEventSerializedLen=${maxEventSerializedLen}).`);
|
|
35
36
|
}
|
|
36
37
|
return new EventValidationRequest(contractAddress, eventTypeId, randomness, serializedEvent, eventCommitment, txHash);
|
|
37
38
|
}
|